Development methodologies Flashcards
What is a software development lifecycle?
This is when one is developing a solution to a problem for a computer system and programmers have to work through a number of distinct phases.
What are the 8 things you need to check on a SDLC (software development lifecycle)?
- Feasibility
- Requirements
- Analysis and design
- Implementation
- Testing
- Deployment
- Evaluation
- Maintenance
What is the waterfall model?
The 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 this 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.
What is the RAD model?
Rapid application development (RAD) model is a methodology that involves producing successive prototypes of the software until a final version is produced and approved.
Following initial approval of a feasible program, increasingly refined prototypes are made with reduced functionality.
What is the spiral model?
This is a risk-driven methodology. It is 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 on the methodology is made based on the risks identified
What is the agile methodology?
They focus on the idea that requirements will shift and change during development - this can only be dealt by producing software in an iterative way.
Product is built in series of iterations called “sprints”. These are short, time-boxed periods when a team has focused goals to complete a set amount of work.
What is extreme programming?
This is more of a framework rather than a methodology. It aims to produce very high-quality code and promote developers’ quality of life. Some common practices would be:
- Simplicity
- Communication
- Feedback
- Courage
- Respect
Considered as an agile framework that encourages regular, small, iterative software releases