Unit 1
Unit 1
KCA-302
MCA(II Year , III Semester)
Text Books:
Outline :
1Programversus Software
2. Software
3. Components ofSoftware
4. Software Characteristics
5. Roleofsoftware
6. ClassificationofSoftware
7. Software Myth
8. Emergence ofSoftwareEngineering
9. Software Engineering
10. SoftwareEngineering-A LayeredTechnology
11. SoftwareEngineering Approach
12. SoftwareProcess
1. Program versus Software
Misconception : Software is Program
Various differences between Program and Software are given in
the tabular form as follows:
PROGRAMS SOFTWARE
Programs are developed by Software is usually developed by a
individuals for their personal use group of engineers working in a
team.
It is usually small in size Large in size
Single user : Author himself is a sole Large number of users
user
Limited functionality More functionality
It lacks proper documentation It involves good documentation
Single developer Team of developer
It lacks proper user interface Well designed interface
Adhoc development Systematic development
2. What is software?
Software :
Software is defined as a collection of :
-Executable programming code(programs) that when executed provide the
desired features ,functions and performance.
-Data Structures that enables the programs to adequately store and manipulate
information.
-Documentation that describes the operation and use of the programs.
Documentatio
programs n
Operating
procedure
1. Software does not wear out: Bath tub curve in reliability for
hardware products
Hardware Reliability curve Software Reliability curve
increased failure
rate due to side effects
Failure
rate
change
actual curve
idealized curv
Time
2.Software is developed not manufactured
3.Software is flexible
4. Most software is custom built, rather than being
assembled from existing components
5. Changing Nature of the Software
or
Role of Software
The role of computer software has undergone
significant change over a time span of little
more than 50 years. Dramatic improvements
in hardware performance, profound changes in
computing architectures, vast increases in
memory and storage capacity, and a wide
variety of exotic input and output options have
all precipitated more sophisticated and
complex computer-based systems.
Contd..
--System software :
• Collection of Programs Written to Service Other
Programs
• Heavy Interaction with Computer Hardware
• Contains Complex Data Structures and Multiple
External Interfaces
• Concurrent Operation that requires Scheduling
Example: Compilers , OS, Drivers And Networking
Software
Contd..
--Application software
• Consists of standalone programs
• Used to solve specific business needs process
technical data/technical decisions
• Control business functions in real time
Example: Data processing applications Like
payroll management system
Contd..
--Embedded software
• Resides within a product or system
• Used to implement & control features
• Perform limited & esoteric functions
• Provide significant function & control
capability
• Example: keypad control for a microwave
oven
Contd..
--Artificial intelligence
• Use of non-numerical algorithms to solve
complex problems
• Not amenable to computation /straight forward
analysis
• EXAMPLE: Robotics ,expert systems ,
pattern recognition(image and voice) ,
artificial neural networks
6. Classification of Software
Depending upon the type of software product Software's are broadly categorized
in two categories:
Management myths:
• If we get behind the schedule , we can add more programmers
and catch up. But the reality is Unfortunately, that may further
delay the schedule!
Developer’s Myths
• Once we write the program and get it to work , our
job is done
• Software quality can not be assessed before testing.
• Aim is to develop working programs
Reality is -Those days are over. Now objective is to
develop good quality maintainable programs!
• Testing software or proving software correct can
remove all the errors.
8. Emergence of Software Engineering
In 1950’s –
• Computer systems were used for a very few applications and assembly language were
used for coding
• Every programmer developed his own style of exploratory programming
In 1960’s –
• High level language such as COBOL, FORTRAN were introduced. Software
development style was still exploratory that limits thousands of line to few thousands
of lines . We consider the exploratory program development style as an art.
• Improvement in computer’s power (hardware)
• To cope up with this power programmers started developing complex software but
they had been unsuccessful in terms of budget, time etc due to mismatch between
existing tools ,techniques , hardware and exploratory style or adhoc approach was
insufficient to develop complex software so this unsuccessful results leads to
software crisis
• The term "software crisis" was coined by some attendees at the first NATO Software
Engineering Conference in 1968 at Garmisch, Germany
Software Crisis is in Industry…
As per the IBM report..
Software Crisis
Software crisis is Mismatch between what software can deliver and capacities
of the computer system, as well as expectations of their user.
The word crisis is defined as turning point in the course of anything , decisive
or crucial time or event.
Y2K Problem
3
0
Some Software Failures
The Patriot Missile
Reasons:
A small timing error in the system’s clock
accumulated to the point that after 14 hours,
the tracking system was no longer accurate.
In the Dhahran attack, the system had been
operating for more than 100 hours. 3
1
Some Software Failures
Financial Software
According to IEEE
The application of systematic , disciplined approach to the development
operation and maintenance of software.
A discipline whose aim is the production of quality software that is
delievered on time , within budget and satisfies the requirements.
Software engineers should
- Adopt a systematic and organised approach to their work
- Use appropriate tools and techniques depending on the problem to be
solved, the development constraints and use the resources available.
4
2
Productivity
4
3
Quality
4
4
Consistency & Repeatability
-Sometimes a group can deliver one good software system, but not
a second…
Key SE challenge: how to ensure that success can be repeated ?
And there can be some degree of consistency in the quality of
software produced.
-Software Engineering wants methods that can consistently
produce high Quality Software with high Productivity(Q and
-A Software organization wants to deliver high Quality and
productivity consistently across projects.
-Consistency of performance allows an organization to predict the
outcome of project with reasonable accuracy and to improve its
process to produce higher quality products
4
5
Change
• Precisely defined
• Repeatable and Predictable
• Support maintainability