0% found this document useful (0 votes)
45 views29 pages

Introduction To Software Engineering

The document provides an introduction to software engineering, outlining its importance and the need for a disciplined approach to manage complex systems. It discusses the software crisis, highlighting examples of software failures and their consequences, and defines software engineering as a discipline that encompasses all aspects of software production. Additionally, it contrasts software engineering with computer science and systems engineering, and addresses key challenges and attributes of good software.

Uploaded by

Ahmad Hassan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
45 views29 pages

Introduction To Software Engineering

The document provides an introduction to software engineering, outlining its importance and the need for a disciplined approach to manage complex systems. It discusses the software crisis, highlighting examples of software failures and their consequences, and defines software engineering as a discipline that encompasses all aspects of software production. Additionally, it contrasts software engineering with computer science and systems engineering, and addresses key challenges and attributes of good software.

Uploaded by

Ahmad Hassan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 29

1

Introduction to Software Engineering


2

Overview

 Learning Objectives.

 What is software engineering?

 Why is software engineering important?


3

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

 Understand what software engineering is.


 Understand why software engineering is important.
 Know answers to key questions related to the software
engineering discipline.
4

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


Program VS Software
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.
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-r9cYp
3tTE
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.” Sommerville, pg.7
14

What is Software?

Programs

Software
System
Documentation
Data Documentation
User
Documentation
15

Types of Software

• 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.
16

Software Engineering vs. Computer Science

“Computer science is no more about


computers than
astronomy is about telescopes.” Edsger
Dijkstra
Software
Computer Science
Engineering
• Theory. • Practicalities of
• Fundamentals. software design,
development and
delivery.
17

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.

18
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.

19
20

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).


21

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?
22

Software Process Models

Component-Based
Waterfall approach Iterative development
Software Engineering CBSE

assembled form existing


components
23

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.
24

Cost distribution
Custom software development (Bespoke)
Waterfall Model
Software 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


25

Cost distribution
Generic software development

0 25 50 75 100

Specification Development System testing

Product development costs


26

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.
27

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.
28

Challenges facing software engineering

Challenge Why? Software needs to ..

Different computers, different


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

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.
29

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