1.2.3 Software Development Flashcards
What are SDLC’s
Software development methodologies:
- Provide systematic approach to software development
- Suitability dependent on projects unique requirements
Waterfall Features
Waterfall : Focus on delivery of project as a whole
- Rigid and structured (defined start and end dates) and agreed upon requirements.
- Linear sequential phases (Requirements, Design, Coding, Testing, Deployment, Maintenance)
- Inflexible - must reverse through previous stages to change something and revisit previous levels
- involves documentation
Well suited for large complex projects with clear requirements unlikely to change and low risk e.g. Gov project
Waterfall Advantages (3) and Disadvantages (3)
Advantages:
- Easy to understand and manage- organization of tasks easy - programmers have clear responsibilities as simple and linear
- Clear documentation
- Clearly defined start and end dates - easy to measure progress
Disadvantages:
- Inflexible- hard to implement change as have to reverse through linear stages
- Little user input until the end
- If requirements misunderstood can go off track – expensive and difficult to fix
Agile methodologies features
Agile methodologies: Aim to improve the flexibility and adapt to changes in user requirements faster
- Sections developed in parallel
- Working prototype delivered early
- Prototypes improved and developed iteratively and regularly
- less focus on documentation and more on user satisfaction
Suited to Small to medium projects with unclear initial requirements.
Extreme programming features
Extreme programming : Focus on delivery of high-quality code quickly and allow development to changing user requirements.
- Agile Paradigm
- Involves paired programming
- A lot of input from end user
- Fast Iterations and feedback from customer
Suited for small to medium projects with unclear initial requirements requiring excellent usability.
Spiral model features
Spiral model : Risk identification and mitigation is priority
- Iterative - changes made when repeated at start of cycle
- Iterations of linear sequence of phases (Planning, Risk Analysis, Engineering, Evaluation)
- Involves hiring risk assessors
Suited to very large-scale projects with high risk and uncertainty
Spiral Advantages (2) and Disadvantages (3)
Advantages:
- More flexibility - handle changes more easily through iterations at various stages of development
- Ability to handle complex programs with high risk as can identify and address issues early.
- Encourages feedback and input from client
Disadvantages:
- Complex so need experienced software developers (higher cost) and harder to manage.
- Expensive - Need to employ risk analyst.
- If risk analysis is done bad the project suffers.
- Extra Time consuming and costly so not suited to small projects.
Extreme / Agile Programming Advantages (3) and Disadvantages (3)
Advantages:
- Emphasizes programming- quality of produced end code is high
- Flexible - as requirements don’t need to be specified at the start so ability to handle changing requirements due to iterations
- Regular user input and customer / client collaboration to ensure developed product meets needs with focus on user satisfaction
Disadvantages:
- Requires skilled and experienced programmers - costly
- Customer / Client needs to be able to commit time as requires consistent interaction between user and programmer
- requires closely knit team - may not work well if geographically distributed
- Poor documentation due to focus on immediate coding
Rapid application development features
Rapid application development : Focus on quickly developing a partially functioning prototype that is continually built upon very quickly.
- Iterative where client gives feedback on prototypes and changes made, repeated until final prototype.
- Able to deal with changing user requirements due to iterations.
Suited for small to medium, low-budget projects with short time-frames
Rapid application development Advantages (3) and Disadvantages (3)
Advantages:
- Focus on rapid prototyping - get working prototype quickly
- Flexibility - as requirements don’t need to be stated at start and ability to handle changing requirements through iterations
- End project has excellent usability as lots of contact with user so will likely meet needs and expectations.
Disadvantages:
- Time consuming for client
- Poor quality documentation due to focus on speed
- Focus on usability and speed but not quality of code
Stages of SDLC
Analysis - Clearly define problem and system requirements and consider current solutions and inputs / outputs
Planning
Design - design aspects of program
Development - Split into self contained modules and allocate to teams
Testing - see if the program works
Implementation - Install onto users systems
Evaluation - effectiveness of the software is evaluated against the system requirements and success criteria
Maintenance: Software updates and fix bugs