Computer Science 280:

Software Engineering

Gregory M. Kapfhammer


flickr photo by vpickering shared under a Creative Commons (BY-NC-ND) license

Color Scheme

Key Concept

Corresponding Diagram

In-Class Discussion

In-Class Activity

Details in SETP or MMM

Software Development

Bridge the gap between theory and practice

How big is the gap between theory and practice?

Technology Transfer

Has it worked?

Why or why not?

Can you give examples?

Software is everywhere!

Is software often of a high level of quality?

What is the meaning of the word quality?

Quality of the product

Quality of the process

Who is involved in software engineering?

What is software engineering?

What is Analysis?

What is Synthesis?

What is a Method?

What is a Tool?

Difference between designing and developing?

When we develop, we may introduce defects

Fault/Failure Model

ErrorFaultFailure

Program with a fault that will not lead to a failure?

Safety Critical Systems

Can we implement reliable software?

Reliability of 10 to the -9 power!

Requires continuous testing for 114,000 years

Is this really feasible? What should we do?

Error Detection

Errors found early cost a tenth as much to fix as those found late in the software lifecycle

Half of the cost of testing and maintenance comes from fixing faults introduced very early

So, what is the best way to find faults in our programs?

Should we use inspections or software testing? Both? Why?

Perspectives on Quality

Product

Process

People

Can clean pipes produce dirty water?

How should a business evaluate software quality?

Software Lifecycle

Requirements analysis and definition

System and program design

Implementation

Unit testing

Integration testing

System testing

Maintenance

Different organization or subset, but same goal

Tools and skills in each phase?

"After coding, then we test"

True or false? Why or why not?

What are the strengths and weaknesses?

Team Members

Requirements Analyst

Designers

Programmers and Testers

Documenters and Trainers

Maintainers


creative commons licensed ( BY-NC-ND ) flickr photo shared by Scott Beale

Changes in Software Engineering

Changes

Time pressures

Changes in costs

Desktops and laptops

Networking

Object-oriented

Graphical interfaces

Limitations of waterfall model

What other changes can you suggest?

See the textbook for further discussion!

Importance of Quality Software

Ariane-5 rocket

Performed perfectly for 40 seconds

It veered off course and was manually destroyed

Why? Well, it was performing according to specification!

The processor should stop in the event of an exception