1.2.3 Software Development (New) Flashcards
What are software development life cycle methodologies?
A process for planning, creating, testing and deploying high quality software.
What are the 5 software development methodologies?
- Waterfall lifecycle
- Rapid Application Development
- Spiral Model
- Agile software development
- Extreme Programming
Describe the waterfall model
- Each stage of development is completed one at a time in a linear sequence, from start to finish.
- Results from a completed stage are input into the next.
What must be done if a change needs to be made within a project being developed using the waterfall model?
Programmers must revisit all levels between the current stage and the stage at which a change needs to be made.
The waterfall model suits projects which are:
- Large scale
- Low risk
- Have stable requirements
The waterfall model is absolutely unsuitable for projects which are:
- High risk
- Complex
When does working software get produced within the waterfall lifecycle? Why is this a problem?
Late during the lifecycle.
Problems may not be discovered until it is too late.
Advantages of using waterfall
- Straightforward to manage
- Clearly documented
Disadvantages of using waterfall
- Lack of flexibility
- No risk analysis
- Limited user involvement.
What are agile methods / methodologies?
An iterative process that produces software prototypes over short sprints.
How is the user involved in agile methodologies?
- Each prototype is user tested.
- Any feedback and change in requirements will be accounted for in future sprints.
Agile methodologies focues less on documentation, with the aim of what?
Giving priority to user satisfaction.
What types of projects would agile methodologies be ideal for?
Small to medium projects with unclear initial requirements.
Agile methodologies benefits
- Produces high quality code
- Flexible to changing requirements
- Regular user input
Agile methodologies drawbacks
- Poor documentation
- Requires consistent interaction between user and programmer.
What is extreme programming?
A type of agile model, where the development team consists of a pair of programmers alongside a representative end user.
What is extreme programming ideal for?
Small to medium projects with unclear initial requirements requiring excellent usability.
Extreme Programming Drawbacks
- High cost of 2 people working on one project.
- Teamwork is essential. Programmers must communicate effectively.
- Hard to produce high quality documentation due to iterative nature.
Extreme Programming Benefits
- Produces high quality code (thanks to pair programming)
- Constant user involvement means high usability
What is the spiral model?
An iterative model designed to manage risk-heavy projects.
How many key stages does the spiral model have?
Four
What does the spiral model require?
Risks to be identified and evaluated at each stage.
Spiral Model Benefits
- Thorough risk analysis and mitigation
- Caters to changing users needs.
- Produces prototypes throughout.
Spiral Model drawbacks
- Expensive to hire risk assessors
- Very time consuming.
- High costs due to constant prototyping.
What is Rapid Application Development?
An iterative methodology. It involves building a prototype, then evaluating and refining it over multiple iterations until it becomes the final product.
What kind of projects is RAD well suited to?
- Projects where user requirements are initially unclear.
- Small to medium, low budget projects with short time frames.
Drawbacks of using RAD.
- Poorer quality documentation.
- Fast pace may reduce code quality.
Benefits of using RAD
- Caters to changing user requirements
- End product has excellent usability
- Reduced development time
What is an algorithm?
A set of instructions used to solve a problem.
What are good key qualities of an algorithm?
- Clearly defined inputs
- Always produces valid outputs for any defined input
- Can deal with invalid inputs
- Always reaches a stopping condition
- Well documented.
Benefits of a well documented algorithm
Allows modifications to be easily made.
Features of Extreme Programming.
- Responsive to changing user needs
- Short development cycles and frequent software releases