0% found this document useful (0 votes)
65 views

Chapter 1: Introduction To Software Engineering

This document provides an overview of software engineering. It defines software engineering as an engineering discipline concerned with all aspects of software production. It discusses why software engineering is important due to past software development crises. It also defines what software is, compares software engineering to computer science and systems engineering, and outlines some key attributes of good software.

Uploaded by

Krishna Antala
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
65 views

Chapter 1: Introduction To Software Engineering

This document provides an overview of software engineering. It defines software engineering as an engineering discipline concerned with all aspects of software production. It discusses why software engineering is important due to past software development crises. It also defines what software is, compares software engineering to computer science and systems engineering, and outlines some key attributes of good software.

Uploaded by

Krishna Antala
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 46

1

Chapter 1: Introduction to
Software Engineering
Teaching Scheme & Reference books

T+P
3+1
Reference Books
1. Title: “Software Engineering: A Practitioner's Approach”, Seventh Edition,
TMH Publication. Author(s): Pressman R.S.
2. Title: “Object-Oriented Modeling and Design with UML”, Second Edition,
PHI Author(s): James Rambaug
3. Title: “Software Engineering”, Eighth Edition, Pearson Author(s): Sommer
Ville
4. Title: “Software Engineering principles and practice”, Second Edition,
TMH Publication Author(s):Waman S Jawadekar
5. Title: Grady Booch, Object-Oriented Analysis and Design with
Applications, Third Edition, Addison Wesley. 2
3

Overview

 Learning Objectives.

What is software engineering?

 Why is software engineering important?


4

By the end of this chapter, you will...

Understand what software engineering is.

 Understand why software engineering is important.

 Know answers to key questions related to the software


engineering discipline.
5

Activity
Virtually all countries
depend on complex
Think about all the devices and systems computer-based
systems.
that you encounter in your everyday life
which have software controlling them…

List as many as you can


6

Why is Software Engineering important?

Complex systems need a disciplined approach for designing,


developing and managing them.
7

Software Development Crises

Projects were:
• Late.
• Over budget.
• Unreliable.
• Difficult to maintain.
• Performed poorly.
8

Software errors….the cost


Errors in computer software can have
devastating effects.
9

Software Crisis
Example 1: 2009,Computer glitch delays flights

Saturday 3rd October 2009-London, England (CNN)

• Dozens of flights from the UK were delayed Saturday after


a glitch in an air traffic control system in Scotland, but the
problem was fixed a few hours later.

• The agency said it reverted to backup equipment as


engineering worked on the system.

• The problem did not create a safety issue but could cause
delays in flights.

• Read more at:


http://edition.cnn.com/2009/WORLD/europe/10/03/uk.fl
ights.delayed
10

Software Crisis
Example 2: Ariane 5 Explosion

• European Space Agency spent 10 years and $7


billion to produce Ariane 5.

• Crash after 36.7 seconds.

• Caused by an overflow error. Trying to store a 64-bit


number into a 16-bit space.

• Watch the video:


http://www.youtube.com/watch?v=z-r9cYp3tTE
11

Software Crisis
Example 3: 1992, London Ambulance Service

• Considered the largest ambulance service in the


world.

• Overloaded problem.

• It was unable to keep track of the ambulances


and their statuses. Sending multiple units to some
locations and no units to other locations.

• Generates many exceptions messages.

• 46 deaths.
12

Therefore…
A well-disciplined approach to software
development and management is
necessary. This is called engineering.
13

Software Engineering

 The term software engineering first appeared in the 1968 NATO


Software Engineering Conference and was meant to provoke
thought regarding what was then called the “software crisis”..

 “.. An engineering discipline that is concerned with all aspects of


software production from the early stages of system specification
to maintaining the system after it has gone into use.” Sommer ville,
pg.7
14

What is Software?

Programs

Software
System
Documentation
Data Documentation
User
Documentation
Software Engineering
software engineering = Software + Engineering
• Software is more than just a program code. A program is an
executable code, which serves some computational purpose.
Software is considered to be a collection of executable
programming code, associated libraries and documentations.
Software, when made for a specific requirement is called
software product.
+
• Engineering on the other hand, is all about developing
products, using well-defined, scientific principles and
methods.
15
IEEE Definition
• It is a collection of computer programs,
together with data, procedure, rules, and
associated documentation, which operate in a
specified environment with certain constraints
to provide the desired outcomes.

16
Need of Software Engineering
• Dynamic- Rapid change in user requirements.

• Cost-Cost management is performed by


different means.

• Quality management- By providing better


process.

• Scalability- Able to incorporate new changes 17


Types of Software/S/W Classifications
System Software

Generic Application Software

Programming
Software
Software

AI S/W

Embeded S/W

Customised Engineering S/W

Web S/W

Product Line S/W

18
19

Types of Software/S/W Classifications

