Slides adapted from the slides for the book "Software Engineering: The Current Practice" by Václav Rajlich © 2012 by Václav Rajlich
Easy to teach a trivial software engineering course
Iterative approaches are all about planning, with not much doing
With the Big Bang approach, we concentrate on implementation (coding), not worrying about planning
Project Attributes | School | Real World |
---|---|---|
Number of developers | 1 (2 - 3 at most) | 2 - 3, even 10s to 100s |
Other developers | friends, acquaintances | total strangers |
Time spent coding | 8 hours | 2000 hours |
Timespan (start to finish) | 2 - 3 days | Years |
Lifespan | 2 - 3 days | Multiple years |
Software Users | 1, 2 | 10s, 100s, .., billions |
The size of the project can affect process requirements
Requirements
Analysis
Design
Implementation
Testing
Validation
Release
Maintenance
Phase | Artifacts |
---|---|
Requirements | requirements specification, e.g., user stories, use cases, all the way to 500-page requirements documents |
Design | technical specification, e.g., Quick UML class diagram, sequence diagram, all the way to using all 16 (?) UML diagrams, plus more |
Implementation | code |
Release | executables, e.g., packages, installers |
Testing | test report, e.g., set of test cases, testing/acceptance report |
Heavyweight, single-pass, heavy planning-based approach
Requirements are almost always not fully known in advance and often added during the other phases
"Anomaly" is an important fact that directly contradicts the old paradigm
Since requirements are volatile, design to allow for future changes
Since requirements are volatile, design to allow for future changes
It is difficult to determine requirements without a running system, so build a prototype to get requirements, e.g., "Build one to throw away."