what are the stages of generic software development?
analysis, design, implementation, testing, evaluation, maintenance
what is the analysis stage?
define the problem and establish the requirements
requirements could involve the data, the procedures, the future, the problems
what is the design stage?
could involve processing, data structures, output, input, user interface, security and hardware
what is the implementation/programming stage?
breaking the problem down into individual modules repeatedly until each module performs a single well-defined task
then the program code is written
what is black box testing (functional testing)?
looking at the program specification and creating a set of test data that covers all the program functions/inputs/outputs
what is white box testing (structural testing)?
derives from the program structure instead of its function
tests are devised which test each possible path of the structure at least once
does not detect missing functions
what is alpha testing?
carried out by software developer’s in-house testing team, reveals both errors and omissions in the requirements definition
what is beta testing?
gives the package to a number of potential users who use the system and report problems
exposes the product to real use and detects unanticipated problems and errors
the product can be modified and sent out for more testing
what happens in the evaluation stage?
could use post implementation review about performance, errors, benefits, problems, how much it meets the criteria
waiting period allows users and staff to learn how to use the system
management evaluate usefulness of system and shortcomings become apparent
evaluating on basis of effectiveness, usability and maintainability
what is the waterfall lifecycle model?
the steps are carried out sequentially and the entirety of one stage has to be completed before the next can be started
each step has specific outputs that lead into the next step
difficult to return to previous stages because developers have to work back down through the stages
little user input (only in analysis stage)
advantages: easy for small projects with clear requirements, clear structure, obstacles in one stage can be resolved before moving on
disadvantages: difficulty in making changes, little user input (only in analysis stage), leaves the testing phase until the end is risky, not good for flexible requirements
what is the spiral lifecycle model?
uses the same structured steps but introduces idea of developing the software in iterative stages
at the start of the process, the requirements are defined and the developers work towards an initial prototype
the analyse, design, implement, evaluate stages are carried out repeatedly and they generate a prototype which provides a plan for the next iteration
each successive loop around the spiral generates a refined prototype until the product is finished
advantages: good for large scale projects, regular testing ensures that problems are detected early, fast and cost effective development due to rapid cycles, software is produced early on, can accomodate to flexible, changing requirements
disadvantages: can be expensive if spirals continue indefinitely, not an ideal fit for smaller projects, documentation is too much, a complex process,
what is the agile lifecycle model?
advocates building prototypes, testing and incorporating feedback as soon as possible
after each prototype is built, it is reviewed
in the next stage, the prototype can be modified
it’s an iterative process where changes are constantly made and the user constantly gives feedback
advantages: focus on users, simple model, flexible, fast software development cycles
disadvantages: creates scope creep, (where client continually adds to the requirements, causing more time and money wasted), theres also a lack of documentatation and unsuitable for small projects
what is rapid application development lifecycle?
offers faster completion of major projects
uses workshops and focus groups to gather requirements
use of prototyping, reuses software components, strict time limits on each part of the system
advantages: better focus on customer feedback, fast production speed, breaks down development into manageable chunks
disadvantages: expensive, unnecessary for small projects, requires a skilled team of developers
what is extreme programming lifecycle?
frequent releases of software in response to changing customer requirements
a type of agile software development
improves productivity and software quality
uses pairs of programmers where one codes and one reviews
user is involved in development process so strong focus on meeting user requirements
disadvantages: no documentation, requires lots of collaboration, scope creep can happen
usability: flexible requirements and tight deadlines and high quality