• Generic products.
• Stand-alone systems that are marketed and sold to any customer who wishes to buy
them.
• Examples – PC software such as graphics programs, project management tools;
CAD software; software for specific markets such as appointments systems for
dentists.
• The specification of what the software should do is owned by the software developer
and decisions on software change are made by the developer.

• Customized or bespoke products.


• Software that is commissioned by a specific customer to meet their own needs.
• Examples – embedded control systems, air traffic control software, traffic monitoring
systems.
• The specification of what the software should do is owned by the customer for the
software and they make decisions on software changes that are required.
20

Attributes of good software

 Functional attributes (performance; what the system does).


 Non-functional attributes (quality; how the system does it).

Product Characteristic Description


Maintainability Evolution qualities such as Testability, extensibility.
Dependability Reliability, security, safety.
Efficiency Response time, processing time, memory utilization.
Usability Easy to learn how to use the system by target users.
Efficient to use the system by users to accomplish a task.
Satisfying to use by intended users.
Software - Characteristics
• Software has a dual role. It is a product, but also a vehicle
for delivering a product.
• Software is a logical rather than a physical system
element.
• Software has characteristics that differ considerably from
those of hardware.
• Software is developed or engineered, it is not
manufactured in the
• classical sense
• Software doesn’t “wear out”
• Most software is custom-built, rather than being
21
assembled from existing components.
22

Software Engineering vs. Computer Science

“Computer science is no more about computers than


astronomy is about telescopes.” Edsger Dijkstra

Computer Science Software Engineering

• Theory. • Practicalities of software


• Fundamentals. design, development and
delivery.
23

Software Engineering vs. Systems Engineering

Systems Engineering:
 Interdisciplinary engineering field (computer, software, and process eng.).
 Focuses on how complex engineering projects should be designed and managed.

Systems Engineering Software Engineering

• All aspects of computer- • Deals with the design,


based systems development and delivery
development: HW + SW + of SW.
Process. • Is part of Systems
• Older than SWE. Engineering.
Frequently asked questions about software
engineering
Question Answer

What is software? Computer programs and associated documentation. Software


products may be developed for a particular customer or may
be developed for a general market.
What are the attributes of good software? Good software should deliver the required functionality and
performance to the user and should be maintainable,
dependable and usable.
What is software engineering? Software engineering is an engineering discipline that is
concerned with all aspects of software production.
What are the fundamental software Software specification, software development, software
engineering activities? validation and software evolution.
What is the difference between software Computer science focuses on theory and fundamentals;
engineering and computer science? software engineering is concerned with the practicalities of
developing and delivering useful software.
What is the difference between software System engineering is concerned with all aspects of
engineering and system engineering? computer-based systems development including hardware,
software and process engineering. Software engineering is
part of this more general process.
24
Frequently asked questions about software
engineering
Question Answer
What are the key challenges facing software Coping with increasing diversity, demands for reduced delivery
engineering? times and developing trustworthy software.
What are the costs of software engineering? Roughly 60% of software costs are development costs, 40% are
testing costs. For custom software, evolution costs often
exceed development costs.
What are the best software engineering While all software projects have to be professionally managed
techniques and methods? and developed, different techniques are appropriate for
different types of system. For example, games should always be
developed using a series of prototypes whereas safety critical
control systems require a complete and analyzable
specification to be developed. You can’t, therefore, say that
one method is better than another.
What differences has the web made to The web has led to the availability of software services and the
software engineering? possibility of developing highly distributed service-based
systems. Web-based systems development has led to
important advances in programming languages and software
reuse.
25
The evolving role of software
• software takes on a dual role.
• It is a product and, at the same time, the vehicle for delivering
a product.
• As a product, it delivers the computing potential embodied by
computer hardware or, more broadly, a network of computers
that are accessible by local hardware.
• As the vehicle used to deliver the product, software acts as
the basis for the control of the computer (operating systems),
the communication of information (networks), and the
creation and control of other programs (software tools and
environments).

26
Changing Nature of Software

• System software
• Real time software
• Embedded software
• Business software
• Personal computer software
• Artificial intelligence software
• Web based software

27
LEGACY SOFTWARE:
Legacy Software
• Legacy software is software that has been
around a long time and still fulfills a business
need. It is mission critical and tied to a
particular version of an operating system or
hardware model (vendor lock-in) that has
gone end-of-life. Generally the lifespan of the
hardware is shorter than that of the software

28
Software Myths

• Management Myths
• Customers Myths
• Practitioners Myths

• Managers with software responsibility are


often under pressure to maintain budgets,
keep schedules from slipping, and improve
quality.
29
Management Myths

• Myth: We already have a book that’s full of


standards and procedures for building
software, won’t that provide my people with
everything they need to know?

• Reality: The book of standards may very well


