Skip to content

Commit 57d8647

Browse files
committed
Thursdays class - swen
1 parent eaed91a commit 57d8647

File tree

1 file changed

+119
-0
lines changed

1 file changed

+119
-0
lines changed

content/s8/swen/2021-09-09.md

+119
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
---
2+
date: 2021-09-07
3+
title: Software Architecture and Sprint Planning
4+
---
5+
6+
[Index](../../../index.md) > [Software Engineering](./index.md) > {{ page.date }}: {{ page.title }}
7+
8+
# {{page.date}}: {{page.title}}
9+
10+
## Architecture
11+
12+
These are the earliest and most fundamental decisions. Your architecture choices will have huge impacts.
13+
14+
Architecture is influenced by non-Functional Requirements (NFRs):
15+
16+
- Operational
17+
- Scalability
18+
- Availability
19+
- Developmental
20+
- Testability
21+
- Portability
22+
- Constraints
23+
- Pre-chosen components (someDB)
24+
- Some framework
25+
- Stakeholder really wants X
26+
27+
Architecture is guided by patterns, like:
28+
29+
- Failover / Load balancing
30+
- Model View Controler
31+
- Layers
32+
33+
> "No architecture is right or wrong, just more or less useful"
34+
35+
WebCheckers must be web based, using Spark and Freemaker.
36+
37+
Architecture is modeled using tiers.
38+
39+
- User interacts with UI
40+
- UI interacts with APP
41+
- APP interacts with DATA MODEL
42+
43+
> I personally would split that further, UI / Routes / Controllers / Services / Data
44+
45+
The model tier holds the business logic.
46+
47+
> That's just wrong. The data model should not have business logic. Maybe constraint checks at most.
48+
49+
The layers can be broken down:
50+
51+
- frameworks
52+
- like spark / freemarker
53+
- Platform
54+
- like java
55+
- OS/Hardware
56+
- like Windows / desktop
57+
58+
> For the quiz, you will need this word: "Elaboration"
59+
60+
# Sprint Planning
61+
62+
> "A sprint plan is a plan to build a small working increment of a product."
63+
64+
Typically 3 weeks long, a sprint is a commitment to the product owner.
65+
66+
The sprint planning meeting is what creates the sprint plan.
67+
68+
The product backlog holds a number of stories. Each has a level of effort, which the team decides on. During the plan meeting, stories are moved from the product backlog to the sprint backlog.
69+
70+
Effort is measured in points. If a team can do 25 points of work in a sprint, then we pull in stories until we have that many points assigned.
71+
72+
Stories could fit into the sprint point-wise, but might need to be left out based on dependencies or purposes. Best judgement applies.
73+
74+
How do you know when you're done with a story?
75+
76+
Establish criteria for "Definition of Done" - Acceptance Criteria.
77+
78+
- Define acceptance criteria
79+
- Design solution
80+
- Develop solution - "code complete"
81+
- Test the feature manually
82+
83+
Other things we'll hit later:
84+
85+
- feature branches
86+
- unit testing
87+
- code coverage?
88+
- Pull requests / code reviews?
89+
- Demonstrations?
90+
91+
The many transitions and states:
92+
93+
- Product Backlog
94+
- Advance when acceptance criteria are defined, and makes sense in the sprint
95+
- Sprint backlog
96+
- Advance when someone starts working on it
97+
- In Development
98+
- Advance when dev is done
99+
- Ready for Test
100+
- Advance when someone starts testing it
101+
- In Test
102+
- Advance when testing is complete - passes acceptance criteria
103+
- Done
104+
105+
The sprint board - trello - tells us the status of all work.
106+
107+
If you have too much going on, a dropped story *should* go back to the product backlog.
108+
109+
The number of points your team can do in a sprint is called the *velocity*.
110+
111+
Your velocity should be a rolling average of the *completed* points of the last three sprints.
112+
113+
Velocity is a *metric* - a measurement - you cannot declare a board to be some length, and you cannot declare the velocity of a team. Since velocity is a measurement of a single team on a single project, and point levels are estimated, velocities *cannot* be compared between teams.
114+
115+
Life impacts how much a team can actually handle. The rolling average will smooth over most things, but teams *can* manually scale down if needed.
116+
117+
---
118+
119+
[Index](../../../index.md) > [Software Engineering](./index.md) > {{ page.date }}: {{ page.title }}

0 commit comments

Comments
 (0)