What factors do we consider when choosing a software engineering process?
Choice of software process typically depends on:
- Characteristics of system being developed
- Customer requirements
- Skills and experience of development team
- Organisational culture and practices
An appropriate software process should be chosen for a system based on the project and its context
What are some examples of software lifecycle/process models?
What is a software lifecycle/process model?
A software process model or lifecycle is an abstract
representation of software processes
What is a lifecycle?
Oxford English Dictionary
“In extended use:
a course or evolution from a beginning, through
development and productivity, to decay or ending.”
What are the stages of a software lifecycle?
What is the waterfall model?
Requirements specification
-> Design
-> Implementation
-> Validation
-> Operation
-> Maintenance
What happens in a modified waterfall model?
After the maintenance phase, the process goes back to the requirements specification phase
What are the pros of the waterfall model?
Can be used when
- Requirements are well understood
- Requirements are unlikely to change radically during development
Possibly suitable for
- Embedded systems
- Critical systems
- Collaborative development scenarios for large engineering projects
What are the cons of the waterfall model?
What is the spiral model?
Incremental but systematic
- Risk-driven software process framework
- Changes are results of project risks
- Process and product are determined by risks
- Aims to lower development costs by early elimination of
alternatives that are not viable
Each loop in the spiral
- A phase of the process
What are the 4 sectors in each loop of the spiral model?
What is iterative and incremental development (IID)?
Initial release of software, followed by refinements
- Increments incorporating feedback from stakeholders
- Plan-driven or agile or a mix of both
- Basis for current development methods
What are the pros of IID?
What are the cons of IID?
What is the integration and configuration model?
Software reuse is common in projects
- Reuse-oriented approaches
- Reusable software components
Examples
- General-purpose stand-alone systems that can be
configured
- Web services satisfying service standards and can be
remotely invoked
- An integrating framework for composing components
What are the stages in reuse-oriented software engineering?
Requirement specification
-> Requirement refinement
If there is an application system available to refactor, the application system is configured
If there are components available (but not the full system), they are developed and adapted to be integrated in the system