Você está na página 1de 14

CS 2ME3 / SE 2AA4

Software Design - I
Alan Wassyng
January - April 2015

Many of these slides were provided by the authors of


Fundamentals of Software Engineering, 2nd edition Ghezzi, Jazayeri & Mandrioli. Some have been edited.

Calendar Description

! Development of small
software units

! Precise specifications

expressed using logic and


discrete mathematics

! Design methods
! Implementation and
testing.

Calendar Description

! Development of small
software units

! Precise specifications

expressed using logic and


discrete mathematics

! Design methods
! Implementation and
testing.

What we will do:


Software Engineering
Development Life-Cycle
Requirements
Design Emphasis on
design of individual units
Implementation
Validation & Verification

Course Info
! Web-site:

http://avenue.mcmaster.ca
! Recommended Reference:
Fundamentals of Software Engineering Carlo Ghezzi, Mehdi
Jazayeri, Dino Mandrioli, Second Edition.
http://www.prenhall.com/ghezzi/

! 3 Assignments
! Mid Term Exam
! Final Exam

- 20%*
- 35%*
- 45%*

All exams are


open book

* Only if avg(final, mid-term) is 50%


If avg(final, mid-term) < 50% - then that is the total grade

My Background
!

Applied Math/Scientific Computation till 1982


o U Witwatersrand 1968-72 (student), 1973-79 faculty
o U Minnesota 1979-82 faculty (Civil & Mineral Eng)
o Solving Ax=b (large systems, applications in Rock Mechanics)

Use of PCs in Engineering Education 1982-1986


o U Minnesota faculty (Civil & Mineral Eng), IBM project

Computer Consulting 1987-(2002)


o Alan Wassyng Consulting Ltd
o General computer consulting
o Safety critical software for nuclear industry

McMaster U 2002o Department of Computing and Software


o McMaster Centre for Software Certification (McSCert) Director

Current Research Interests


!

Software Certification (Large funded project)


o
o
o
o

Medical devices IBM, Federal Drug Administration


Nuclear Power OPG, Candu Energy, SWI, Nuclear Regulatory Commission
Financial Legacy Systems LSI
eHealth

Automotive Software (2 large funded projects)


o Model Driven Engineering for Automotive Software APC project with GM
and IBM project called NECSIS
o Chrysler software for hybrid/electric vehicles; safety of semi-autonomous
vehicles

Safety-Critical Software in general


o
o
o
o

Timing issues in hard real-time systems


Requirements
Integrated methods and tools
Assurance cases

Our Team for this Course

! Instructor
! TAs

Alan Wassyng

wassyng@

Jake Harwood

harwooja@

Tony Jiang

jiangy76@

Vincent Maccio

macciov@

Gurankash Singh

singhg47@

Software Engineering - 1

! The application of engineering methods to software


! Built on mathematics & computer science dealing with
software systems
o
o
o
o
o

large and complex


built by teams
exist in many versions
last many years
undergo changes

Software Engineering - 2

! Application of a systematic, disciplined, quantifiable

approach to the development, operation, and maintenance


of software (IEEE 1990)

! Multi-person construction of multi-version software (Parnas


1978)

SE in system design

! SE part of larger projects


! Embedded
o Software requirements to be balanced against others
e.g., telephone switching systems
certain requirements can only be met by hardware, software, and special
devices

o Software constrained to work in a very specific environment


o Desperately need disciplined software development

10

History

! The field of software engineering was born in 1968 in

response to chronic failures of large software projects to


meet schedule and budget constraints
o Recognition of "the software crisis"

! Term became popular after NATO Conference in Garmisch


Partenkirchen (Germany), 1968

11

Role of the Computer Scientist

! Programming skill not enough but is essential


! Both the Basic Science for SE & Software Development
o CS Theory
o understand requirements and write specifications
derive models and reason about them

o master aspects of software development


o operate at various abstraction levels
o member of a team
technical skills
communication skills

12

Role of the Software Engineer

! Programming skill not enough but is essential


! Software engineering involves "programming-in-the-large"
o understand requirements and write specifications
derive models and reason about them

o master all aspects of software development


o operate at various abstraction levels
o member of a team

technical skills
communication skills
management skills
ethics
professionalism

13

Health-care database

14

Pacemaker recall

15

Car stall due to software

16

UK tax software

17

Infusion pumps

18

Gamma Knife

19

Therapy Planning

20

From the New York Times

Radiation Overdose

21

And Again

22

The software lifecycle - 1


Requirements analysis
and specification
Design and specification

Code and module


testing
Integration and
system testing
Delivery and
maintenance

Traditional waterfall view

23

The software lifecycle - 2


Another View
Integration
Testing

Req. Doc
Design

Review (&
Verify)

S. Design
Doc

Review (&
Verify)

Unit
Testing
Code
Application

24

The software lifecycle - 3


Validation Test and
Reliability Qualification
Reports

HAR

System
Requirements
& Design

HAR

Software Integration
Test Report

Software
Requirements
Specification

Design Review and


Verification Reports

Software
Design
Description

Unit Test
Report

HAR

Legend:
Documents produced in the
forward going development process
Documents produced by
verifications, reviews, analyses and
testing
Activities and data flow
HAR

Hazard Analysis Report

HAR

Code
Code Review and
Verification Reports

25

The software lifecycle - 4


Spiral
model:
Boehm
1988

26

The Software Product

! Different from traditional types of products


o intangible
difficult to describe and evaluate

o malleable
o human intensive
involves only trivial physical manufacturing process
this probably will not change even with model-driven development

o difficult to test

27

A Disciplined Approach

! Software Quality Attributes


! Software Development Principles
! Software Processes