Sei sulla pagina 1di 10

BY :

ENGR. RECHIE J. VEROY, CoE, CTTA


Many people equate the term software with computer
program. In fact, this is too restrictive a view. Software is not just
the program but also all associated documentation and
configuration data that are needed. Many people equate the term
software with computer program to make this programs operate
correctly. A software system usually consists of a number of
separate programs, configuration files, which are used to setup
these programs, system documentation, which describes the
structure of the system, and user documentation which explains
how to use the system and for software products, web sites for
users to download recent product information.
Software Engineering is a technological discipline that is
used to provide a tool for developing a product. It is an outgrowth of
software & hardware to meet the requirements. Software
Engineering encompasses a process, management and technical
methods and tools.
When tools are integrated so that information created by
one tool can be used by another, a system for the support of
software development, called Computer-Aided Software
Engineering, is established. CASE combines software, hardware, and
a Software Engineering Database to create a Software Engineering
environment analogous to CAD/CAE (Computer-Aided
Design/Engineering) for hardware.

1.INTRODUCTION:

During the past decade, increasing intention has been focused


on the technology of computer software. As computing systems
become more numerous, more complex and more deeply embedded in
modern society the need for systematic approaches to software
development and software maintenance become increasingly
apparent. Software engineering is a field of study concerned with this
engineering technology.
Software systems are now ubiquitous. Every simple software
systems have a high inherent complexity; so the engineering principles
have to be used in their development. Software is nothing but the
collection of instructions or the computer programs when executed by
desired functions to obtain desired output or to meet the required
performance.
Software is intangible: it has no mass, no volume, no
color, no odor – no physical properties. Software does not degrade with
time as hardware does. Software failures are caused by design and
implementation errors, not by degradation. Because software is
intangible, extra-ordinary measures should be taken to determine the
status of a product in development. Because software has no physical
properties, it is not subject to the laws of gravity or the laws of electro
dynamics. There are no Newton’s laws or Maxwell’s equation to guide
software development. Intangibility and lack of physical properties for
software limit the number of fundamental guidelines and basic
constraints available to shape the design and implementation of a
software product.
Computer software has become a driving force; it is the
engine that drives business decision-making. It serves as the basis for
modern scientific investigation and engineering problem solving. It is a
key factor that differentiates modern products and services. It is
embedded in systems of all kinds: transportation, medical,
telecommunications, military, industrial processes, entertainment,
office products, ----------------- the list is almost endless. Software is
virtually inescapable in a modern world. And as we more into the
twenty first century, it will become the driver for new advances in
everything from elementary education to genetic engineering.
Computer software is the product that software engineering
design and build. Today, software takes on a dual role. It is a product,
at the same time, the vehicle for delivering a product.
In order to develop a software product, user needs and
constraints must be determined and explicitly stated: the product must
be designed to accommodate implementers, users and maintainers;
the source code must be carefully implemented and thoroughly tested;
and supporting documents such as the principles of operation, the
users manual, installation instructions, training aids, and maintenances
documents must be prepared. The need for systematic approaches to
developments and maintenance of computer software products
became apparent in the 1960s.

2. SOFTWARE ENGINEERING:

Software Engineering is an engineering discipline, which is


concerned with all aspects of software production from the early
stages of system specification through to maintaining the system after
it has gone into use. In this definition, there are two key phrases:

1. ‘Engineering discipline’ Engineer makes things work. They apply


theories, methods and tools where these are appropriate but they
use them selectively and always try to discover solutions to
problems even when there are no applicable theories and methods
to support them. Engineers also recognize that they must work to
organizational and financial constraints, so they look for solutions
within these constraints.
2. ‘All aspects of software production’ Software Engineering is not just
concerned with the technical processes of Software development
but also with activities such as software project management and
with the development of tools, methods and theories to support
software production.
“More than a discipline or a body of knowledge, engineering
is a verb, an action word, a way of approaching a problem”
- Scott Whit mire
A workshop was held in Garmisch West Germany, in 1968 to
consider the growing of software technology. That workshop, and a
subsequent one held in Rome, Italy in 1969, simulated widespread
interest in the technical and managerial processes used to develop and
maintain computer software (NAU 76). The term “Software
Engineering” was first used as a provocative theme for those
workshops.
According to Boehm (BOE7 6a), Software Engineering
involves “the practical application of scientific knowledge to the design
and construction of computer programs and the associated
documentation required to develop, operate and maintain them”. As
Boehm points out, the term “design” must be interpreted broadly to
include activities such as software requirement analysis and redesign
during software modification. The IEEE standard glossary of Software
Engineering terminology (IEEE 83) defines Software Engineering as:
“The systematic approaches to the development, operation,
maintenance and retirement of software”, where “software” is defined
as: “computer programs, procedure, rules and possible associated
documentation and data pertaining to the operation of a computer
system”.
The primary goals of Software Engineering are to improve
the quality of software products and to increase the productivity and
job satisfaction of Software Engineers. Software Engineering is
concerned with development and maintenance of technological
products; problem- solving techniques common to all engineering
disciplines are utilized.
The customer may or may not be the end user of a software
product, and the customer, developer, end user, and maintainer may
be the same person; however, software products usually have multiple
customer representatives, multiple developers, multiple users, and
multiple maintainers. Some times, a software product is developed to
satisfy a perceived marketing opportunity with out having a specific
customer or group of users in mind.
Software quality is a primary concern of a Software
Engineers. Software reliability is “the ability of a program to perform a
required function under stated conditions for a stated period of time”
(IEE 83). The degree of reliability required for a particular product can
be expressed in terms of the cost of product failure. The specification,
development, management and evolution of these software systems
makeups the discipline of Software Engineering.
In general, Software Engineers adopt a systematic and
organized approach to their work, as this is often the most effective
way to produce high-quality software. However, engineering is all
about selecting the most appropriate method for a set of
circumstances and a more creative, informal approach to development
may be effective in some circumstances.

