alyce brady, kalamazoo college software engineering friday, week 4

19
Alyce Brady, Kalamazoo College Software Engineering Friday, Week 4

Upload: garry-dorsey

Post on 04-Jan-2016

213 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Alyce Brady, Kalamazoo College Software Engineering Friday, Week 4

Alyce Brady, Kalamazoo College

Software Engineering

Friday, Week 4

Page 2: Alyce Brady, Kalamazoo College Software Engineering Friday, Week 4

Alyce Brady, Kalamazoo College

Evolution of Software Engineering

• Single-person projects:

“Back of the envelope” design followed by coding, debugging

• Multiple-person projects:

More formal design, identify modules, code modules, group debugging of whole project

Page 3: Alyce Brady, Kalamazoo College Software Engineering Friday, Week 4

Alyce Brady, Kalamazoo College

Engineering =

cost-effective solutions

to practical problems

by applying scientific knowledge

in building things

in service of mankind

Science

Production Engineering

Commercial

Craft

Mary Shaw, Carnegie Mellon University

Page 4: Alyce Brady, Kalamazoo College Software Engineering Friday, Week 4

Alyce Brady, Kalamazoo College

Evolution of Software Engineering

• Improved quality:

– formal design (e.g., structured or object-oriented design)– identify modules– develop a test plan based on the design– code modules– develop test plan of individual module based on code– test modules in isolation– test integrated whole

Page 5: Alyce Brady, Kalamazoo College Software Engineering Friday, Week 4

Alyce Brady, Kalamazoo College

Why Are All These Steps Necessary?

Writing a program is much easier than

writing a programming system, which is much easier than

writing a programming system product which is• documented thoroughly• usable in many environments• robust in its operations

F. Brooks estimated that each is at least 3 times more expensive than the previous.

Page 6: Alyce Brady, Kalamazoo College Software Engineering Friday, Week 4

Alyce Brady, Kalamazoo College

Why Software Engineering?

Barry Boehm has estimated that specification errors repaired in later stages of software development can cost as much as

100 times

more to fix than if caught at specification time.

Page 7: Alyce Brady, Kalamazoo College Software Engineering Friday, Week 4

Alyce Brady, Kalamazoo College

Evolution of Software Engineering

Software Lifecycle

– Requirements Analysis– System Specification– Design– Implementation (programming)– Unit Testing– Integration Testing

– Maintenance (fixing problems, adding enhancements)

Page 8: Alyce Brady, Kalamazoo College Software Engineering Friday, Week 4

Alyce Brady, Kalamazoo College

Waterfall Lifecycle

Requirements

System Spec.

Design

Code, Unit Test

Integration Test

Page 9: Alyce Brady, Kalamazoo College Software Engineering Friday, Week 4

Alyce Brady, Kalamazoo College

“Over-the-Wall” Lifecycle

Implementation Unit Testing Integration

Requirements System Spec. Design

Page 10: Alyce Brady, Kalamazoo College Software Engineering Friday, Week 4

Alyce Brady, Kalamazoo College

Modified Waterfall Lifecycle

Requirements

System Spec.

Design

Code, Unit Test

Integration Test

Page 11: Alyce Brady, Kalamazoo College Software Engineering Friday, Week 4

Alyce Brady, Kalamazoo College

Whirlpool Lifecycle

Req. Sys.Spec.

Design

CodeUnit Test

Integration

Page 12: Alyce Brady, Kalamazoo College Software Engineering Friday, Week 4

Alyce Brady, Kalamazoo College

Levels of Abstraction

– Requirements Analysis– System Specification

– Design

– Implementation (programming)

Page 13: Alyce Brady, Kalamazoo College Software Engineering Friday, Week 4

Alyce Brady, Kalamazoo College

Types of Testing

• “Black box” testing– based on Requirements Analysis, System Specification– test plan developed before design; run as part of

integration testing

• “Gray box” testing– based on Detailed Design– test plan developed before implementation; run as part

of integration testing (some may be part of unit testing)

• “White box” testing– based on Implementation (code)– unit testing

Page 14: Alyce Brady, Kalamazoo College Software Engineering Friday, Week 4

Alyce Brady, Kalamazoo College

Levels of Abstraction

– Requirements Analysis– System Specification

– Design

– Implementation (programming)– Unit Testing

– Integration Testing

– Maintenance (fixing problems, adding enhancements)

Page 15: Alyce Brady, Kalamazoo College Software Engineering Friday, Week 4

Alyce Brady, Kalamazoo College

Object Oriented Programming

• Based on modeling from the real world.

• It’s a way of thinking about a problem abstractly using real-world concepts, rather than computer concepts.

• JavaScript is object-based but not completely object-oriented.

Page 16: Alyce Brady, Kalamazoo College Software Engineering Friday, Week 4

Alyce Brady, Kalamazoo College

Object-Oriented

• Organize software as a collection of discrete objects that have both behavior and information.

• Objects then interact with each other to perform their tasks.

• Objects have values (or information) and operations (or behaviors).

Page 17: Alyce Brady, Kalamazoo College Software Engineering Friday, Week 4

Alyce Brady, Kalamazoo College

Object-Oriented

• The object values could be name or size.

• The object operations could be changing or displaying the values.

• The values and operations are grouped together to make a class.

Page 18: Alyce Brady, Kalamazoo College Software Engineering Friday, Week 4

Alyce Brady, Kalamazoo College

Object-oriented Example

• Class: Car• Attributes (or values)

– Color– Make– Model

• Operations:– TurnRight– TurnLeft– Accelerate– Brake– Repair

• Object - Mike’s car is a new blue, Mazda 626 Car.

• Mike’s car then has values of color (blue), a make (Mazda), a model (626).

• Mike’s car then can do operations like TurnLeft, Accelerate, Brake and TurnRight.

Page 19: Alyce Brady, Kalamazoo College Software Engineering Friday, Week 4

Alyce Brady, Kalamazoo College

In Class Exercise

• Design a class that describes a fish.

– What attributes would a fish have?

– What operations could a fish do?

• Create a new fish with attributes of its own and design a short series of actions the fish might do.