Loading
Introduction to Software Engineering
In all
industrialized countries, and in developing countries, computer systems are
economically critical. More and more products incorporate computers in some
form. Educational, administrative and health care systems are dependent on
computer systems. The software in these systems represents a large and
increasing proportion of the total system costs. The effective functioning of
modern economic and political systems therefore depends on our ability to
produce software in a cost-effective way.
Software engineering is concerned
with the theories, methods and tools that are needed to develop the software
for computers. Software Engineering is a field of computer science that
deals with the building of large complex systems. These systems are not built
by a single person; they are built by a team or several teams of software
engineers.
Software Engineering is the
application of science and mathematics by which the capabilities of computer
equipment are made useful to man via computer programs, procedures and
associates.
This definition of software
engineering contains two key points. Firstly, software includes a good deal more
than just computer programs. Thus, learning to be a good software engineer
means a good deal more than learning how to generate computer programs. It also
involves learning the skills to produce good documentation, databases and
operational procedures for computer systems. The "mathematics and
science" of software engineering is to provide methodologies for
developing software as close to the scientific method as possible.
Secondly, the software products
must be useful to man. The phrase "useful to man" emphases the needs
of the user and the software's interface with the user. Software engineers must
apply their skills and judgement to the job of developing appropriate set of
specifications and ensuring that the resulting software does indeed make the
computer equipment perform functions useful to society.
The basic goal of software
engineering is to produce high quality software at low cost. There are various
approaches to estimate cost and also measure the quality of a software product.
Software Products
The objective of
software engineering is to produce software products. Software products are
software systems delivered to a customer with the documentation that describes
how to install and use the system. In some cases, software products will be
part of systems products where hardware as well as software is delivered to a
customer.
Software products fall into two
broad classes:
(i) Generic products: These are stand-alone systems which are produced
by a development organization and sold on the open market to any customer who
is able to buy them. These types of software are also known as package
software.
(ii) Bespoke (customized) products: These are systems which are
commissioned by a particular customer. The software is developed specially for
that customer by some contractor. This type of software is also known as tailor
software.
Software Engineering Environment (SEE)
The term
"environment" is used to describe a vast range of support systems
ranging from simple systems that support program development in a single
language to very large systems offering support for multiple projects using
many different languages and design methods.
More specifically, a software
engineering environment can be defined as follows:
A software engineering
environment (SEE) is a set of hardware and software tools which can act in
combination in an integrated way to provide support for the whole of the
software process from initial specification through to testing and system
delivery.
The key characteristics of an
SEE are:
(i) The environment facilities
are integrated. Ideally, the environment should support all five levels of
integration: platform integration, data integration, presentation integration,
controls integration and process integration.
(ii) The environment assumes
team-based rather than individual development and provides configuration
management support for all activities. The management of multiple versions of
system documents and code and their dependencies is a particularly expensive
activity for large long-lifetime systems.
(iii) Facilities are available to
support a wide range of software development activities (specification, design,
documentation, programming, testing, debugging and so on).
Professional Responsibility
Like other
engineers, software engineers must accept their job involves wider
responsibilities than simply the application of technical skills. Their work is
carried out within a legal and social framework. Software engineering is
obviously bounded by local, national and international laws. Software engineers
must behave in an ethical and morally responsible way if they are to be
respected as professional.
It goes without saying that
engineers should uphold normal standards of honesty and integrity. They should
not use their skills and abilities to behave in a dishonest way or in a way
that will bring disrepute to the software engineering profession. However,
there are areas where standards of acceptable behaviour are not bounded by laws
but by the more tenuous notion of professional responsibility. Some of these
are:
(i) Confidentiality: Engineers should normally respect the
confidentiality of their employers or clients irrespective of whether or not a
formal confidentiality agreement has been signed.
(ii) Competence: Engineers should not misrepresent their level of
competence. They should not knowingly accept work which is beyond their
competence (capability or skill).
(iii) Intellectual Property Rights: Engineers should be aware of
local laws governing the use of intellectual property such as patents,
copyright and so on. They should be careful to ensure that the intellectual
property of employers and clients is protected.
(iv) Computer Misuse: Software engineers should not use their
technical skills to misuse other people's computers. Computer misuse ranges
from relatively trivial (game-playing on an employer's machine, say) to
extremely serious (dissemination (affecting) of viruses.)
Software Process
The software
process is a set of activities and associated results which produce a software
product. These activities are mostly carried out by software engineers.
There are four fundamental process activities which are common to all
software processes. The activities are:
(1) Software specification: The
functionality of the software and constraints on its operation must be defined.
(2) Software Development: The software to
meet the specification must be produced.
(3) Software Validation: The software must
be validated to ensure that it does what the customer wants.
(4) Software Evolution: The software must
evolve to meet changing customer needs.
Computer-Based System Engineering
Software on its
own is completely useless. Until software (merely a string symbols) is combined
with some processor and other hardware to form a system, it cannot do anything
at all. Software engineers must understand that there are more general problems
of system engineering.
These concern
the interactions between software and hardware system components and the human
users of the system.
System engineering is the activity of specifying, designing,
implementing, validating, installing and maintaining systems as a whole. System
engineers must take a broad view of a system. They must think about the
services that the system provides, the constraints under which the system must
be built and operated, the interactions of the system with its environment and
so on.
A system is a collection of interrelated
components that work together to achieve some objective.
Systems and their environment: Systems are not independent entities
but exist in an environment. This environment affects the functioning and the
performance of the system. When a system is part of another system, it is
called a sub-system.
The above figure shows some of
the systems that might be incorporated in an office building. The heating
system, the power system, the lighting system, the plumbing system, the waste
system and the security system are all sub-systems within the building which is
itself a system. The building is located in a street that is in a town, and so
on.
There are two main reasons why
the environment of a system must be understood by system engineers:
(1)
In many cases, the reason for the existence of a system
is to make some changes in its environment.
(2)
There are many relationships between a system and its
environment and some of these are indirect rather than direct relationships.
The functioning of a system can be affected by changes in the system’s
environment in ways which can be very difficult to predict. For example, the
electrical system in a building may be affected by environmental changes that
take place outside the building.
System
engineers, therefore, should not consider systems as completely self contained
entities but must have knowledge of the environment where the system is to be
installed.
System Development Life Cycle
System
development life cycle divides the life of a system into two stages,
(i)
Systems
development and
(ii)
Systems
operation and support
First we build it; then we use
it, keep it running, and support it. Eventually, we cycle back
from operation and support to redevelopment.
The two life cycle stages and the
two key events between the stages are:
(i) When a system cycles from development to
operation and support, a conversion must take place.
(ii)
At some point,
obsolescence occurs and a system cycles from operation to redevelopment.
For
Eg. Version-1 may be in operation and support while version-2 is in development.
No comments:
Post a Comment