2.1 DIFFERENCE BETWEEN SOFTWARE ENGINEERING &


COMPUTER SCIENCE:-
Essentially, computer science is concerned with the theories
and methods, which underline computers and software systems where
as software engineering is concerned with the practical problems of
producing software. Some knowledge of computer science is essential
for software engineers in the same way that some knowledge of
physics is essential for electrical engineers.
Ideally, all of software engineering should be under pinned
by theories of computer science but in reality this not the case.
Software Engineers must often use ad hoc approaches to develop the
software. Elegant theories of computer science cannot always be
applied to real, complex problems, which require a software solution.

2.2 SOFTWARE CHARACTERISTICS:-

To gain an understanding of software, it is important to


examine the characteristics of software that make it different from
other things that human beings build.
Software is a logical rather than a physical system element.
Therefore, software has characteristics that are considerably different
than those of hardware.
1. Software is developed or engineered; it is not manufactured in
the classical sense.
2. Software doesn’t “wear out”.
3. Although the industry is moving toward component based
assembly, most software continuous to be custom built.

3. COMPUTER-AIDED SOFTWARE ENGINEERING:

Computer aided software engineering (CASE) tools assist


software engineering managers and practitioners in every activity
associated with the software process. They automate project
management activities, manage all work products produced
throughout the process, and assist engineers in their analysis, design,
coding and test work. CASE tools can be integrated within a
sophisticated environment. Project managers and software engineers
use CASE. Software engineering is difficult. Tools that reduce the
amount of effort required to produce a work product or accomplish
some project milestone have substantial benefit. But there’s
something that’s even more important. Tools can provide new ways of
looking at software engineering information – ways that improve the
insight of the engineer doing and higher software quality.
CASE is used in conjunction with the process model that is
chosen. If a full tool set is available, CASE will be used during virtually
every step of the software process. CASE tools assist a software
engineer in producing high-quality work products. In addition, the
availability of automation allows the CASE user to produce additional
customized work products that could not be easily or practically
produced without tool support. Use tools to complement solid software
engineering practices – not to replace them. Before tools can be used
effectively, a software process framework must be established,
software engineering concepts and methods must be learned, and
software quality must be emphasized. Only then will CASE provide
benefit.

3.1 WHAT IS CASE?

A good workshop for any craftsperson – a mechanic, a


carpenter, or a software engineer – has three primary characteristics:
(1) a collection of useful tools that will help in every step of building a
product, (2) an organized layout that enables tools to be found quickly
and used efficiently, and (3) a skilled artisan who understands how to
use the tools in an effective manner. Software engineers now
recognize that they need more and varied tools along with an
organized and efficient workshop in which to place the tools.
The workshop for software engineering has been called an
integrated project support environment (discussed later in this
chapter) and the tools that fill the workshop are collectively called
computer-aided software engineering.
CASE provides the software engineer with the ability to
automate manual activities and to improve engineering insight. Like
computer-aided engineering and design tools that are used by
engineers in other disciplines, CASE tools help to ensure that quality is
designed in before the product is built.

3.2 BUILDING BLOCKS FOR CASE:-

Computer aided software engineering can be as simple as a


single tool that supports a specific software engineering activity or as
complex as a complete “environment” that encompasses tools, a
database, people, hardware, a network, operating systems, standards,
and myriad other components. Each building block forms a foundation
for the next, with tools sitting at the top of the heap. It is interesting to
note that the foundation for effective CASE environments has relatively
little to do with software engineering tools themselves. Rather
successful environments for software engineering are built on an
environment architecture that encompasses appropriate hardware and
systems software. In addition, the environment architecture must
consider the human work patterns that are applied during the software
engineering process.
The environment architecture, composed of the hardware
platform and system support, lays the groundwork for CASE. But the
CASE environment itself demands other building blocks. A set of
portability services provides a bridge between CASE tools and their
integration framework and the environment architecture. The
integration framework is a collection of specialized programs that
enables individual CASE tools to communicate with one another, to
create a project database, and to exhibit the same look and feel to the
end-user Portability services allow CASE tools and their integration
framework to migrate across different hardware platforms and
operating systems without significant adaptive maintenance.

