|
Foreword |
5 |
|
|
Preface |
7 |
|
|
Book Goals |
8 |
|
|
Target Audience |
9 |
|
|
Outline |
9 |
|
|
Contents |
14 |
|
|
Chapter 1: Foundations |
20 |
|
|
1.1 Background |
20 |
|
|
1.1.1 Basic Concepts |
20 |
|
|
1.1.2 The Purpose of Explicitly Using Software Processes |
22 |
|
|
1.1.3 Software Processes and their Evolution |
24 |
|
|
1.1.4 Managing Software Processes |
27 |
|
|
1.1.5 Software Process Models and Meta-models |
30 |
|
|
1.2 The Software Process Ecosystem |
31 |
|
|
1.3 Historical Overview |
32 |
|
|
1.3.1 The Early Days |
33 |
|
|
1.3.2 The 1980s: The Rise of Software Processes |
35 |
|
|
1.3.3 The 1990s and Early 2000s: Lightweight and Agile Processes |
36 |
|
|
1.3.4 Recent Trends |
37 |
|
|
1.4 Terminology and Basic Concepts |
39 |
|
|
1.4.1 General Terminology |
40 |
|
|
1.4.2 Process Terminology |
40 |
|
|
1.4.3 Software Process Terminology |
43 |
|
|
1.4.4 Model and Meta-model Terminology |
46 |
|
|
1.4.5 Process Model Terminology |
48 |
|
|
1.4.5.1 The process cube |
48 |
|
|
1.4.5.2 Standard processes and tailoring |
49 |
|
|
1.4.6 Major Phases Within Software Life Cycles |
51 |
|
|
1.4.7 Other Relevant Terminology |
53 |
|
|
Further Reading |
54 |
|
|
Exercises |
55 |
|
|
References |
55 |
|
|
Chapter 2: Software Process Definition and Modelling |
59 |
|
|
2.1 Introduction |
59 |
|
|
2.1.1 Basic Concepts |
60 |
|
|
2.1.2 Properties of Process Meta-Models |
61 |
|
|
2.1.3 Meta-meta-modelling |
64 |
|
|
2.1.4 Core Contents of Software Process Models |
65 |
|
|
2.1.5 Further Contents of Software Process Models |
67 |
|
|
2.2 Notations for Modelling the Interactions Between Processes |
67 |
|
|
2.2.1 Value Chain Diagrams and Process Landscape Diagrams |
68 |
|
|
2.2.2 The Multi-View Process Modeling Language (MVP-L) |
68 |
|
|
2.3 Detailed-Level Modelling Notations for Individual Processes |
71 |
|
|
2.3.1 Process Patterns |
71 |
|
|
2.3.2 Modelling Notations from Requirements Analysis |
72 |
|
|
2.3.2.1 Modelling notations from structured analysis and design |
72 |
|
|
2.3.2.2 Modelling notations from UML |
73 |
|
|
2.3.3 High-Level Notations for General Processes |
74 |
|
|
2.3.3.1 The Entry-Task-Verification-Exit (ETVX) notation |
74 |
|
|
2.3.3.2 Turtle diagrams |
75 |
|
|
2.3.3.3 The SIPOC notation |
75 |
|
|
2.3.3.4 Schematic representation of processes according to ISO 9001 |
76 |
|
|
2.3.4 Notations for Modelling Business Processes |
76 |
|
|
2.3.5 Process Notations for Formal Analysis |
78 |
|
|
2.3.5.1 Process Algebras |
78 |
|
|
2.3.5.2 System Dynamics |
79 |
|
|
2.4 Combined Modelling Notations Combining High-Level and Detailed-Level Modelling |
79 |
|
|
2.4.1 Life Cycle Diagram Plus Textual Process Documentation |
80 |
|
|
2.4.2 The Software & Systems Process Engineering Meta-Model (SPEM) |
81 |
|
|
2.4.3 Software Engineering Metamodel for Development Methodologies (SEMDM) ISO/IEC 24744 |
82 |
|
|
2.4.4 V-Model XT Meta-Model |
83 |
|
|
Further Reading |
84 |
|
|
Exercises |
84 |
|
|
References |
85 |
|
|
Chapter 3: Software Processes in the Software Product Life Cycle |
87 |
|
|
3.1 Introduction |
87 |
|
|
3.1.1 Distinctive Properties of Software Process and Life Cycle Models |
88 |
|
|
3.1.2 Software Product Life Cycle |
91 |
|
|
3.1.3 Organisational Software Processes |
93 |
|
|
3.1.4 Software Development Life Cycle |
95 |
|
|
3.1.5 Software Life Cycle Processes According to ISO/IEC/IEEE 12207 |
95 |
|
|
3.1.6 Categories of Software Process and Life Cycle Models |
96 |
|
|
3.1.7 Categorizing Process Models by Level of Detail |
98 |
|
|
3.2 Basic Software Development Life Cycle Models |
99 |
|
|
3.2.1 Waterfall Models |
99 |
|
|
3.2.2 The V-Model |
101 |
|
|
3.2.2 Component- or Matrix-Based Models |
103 |
|
|
3.2.4 Prototyping |
104 |
|
|
3.2.5 Iterative, Incremental and Evolutionary Development |
107 |
|
|
3.2.5.1 Basic concepts |
107 |
|
|
3.2.5.2 Boehm’s spiral model |
111 |
|
|
3.2.5.3 Release trains |
112 |
|
|
3.2.6 An Anti-Pattern: Code-and-Fix |
113 |
|
|
3.2.7 Digression: the Six Phases of a (Big) Project |
113 |
|
|
3.3 Methodology-Driven Life Cycle and Process Models |
114 |
|
|
3.4 Detailed, Combined Software Life Cycle and Process Models |
115 |
|
|
3.4.1 The (Rational) Unified Process |
115 |
|
|
3.4.2 The German V-Model XT |
117 |
|
|
3.4.3 Other Software Process Models |
118 |
|
|
3.5 Agile and Lean Development Processes and Methodologies |
120 |
|
|
3.5.1 The Agile Manifesto |
120 |
|
|
3.5.2 Scrum |
121 |
|
|
3.5.3 Common Agile Practices |
126 |
|
|
3.5.4 Planning and Tracking Work in Agile Development |
127 |
|
|
3.5.5 Extreme Programming (XP) |
128 |
|
|
3.5.6 Lean Development |
129 |
|
|
3.5.7 Other Common Agile and Lean Methodologies |
133 |
|
|
3.5.8 Processes for Open Source Software Development |
135 |
|
|
3.5.9 Scaling Agile Development |
136 |
|
|
3.5.9.1 Techniques for scaling agile development |
137 |
|
|
3.5.9.2 Frameworks for scaling agile development |
138 |
|
|
3.5.10 Scaled Agile Framework (SAFe®) |
139 |
|
|
3.6 Hybrid Approaches |
142 |
|
|
3.7 (Capability) Maturity Models |
144 |
|
|
3.8 IT Service Management and Operations |
144 |
|
|
3.8.1 The IT Infrastructure Library (ITIL) |
145 |
|
|
3.8.2 Other Models for IT Service Management and Operations |
145 |
|
|
3.9 Integrating Software Development and Software Operations |
146 |
|
|
3.10 Software Processes and Architecture |
148 |
|
|
3.11 Safety, Security and Privacy |
149 |
|
|
3.11.1 Basic Concepts |
149 |
|
|
3.11.2 Safety Standards and Software Processes |
153 |
|
|
3.11.3 Security Standards and Software Processes |
155 |
|
|
3.11.4 Privacy Standards and Software Processes |
158 |
|
|
3.11.5 Safety, Security and Privacy in the Development Life Cycle |
160 |
|
|
3.12 Application-Specific Life Cycle Models |
162 |
|
|
3.12.1 Life Cycle Models for the Development of Cyber-Physical Systems |
163 |
|
|
3.12.2 Life Cycle Models for Customisation, Configuration and Integration Projects |
163 |
|
|
3.12.3 Life Cycle Models for Artificial Intelligence Systems |
164 |
|
|
3.12.4 Life Cycle Models for Big Data Projects |
164 |
|
|
3.13 Estimating the Dissemination of Software Life Cycle Models |
165 |
|
|
Further Reading |
169 |
|
|
Exercises |
170 |
|
|
References |
170 |
|
|
Chapter 4: Governance and Management of Software Processes |
176 |
|
|
4.1 Introduction |
176 |
|
|
4.2 Process Infrastructure |
177 |
|
|
4.2.1 Process Roles |
177 |
|
|
4.2.2 Selecting a Process Notation |
182 |
|
|
4.2.3 Process Asset Management and Control |
182 |
|
|
4.3 Process Definition |
185 |
|
|
4.3.1 Basic Concepts |
185 |
|
|
4.3.2 Software Process Development |
186 |
|
|
4.4 Process Selection |
188 |
|
|
4.5 Process Tailoring |
193 |
|
|
4.5.1 Overview of Process Tailoring |
193 |
|
|
4.5.2 Tailoring Strategies |
195 |
|
|
4.5.3 Tailoring Criteria |
196 |
|
|
4.6 Process Deployment |
197 |
|
|
4.6.1 Challenges in Process Deployment |
197 |
|
|
4.6.2 State–Enable–Verify–Reward. |
198 |
|
|
4.6.3 Change Management |
199 |
|
|
4.7 Quality Assurance |
204 |
|
|
4.8 IT Governance and Process Governance |
206 |
|
|
4.8.1 Basic Concepts |
206 |
|
|
4.8.2 The COBIT Framework |
211 |
|
|
4.8.3 Software Process Governance |
215 |
|
|
4.8.4 IT Governance and Agile Development |
216 |
|
|
4.8.5 Governance of IT Architecture |
216 |
|
|
4.9 Software Processes as a Form of Knowledge Management |
219 |
|
|
4.9.1 Codification vs. Personalisation of Knowledge |
219 |
|
|
4.9.2 Probst's Building Blocks of Knowledge Management |
219 |
|
|
4.9.3 Armour's Laws of Software Process |
221 |
|
|
4.10 (Globally) Distributed Software Processes |
222 |
|
|
4.11 Software Processes for Software Acquisition |
223 |
|
|
Further Reading |
224 |
|
|
Exercises |
225 |
|
|
References |
225 |
|
|
Chapter 5: Software Process Assessment and Improvement |
227 |
|
|
5.1 Introduction |
227 |
|
|
5.2 Quality of Software Processes and Software Process Models |
228 |
|
|
5.3 Software Process Improvement |
230 |
|
|
5.3.1 Collection, Analysis and Handling of Improvement Ideas |
231 |
|
|
5.3.2 Assessments, Appraisals and Audits |
233 |
|
|
5.3.3 The SPI Manifesto |
236 |
|
|
5.4 Quality Management |
237 |
|
|
5.4.1 Foundations of Quality Management |
237 |
|
|
5.4.2 The Plan-Do-Check-Act-Cycle (PDCA) |
238 |
|
|
5.4.3 The ISO 9000 Series of Standards |
240 |
|
|
5.4.4 Responsibility for Quality, Quality Management and Quality Assurance |
242 |
|
|
5.4.5 Certification |
243 |
|
|
5.4.6 Total Quality Management (TQM) |
245 |
|
|
5.5 (Capability) Maturity Models |
246 |
|
|
5.5.1 Basic Concepts of Capability Maturity Models |
247 |
|
|
5.5.2 Capability and Maturity Levels |
252 |
|
|
5.5.3 Capability Maturity Model Integration (CMMI®) |
253 |
|
|
5.5.3.1 CMMI constellations |
253 |
|
|
5.5.3.2 Structure of CMMI |
255 |
|
|
5.5.3.3 Basic philosophy of CMMI |
257 |
|
|
5.5.3.4 Generic goals and practices |
258 |
|
|
5.5.3.5 CMMI (SCAMPI) appraisals |
259 |
|
|
5.5.3.6 A small example of using CMMI for improvement |
260 |
|
|
5.5.3.7 The way ahead: CMMI v2.0 |
261 |
|
|
5.5.3.8 Close relatives: Team Software Process (TSP) and Personal Software Process (PSP) |
262 |
|
|
5.5.4 SPICE (ISO/IEC 15504 and ISO/IEC 330xx) |
262 |
|
|
5.5.4.1 The SPICE Family of Norms |
263 |
|
|
5.5.4.2 Capability and Process Dimension in SPICE |
263 |
|
|
5.5.4.3 SPICE assessments |
266 |
|
|
5.5.4.4 Variants of SPICE |
267 |
|
|
5.5.5 Capability Maturity Models from the Customer's Point of View |
268 |
|
|
5.6 Assessment and Improvement in Agile and Lean Development |
269 |
|
|
5.7 The TAME Project and Related Work |
270 |
|
|
5.8 Further Assessment and Improvement Approaches |
272 |
|
|
Further Reading |
273 |
|
|
Exercises |
273 |
|
|
References |
274 |
|
|
Chapter 6: Software and Software Process Measurement |
277 |
|
|
6.1 Introduction |
277 |
|
|
6.1.1 Why measure? |
277 |
|
|
6.1.2 Measurement Terminology |
278 |
|
|
6.1.3 Measurement Foundations |
279 |
|
|
6.1.4 Metrics |
281 |
|
|
6.2 Implementing and Deploying Measures and Measurement Systems |
281 |
|
|
6.2.1 Basic Concepts |
282 |
|
|
6.2.2 The Goal-Question-Metric Paradigm: GQM and GQM+ |
284 |
|
|
6.2.3 Measurement and Analysis in CMMI |
286 |
|
|
6.2.4 Aggregating Different Metrics For Reporting |
287 |
|
|
6.3 Product Metrics |
288 |
|
|
6.3.1 Software Metrics |
288 |
|
|
6.3.2 Software Quality Metrics |
289 |
|
|
6.4 Project and Service Metrics |
289 |
|
|
6.5 Process Metrics: Measuring Process Quality Using Gokyo Ri |
291 |
|
|
6.6 Measurement and Agile Methods |
299 |
|
|
Further Reading |
300 |
|
|
Exercises |
300 |
|
|
References |
301 |
|
|
Chapter 7: Tool Support for Software Processes |
302 |
|
|
7.1 Introduction |
302 |
|
|
7.2 Support for Process Modelling and Process Management |
304 |
|
|
7.2.1 Process Editors |
304 |
|
|
7.2.2 Process and Process Asset Management Tools |
306 |
|
|
7.2.3 Compliance and Quality Assurance Tools |
307 |
|
|
7.3 Tool Support for Process Enactment in the Early Stages of the Software Life Cycle |
307 |
|
|
7.4 Tool Support for Process Enactment in Software Development |
308 |
|
|
7.4.1 Why Tool Support for the Enactment of Software Development Processes? |
308 |
|
|
7.4.2 Process Visualisation |
309 |
|
|
7.4.3 Process-Aware Tools |
309 |
|
|
7.4.4 Tool Support for Project Management and Technical Tasks |
310 |
|
|
7.4.5 Development Environments |
310 |
|
|
7.4.6 Documentation of Source Code |
313 |
|
|
7.5 Tool Support for Process Enactment in the Late Stages of the Software Product Life Cycle |
314 |
|
|
7.6 Compliance and Quality Assurance Tools in Process Enactment |
314 |
|
|
7.7 Privacy (Data Protection) |
315 |
|
|
Further Reading |
315 |
|
|
Exercises |
316 |
|
|
References |
316 |
|
|
Chapter 8: Selected Current Trends in Software Processes |
317 |
|
|
8.1 Process Intelligence and Process Mining |
317 |
|
|
8.1.1 Basic Concepts of Process Mining |
317 |
|
|
8.1.2 Process Mining and Software Processes |
319 |
|
|
8.1.3 Mining of Software Engineering Processes |
320 |
|
|
8.2 Statistical Process Control and Six Sigma |
323 |
|
|
8.2.1 Statistical Process Control (SPC) |
323 |
|
|
8.2.2 Six Sigma |
324 |
|
|
8.2.3 SPC and Six Sigma for Software Processes |
325 |
|
|
8.3 DevOps |
327 |
|
|
8.3.1 From Continuous Integration to Continuous Deployment |
328 |
|
|
8.3.2 The ``Three Ways'' of DevOps |
330 |
|
|
8.3.3 DevOps in Context |
332 |
|
|
8.3.4 DevOps and CALMS |
333 |
|
|
8.3.5 DevOps and ITIL |
334 |
|
|
8.3.6 Benefits and Challenges of DevOps |
336 |
|
|
Further Reading |
338 |
|
|
Exercises |
338 |
|
|
References |
339 |
|
|
Appendix A: Relevant norms and standards |
341 |
|
|
A.1 A Short Overview of the Most Relevant Process Standards |
341 |
|
|
A.2 ISO and IEC Standards |
342 |
|
|
A.3 Other Relevant Standard Documents |
345 |
|
|
Further Reading |
346 |
|
|
References |
346 |
|
|
Appendix B: Gokyo Ri Check-lists to Measure Process Quality |
347 |
|
|
B.1 Process Quality Characteristic ``Process Objectives and Requirements'' |
347 |
|
|
B.2 Process Quality Characteristic ``Process Capability'' |
347 |
|
|
References |
347 |
|
|
Index |
351 |
|