Software Engineering - I: An Introduction To Software Construction Techniques For Industrial Strength Software
Software Engineering - I: An Introduction To Software Construction Techniques For Industrial Strength Software
Software Engineering - I
An Introduction to Software Construction Techniques for Industrial
Strength Software
Requirement Engineering
We recall from our previous discussion that software development is not simply coding
it is a multi-activity process. The process of software construction encompasses and
includes answers to the following questions:
These questions force us to look at the software development process from different
angles and require different tools and techniques to be adopted at different stages and
phases of the software development life cycle. Hence we can divide the whole process in
4 distinct phases namely vision, definition, development, and maintenance. Each one of
these stages has a different focus of activity. During the vision phases, the focus is on
why do we want to have this system; during definition phase the focus shifts from why to
what needs to be built to fulfill the previously outlined vision; during development the
definition is realized into design and implementation of the system; and finally during
maintenance all the changes and enhancements to keep the system up and running and
adapt to the new environment and needs are carried out.
Requirement engineering mainly deals with the definition phase of the system.
Requirement engineering is the name of the process when the system services and
constraints are established. It is the starting point of the development process with the
focus of activity on what and not how.
Software Requirements Definitions
Before talking about the requirement process in general and discussing different tools and
techniques used for developing a good set of requirements, let us first look at a few
definitions of software requirements.
Jones defines software requirements as a statement of needs by a user that triggers the
development of a program or system.
Alan Davis defines software requirements as a user need or necessary feature, function,
or attribute of a system that can be sensed from a position external to that system.
Boehm(1981) has reported that correcting an error after development costs 68 times
more. Other studies suggest that it can be as high as 200 times. Since cost is directly
related with the success or failure of projects, it is clear from all this discussion that
having sound requirements is the most critical success factor for any project.
Role of Requirements
Software requirements document plays the central role in the entire software
development process. To start with, it is needed in the project planning and feasibility
phase. In this phase, a good understanding of the requirements is needed to determine the
time and resources required to build the software. As a result of this analysis, the scope of
the system may be reduced before embarking upon the software development.
Once these requirements have been finalized, the construction process starts. During this
phase the software engineer starts designing and coding the software. Once again, the
requirement document serves as the base reference document for these activities. It can
be clearly seen that other activities such as user documentation and testing of the system
would also need this document for their own deliverables.
On the other hand, the project manager would need this document to monitor and track
the progress of the project and if needed, change the project scope by modifying this
document through the change control process.
The following diagram depicts this central role of the software requirement document in
the entire development process.
The system should maintain the hourly level of reservoir from depth sensor
situated in the reservoir. The values should be stored for the past six months.
AVERAGE: Average command displays the average water level for a particular
sensor between two times.
This is another case of minimal requirements it does not state how the system
should respond if we try to calculate the average water level beyond the past six
months.
10
Necessary -Each requirement should document something that the customer really
need or something that is required for conformance to an external system requirement
or standard.
Verifiable User should be able to devise a small number of tests or use other
verification approaches, such as inspection or demonstration, to determine whether
the requirement was properly implemented.
These requirements conflicted with one another because the code generated by the
Ada compiler was of a large footprint that could not fit into the micro-controller
memory.
Following is another set of (functional) requirements that conflicted with one another:
In this case the two requirements clearly conflict with each other in stating what
information needs to be monitored and stored.
11
Traceable - One should be able to link each requirement to its origin and to the
design elements, source code, and test cases that implement and verify the correct
implementation of the requirement.
12