Quote: “The most valuable CASE tools are those that


contribute information to the development process”.
- Robert Dixon.

4. A TAXONOMY OF CASE TOOLS:

A number of risks are inherent whenever we attempt to


categorize CASE tools. There is a subtle implication that to crate an
effective CASE environment, one must implement all categories of
tools – this is simply not true. Confusion (or antagonism) can be
created by placing a specific tool within one category when others
might believe it belongs in another category. Some readers may feel
that an entire category has been omitted – thereby eliminating an
entire set of tools for inclusion in the overall CASE environment.
CASE tools can be classified by function, by their role as
instruments for managers or technical people, by their use in the
various step of the software engineering process, by the environment
architecture (hardware and software) that supports them, or even by
their origin or cost [QED89]. The taxonomy presented here uses
function as a primary criterion.

4.1 PROCESS MODELLING & MANAGEMENT TOOLS:-

If an organization works to improve a business (or software)


process, it must first understand it. Process modeling tools are used to
represent the key elements of a process so that it can be better
understood. Process management tools provide links to other tools
that provide support to define process activities.

4.2 PROJECT PLANNING TOOLS:-

Tools in this category focus on two primary areas: software


project effort and cost estimation and project scheduling. Estimation
tools compute estimated effort, project duration, and recommended
number of people for a project. Project scheduling tools enable the
manager to define all project tasks, create a task network, represent
task interdependencies, and model the amount of parallelism possible
for the project.

4.3 ANALYSIS & DESIGN TOOLS:-

Analysis and design tools enable a software engineer to


create models of the system to be built. The models contain a
representation of data, function, and behavior and characterizations of
data, architectural, component-level and interface design. By
performing consistency and validity checking on the models, analysis
and design tools provide a software engineer with some degree of
insight into the analysis representation and help to eliminate errors
before they propagate into the design, or worse, into implementation
itself.

4.4 REQUIREMENTS ANALYSIS TOOLS:-

When large systems are developed, things “fall into the


cracks.” That is, the delivered system does not fully meet customer
specified requirements. The objective of requirements tracing tools is
to provide a systematic approach to the isolation of requirements,
beginning with the customer request for proposal or specification.

4.5 PROGRAMMING TOOLS:-

The programming tools category encompasses the


compilers, editors, and debuggers that are available to support most
conventional programming languages.

4.6 INTEGRATION & TESTING TOOLS:-

In their directory of software testing tools, software quality


engineering (SQE95) defines the following testing tools categories.

 Data acquisition – tools that acquire data to be used during


testing.
 Static measurement – tools that analyze source code without
executing test cases.
 Dynamic measurement – tools that analyze source code during
execution.
 Simulation – tools that simulate function of hardware or other
externals.
 Test management – tools that assist in the planning,
development, and control of testing.
 Cross-functional tools – tools that cross the bounds of the
preceding categories.
It should be noted that many testing tools have features
that span two or more of the categories.

4.7 RISK ANALYSIS TOOLS:-

Identifying potential risks and developing a plan to


mitigate, monitor, and manage them is of paramount importance in
large projects. Risk analysis tools enable a project manager to build a
risk table by providing detailed guidance in the identification and
analysis of risks.

4.8 DOCUMENT TOOLS:-

Document production and desktop publishing tools support


nearly every aspect of software engineering and represent a
substantial “leverage” opportunity for all software developers.
Documentation tools provide an important opportunity to improve
productivity.

4.9 PROJECT MANAGEMENT TOOLS:-

The project schedule and project plan must be tracked and


monitored on a continuing basis. Tools in the category are often
extensions to project planning tools.

4.10 REENGINEERING TOOLS:-

Tools for legacy software address a set of maintenance


that currently absorb a significant percentage of all software-related
effort the reengineering tools category can be sub-divided into
following functions.

 Reverse engineering to specification tools takes source code as


input and generate graphical structured analysis and design
models where-used lists and other design information.
 Code restructuring and analysis tools analyze program syntax,
generate a control flow graph, and automatically generate a
structured program.
 On – line system reengineering tools are used to modify on-line
database systems (e.g. convert IDMS or DB2 files into entity-
relationship format).
These tools are limited to specific programming languages
and require some degree of interaction with the software engineer.

5. CONCLUSION:

As computing systems became larger and more complex, it


became apparent that the demand for computer software was growing
faster than our ability to produce and maintain it.

6. REFERENCES:

1. Software Engineering –6th edition by IAN SOMMERVILLE.


2. Software Engineering concepts by Richard Fairly.
3. Software Engineering –A practitioner’s Approach- 5th edition by
Roger S. Pressman.
4. (B0E76a) Boehm, B.: “Software Engineering,” IEEE Transactions
on Computers, vol. C-25, no. 12, December 1976.
5. (IEEE83) IEEE Standard Glossary of Software Engineering
Terminology, IEEE Standard 729-1983.
6. (NAU76) Naur, P., et al. (eds): Software Engineering: Concepts
and Techniques, Petrocelli /Charter, New York, 1976.

Potrebbero piacerti anche