Lecture 1 (Part III) Flashcards
Describe the Waterfall Model
- Analysis: Requirement Engineering Process
- Feasibility: check if financially/technically feasible
- Requirement analysis: understanding the customers requirements and its specifications
- Requirement specification: describing the requirement specifications in detail
- Requirement validity: are they valid?
- Design:
- design a solution for the requirements and specifications
- translate the requirements into a solution that meets the specifications
- develop a software to meet the customers requirements.
- Implementation & Unit Testing:
- translate the solution into a executable program/code
- interleaving with design
- Integration, System Testing and Deployment:
- verification & validity: to check if it meets the requirements
- testing is done through different test cases. Most common in V&V (above)
- Maintenance and Evolution: Maintaining the software and adding functionality
- fixing errors, bugs
- improve existing functionality
- adding new functionality if needed
Each step has to be completed before the next step.
What are the Advantages & Disadvantages of the waterfall model?
Advantages:
- Usable where there are stable requirements
- can be applied in very large projects where work is being done on multiple sites at the same time
- easy to measure progress
Disadvantages:
- Not good with changing requirements
- Not flexible
Where can Waterfall models be used?
Due to its advantages and limitations, the waterfall model can only be used in development of three types of softwares:
- Embedded systems: systems where software has to interface with hardware
- Critical systems: where there is extensive requirement for safety and security analysis.
- Large Software Systems: Systems that are developed by multiple different partner companies and are part of broader systems.
What is ‘Incremental Development’ ?
Development method that uses both plan-driven and agile methodologies. Better suited for systems which has changing requirements or a possibility of that
- Development in increments
- Evaluate after each step before moving to the next step.
- Evaluation done by user
How are requirements handled in Incremental Development?
- Requirements are prioritised
- Higher priority requirements are handled in earlier increments
- Requirements are frozen during development
- Requirements for other increments can evolve later.
What is ‘Incremental Delivery’ ?
- Deploy increments for use by end-users
- More realistic feedback on the increments which can be used for development
- Hard for replacement systems as the increment has less functionality than the system it is replacing.
What are the Advantages & Limitations of Incremental Development?
Advantages:
- Customer value provided with each increment
- Less chance of total project failure
- High priority requirement is tested the most
- Functionality is provided earlier
- Earlier increments are seen as prototypes to elicit requirements for later increments.
Disadvantages:
- process not visible
- structure/architecture is degraded when new increments are added
- specification is not known until increment is implemented, so it’s hard to identify common functionalities amongst different increments
- specification is developed with software, this conflicts with procurement of companies, since they define by contract.
What are the properties of a ‘Boehm’s Spiral Model’ ?
- Loop represents phases in the process
- Risk is assessed and resolved throughout the process
- Flexible Loops/Phases i.e no fixed loops/phases. They are chosen depending on what is required.
What are the different sectors of ‘Boehm’s Spiral Model’? Where is it used?
**Acronym: DROP
- Development & Validation: A development method is chosen for the system
- Risk assessment & reduction: Risk is assessed and activities are put in place to reduce them
- Objective setting: specific objectives for phases are identified
- Planning: project is reviewed and the next phase is planned.
Used in:
- Introduced iteration in software process
- Introduced risk-driven approach to development
however rarely used
What is ‘Reuse Oriented SE’ ?
- Systematic usage of existing software
- Systems are integrated from existing components or COTS (Commercial-of-the-shelf) systems
- Now it is the standard method for developing various business systems
What is the ‘process’ of Reuse Oriented SE? Give examples
**Acronym: CSRD
- Component Analysis
- System design using reuse
- Requirements modification/adaptation
- Development & Integration
Examples:
- Web services developed according to standards and capable of remote invocation
- Collection of objects developed as a package to be integrated with a component framework
Stand-alone software systems (COTS) for usage in specific environments