302 Software Engineering C.B.
Patel Computer College
1.1) Software
Software is a collection of
1) Instructions (Computer programs) that when executed provide desired function
and performance.
2) Data structure that enable the programs to adequately manipulate information. And
3) Documents that describe the operation and use of the
programs. Software is a logical entity rather than a physical system
element.
TH 1.2) Characteristics of the Software
Software is a logical rather than a physical system element therefore software has characteristic
that are different then hardware component.
1. Software is developed or engineered it is not manufacture in the classical
sense.
In both activities software development and hardware manufacturing, high quality
is achieved through good design, but the manufacturing phase for hardware can
introduce quality problems that are nonexistence (or easily corrected) for software.
Both activities depend on people, but the relationship between people applied and
work accomplished is entirely different. Both activities require the construction
of a product, but the approaches are different.
2. Software does not wear out failure.
Figure (A) failure rate as a function of time for hardware. The relationship often
called the “bathtub curve” indicates that hardware exhibits relatively high failure
rate early in its life. (This failures are often attributable to design or
manufacturing defects); defects are corrected and the failure rate drops to a
steady state level (hopefully quite low) for some period of time. As time passes,
however, the failure rate rises again as hardware components suffer from the
cumulative effects of dust, vibrations, abuse, temperature extremes, etc. Stated
simply,hardware begins to wear out.
Software is not susceptible to the environmental maladies that cause hardware to
wear out.
Figure B – Idealized and actual failure curves for software
As shown in figure (B), the failure rate curve for software shows that,
undiscovered defects will cause high failure rates early in the life of a program. These
are corrected (without introducing other errors) and the curve flattens as shown in
figure (B). Software doesn’t ware out, but it does deteriorate. During the software
life, it will undergo change (maintenance). As changes are made, it is likely that some
new defects will introduced, causing the failure rate cure to spike. Before the curve can
return to the original steady-state failure rate, another change is requested, causing
the curve to spike again. Slowly, the minimum failure rate level begins to rise
the software is deteriorating due to change.
Hardware component wears out; it is replaced by a spare part. There are no
software spare parts.
Every software failure indicates an error in design or in the process through
which design was translated into machine executable code. Therefore, software
maintenance involves considerably more complexity than hardware maintenance.
3. Most software is custom built rather than being assembled from existing
components.
Reusability is an important characteristic of high quality software component.
A software component should be designed and implemented so that it can be
reused in many different programs.
Modern reusable components encapsulate both data and the processing that is
applied to the data, enabling the software engineer to create new applications
from reusable parts. For e.g. today’s interactive interfaces are built using
reusable components that enable the creation of graphics windows, pull down menus
and a wide variety of interaction mechanisms.
Software components are built using a programming language that has a limited
vocabulary. An explicitly defined grammar and well formed rules of syntax and
semantics.
At the lowest level, the language mirrors the instruction set of the hardware.But
Sometimes reusable components does not fulfill the requirement there may be some
changes we want but because of its complexity of code means we have to
understand the whole component for making some changes to it , which is very complex
task instead of this we can create a custom component.
1.3) Software Engineering
1. Software engineering is a systematic approach to the development, operation
maintenance and requirements of the software.
2. Software engineering is the application of science and mathematic by which the
capabilities of computer equipments are maid useful to man via computer
program, procedures and associated documents.
Goal of Software Engineering
Software engineering is driven by three major factors as are follows.
Cost
Schedules
Quality
1.4 Types of Software
1) System software
2) Real-Time Software
3) Business Software
4) Engineering and scientific software
5) Embedded Software
6) Personal Computer Software
7) Web-Applications
8) Artificial intelligence software
1) System Software
System software is a collection of a program written to service other
programs. Some system software (e.g. Compilers, editors and file management utilities)
processes complex; but determinate information structures.
Other system applications (e.g. operating system components, drivers,
telecommunications processors).
2) Real time Software
Programs that monitor/analyze/control real world events as they occur
are called real time software.
Elements of real time software includes
Data gathering components
Analysis components
Control / output components
Monitoring components
A real time system must respond within strict time constraints.
Real time system differs from interactive or timesharing. The response
time of an interactive system can normally be exceeded without
disastrous results.
Eg. Weather forecasting s/w
3) Business Software
Business information processing is the largest single software application area.
Discrete systems (e.g. Payroll, accounts receivable/payable, inventory etc.) have
evolved into management information system (MIS) software that accesses one or more
large databases containing business information.
Applications in this area restructure existing data in a way that facilitates
business operations or management decision making.
e.g. Client/Server computing application.
4) Engineering and Scientific Software
Engineering and scientific software has been characterized by “number
crunching” algorithms.
Application range from astronomy to volcano logy, from automotive stress
analysis to space shuttle orbital dynamics and from molecular biology to automated
manufacturing.
Eg. Weather Forecasting s/w, Radar s/w, military s/w
5) Embedded Software
Embedded software resides in RAM and is used to control products and systems
for the consumer and industrial markets.
Embedded software can perform very limited and esoteric functions (e.g. key
pad control for microwave oven, washing Machine, AC etc.) or provide significant function
and control capability.
(e.g. Digital functions in an automobile such as fuel control, dashboard displays,
braking system, etc.)
6) Personal Computer Software
Word processing, spreadsheets, computer graphics, multimedia, entertainment,
database management, personal and business financial applications and external network
or database access are some of the example of personal computer software.
Eg. Desktop Based Applications(Word, Excel , power point , Photoshop etc.)
7) Web-Applications
The web pages retrieved by a browser are software that incorporates executable
instructions. In essence, the network becomes a massive computer providing almost
unlimited software resources that can be accessed by anyone with a modem.
Eg. Websites
8) Artificial intelligence Software
Artificial intelligence software makes used of non-numerical algorithms to solve
complex problems that are not amenable to computation or straight – forward analysis.
An active Artificial Intelligence area is expert systems, also called knowledge
based systems.
Other application area for AI software is pattern recognition (image and voice)
theorem proving and game playing.
In recent years, new branch of AI is Artificial neural networks has evolved. A
neural network simulates the structure of brain processes (the function of the biological
neuron).
Eg. Decision Making s/w