Chapter 2 Software Process Flashcards
Steps of Software Process
Specification
Design
Implementation
Validation
Evolution
Implementation
Translate design into an executable program
Different Software process models
The waterfall model
Evolutionary development
Formal systems development
Reuse oriented development
The waterfall model
Separate and distinct phases of specification and development
The waterfall model phases
The drawback of the waterfall model
Hard to respond to changes
Inflexible
Applicability of waterfall model
When requirements are understood and not changing
Small project
Advantages of waterfall method
- well documented/ well structures product
- simple and easy
-distinct and clear phases
Outline of Evolutionary Development
Interleaved specifications, development and validation
Types of Evolutionary Development
- Exploratory development: Work with costumer to evolve final system
- Thro-away prototyping : Understand the system requirements then start. (Should start with poorly understood requirements)
Advantages of evolutionary development
The specifications can be developed incrementally
The user understands the problem
The user sees the progress
Disadvantages of evolutionary development
Lack of process visibility
Systems are often poorly structured( easily corrupted structure), meaning incorporating changes becomes increasingly difficult
Special skills may be required
Applicability of evolutionary development
For small/medium size interactive systems
For pats of large systems (such as the UI)
For short lifetime systems
Formal Systems Development
Based on the transformation of a mathematical specification to an executable program
Formal Systems development flowchart
Disadvantages of Formal Systems Development
Needs specialized skills and training
Difficult to formally specify some aspects of the system as the UI
Hard to develop specifications for large software systems
Advantages of Formal Systems Development
Transformations are “correctness preserving” so it is straightforward to show that the program conforms to its specifications
Applicability of Formal Systems Development
Critical systems with high concern about safety before the system is put into operation
Exploratory development flowchart
Prototyping development flowchart
Component Based Software Engineering
Based on systematic reuse where the systems are integrated from existing components or COTS systems
Advantages of Component Based Software Engineering
Reduce the amount of software to be developed (and hence reducing cost and risks)
Faster delivery of software
Disadvantages of Component Based Software Engineering
Compromised requirements ( the system may not meet the needs of user)
Some control over the system evolution is lost (as new versions of the reusable components are not under the control of the organizations using them)
Applicability of Component Based Software Engineering
When system requirements can be compromised and delivery must be quick