Process Activities: Software Specification Software Design and Implementation Software Validation Software Evolution

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 3

Process activities

The four basic process activities of specification, development, validation and


evolution are organised differently in different development processes. In the
waterfall model, they are organised in sequence, whereas in evolutionary
development they are interleaved. How these activities are carried out depends
on the type of software, people and organisational structures involved.

Software specification

Software design and implementation

Software validation

Software evolution

Software specification

A software requirement is defined as a condition to which a system must comply.


Software specification or requirements management is the process of
understanding and defining what functional and non-functional requirements are
required for the system and identifying the constraints on the system’s operation
and development. The requirements engineering process results in the production
of a software requirements document that is the specification for the system.

There are four main phases in the requirements engineering process:

1. Feasibility study. In this study an estimate is made of whether the identified


user needs may be satisfied using current software and hardware
technologies. The study considers whether the proposed system will be cost-
effective from a business point of view and whether it can be developed
within existing budgetary constraints.
2. Requirements elicitation and analysis. This is the process of deriving the
system requirements through observation of existing systems, discussions
with potential users, requirements workshop, storyboarding, etc.
3. Requirements specification. This is the activity of translating the
information gathered during the analysis activity into a document that
defines a set of requirements. Two types of requirements may be included in
this document: user (functional) requirements and system (non-functional)
requirements.
4. Requirements validation. It is determined whether the requirements
defined are complete. This activity also checks the requirements for
consistency
Software design and implementation

The implementation phase of software development is the process of converting a


system specification into an executable system through the design of system. A
software design is a description of the architecture of the software to be
implemented, the data which is part of the system, the interfaces between system
components and, sometimes, the algorithms used. The design process activities are
the followings:

1. Architectural design. The sub-systems of system and their relationships are


identified based on the main functional requirements of software.
2. Abstract specification. For each sub-system, an abstract specification of its
services and the constraints under which it must operate is defined.
3. Interface design. Interfaces allow the sub-system’ services to be used by
other sub-systems. The representation of interface should be hidden. In this
activity the interface is designed and documented for each sub-system. The
specification of interface must be unambiguous.
4. Component design. Services are allocated to components and the interfaces
of these components are designed.
5. Data structure design. The data structures used in the system
implementation are designed in detail and specified.
6. Algorithm design. In this activity the algorithms used to provide services
are designed in detail and specified.

This general model of the design process may be adapted in different ways in the
practical uses.

A contrasting approach can be used by structured methods for design objectives. A


structured method includes a design process model, notations to represent the
design, report formats, rules and design guidelines. Most these methods represent
the system by graphical models and many cases can automatically generate
program code from these models. Various competing methods to support object-
oriented design were proposed in the 1990s and these were unified to create the
Unified Modeling Language (UML) and the associated unified design process.

Software validation

software validation or, more generally, verification and validation (V & V) is


intended to show that a system conforms to its specification and that the system
meets the expectations of the customer buying the system. It involves checking the
processes at each stage of the software process. The majority of validation costs
are incurred after implementation when the operation of system is tested.
The software is tested in the usual three-stage testing process. The system
components, the integrated system and finally the entire system are tested.
Component defects are generally discovered early in the process and the interface
problems during the system integration. The stages in the testing process are:

1. Component (or unit) testing. Individual components are tested to ensure


that they operate correctly. Each component is tested independently, without
other system components.
2. System testing. The components are integrated to make up the system. This
testing process is concerned with finding errors that result from interactions
between components and component interface problems. It is also
concerned with validating that the system meets its functional and non-
functional requirements.
3. Acceptance testing. It is considered a functional testing of system. The
system is tested with data supplied by the system customer.

Usually, component development and testing are interleaved. Programmers make


up their own test data and test the code as it is developed. However in many
process model, such as in V-model, Test Driven Development, Extreme
Programming, etc., the design of the test cases starts before the implementation
phase of development. If an incremental approach to development is used, each
increment should be tested as it is developed, with these tests based on the
requirements for that increment.

Software evolution

Software evolution, specifically software maintenance, is the term used in software


engineering to refer to the process of developing software initially, then repeatedly
updating it for various reasons.

The aim of software evolution would be to implement the possible major changes
to the system. The existing larger system is never complete and continues to
evolve. As it evolves, the complexity of the system will grow. The main objectives
of software evolution are ensuring the reliability and flexibility of the system. The
costs of maintenance are often several times the initial development costs of
software.

You might also like