1.2.3 Software Development Flashcards
State the 7 stages of a software development life cycle.
Analysis
Design
Development
Testing
Implementation
Evaluation
Maintenance
State the 4 types of testing.
Alpha testing
Beta testing
White box testing
Black box testing
What is the analysis stage of the SDLC?
Collecting information from stakeholders
Using information to clearly define the problem & system requirements
What is the design stage of the SDLC?
Different aspects of the new system are defined including inputs, outputs, security features, hardware set-up & user interface
Test plan may be designed
What is the development stage of the SDLC?
Design is used to split project into individual self-contained modules
What is the testing stage of the SDLC?
The program is tested against test plan
What is meant by alpha testing?
Carried out in-house by software development teams within company
Bugs are pinpointed & fixed
What is meant by beta testing?
Carrited out by end-users
Feedback from users informs the next stage of development
What is meant by white box testing?
Carried out by software development teams
Test plan is based on internal structure of program
All possible routes through program are tested
What is meant by black box testing?
Testers not aware of internal structure
Either within company or end-users
Test plan traces through inputs/outputs
What is meant by implementation?
Installed onto users systems after appropriate changes made
What is meant by evaluation?
Effectiveness of software is evaluated against system requirements
Robustness, reliability, portability & maintainability are considered
What is meant by maintenance?
Errors or improvements are flagged by end-users
Software updates are sent out to fix bugs, security issues & improvements
Describe the waterfall lifecycle.
Stages are completed in sequence
To make a change programmers must revisit all stages inbetween
Low user involvement
Describe agile methodologies.
Different sections of the prototype are devloped in parallel
Adapt quickly to changes in user requirements
Provides user satisfaction over documentation
Describe extreme programming.
Agile model
Each iteration through cycle generates a “working version” of program
Describe the spiral model.
Manages risk-heavy projects
Loops through analysis, risk assessment, implementation, evaluation
Describe rapid application development.
Each iteration generates an “incomplete version” given to user to trial
User feedback is used to generate next, improved prototype
What six key qualities do all good algorithms have?
Inputs must be clearly defined
Must always produce a valid output for any defined input
Must be able to deal with invalid inputs
Must always reach a stopping condition
Must be well-documented for reference
Must be well-commented for modifications
What is the waterfall model used for?
Low risk projects with little user input
What are the advantages of using the waterfall model?
Easy to manage
Well documented
What are the disadvantages of using the waterfall model?
Lack of flexibility
No risk analysis
Limited user involvement
What are agile methodologies used for?
Small to medium projects with unclear initial requirements
What are the advantages of using agile methodologies?
Produces high quality code
Flexible to changing requirements
Regular user input
What are the disadvantages of using agile methodologies?
Poor documentation
Requires constant interaction between user and programmer
What is extreme programming used for?
Small to medium projects with unclear initial requirements and excellent usability
What are the advantages of using extreme programming?
Produces high quality code
Constant user involvement means high usability
What are the disadvantages of using extreme programming?
Team is essential
End-user may not be able to be present
What is the spiral model used for?
Large, risk-intensive projects with high budget
What are the advantages of using the spiral model?
Thorough risk analysis
Caters to changing user needs
Produces prototypes throughout
What are the disadvantages of using the spiral model?
Expensive to hire risk assessors
Lack of focus on code efficiency
High costs due to constant prototypes
What is RAD used for?
Small to medium low-budget projects with short time frames
What are the advantages of using RAD?
Caters to changing user needs
Highly usable product
Focus on core features, reduces development time
What are the disadvantages of using RAD?
Poor documentation
Fast pace and late changes may reduce code quality