Unit 1.2.3 Software Development Flashcards
What is the Software Development Lifecycle (SDLC)?
- A systematic process made up of distinct phases that programmers follow to build, test, deploy and maintain high-quality software that meets it exceeds customer expectations, is completed on time and is efficient and robust.
What are the five methodologies?
- Spiral
- Rapid Application Development
- Waterfall
- Agile
- Extreme Programming
What are the phases in 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 if it actually works.
- Deployment – installing it in the target environment.
- Evaluation - checking in with the user if it is complete
- Maintenance – ensuring it continues to function properly by improvements, patches and updates.
What is the waterfall methodology?
- Each phase has a well defined start and end point with identifiable deliverables for the next phase
- A slight evolution allows programmers to move back previous stages if they gain new knowledge and want to rework early stages
What is the Spiral methodology?
- A concept that contains several elements of other models (waterfall, RAD and incremental)
- A methodology with risk being the heart of many large-scale projects
- Designed to account for these risks as they arise and deal with them before they become a major problem
- Has four stages (evaluate, identify, construct and design)
What is the Rapid Application Development (RAD) methodology?
- Producing successive prototypes until a final software version is produced and approved
- Following feasibility, increasingly refined prototypes are made with reduced functionality
- They’re designed, coded, tested and evaluated with the end user
- User may be happy with it or they want further improvements which will start a new cycle (iteration)
What is the Agile methodology?
- Refers to a group of methodologies that focus on requirements changing during development
- Product is built in a series of iterations (sprints)
- These short time-boxed periods are when team shave focused goals to complete a set amount of work
- Each sprint has increasing requirements and is shown to the user
What is the Extreme Programming methodology?
- Involves an iterative approach much like RAD, but iterations are very short (a week long)
- Company requesting the software will often “embed” a user in the development team
- New requirements will be built into successive iterations quickly and the user will be able to give instant feedback for the next iteration
- A key feature of extreme programming is “paired programming”
- It is claimed this approach produces much higher-quality code sooner, saving a lot of time and effort
What are the benefits of the waterfall methodology?
- Simplicity (easy to manage)
- Everyone is very clear on their responsibilities at each stage
- Clear deliverables
- Easy to see if a project is running to schedule
What are the drawbacks of the waterfall methodology?
- Carries a lot of risk
- User doesn’t see the product until the project is near its end
- Misunderstanding requirements can lead to a project which isn’t easy to fix
- Requirements must be very well understood - not suitable for complex projects
What are the benefits of the Spiral methodology?
- Risk management is at the heart of the model
- Excellent for projects with a high level of risk
What are the benefits of the RAD methodology?
- Requirements aren’t entirely clear from the start
- Focus group with the user can be used to get requirements without needing the full formal requirement document upfront
- Solution is likely to have excellent usability with the continuous feedback from the user
What are the benefits of the agile/extreme programming methodologies?
- Emphasises programming, so the quality of the end code is likely to be high
- Core principles and processes promote respect and collaboration, leading to a productive development team
What are the drawbacks of the Spiral methodology?
- Complex nature of risk analysis increases cost (as it’s a specialised skill)
- If risk analysis is done badly, the project suffers
What are the drawbacks of the RAD methodology?
- Focus on usability rather than how the product works, which is not suited where code efficiency is important
- Needs regular contact with client
- Scales poorly for large projects with big teams
What are the drawbacks of the agile/extreme programming methodologies?
- Requires a team of programmers working in close collaboration - unlikely to work if they’re widely distributed geographically
- Client must be able to have a full-time representative working with the development team
- Some of the processes involved in extreme programming (e.g., paired programming) can be quite costly
What is an algorithm?
A sequence of steps designed to perform a task. It may be constructed to describe the operation of a complete system or a particular part of it.
What is pseudocode?
Pseudocode is an alternative, text-based method of representing the sequence of steps in an algorithm.
Writing pseudocode allows us to lay down the logic of a problem in a code-like format without worrying about the rules and syntax of a particular language.
What does it mean to refine an algorithm?
The process of producing code that correctly implements a specification.
What is a flowchart?
A diagram that depicts a step-by-step approach to a process, system or computer algorithm.
Why would a program need testing?
Any non-trivial program needs to be tested to make sure it works as intended.
What are the 4 testing strategies?
- Black-box
- White-box
- Alpha
- Beta
What is black-box testing?
It involves checking every possible input to a program without concerning about the internal workings and structure of the program. Code efficiency is not important as long as inputs return the desired outputs.
If all inputs produce the desired outputs, we can be satisfied the program works in all cases - however, this 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 by identifying and testing all the possible paths of execution through a program.
On each test run, the path of execution is noted so it can be compared with other runs. It also checks the overall efficiency of the code.
What is alpha testing?
It typically occurs first and is limited internal employees and their friends and families.
It is often a very early version of the finished software, quite rough around the edges and may still contain a number of bugs.
What is beta testing?
Beta testing is usually opened up to a much wider community through a public beta program.
The program is in an almost-finished state.
The developers are looking to test areas like load balancing and multiple hardware compatibility.
What are the types of suitable test data?
- No data
- Erroneous/invalid data
- Boundary/extreme/edge data
- Normal/typical/valid data
What is “No data”?
You should check the special case of no data being entered.
What is “Erroneous Data”?
Data that should be rejected by the program.
What is “Boundary Data”?
Data of the correct type that is on either edge of the accepted validation limits.
What is “Normal Data”?
Data that should be accepted by the program without causing errors.