Software Development Flashcards
Methodologies for software development
Stages of Software Development
- Analysis
- Design
- Implementation
- Evaluation
- Maintenance
Analysis
Systems analyst gathers information about what the current system does (if there is one) and what the new system needs to do.
They can do this by:
- Interviewing users
- Questionnaires
- Observing how the current system works
- Looking at existing documentation
User Requirements
Defines what the system will do, but not how to do it
Used to create the design and to evaluate the finished product
Design
Software design includes:
- Description of the data
- Input screens
- Output screens and reports
- How the data will be processed
- How the software will be tested
Implementation
- Coding and testing the software
- Writing up the user and technical documentation
- Installing the software for the user
Testing Strategies
- Black Box Testing
- White Box Testing
Black Box Testing
- Carried out independently of the code used in the program
- Looks at the program specification and creates a set of test data to cover all inputs, outputs and program functions
White Box Tesing
- Depends on the code logic
- Tests are devised so each path through the code is tested at least once
Alpha Testing
- Carried out by the software developer’s in-house team and by the user
- May reveal errors or omissions in the definition of the systems requirements
- User may discover the system doesn’t do what it exactly wanted
Beta Testing
- Used for the development of commercial software
- Software is given to numerous potential users, with the agreement that they will use the software and report any faults - real users may try to do things that software developers don’t anticipate
Evaluation
- User now needs to test every aspect of the software to ensure it does everything that it’s supposed to do
- Software evaluated against the initial user specification document
(This stage is also called Acceptance Testing)
Maintenance
- Corrective Maintenance
- Adaptive Maintenance
- Perfective Maintenance
Corrective Maintenance
Maintenance focusing on fixing/correcting any bugs found when the software is put into action
Adaptive Maintenance
Software is adapted to meet the new requirements of users as these requirements may change over time
Perfective Maintenance
Software is changed to work faster, more efficiently, etc. regardless of whether it works
Waterfall Lifecycle
- Each stage completed and documented before the next stage is begun
- Customer doesn’t see the end product until it’s completed
- Any change to be made often requires the project to be started all over again
Advantages of the Waterfall Lifecycle
- Model is simple to understand and use
- Each stage is separate and self-contained, each with well defined outcomes and producing thorough documentation
- Makes the project relatively straightforward to manage
- Model works best for smaller projects where the requirements are very well understood
Disadvantages of the Waterfall Lifecycle
- Not much user involvement after the user specification is produced in the analysis stage
- No working software is produced until later in the cycle
- User is presented with the finished model, and if the model isn’t what they want, it’s typically too late to make changes
Uses of Waterfall Lifecycle
Suitable when:
- Requirements are very clear and fixed
- No ambiguous requirements
- Technology is well understood
- Project is short
Spiral Model
- 4 Basic Steps: Analysis, design, implementation, evaluation
- Software project repeatedly passes through these stages
- Each successive loop around the spiral produces a more refines prototype until all requirements are met by the software
Advantages of the Spiral Model
- Well-defined steps make project easy to manage
- Software produced at early stages so any issues can be identified early on
- User can give feedback on each prototype so any changes can be made early on in the process
- Extra functionality can be added during the process
- End result more likely to be what the user wants
Disadvantages of the Spiral Model
- Very time-consuming so finished product takes longer to develop
- System is more costly to develop due to the large amount of time taken
- Not suitable for smaller projects
Uses of Spiral Model
- Medium to high-risk projects
- When users are unsure of their needs and what the possibilities are
- When requirements are complex
- For large projects which may take years to develop, during which new technologies may develop and significant changes occur
The Agile Model
- Software developed in rapid incremental cycles
- Each version builds on the functionality of the previous version
- Each version is thoroughly tested before its release
- Good for small, time-critical projects
- Limited planning is needed to get started
Advantages of the Agile Model
- Rapid, continuous delivery of useful software which leads to customer satisfaction
- Customers, developers and testers are in constant communication with one another
- Working software is frequently delivered, in weeks rather than in months
- Software easily adapted to changing circumstances
- Even late changes in requirements can be implemented
Disadvantages of Agile Model
- Lack of emphasis on necessary design and documentation
- Not suitable for novice programmers - experience programmers capable of making good decisions are required
- Project can fail to deliver if the customer is not clear about their desired final outcome
When To Use Agile Model
- When new changes need to be implemented - small incremental changes can be made frequently and for little cost
- In an expanding or developing business where users’ needs are constantly changing and developing
Extreme Programming
- Type of agile software development
- Frequent releases of the software are made in short cycles
- Intended to improve productivity and responsiveness to changing customer requirements
What Are The Risks of Longer Projects?
- Personnel change
- Requirements change
- Technology advances
- Costs spiral upwards
These can lead to the project being cancelled
Rapid Application Development
- Workshops and focus groups gather requirements rather than using a formal document
- Prototyping used to continually refine the system in response to user feedback
- Each part of the system is produced within a strict time limit - maybe not perfect, but good enough
- Software components are reused whenever possible