Design Processes Flashcards
Pros (3) and Cons (4) of the Waterfall Method
+ Reflects standard engineering practice
+ Encourages breakdown of complex systems
+ Good for management of documentation
- Inflexible
- Needs an early commitment to requirements
- Late changes increase the costs
- Too slow
Describe: Rapid Prototyping
Used when requirements are vague to help customer decide what they want.
- Easy to demonstrate and collect feedback
Prototype is then discarded to build the real system
Describe: Evolutionary Prototyping
Use if requirements are vague and where time constraints on project may force early termination.
Prototype becomes the final product
Pros (3) and Cons (3) of Prototyping
+ Helpful when requirements are vague
+ Flexible
+ Accomodates late changes
- Development process isn’t visible
- Poor structure can emerge
- Can’t manage large scale systems that would require any coordination between parties
Describe: Spiral Lifecycle Model (4 stages)
Aim is to control risks through the project: the key idea is to evaluate the risks and reduce them.
Can terminate features at each evaluation.
4 Stages: - set objectives for current stage
- evaluate risks - develop &validate current stage - plan next stage
Pros (2) and Cons (1) of Spiral Lifecycle Model
+ adapts to fit projects
+clear process and evaluation
- late changes can have serious consequences
When is Formal Systems Development useful?
For safety critical systems
Requires formal specification & proof
Pros (2) and Cons (3) of Formal Systems Development
+ precise and error free
+ proof of specification
- Precieved as difficult
- Requires mathematical expertise
- Still requires validation
Describe Incremental Development.
When is it useful?
Useful if time-to-market is critical Prioritise requirements (list requirements in order of priority), each requirement is delivered as an increment
Describe ‘Shift to Components’ Development? 3 phases
Requirements phase: analyse requirements so they can be mapped onto software components
Construction Phase: Build system from existing components and develop new components to integrate to an existing framework
Reuse & Maintain
Pros (3) and Cons (3) of using Components to develop software?
+ Rapid development strategy
+ Encourages code reuse
+ Reducs costs and risks
- High initial set-up cost
- Can lose control of component set
- Sometimes components can be forced to fit a framework
Describe the Fountain Lifecycle. How is it: incremental, iterative, parallel?
Incremental:
- develop and deliver on task at a time
- use a prototype system
Iterative:
- revisit any faulty tasks
- revisit any tasks where a change is requested
Parallel:
- Tasks are developed independently
- this gives scope for multi-team development
Describe Agile Methods of software development
- No big up front design
- Short increments with daily builds, passing all tests
- Pair Programming
- Anyone can modify the code base
Pros (3) and Cons (3) of Agile Development Methods
+Avoids unproductive and wasteful documentation
+ Code is constantly up-to-date
+ Emphasis on testing
- Inflexible process
- Assumes good design will emerge by evolution
- Doesn’t work for large scale projects that require coordination