exist, but isn’t used. Most software
practitioners aren’t aware of its existence.
Also, it doesn’t reflect modern software
engineering practices and is also complete.30
Management Myths

• Myth: If we get behind schedule, we can add more


programmers and catch up (sometimes called the
Mongolian horde concept).

• Reality: Software development is not a mechanistic


process like manufacturing. As new people are added,
people who were working must spend time educating
the newcomers, thereby reducing the amount of time
spent on productive development effort. People can be
added but only in a planned and well-coordinated
manner.
31
Management Myths

• Myth: If I decide to outsource the software


project to a third party, I can just relax and let
that firm build it.

• Reality: If an organization does not understand


how to manage and control software projects
internally, it will invariably struggle when it
outsources software projects.

32
Customer Myths

• Customer myths lead to false expectations (by the


customer) and ultimately, dissatisfaction with the
developer.
• Myth: A general statement of objectives is sufficient
to begin writing programs-we can fill in the details
later.
• Reality: A poor up-front definition is the major cause
of failed software efforts. A formal and detailed
description of the functions, behavior, performance,
interfaces, design constraints, and validation criteria
is essential. 33
Customer Myths

• Myth: Customers believe that giving a general


statement would let the software developer start
writing the program. The rest of the details can be
filled in later.
• Reality: Although it is not possible for a customer to
provide a comprehensive and stable statement. And
an ambiguous statement will lead to disaster. The
unambiguous statement comes with an iterative
communication between the customer and the
developer.
34
Practitioner’s Software Myth

• Software practitioners are the ones who are involved


in the development and maintenance of the
software. Earlier developing software is considered
as an art. So, the software practitioners have
developed some myths regarding the software.
• Myth: Once you write the code and develop the
software your job is done.
• Reality:Practically 60% – 80% of the efforts are
expended on the software when the software is
delivered to the customer for the first time.
35
Practitioner’s Software Myth

• Myth: Software quality can be assessed only


after the program is executed.

• Reality: The quality of software can be


measured during any phase of development
process by applying some quality assurance
mechanism. One such mechanism is formal
technical review that can be effectively used
during each phase of development to uncover
certain errors. 36
37

What is a Software Process?

 Activities and results that produce a software product:

SW Process Activity What is going on there?

What does the customer need?


Specification
What are the constraints?

Development Design & programming.

Validation Checking whether it meets requirements.

Evolution Modifications (e.g. customer/market).


38

What is a Software Process Model?

 Description of the software process that represents one view, such


as the activities, data or roles of people involved.

Examples of views Focus on…

Activities = human actions.


Workflow
What is input, output, and dependencies.

Activities = transformations of information.


Dataflow
How the input is transformed into output.
What is the role of people involved in each step of
Role/Action
the process?
39

Software Process Models

Component-Based
Waterfall approach Iterative development
Software Engineering CBSE

assembled form existing


components
40

The Cost of Software Engineering

 Depends on:
 The process used, and
 The type of software being developed.

 Each generic approach has a different profile of cost distribution.

 Roughly 60% of costs are development costs, 40% are testing costs.

 For custom software, evolution costs often exceed development


costs.
41

Cost distribution
Custom software development (Bespoke)
Software Model Waterfall Model
Cost units 0 25 50 75 100
Cost distribution
Software development activity Specification Design Development Integration and testing

Iterative Development
0 25 50 75 100

Specification Iterative Development System testing

Component-based Software Engineering


0 25 50 75 100

Specification Development Integration and testing

Development and evolution costs for long-lifetime systems


0 100 200 300 400

System development System evolution


42

Cost distribution
Generic software development

0 25 50 75 100

Specification Development System testing

Product development costs


43

What is CASE?

 Computer Aided Software Engineering.

 Programs that support:


 Requirements analysis.
 System modeling.
 Debugging.
 Testing.
44

Activity
 What are the key attributes for..

Cardiac monitor in an ICU


Interactive game Banking system
unit
Players, score, scenes, Client accounts, stocks heart rate, temperature,
theme. bonds, money transfers. blood pressure.
45

Challenges facing software engineering

Challenge Why? Software needs to ..

Different computers, different


Heterogeneity Cope with this variability.
platforms, different support systems.

Businesses are more responsive


Be delivered in shorter time
Delivery  supporting software needs to
without compromising quality.
evolve as rapidly.

Software is a part of many aspects of


Demonstrate that it can be
Trust our lives (work, study, leisure).
trusted by users.
46

References

 PRESS&SUN-BULLETIN, The Binghamton Press Co., Binghamton, NY, October 1,1999.

 “Software Hell: Is there a way out?”, BUSINESS WEEK, December 6, 1999.

 IEEE Standards Collection: Software Engineering, IEEE standard 610.12-1990, IEEE 1993.

 Sommerville, Ian “Software Engineering”, 9th edition, Addison-Wesley.

You might also like