2.2: Problem Solving and Programming Flashcards
What is meant by software development methodology?
- The arrangement of phases and how programmers move from one phase to another - both forwards and backwards
What is meant by the term ‘SDLC’?
- Software Development Lifecycle
- Phases of software development
What are the stages of the SDLC?
- Feasibility
- Requirements
- Analysis and design
- Implementation
- Testing
- Deployment
- Evaluation
- Maintenance
What happens during the feasibility stage?
Figuring out if the problem is solvable
What happens during the requirements stage?
Working out what the solution needs to do
What happens during the analysis and design stage?
Working out how the solution needs to do it
What happens during the implementation stage?
The solution is coded
What happens during the testing stage?
Checking if it actually works
What happens during the deployment stage?
Installing the program in the target environment
What happens during the evaluation stage?
Checking in with the user - is the solution complete?
What happens during the maintenance stage?
Ensuring it continues to function properly by the way of improvements, patches and updates
What are the 5 types of development methodologies?
- Waterfall
- RAD
- Spiral
- Agile
- Extreme programming
Describe the waterfall methodology.
- It has a 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
Describe the RAD methodology.
- Methodology that involves producing successive prototypes of the software until a final version is produced and approved
- Following the initial approval of a feasible program, increasingly refined prototypes are made with reduced functionality
- These are designed, coded, test and evaluated with the end user
- Your user might decide they are happy with the system or that they want further improvements, which will start a new cycle
Describe the Spiral model methodology.
- Risk-driven development methodology.
- The spiral model is more of a guide for development teams, allowing them to adopt elements of one or more other methodologies like waterfall or RAD
- This model is better thought of as a process model generator, where decisions on the software development methodology are made based on the risks identified
Describe the agile methodology.
- Refers to a group of methodologies
-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 older concepts behind 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
Describe the extreme programming methodology.
- Aims to produce very high quality code
- Encourages developers to adopt a set of common practices that focus on the values of:
- Simplicity
- Communication
- Feedback
- Courage
- Respect
- It is considered an agile framework as it encourages regular, small, iterative software releases
What are the 5 core practices that are considered to boost the overall quality of completed solutions for a project?
- Collective code ownership
- Continuous integration
- Code standards
- Refactoring
- Paired programming
What are some advantages of the waterfall model?
- Simplicity makes it easy to manage
- Everyone on the project is very clear on their responsibilities at each stage
- Clear deliverables
- Easy to see if a project is running to schedule
What are some disadvantages of the waterfall model?
- 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
Where would a waterfall model likely be used?
- Large-scale development projects assuming they are well-understood and carry little risk
What are some advantages 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 requirements document upfront
- Continuous feedback from the client means the solution is likely to have excellent usability
What are some disadvantages of RAD?
- 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 types of projects would RAD work well in and why?
- Projects were the initial requirements are not fully understood, as the iterative nature prevents development from becoming side tracked