Lecture 2: Software Process Models Flashcards
Building Vs. Growing
Building is when you plan everything before starting, but this does not always work well for software.
Growing software is better, because you start with a very simple system that runs, but with minimal functionality, and then continuously add on to that software and let it grow
Steps of code and fix model
- write some code
- Fix them problems in the code.
What are the drawbacks of code-and-fix model?
- After fixes, code becomes poorly structured, which made fixing expensive
- Even well designed software does not meet user’s need (you need a requirements phase)
- Code was expensive to fix - poor prep for testing and modification
What are the 5 phases of the waterfall process?
- Requirements definition
- system and software design
- implementation and unit testing
- integration and system testing
- Operations and maintenance
(These are all connected to each other)
What is the original theory of the waterfall model?
One should move to the the next phase of development only when its preceding phase is completed and perfected
What documents are generated from Waterfall process?
Each step will yield documents.
example: after finishing requirements analysis, a requirement document is generated, which is essential for later steps.
What are common roles of Waterfall?
Analyst
Designer
Programmer
Tester
Trainer
Maintainer
Why is cost-estimation tricky in Waterfall?
A problem is that we may not have enough information during the early phases to make accurate predictions about the effort needed, and hence the cost, of later phases.
Why is waterfall a poor model?
The waterfall model is based on classical engineering practice: it is not clear that experience gained from construction of physical objects is going to work for software development
-the software development process is not well-understood;
scientific foundations are lacking;
software requirements change;
developers are HUMANS!
Driven by documents: Document reflects what reader wants to read rather than what is actually happening
Pros and Cons of Waterfall process
Rigid and formal process, fits well for:
-Embedded systems
-Safety-critical systems
Activities are isolated:
-Late-changing requirements require a lot of rework!
What’s the main medium of communication in waterfall model?
Verification
Documentation
Meetings
Feedback and Reviews
Summarize prototype model
Design and build a prototype over and over until the customer approves the prototype and then the final design is done.
Benefits of prototyping
Improved system usability.
A closer match to users’ real needs.
Improved design quality.
Improved maintainability.
Reduced development effort.
Incremental development
Fancy name for “growing software.”
Advantages of incremental development
There is a working system at all times;
clients can see the system and provide feedback
Progress is visible, rather than being buried in documents;
Some kinds of errors can be avoided.
Errors and the moment they’re made
Errors made early in development tend to be more serious (more expensive to fix) than errors made later.
The iterative process characteristic
Going small step by small step allows to uncover faulty assumptions early
Better at meeting customer’s needs: Some customers may not know what they actually want
Characteristics of Incremental delivery
Rather than delivering the system as a single delivery, the development and delivery is broken down into increments with each increment delivering part of the required functionality.
User requirements are prioritised and the highest priority requirements are included in early increments.
What is incremental development and delivery?
Dev: Develop the system in increments and evaluate each increment before proceeding to the development of the next increment (before validating)
Increment: Deploy an increment for use by end-users (push to production)
Advantages of incremental delivery
Customer value can be delivered with each increment so system functionality is available earlier.
Early increments act as a prototype to help elicit requirements for later increments.
Lower risk of overall project failure.
The highest priority system services tend to receive the most testing.
Problems with Incremental delivery
Most systems require a set of basic facilities that are used by different parts of the system.
-As requirements are not defined in detail until an increment is to be implemented, it can be hard to identify common facilities that are needed by all increments.
The essence of iterative processes is that the specification is developed in conjunction with the software.
-However, this conflicts with the procurement model of many organizations, where the complete system specification is part of the system development contract.