Session - 1 PPT-1
Session - 1 PPT-1
ENGINEERING ?
Software Engineering is defined as a process of ;
Designing
Developing
Testing
Today, a huge Software Industry has become a dominant factor in the economies of the Industrialized
World.
The Lone programmer of an Earlier Era has been replaced by teams of Software Specialists, each
focusing on one part of the technology required to deliver a complex application.
Same set of questions were still asked to both Lone Programmers and even now, such as;
Software is defined as (1) Instructions (computer programs) that when executed provide desired
features, function and performance; (2) Data structures that enable the programs to adequately
manipulate information; and (3) Documents that describe the operation and use of the programs.
Therefore, software has characteristics that are considerably different than those of hardware.
Characteristics of Software
Although some similarities exist between Software Development & Hardware Manufacturing, the
two activities are fundamentally different.
Software doesn’t “Wear Out”.
The figure below depicts Failure rate as a function of time for Hardware ( also known as Bathtub
Curve).
Although the industry is moving toward component-based construction, most software continue to be
custom built.
( 1.1.2 ) Software Applicaion Domains
There are now 7 broad categories of computer Software that continue giving challenges to
Software Engineers;
1. System Software
2. Application Software
3. Engineering/Scientific Software
4. Embedded Software
5. Product-Line Software
6. Web-Applications
Artificial Intelligence Software Makes use of non-numerical algorithms to solve complex problems
Applications within this area includes Robotics, Expert Systems, Pattern
Recognition etc.
( 1.1.3 ) Legacy Software
The Legacy software systems were developed decades ago and have been continually modified to
meet changes in business requirements and computing platforms.
The proliferation of such systems is causing headaches for large organizations who find them costly
to maintain and risky to evolve.
Legacy systems sometimes have inextensible designs, convoluted code, poor or nonexistent
documentation, test cases and results that were never archived, a poorly managed change history.
As time passes, legacy systems often evolve for one or more of the following reasons: