SLR 6 - SOFTWARE DEVELOPMENT Flashcards
What are the stages of the software development lifecycle SDLC?
- feasibility: is the problem solvable?
- requirements: working out what the solution needs to do
- analysis and design: working out how the solution needs to do it
- implementation: coding the solution
- testing: checking it actually works
- deployment: installing it in the target environment
- evaluation: checking in with the user – is the solution complete?
- maintenance: ensuring it continues to function properly by the way of improvements, patches and updates
What is a software development methodology?
the arrangement of the phases of the SDLC and how programmers move from one phase to another (both forwards and backwards)
What are the 5 main software development methodologies?
- waterfall
- rapid application development (RAD)
- spiral
- agile
- extreme programming
What is the waterfall model?
- derives its name from its cascading effect from one phase to another
- each phase has a well-defined start and end point with identifiable deliverables
- a slight evolution of the waterfall model allows you to move back to a previous stage as well as forwards (this reflects the fact that developers often have to rework earlier stages in light of knowledge gained as development progresses)
Advs of the waterfall model
- Straightforward to manage
- Clearly documented
- simplicity makes it easy to manage
- everyone on the project is very clear of their responsibilities at each stage
- clear deliverables
- easy to see if a project is running to schedule
- ease of management can make it suitable for large-scale development projects, assuming they are well-understood and carry little risk
Disadvs of the waterfall model
- Lack of flexibility
- No risk analysis
- Limited user involvement
- carries a lot of risk
- user doesn’t get to see the product for the first time until the project is near its end
- misunderstanding requirements can lead to a project that isn’t easy to fix
- requirements must be very well understood so this model is not suitable for complex projects
What is rapid application development (RAD)?
a methodology that involves producing successive prototypes of the software until a final version is produced and approved
Advs of RAD
- Caters to changing user requirements
- Highly usable finished product
- Focus on core features, reducing development time
- requirements don’t need to be made clear from the start
- focus groups involving the user can be used to gather requirements without the need for full formal requirements document upfront
- continuous feedback from the client means that the solution is likely to have excellent usability
- good for projects where the initial requirements are not fully understood, as the iterative nature prevents development from becoming side-tracked
Disadvs of RAD
- Poorer quality documentation
- Fast pace may reduce code quality
- focus on usability rather than how the product works (not suited for projects where code efficiency is very important
- regular contact with client must be maintained at all times
- scales poorly for large projects with big teams
What is the spiral model?
- An iterative version of the Waterfall model where stages are refined and
repeated until the final product is complete. The first cycle works towards an initial prototype,
and each successive cycle produces a refined prototype. - a risk-driven development methodology
- more of a guide for development teams, allowing them to adopt elements of one or more other methodologies like waterfall or RAD
- better thought of as a process model generator, where decisions on the software development methodology are made based on the risks identified
Advs of the spiral model
- Thorough risk-analysis and mitigation
- Caters to changing user needs
- Produces prototypes throughout
- risk management is at the heart of this model
- excellent for projects that contain a high level of risk
- suitable for large-scale problems and those that involve a high degree of risk, especially where the user doesn’t fully understand their requirements upfront
Disadvs of the spiral model
- Expensive to hire risk assessors
- Lack of focus on code efficiency
- High costs due to constant prototyping
- if risk analysis is done badly, the project suffers
What is the agile methodology
- agile development refers to a group of methodologies (not a single one) that came about in the early 2000s.
- these methodologies focus on the idea that requirements will shift and change during development – this can only be dealt with by producing software in an iterative way.
- they are a more refined form of the older concepts behind rapid application development (RAD)
- the product is built in a series of iterations known as sprints
- these are short, time-boxed periods when a team has focused goals to complete a set amount of work.
- each sprint should ideally be a bite- sized piece of focused work, taking no longer than one to four weeks.
What is extreme programming?
- a type of agile methodology that is more responsive to changing user needs with short development cycles and very frequent software releases. Checkpoints are incorporated to change or add new user requirements
- encourages close collaboration between developers and customers, promoting simplicity, feedback, and regular iterations to deliver high-quality software quickly
Advs of agile methodology and extreme programming
- Flexible to changing requirements
- Regular user input
- Constant user involvement means high usability
- emphasises programming, so the quality of end code is likely to be very high
- core principles and processes promote respect and collaboration, leading to a very productive development team
- when the emphasis of a project is on the quality of finished code, agile and extreme programming processes are ideal
Disadvs of the agile methodology and extreme programming
- requires a team of programmers working in close collaboration, unlikely to work well if the team is widely distributed geographically
- client must be able to commit to having a full-time representative working with the development team
- some of the processes involved in extreme programming (eg: paired programming) can be quite costly