6: Software Development Flashcards
What is a SDLC
Software Development Life Cycle
- A number of distinct phases programmers work through to develop a solution to a problem
What are the 8 stages of the 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?
- Maintainance: Ensuring it continues to function properly by the way of improvements, patches and updates
What is the waterfall lifecycle?
- 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 model allows you to move back to previous stages as well as forwards, which reflects the fact that developers often have to go back to earlier stages in light of knowledge gained as development progresses
What is rapid application development (RAD)?
- Involves producing successive prototypes of the software until a final version is produced and approved
- Following the approval of a feasible program, increasingly refined prototypes are made with reduced functionality
- These are designed, coded, tested and evaluated with the end user
- The user may decide they are happy with the system or could want further improvements, which will start a new cycle
What is the spiral model?
- A risk-driven development methodology
- More of a guide for development teams, allowing them to adopt elements of one or more other methodologies
- It is not a fixed process that must be followed in the correct order - it is wholly dependent on the project and its unique risks
- better thought of as a process model generator, where decisions about the SDM are made based on the risks identified
What is the agile development methodology?
- Focuses on the idea that requirements will shift and change during development; this can only be dealt with by producing software in an iterative way
- Product is built in a series of iterations called sprints
- 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 work, taking no longer than one to four weeks
What is extreme programming?
- A framework that aims to produce very high-quality code and promote developer’s quality of life by encouraging them to adopt a set of common practices that focus on the values of: simplicity, communication, feedback, courage and respect
- Considered an agile framework, as it encourages regular, small, iterative software releases
- At its core are the concepts of collective ownership and every team member being of equal value
What are 5 commonly accepted core practices that make up extreme programming considered to boost the overall quality of completed solutions?
- collective code ownership
- continuous integration
- code standards
- refactoring (revisiting old code)
- paired programming (having two programmers at the same computer)
What are the pros of the waterfall methodology
- Simplicity makes it easy to manage
- Everyone on the project is clear on their responsibility at each stage
- Clear deliverables
- easy to see if a project is running to schedule
What are the cons of the waterfall methodology?
- Carries a lot of risk
- The 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 is not easy to fix
- Requirements must be very well understood, so this model is not suitable for complex projects
When would the waterfall methodology be used?
Ease of management can make it suitable for large-scale development projects, assuming they are well understood and carry little risk
what are the pros of RAD?
- Requirements don’t need to be entirely clear from the start
- Focus groups involving the user can be used to gather requirements without the need for full formal requirement documents upfront
- Continuous feedback from the client means the solution is likely to have excellent usability
What are the cons of RAD?
- Focus on usability rather than how the product works - not suited for projects where code efficiency is very important
- Regular contact with the client must be maintained at all times
- Scales poorly for large projects with big teams
When is RAD used?
Good for projects where the initial requirements are not fully understood, as the iterative nature prevents development from becoming side-tracked
What are the pros of the spiral model?
- risk management is at the heart of this model
- Excellent for projects that contain a high level of risk