CrisisDelSoftware Ingles PDF-2
CrisisDelSoftware Ingles PDF-2
In the early years of computer applications, the focus of development and innovation was on
hardware. Software was largely viewed as an afterthought. Computer programming was
considered as a state of art known to a gifted few. Programmers followed their own personal
style and did not follow any standardized approach. In this approach, design was implicitly
performed in one's mind, and documentation was often non-existent.
This way of doing things was adequate for developing simple programs. However, as rapid
developments took place in the field of information technology, computer programs became
too complex and sophisticated to be manageable by this approach. Software soon took over
more and more functions, which were hitherto done manually. As "software houses" emerged,
software began to be developed for widespread distribution. A typical software project
produced about 10,000 program statements. With no tools or methods of managing this
increasing complexity, the number of errors began to accelerate.
For example, in study by the Comptroller General of the United States (1979) it was found
that
Due to the absence of any standardized way of programming, it was extremely difficult to
find out and correct these errors. The cost of developing the software often exceeded the
estimated budget. Software projects were taking a lot longer than initially envisaged. In a
survey done by IBM in 1994, it was reported that
• 55% of systems cost exceeded the initial estimated budget
• 68% of software overran delivery schedules
• 88% of the software had to be substantially modified
It was observed that software projects mostly failed to meet cost and time requirements. It
was also observed that the failures were caused more due to mundane human factors than due
to lack of technical expertise. Many of the problems with software development could be
traced to faulty methodology. These problems of software development were extensively felt
in the beginning of the 1970s and are collectively referred to as the "software crisis".
The basic paradigm governing the application of computers has always been to use general-
purpose computer hardware and customized software for application-specific needs. Thus, the
quality of software that drives computer-based solutions differentiates a company from its
competitors. Hence, for computerization of their systems, organizations often spend much
more on software than they do on hardware. The development and supply of software has
thus been recognized as an industry. Presently, it is one of the fastest growing industry
segments in India and abroad.
Fast developments that have taken place in computer hardware have also increased the scope
for development of software. The present day computer hardware has more memory capacity.
It is also much cheaper and faster as compared to earlier computers. Hence, due to the
development of these powerful computer hardware, it is now possible to develop software
that can use this storage and processing power of computer hardware for solving any kind of
complex problem.
Due to increasing competitiveness, today's business environment has become very dynamic.
The average life cycle of products has reduced significantly. Organizations need to respond
very fast to changing needs of the market. To cope up with this environment, organizations
make frequent changes in their business strategies, policies and procedures. The changes
require frequent updates to existing software. However, poor design and haphazard practices
followed in software development create problems in the maintenance of existing software.
The conditions demand that software be developed quickly and meet the tight delivery
schedule required by customers.
• Errors made in one phase of development carried over to subsequent phases, causing
rework and therefore delay.
• Difficulty in estimating effort and measuring progress caused schedule slippage and
budget overruns.
• Assuring quality of delivered software in terms of reliability and meeting the
customers' requirements became difficult.
• There was difficulty in incorporating design modifications and installing correct
versions of software.
These prompted corporate managers, software professionals and researchers to analyze the
causes of these problems. They felt the need to adopt a systematic approach to software
development. Application of principles of engineering for systematic development of
software gave rise to a new discipline called "Software Engineering".
Software engineering is the application of a systematic, disciplined, quantifiable approach to
the development, operation and maintenance of software; i.e., the application of engineering
to software (IEEE Standard Glossary of Software Engineering Terminology).
Software engineering is concerned with building good and reliable software. Any branch of
engineering uses the following for designing and building a product:
Just as in any other branch of engineering, the basic principle of software engineering is to
use structured, formal and disciplined methods for building software. Software engineering
provides a set of methods, tools and procedures for development of quality software within
the constraints of cost and time.
Methods provide the rules, steps and techniques for carrying out software engineering tasks,
such as project planning and estimation, system and software requirement analysis, design of
data structure, program architecture and algorithm procedure, coding, testing and
maintenance. There are mainly two approaches to software engineering, namely, (i) function-
oriented approach and (ii) object-oriented approach.
Tools provide support for methods. They consist of various graphical representations, tables
and charts that help in analysis of software requirements and its design. Data Flow Diagram
(DFD), Data Dictionary, Entity-Relation (ER) diagram, Decision Table, Structured Charts
etc. are some of the important tools used in the function-oriented approach. In the object-
oriented approach various tools are integrated into a single unified language called "Unified
Modeling Language" (UML). This language is now widely used by professionals for software
development.
The tools are now integrated into system development software to automate software
engineering methods. These software tools are called Computer-Aided Software Engineering
(CASE) tools.
Procedures bind methods and tools into a framework. They specify the software development
plan such as:
Software engineering has introduced a rigor and structure into the software development
process-one that integrates comprehensive methods for all stages in software development,
better tools for automating these methods, more powerful techniques for software quality
assurance and an overall philosophy for co-ordination, control and management. These have
been explained in some detail in subsequent chapters.
Reference:
Note: This article is available through Safari-Books under "Free trial" scheme, providing
some personal information.
http://my.safaribooksonline.com/book/software-engineering-and-
development/9788131758694/introduction/sect1-9