Project goes through a number of builds until it's complete
Advantages of the spiral model
Risk management is at the heart of the model
Excellent for projects that contain a highlevel of risk
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
Rapid Application Development (RAD)
Involves producing successiveprototypes of 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, tested and evaluated with the4 end user
RAD process
SImilar to spiral model but emphasis is on rapid development
Prototype is shown to user which can influence future development with feedback
Iterative process may be carried out in which another prototype is developed until eventually, the program is complete
Advantages of RAD
Requirements don't need to be entirely clear from the start
Focus groups including the user can be used to gather requirements without the need for full formal requirements document upfront
Disadvantages of RAD
Focuses on usability rather than how the product works - not suited for projects where codeefficiency is very important
Regular contact with client must be maintained at all times
Scales poorly for large projects with big teams
Agile methodology
Focus on the idea that requirements will shift and change during development which can only be dealt with by producing software in a iterative way
Products built in a series of iterations named sprints
Sprints are short, time boxed periods when a team has focused goals to complete a set amount of work, taking no longer than 1-4 weeks
Extreme programming
Aims to produce high quality code and promote developers' quality of life by encouraging them to adopt a set of common practices that focus on the values of simplicity, communication and respect
Considered agile framework as it encourages regular, small, iterative software releases
Process of agile methodologies and extreme programming
In the design, coding, testing and evaluating stages:
Similar to RAD but less time between iterations
User becomes part of the development team to facilitate quickfeedback
Paired programming: Two heads are better than one. Code partner to review , advise and bounce ideas off
Advantages of agile and extreme programming
Emphasises programming so 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
Disadvantages of agile and extreme programming
Requires a team of programmers working in close collaboration - unlikely to work well if team is widely distributed geographically
Client must be able to commit to having a full time representative working with the development team
Some of the processes involved in extreme programming such as paired programming can be quite costly
The most common test strategies are:
Black box testing
White box testing
Alpha testing
Beta testing
Black box testing
Checks whether an input produces the expected output
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
White box testing:
Involves testing the algorithms in the code and making sure all parts of those algorithms function as intended
Focuses on identifying and testing all the possible paths of execution through a program
Path of execution is noted so it can be compared with other runs
Checking the efficiency of the code
Alpha and beta testing are carried out when software is nearly ready for release and can be tested as a complete solution
Alpha testing occurs first and is limited to internal employees and their friends and family
Often an early version of the finished software and may contain a number of bugs
Beta testing is usually opened to a wide community through a public beta program
Program is in an almost finished state
Developers look to test area such as load balancing and multiple hardware compatibility
The different test data types are
No data
Erroneous data
Normal data
Boundary data
Normal data is data that should be accepted by the program without causing errors
Boundary data is data of the correct type that is on either edge of the accepted validation limits
Trace tables have the ability to track down logic errors in a program
A new row should be added if the state of a variable changes