Blame

3c735d Noah 2024-07-21 14:04 1
# Satz 1 - Intro, SD activities, Iterative Development Lifecycle, EXTREME programming
e6bf68 Noah 2024-07-21 14:04 2
3c735d Noah 2024-07-21 14:04 3
Naive View / Problem Specification —-CODING——> Final Program
e6bf68 Noah 2024-07-21 14:04 4
3c735d Noah 2024-07-21 14:04 5
> What ist SE?
e6bf68 Noah 2024-07-21 14:04 6
3c735d Noah 2024-07-21 14:04 7
> ***“state of the art of developing quality software on time and within budget”***
e6bf68 Noah 2024-07-21 14:04 8
3c735d Noah 2024-07-21 14:04 9
> ***„Multi-Person construction of Multi-Version software“*** - Dave Parnas
e6bf68 Noah 2024-07-21 14:04 10
3c735d Noah 2024-07-21 14:04 11
> ***„SE is different from other engineering disciplines“*** - Ian Sommerville
e6bf68 Noah 2024-07-21 14:04 12
3c735d Noah 2024-07-21 14:04 13
Trade-off between *perfection* and *actual needs - considering constraints*
e6bf68 Noah 2024-07-21 14:04 14
3c735d Noah 2024-07-21 14:04 15
Teamwork
16
17
Change is the norm, not the exception
18
19
Not constrained by physical laws, but political/social forces
20
21
SD Activities:
22
23
- Requirements Collection
24
- often informally, ::incomplete, ambiguous or even incorrect::
25
- Req. will change, Validation needed throughout the whole software lifecycle
26
- ::Analysis is the process of identifying what a system will do or needs to do::
27
- Result: a specification (document)
28
- Analysis results in models of the system which describe:
29
- ::Refined use cases, System architecture, Classes, Relationships::
30
- ::A prototype is a software program developed to test, explore, or validate a hypothesis, that is, to reduce risks::
31
- ***Exploratory PTT***: throwaway, validate reqs, explore choices
32
- UI PTT (user reqs)
33
- Rapid PTT (functional reqs)
34
- Experimental PTT (technical feasability)
35
36
::Eselsbrücke: ***U & I*** im Trans***rapid*** wäre ein lustiges ***Experiment***::
37
38
- ***Evolutionary PTT***: made to evolve into a finished product
39
- Oft, wenn Spezifikationen nicht im Vorraus entwickelt werden können
40
- > ::System Design::
41
- > Design is the process of specifying how the system behavior will be realized from software components
42
- > result: technical architecture and detailed design documents
43
- > ::Implementation::
44
- > Is the activity of constructing a software solution to the customers reqs
45
- > ::Testing::
46
- > is the process of validating that the solution meets the reqs
47
48
All of the Above are **iterative** activities;
49
50
- ::Maintenance::
51
- Is the process of changing a system after it has been deployed for the first time
52
- Corrective
53
- Adaptive
54
- Perfective
55
- ::Eselsbrücke: 🧢 CAP bro CAP CAP Coradaper Core@Diaper::
56
- Maintenance Activities: Configuration & Version Mngmt, Reengineering, Documentation Updates
57
58
![Image.png](https://res.craft.do/user/full/b8c06e02-9cc9-7334-44af-c59f8a3eba50/doc/784F1EED-3610-46DD-8BD0-4805B6D5BFB9/DB1643CB-1958-457B-AFAA-133D77CBD0BD_2/JkMDHycEXkGo90Kh1PCFprcoO60J3kG4bIL9Wecf1Hcz/Image.png)
59
60
# The Iterative Development Lifecycle
61
62
![Image.png](https://res.craft.do/user/full/b8c06e02-9cc9-7334-44af-c59f8a3eba50/doc/784F1EED-3610-46DD-8BD0-4805B6D5BFB9/A4499E39-1A16-453C-BA4A-C309C67B362B_2/V8qfvJiq26Es7RF5rJcU6NDRKpHzTlZsnal3bFUPK58z/Image.png)
63
64
![Image.png](https://res.craft.do/user/full/b8c06e02-9cc9-7334-44af-c59f8a3eba50/doc/784F1EED-3610-46DD-8BD0-4805B6D5BFB9/EACC65CB-A73A-419C-A971-CB11D43AA834_2/zWzxVUVGOZbBm7sgC9Gx86TjIpuaOMn1sXAtsjemooQz/Image.png)
65
66
(ongoing & parallel, not sequential phases)
67
68
**Classical Software Lifecycle: (is unrealistic)**
69
70
![Image.png](https://res.craft.do/user/full/b8c06e02-9cc9-7334-44af-c59f8a3eba50/doc/784F1EED-3610-46DD-8BD0-4805B6D5BFB9/0741745E-3C0E-4717-B458-BA8BBA0F9BFA_2/HDKUDYuoYI415OSh4ZyXxqToHiBwBp0VDAyUkjhVBOwz/Image.png)
71
72
Probleme mit dem Modell:
73
74
- Echte Projekte folgen nicht diesem sequentiellem Fluss;
75
- Requirements können nicht so explizit genannt werden wie vom Modell gefordert
76
- Kunden müssen starke Geduld haben - MVP ist erst spät da
77
78
![Image.png](https://res.craft.do/user/full/b8c06e02-9cc9-7334-44af-c59f8a3eba50/doc/784F1EED-3610-46DD-8BD0-4805B6D5BFB9/819B9EE9-E328-41D3-B150-9FAB497802E8_2/UVkhhiOlpuvkvezmexh8ZO1CDg8s9a02Uqa3IfQbmIgz/Image.png)
79
80
![Image.png](https://res.craft.do/user/full/b8c06e02-9cc9-7334-44af-c59f8a3eba50/doc/784F1EED-3610-46DD-8BD0-4805B6D5BFB9/AEF20AAB-B704-4BEF-9DA3-82128A253971_2/RO8gvhMNmGFTxXxnSFDUyywa9SR89qdQTX9xXvpxMA0z/Image.png)
81
82
✨You won't get it right the first time, so
83
84
- Integrate,
85
- Validate,
86
- Test
87
88
> ***“You should use iterative development only on projects that you want to succeed.”*** – Martin Fowler (UML Distilled)
89
90
→ ⚠️ In der Praxis ist Entwicklung immer iterativ und alle Aktivitäten passieren parallel
91
92
→ Ansatz: INKREMENTELLE UPDATES ; immer running version haben, neue functionalities nach validierung against user requirements integraten
93
94
![Image.png](https://res.craft.do/user/full/b8c06e02-9cc9-7334-44af-c59f8a3eba50/doc/784F1EED-3610-46DD-8BD0-4805B6D5BFB9/71ABFEB2-7D1C-4448-822F-943DFC0F479E_2/xPTMy6LJEcMuDVOGDDA3z9bxEU26SETBj7C8L41X9A4z/Image.png)
95
96
# Extreme Programming
97
98
→ Evolutionary development
99
100
- Planning Game
101
- Stakeholders meet to plan the next iteration, Business People decide, Developers assess
102
- Small releases
103
- MVP, dann release early and often
104
- Metaphor
105
- Organizing Metaphor, easy to remember naming conventions
106
- Simple design
107
- Always use the simplest design possible
108
- Testing
109
- Test first; Write Test, then implement
110
- Refactoring
111
- continously done
112
- Pair programming
113
- 40h-week
114
- devs go home on time ; overtime = serious problem
115
- no tired devs
116
- On-Site customer
117
- Coding standards
118
- everyone has the same standards
119
- Continuous intergration
120
- All changes are integrated into the code-base at least daily
121
- tests have to run 100% before and after the integration
122
- Collective code ownership
123
- Any programmer that sees an opportunity to add value to any portion of the code is required to do so at any time
124
125
Pros:
126
127
- Integrated, simple concept
128
- Low maangement overhead
129
- Continuous risk management
130
- Continuous effort estimation
131
- Emphasis on testing
132
133
Cons:
134
135
- scalability bad (big teams)
136
- big teams need more overhead
137
- good documentation is necessary
138
139
![Image.png](https://res.craft.do/user/full/b8c06e02-9cc9-7334-44af-c59f8a3eba50/doc/784F1EED-3610-46DD-8BD0-4805B6D5BFB9/6F9D62DB-EF03-4AA8-AAF7-6ADB79E4413B_2/sqLtzNnXLkrwrrcDF0YNjK1p7PcNxxpFvmM511iWvPgz/Image.png)
140
141
![Image.png](https://res.craft.do/user/full/b8c06e02-9cc9-7334-44af-c59f8a3eba50/doc/784F1EED-3610-46DD-8BD0-4805B6D5BFB9/35BFC4BC-848E-482C-9A53-44E16E553EB6_2/Z6HJA999xrjOtinsJjph0v7SadcIOdvDm5eI6W5F7eoz/Image.png)