MSS Module 1 Important Topics
MSS Module 1 Important Topics
Table of contents
specification
development
validation
evolution
and represents them as separate process phases such as
requirements specification
software design,
implementation
testing
We figure out what the system should do, what limits it has, and what it aims to achieve by
talking to the people who will use it.
After that, we describe these things in a lot of detail, and that becomes the official plan for
how the system should work.
When we design a system, we decide which parts should be done by the physical
equipment (hardware) and which parts should be handled by the computer programs
(software).
We create a basic plan for how the entire system should be organized, called the system
architecture.
For the software part, we figure out the main elements of the computer programs and how
they relate to each other.
During this stage, the software design is realized as a set of programs or program units.
Unit testing involves verifying that each unit meets its specification
The individual program units or programs are integrated and tested as a complete system
to ensure that the software requirements have been met.
After testing, the software system is delivered to the customer
RSSIO
"Remember, Start Implementing In Order."
Each word in this phrase corresponds to one stage of the waterfall model:
The waterfall model is not the right process model in situations where informal team
communication is possible and software requirements change quickly.
terative development and agile methods are better for these systems.
Advantages
The cost of implementing requirements changes is reduced
It is easier to get customer feedback on the development work that has been done.
Early delivery and deployment of useful software to the customer is possible, even if all of
the functionality has not been included.
Disadvantages
If systems are developed quickly, it is not cost effective to produce documents that reflect
every version of the system
System structure tends to degrade as new increments are added.
Regular change leads to messy code as new functionality is added in whatever way
is possible
Software specification
Software specification or requirements engineering is the process of understanding and
defining what services are required from the system.
There are 3 main activities
Requirements specification
Requirements specification is the activity of translating the information gathered during
requirements analysis into a document that defines a set of requirement
There are 2 types of requirements under this
User requirements
abstract statements of the system requirements for the customer and end-user
of the system
System requirements
more detailed description of the functionality to be provided
Requirements validation
This activity checks the requirements for realism, consistency, and completeness
During this process, errors in the requirements document are inevitably discovered. It must
then be modified to correct these problems
Trick to Remember
E -> Elicitation
S -> Specification
V -> Validation
ESV
"Evaluating Software Visions."
Software validation
Software Validation intended to show that a system both conforms to its specification and
meets the expectations of the system customer.
Program testing, where the system is executed using simulated test data, is the principal
validation technique
Validation may also involve checking processes, such as inspections and reviews, at each
stage of the software process from user requirements definition to program development
Component testing
The components making up the system are tested by the people developing the
system.
Each component is tested independently, without other system components.
Components may be simple entities such as functions or object classes
System testing
System components are integrated to create a complete system.
This process is concerned with finding errors that result from unanticipated
interactions between components
Customer testing
This is the final stage in the testing process before the system is accepted for
operational use. The system is tested by the system customer (or potential customer)
rather than with simulated test data
Software evolution
The flexibility of software is one of the main reasons why more and more software is being
incorporated into large, complex systems.
Once a decision has been made to manufacture hardware, it is very expensive to make
changes to the hardware design.
Changes can be made to software at any time during or after the system development.
Even extensive changes are still much cheaper than corresponding changes to system
hardware
Change anticipation
Where the software process includes activities that can anticipate or predict possible
changes before significant rework is required.
Change tolerance
Where the process and software are designed so that changes can be easily made to
the system. This normally involves some form of incremental development
System prototyping,
- Version of the system or part of the system is developed quickly to check the customer’s
requirements and the feasibility of design decisions.
- allows users to experiment with the system before delivery and so refine their
requirements.
Incremental delivery
system increments are delivered to the customer for comment and experimentation.
This supports both change avoidance and change tolerance
A very influential agile method, developed in the late 1990s, that introduced a range of
agile development techniques
Extreme Programming (XP) takes an ‘extreme’ approach to iterative development.
New versions may be built several times per day
Increments are delivered to customers every 2 weeks;
All tests must be run for every build and the build is only accepted if tests run
successfully