Software EngineeringLecture # 1
What is Software?
2
Software is a set of items or objects that includes:
• programs • data • documents
Why is it important?
Importance of Software• Software in everyday life• Business decisions• Products and services• Technology and innovations• Industry and entertainment• Economic significance
4
Importance of Software …
•Software acts as basis for:
• Control of computer – operating systems
• Communication of information – internet
• Creation and control of other programs – software tools and environments
5
Hardware Vs. Software
Hardware• Wears out• Replaceable spare parts
Software• Does not wear out• No spare parts
6
Software characteristics:• Intangible• Exhibits aging• Complex• Deteriorates (Decline, Depreciate)• Defect prone
Hardware Vs. Software …
7
Failu
re R
ate
Time
Infant MortalityWear out
Hardware Failure Curve
Wear Vs. Deterioration
8
idealized / theoretical curve
change
actual curve
Failurerate
Time
increased failure ratedue to side effects
Software deteriorates and becomes complex
The source of inherent complexity in software
The difference between a software system and a
car !!
Complexity in Software• Complexity of software arises from
• Complexity of problem domain• Difficulty in managing development process• Software evolution
• Direct consequence of software change is software defects
10
The complexity of software is an essential property, not an accidental one
Cost of Software• Software costs often dominate system costs. The costs of
software on a PC are often greater than the hardware cost
• Software costs more to maintain than it does to develop. For systems with a long life, maintenance costs may be several times development costs
11
The Cost of Change
12Definition Development After release
1x
1.5-6x
60-100x
13
The name of the game is continuous change and evolution
in all dimensions!
Engineering
The study concerned with putting scientific knowledge
to practical useWebster’s
Dictionary
14
Engineering…• A way of approaching a problem• An approach to productively use scientific knowledge• Examples:
• Electrical Engineering• Mechanical Engineering• Civil Engineering
15
Physics as basic science
Difference between Computer Science and Software Engineering
16
Software Engineering uses knowledge from Computer Science to effectively build
software
Software Crisis
• A Historical Perspective (1950’s)• The advent of more powerful and cheaper hardware
resulted in more complex applications. • The tools and technologies for primitive computer
systems were inadequate for newer systems• Resulted in
• Prolonged schedule slippages• Astronomical development and maintenance costs• Unreliable software systems• Disappointment !!!
Software was in Crisis17
The Birth of Software Engineering
• Born in 1960 in a conference on Software Crisis• Software Crisis resulted in realization that:
18
“Coding” alone was not enough!!
New techniques and methods were required to control the complexity
inherent in “LARGE” software systems
The Birth of Software Engineering…
• Decision There should be some engineering principles applied for the
development of successful software
19
The Term ‘Software Engineering’ was coined
Software Engineering-Definitions
IEEE
The application of a systematic, disciplined, quantifiable approach to
the development, operation, and maintenance of software; that is, the
application of engineering to software
20
Software Engineering-Definitions
Ian Sommerville- 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
21
Software Engineering
22
Software Engineering is not just about producing software, but about
producing software in a COST-EFFECTIVE manner.
The set of processes and tools to develop software
Software Engineering: Points to Remember
• SE is has a wide scope and is concerned with anything that has something to do with software
• SE is concerned with cost effective software development
• SE is NOT just coding; there is a lot more to it
23SE is nothing but a disciplined and systematic
approach to developing software
No Silver Bullet• Fred Brooks, “The Mythical Man-month”• There is no short cut to software development• Software can be disastrous to managers in the form of:
• Schedule slippages• High costs• Delivery of unreliable systems
24Begin upright and upfront with a systematic approach to building software
Characteristics of a Well Engineered Software
• Provides the required functionality
• Maintainable
25
· Efficient· User-friendly· Cost-effective• Reliable
A software engineer is challenged to produce high-quality software with a finite amount of resources, within
predicted schedule and budget
26
The Balancing Act
• Software requirements may be conflicting
• Cost vs. Efficiency• Cost vs. Reliability• Efficiency vs. User-interface
27
Challenge is to balance these requirements
28
Effort Breakdown Breakdown of activities involved in software development (Caper Jones)
• Project Management 8.08%• Requirements 14.43%• Design 11.36% • Coding 13.50%• SQA 30.64%• SCM 13.02%• Integration 6.54%• Miscellaneous ~3%
29SE is NOT just Coding !!
Software Engineering is nothing but a disciplined and systematic approach to software development!
(In a cost effective manner)30