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

Week 1 - Introduction

Uploaded by

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

Week 1 - Introduction

Uploaded by

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

1

Lecture Slides of
Week 1
Software Engineering
2

Course Contents
3

What is Software?

When we write a program for computer we named it as software.


But software is not just a program; many things other than the
program are also included in software.
 Program: The program or code itself is definitely included in the software.
 Data: The data on which the program operates is also considered as part of

the software.
 Documentation: Another very important thing that most of us forget is
documentation. All the documents related to the software are also considered
as part of the software.
4

What is Software?

Programs

Software
System
Documentation
Data Documentation
User
Documentation
5

What is Engineering?

Before moving on to software engineering lets first discuss


something about engineering itself. If you survey some of the
dictionaries then you will find the following definition of
engineering.

“The process of productive use of scientific


knowledge is called engineering.”
The science concerned with putting scientific knowledge to
practical use. (source Webster’s Dictionary)
6

Software Crisis ?

Software errors….the cost


Errors in computer software can have
devastating effects.
7

Main Reasons for Software Crisis

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

Example1 of 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
9

Example2 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
10

Example3 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.
11

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

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

Why is Software Engineering important?

Complex systems need a disciplined approach for designing,


developing and managing them.
28

Software Engineering:
A Problem Solving Activity
 Analysis:
 Understand the nature of the problem and break the problem into
pieces

 Synthesis:
 Put the pieces together into a large structure

For problem solving we use techniques, methodologies and


tools.
29

Techniques, Methodologies and Tools

 Techniques:
 Formal procedures for producing results using some well-
defined notation

 Methodologies:
 Collection of techniques applied across software development
and unified by a philosophical approach

 Tools:
 Instruments or automated systems to accomplish a technique
 CASE = Computer Aided Software Engineering
30

Software Engineering is more than writing


code

l Problem solving
• Creating a solution
• Engineering a system based on the solution
l Modeling
l Knowledge acquisition
l Rationale management
31

Software Engineering

So we can define software engineering as:


 ”This is the process of utilizing our knowledge of computer

science in effective production of software systems.”


 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
32

Difference between Software Engineering and


Computer Science
 Many engineering fields like electrical, mechanical and civil engineering.
All these branches of engineering are based on physics.
 Physics itself is not engineering but the use of physics in making
buildings, electronic devices and machines is engineering.
 When we use physics in constructing buildings then civil engineering.
When we use physics in making machines like engines or cars then it is
called mechanical engineering.
 And when we apply the knowledge of physics in developing electronic
devices then the process is called electrical engineering.
 The relation of computer science with software engineering is similar as
the relation of physics with the electrical, mechanical or civil engineering.
33

Computer Science vs. Engineering


 Computer Scientist
 Assumes techniques and tools have to be developed.
 Proves theorems about algorithms, designs languages, defines
knowledge representation schemes
 Has infinite time…
 Engineer
 Develops a solution for a problem formulated by a client
 Uses computers & languages, techniques and tools
 Software Engineer
• Works in multiple application domains
• Has time constraints...
• …while changes occurs in the problem formulation (requirements)
and also in the available technology
34

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

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.
 System engineers are involved in system specification, architectural design,
integration and deployment.

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.
FAQs about software engineering aspects
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.

36
FAQs about software engineering aspects

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.

37
38

What is a Software Process?


 Software process : A set of activities whose goal is the
development or evolution of software.
 Generic activities in all software processes are:
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).


39

Examples of 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 the requirements of

system attributes such as performance and system reliability.


 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.
 Distribution of costs depends on the development model that is
used.
41

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


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
 CASE systems are often used for method
support.
 Upper-CASE
Tools to support the early process activities of
requirements and design;
 Lower-CASE
Tools to support later activities such as
programming, debugging and testing.
 Programs that support:

Requirements analysis.

System modeling.

Debugging.

Testing.
44

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

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

Thanks
&
Any Question

You might also like