0% found this document useful (0 votes)
71 views

CH#8 - Introduction To Software Development

Software Engineering Slides (Engr. Iftikhar Ahmed Koondhar (Assistant Professor) , Department of CSE, QUEST Nawabshah)
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
71 views

CH#8 - Introduction To Software Development

Software Engineering Slides (Engr. Iftikhar Ahmed Koondhar (Assistant Professor) , Department of CSE, QUEST Nawabshah)
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 24

Introduction to Software

Development
Iftikhar Ahmed koondhar
Software Development
• software engineering is nothing but a disciplined approach to develop
software.
• some of the activities involved in the course of software development.
• The activities involved in software development can broadly be divided
into two major categories first is construction and second is management.
• The construction activities are those that are directly related to the
construction or development of the software.
• While the management activities are those that complement the process of
construction in order to perform construction activities smoothly and
effectively.
• A greater detail of the activities involved in the construction and
management categories are:
Construction
• The construction activities are those that directly related to the
development of software.
• For example gathering the requirements of the software, develop design,
implement and test the software etc.
• Some of the major construction activities are listed below.

• Requirement Gathering
• Design Development
• Coding
• Testing
Management
• Management activities are kind of umbrella activities that are used to
smoothly and successfully perform the construction activities e.g. project
planning, software quality assurance etc.
• Some of the major management activities are listed below.
• Project Planning and Management
• Configuration Management
• Software Quality Assurance
• Installation and Training
• Management activities are kind of umbrella activities that surround the
construction activities so that the construction process may proceed
smoothly.
Management
• The figure shows that construction is surrounded by management
activities. That is, all construction activities are governed by certain
processes and rules.
• These processes and rules are related to the management of the
construction activities and not the construction itself.
A Software Engineering Framework
• Any Engineering approach must be founded on organizational
commitment to quality.
• That means the software development organization must have special
focus on quality while performing the software engineering activities.
• Based on this commitment to quality by the organization, a software
engineering framework is proposed.
• The major components of this framework are described below:
Quality Focus: The given framework is based on the organizational
commitment to quality.
The quality focus demands that processes be defined for rational and timely
development of software.
And quality should be emphasized while executing these processes.
A Software Engineering Framework
Processes: The processes are set of key process areas (KPAs) for effectively
manage and deliver quality software in a cost effective manner.
The processes define the tasks to be performed and the order in which they
are to be performed.
Every task has some deliverables and every deliverable should be delivered
at a particular milestone.
Methods: Methods provide the technical “how-to’s” to carryout these tasks.
There could be more than one technique to perform a task and different
techniques could be used in different situations.
Tools: Tools provide automated or semi-automated support for software
processes, methods, and quality control.
A Software Engineering Framework
Software Development Loop
• Lets now look at software engineering activities from a different perspective.
• Software development activities could be performed in a cyclic and that cycle
is called software development loop.
• The major stages of software development loop are described below.
Problem Definition: In this stage we determine what is the problem against
which we are going to develop software.
Here we try to completely comprehend the issues and requirements of the
software system to build.
Technical Development: In this stage we try to find the solution of the
problem on technical grounds and base our actual implementation on it.
This is the stage where a new system is actually developed that solves the
problem defined in the first stage.
Software Development Loop
Solution Integration: If there are already developed system(s) available with
which our new system has to interact then those systems should also be the part
of our new system. All those existing system(s) integrate with our new system
at this stage.
Status Quo: After going through the previous three stages successfully, when
we actually deployed the new system at the user site then that situation is
called status quo. But once we get new requirements then we need to change
the status quo.
After getting new requirements we perform all the steps in the software
development loop again.
The software developed through this process has the property that this could be
evolved and integrated easily with the existing systems.
Software Development Loop
Software Construction
Here once again look at the construction activities of the software from a
different perspective.
This section provides with a sequence of questions that have to answer in
different stages of software development.
1. What is the problem to be solved?
2. What are the characteristics of the entity that is used to solve the problem?
3. How will the entity be realized?
4. How will the entity be constructed?
5. What approach will be used to uncover errors that were made in the design
and construction of the entity?
6. How will the entity be supported over the long term, when users of the entity
request corrections, adaptations, and enhancements?
Software Engineering Phases
There are four basic phases of software development that are shown below.
Vision: Here we determine why are we doing this thing and what are our
business objectives that we want to achieve.
Definition: Here we actually realize or automate the vision developed in first
phase. Here we determine what are the activities and things involved.
Development: Here we determine, what should be the design of the system,
how will it be implemented and how to test it.
Maintenance: This is very important phase of software development.
Here we control the change in system, whether that change is in the form of
enhancements or defect removal.
Requirement Engineering
The questions (slide 12) 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.
Software Requirement 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.
According to Ian Summerville, requirements are a specification of what should
be implemented.
They are descriptions of how the system should behave, or of a system
property or attribute. They may be a constraint on the development process of
the system.
Software Requirement Definitions
IEEE defines software requirements as:
1. A condition or capability needed by user to solve a problem or achieve
an objective.
2. A condition or capability that must be met or possessed by a system or
system component to satisfy a contract, standard, specification, or other
formally imposed document.
3. A documented representation of a condition or capability as in 1 or 2.
As can be seen, these definitions slightly differ from one another but
essentially say the same thing: a software requirement is a document that
describes all the services provided by the system along with the constraints
under which it must operate.
Importance of Requirement
Many of the problems encountered in SW development are attributed to
shortcoming in requirement gathering and documentation process.
We cannot imagine start building a house without being fully satisfied after
reviewing all the requirements and developing all kinds of maps and layouts
but when it comes to software we really do not worry too much about paying
attentions to this important phase.
This problem has been studied in great detail and has been noted that 40-60%
of all defects found in software projects can be traced back to poor
requirements.
Importance of Requirement
Fred Brooks in his classical book on software engineering and project
management “The Mythical Man Month” emphasizes the importance of
requirement engineering and writes:

“The hardest single part of building a software system is deciding precisely


what to build. No other part of the conceptual work is as difficult as
establishing the detailed technical requirements, including all the interfaces to
people, to machines, and to other software systems. No other part of the work
so cripples the system if done wrong. No other part is more difficult to rectify
later.”
Importance of Requirement
Let us try to understand this with the help of an analogy of a house.
If we are at an advanced stage of building a house, adding a new room or
changing the dimensions of some of the rooms is going to be very difficult and
costly.
On the other hand if this need is identified when the maps are being drawn, one
can fix it at the cost of redrawing the map only.
In the case of a software development, we experience the exact same
phenomenon - if a problem is identified and fixed at a later stage in the
software development process, it will cost much more than if it was fixed at
and earlier stage.
Importance of Requirement
This following graph shows the relative cost of fixing problem at the various
stages of software development.
Importance of Requirement

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.
Role of Requirements
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.
Role of Requirements
The following diagram depicts this central role of the software requirement
document in the entire development process:

You might also like