Lecture 11 Software Engineering
Lecture 11 Software Engineering
Chapter 1: Introduction to
Software Engineering
Chapter 1 in Software Engineering Book
2
Overview
Learning Objectives.
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
Projects were:
• Late.
• Over budget.
• Unreliable.
• Difficult to maintain.
• Performed poorly.
7
Software Crisis
Example 1: 2009,Computer glitch delays flights
Software Crisis
Example 2: Ariane 5 Explosion
Software Crisis
Example 3: 1992, London Ambulance Service
•Overloaded problem.
•46 deaths.
11
Therefore…
A well-disciplined approach to software
development and management is
necessary. This is called engineering.
12
Software Engineering
What is Software?
System
Documentation
User
Documentation
14
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.
Systems Engineering:
Interdisciplinary engineering field (computer, software, and process eng.).
Focuses on how complex engineering projects should be designed and managed.
Frequently asked questions about software
engineering
Question Answer
Component-Based
Waterfall approach Iterative development
Software Engineering CBSE
Depends on:
The process used, and
The type of software being developed.
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
Cost distribution
Generic software development
0 25 50 75 100
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.
Software Lifecycle Definition
• Software lifecycle:
– Set of activities and their relationships to each other
to support the development of a software system
Implemented
Expressed in By
Structured By Realized By
Terms Of Verified
By
class...
class...
class... ?
class....?
Use Case Application Solution
Domain SubSystems Source Test
Model Domain
Objects Code Cases
Objects
Initial
Specification
version
Outline Intermediate
Development
description versions
Final
Validation
version
Process Model Problems
• Waterfall
– High risk for new systems because of specification and
design problems.
– Low risk for well-understood developments using familiar
technology.
• Prototyping
– Low risk for new applications because specification and
program stay in step.
– High risk because of lack of process visibility.
• Transformational
– High risk because of need for advanced technology and
staff skills.
Hybrid Process Models
• Large systems are usually made up of several
sub-systems.
• The same process model need not be used for
all subsystems.
• Prototyping for high-risk specifications.
• Waterfall model for well-understood
developments.
2. Code-and-Fix
This model starts with an informal general
product idea and just develops code until a
product is ”ready” (or money or time runs
out). Work is in random order.
Iterate
Quick Design
Build Prototype
Customer Evaluation of
Prototype
Transition Construction
Environment * * releases
Workflow Cycle
Requirements
Inception
4
Design
Phase Elaboration
Implementation
Construction
*
Assessment Iteration
Transition
Deployment *
Artifact
UML class diagram!
Use Case Model
specified by
realised by
Analysis Model
deployed by implemented by
Deployment Model
Implementation Model