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
What are the advantages of the spiral model?
- Risk management is at the heart of this model
- Excellent for projects that contain a high level of risk
What are the disadvantages of the spiral model?
- Complex nature of risk analysis increases costs- risk management is a highly specialised skill
- If risk analysis is done badly, the project suffers
What projects would a spiral model be 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
What are the advantages of agile and extreme programming?
- Emphasised 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
What are the disadvantages of agile 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 fulltime representative working with the development team
- Some of the processes involved in extreme programming such as paired programming can be quite costly
What type of projects would agile and extreme programming be suitable for?
- If the project has an emphasis on the quality of finished code, then those 2 strategies are ideal
What is the flowchart symbol for a terminal (Start/Stop)?
- A circle
What is the flowchart symbol for a process?
- A rectangle
What is the flowchart symbol for a decision?
- A rhombus
What is the flowchart symbol for Input/Output?
- A paralelogram
What is the flowchart symbol for a subroutine?
- A rectangle with 2 diagonal lines
What are the 4 most common testing strategies?
- Black-box testing
- White-box testing
- Alpha testing
- Beta testing
What is black-box testing?
- Simply checks whether an input produces the expected output
- Code efficiency is not important as long as inputs return the desired outputs
- Ideally, every possible input should be checked during this method of testing, however it is often not feasible
What is white-box testing?
- Involves testing the algorithms in the code and making sure all parts of those algorithms function as intended.
- On each test run, the path of execution is noted so it can be compared with other runs
- Identifies and tests all the possible paths of execution through a program
- Also checks the overall efficiency of the code
What is alpha and beta testing?
- Carried out when software is nearly ready for release and can be tested as a complete solution
- They apply especially to commercial software such as computer games
What is the difference between alpha and beta testing?
- Alpha testing typically occurs first and is limited to internal employees and their friends and families
- Beta testing is usually opened up to a wider community and is usually done through a public beta program
What are the 4 types of test data?
- No data
- Erroneous data
- Normal data
- Boundary data
What is ‘no data’ test data used for?
- Checks whether the user enters no data
What is ‘erroneous’ test data?
- Data that should be rejected by the program
What is ‘normal’ test data?
- Data that should be accepted by the program without causing errors
What is ‘boundary’ test data?
- Data of the correct type that is on either edge of the accepted validation limits