Unit 3 - Software Development Flashcards
Software development life cycles (SDLCs) all consist of the following stages:
■ Analysis
■ Design
■ Development
■ Testing
● Alpha testing
● Beta testing
● White box testing
● Black box testing
○ Implementation
○ Evaluation
○ Maintenance
Waterfall lifecycle
● Stages are completed in
sequence, from start to finish
● Clear structure makes this a
model that is easy to follow
● To make a change,
programmers must revisit all
stages in between
● Low user involvement
Agile methodologies
● Collection of methodologies
which aim to improve the
flexibility of SDLCs ( Software Development Life Cycle )
● Adapt quickly to changes in user
requirements.
● Different sections of the program
are developed in parallel so can be at different stages of development simultaneously
● Working prototype is delivered early on and improved in an iterative manner
● Less of a focus on documentation
● User satisfaction is prioritised
Spiral model
● Used to manage risk-heavy projects
● Has four key stages:
○ Analysing system requirements
○ Pinpointing and mitigating risks
○ Development, testing and
implementation
○ Evaluating to inform the next
iteration
● Project terminated if too risky
● Specialist risk-assessors must be hired which is expensive
Extreme programming
● Example of an agile model
● Development team is a pair of programmers and a representative end-user
● ‘User stories’ are used to determine system requirements
● Produces high-quality code and highly-usable software
● Programmers work no longer than forty hours a week
● Hard to produce high quality documentation
Rapid application development
● Iterative methodology which uses partially functioning prototypes
● User requirements are gathered using focus group
● ‘Incomplete’ version of the solution is given to the user to trial
● User feedback is used to generate next, improved prototype
● Final prototype matches user requirements fully
● Used where user requirements are incomplete or unclear at the start
● Code may be inefficient
Writing and following algorithms
● Algorithm = A set of instructions used to solve a problem
● All good algorithms have certain key qualities:
○ Inputs must be clearly defined - what is valid and what is invalid?
○ 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 so modifications can easily be made
Waterfall - Merits, Drawbacks and Uses
Merits
- Straightforward to manage
- Clearly documented
Drawbacks
- Lack of flexibility
- No risk analysis
- Limited user
involvement
Uses
Static, low-risk projects which need little user input, such as a piece of general-purpose software
Agile - Merits, Drawbacks and Uses
Merits
- Produces high
quality code
- Flexible to changing
requirements
- Regular user input
Drawbacks
- Poor
documentation
- Requires
consistent
interaction
between user
and programmer
Uses
Small to medium
projects with unclear
initial requirements.
Spiral - Merits, Drawbacks and Uses
Merits
- Thorough
risk-analysis and
mitigation
- Caters to changing
user needs
- Produces prototypes
throughout
Drawbacks
- Expensive to
hire risk
assessors
- Lack of focus on
code efficiency
- High costs due
to constant
prototyping
Uses
Large, risk-intensive
projects with a high
budget.
Extreme programming - Merits, Drawbacks and Uses
Merits
- Produces high
quality code
- Constant user
involvement means
high usability
Drawbacks
- High cost of two
people working
on one project
- Teamwork is
essential
- End-user may
not be able to
be present
Uses
Small to medium
projects with unclear
initial requirements
requiring excellent
usability.
Rapid Application Development - Merits, Drawbacks and Uses
Merits
- Caters to changing
user requirements
- Highly usable
finished product
- Focus on core
features, reducing
development time
Drawbacks
- Poorer quality
documentation
- Fast pace and
late changes
may reduce
code quality
Uses
Small to medium,
low-budget projects
with short
time-frames.
Define White Box Testing ( Structural )
A form of testing carried out by software
development teams in which the test plan
is based on the internal structure of the
program. All of the possible routes through
the program are tested.
one downfall maybe the fact that it can’t test what isn’t there
Define Black Box Testing ( Functional )
It is testing that is solely carried out in the code. It involves looking at the program specification and creating a set of data that covers all of the inputs and outputs and program functions
Define Alpha Testing
Alpha testing is carried out by the software developer’s in-house testing team. It is essential because it often reveals both errors and omissions ( things that are left out) in the system requirements definition