Unit 1
Unit 1
by
Charlie D. Baguio
and
ISBN 000-0000-00-0
So all those thing that are related to software are also related to software
engineering. Some of you might have thought that how programming language
design could be related to software engineering. If you look more closely at the
software engineering definitions described above then you will definitely see that
software engineering is related to all those things that are helpful in software
development. So is the case with programming language design. Programming
language design is one of the major successes in last fifty years. The design of
Ada language was considered as the considerable effort in software engineering.
These days object-oriented programming is widely being used. If programming
languages will not support object-orientation then it will be very difficult to
implement object oriented design using object-oriented principles. All these
efforts made the basis of software engineering.
Well-Engineered Software
Let’s talk something about what is well-engineered software. Well-
engineered software is one that has the following characteristics.
It is reliable
It has good user-interface
It has acceptable performance
It is of good quality
It is cost-effective
Every company can build software with unlimited resources but well-engineered
software is one that conforms to all characteristics listed above.
Software has very close relationship with economics. When ever we talk about
engineering systems we always first analyze whether this is economically
feasible or not. Therefore you have to engineer all the activities of software
development while keeping its economical feasibility intact.
The major challenges for a software engineer is that he has to build software
within limited time and budget in a cost-effective way and with good quality
But most of the times software engineers ends up in conflict among all these
goals. It is also a big challenge for a software engineer to resolve all these
conflicts.
Software Background
Software Development
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 is presented below.
Construction
The construction activities are those that directly related to the development of
software, e.g. 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
Figure 1. Development Activities
As we have said earlier that management activities are kind of umbrella activities
that surround the construction activities so that the construction process may
proceed smoothly. This fact is empathized in the Figure1. The figure shows that
construction is surrounded by management activities. That is, certain processes
and rules govern all construction activities. These processes and rules are
related to the management of the construction activities and not the construction
itself.
Quality Focus: As we have said earlier, 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.
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.
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.
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.