No Silver Bullet: There is no single development method or technology that can dramatically improve software productivity
•
Hyrum's Law: On enough time and users, even the most minor change will break something
•
Scale: if cost grows superlinearly over time, then clearly not scalable
•
Objective of Software Engineering: Quality and Efficiency
87%
13%
Lecture 2: Software Process
Software process model
•
Software process: a set of related phases / activities that take place in certain order that result in production of software product
•
This model determines the order of these phases and the criteria for transition of each phase
•
Two sides: Agile (planning incremental and easy to fit changing customer requirements) <-> Plan-driven (all planned in advance)
•
Waterfull model: sequential and linear approach
◦
A phase does not start until the previous finished
◦
Only with well-defined requirements, that are stable
◦
This is not an incremental process
66%
34%
•
Incremental process model: combine elements of linear and parallel process flows
◦
Each linear sequence produces deliverable "increments"
•
Pros:
◦
Reducing cost when requirement changes
◦
Easier to get feedback and adapt them
◦
Easier to test and debug during smaller iterations
◦
More rapid delivery and deployment
60%
40%
•
Cons:
◦
Needs good planning before breaking down for incremental builds
◦
Structure tends to degrade as new increments are added; unless we do refactor to improve the software
◦
Incorporating further changes increasingly becomes more difficult
•
Evolutionary process models: being iterative to accomodate a product that evolves over time
◦
Two types: prototyping and the spiral model
•
Prototyping: used when a set of general objectives for software is defined esp. by customers, but no detailed requirements, so the requirements are not clearly understood or are unstable
◦
So start with communication, followed by quick planning and modeling, that eventually to a prototype that can be delivered and evaluated
◦
Developers can make implementation compromises to get a prototype working quickly
◦
Then prototypes can be discarded, and the actual software engineered with high quality
76%
24%
•
Spiral model: couples iterative nature with controlled and systematic aspects of the waterfall model
◦
Software developed in a series of evolutionary releases
◦
Earlier, might be a model or prototype, and later to be more complete in a spiral way
◦
Involves risk analysis in the second step, and builds prototypes and real deliverables in every loop