198:431 Software Engineering
Fall 2006
Prof Barbara G. Ryder

Lectures

Lecture notes in 2-up PDF format will be posted here before each lecture. Reference materials for the lecture, either from the textbook or the two supplemental books will be listed as well as pointers to some supplemental papers.

Lecture 1 (9/6/2006): Introduction to Software Engineering notes 2-up for printing
What is Software Engineering? historical perspective, problems with software, software myths
Slides covered: Intro #1-19
References: Standish Group report 1994
Standish Group report 1999
Fred Brooks, "No Silver Bullet - essence and accident in Software Engineering",
IEEE Computer 20, 4 (April 1987), pp. 10-19.

Lecture 2 (9/11/2006): Tools notes 2-up for printing
Introduction to Eclipse, Downloading Eclipse and Java JDK,
CVS - version control, Ant - a build tool for Java
Slides covered:

Lecture 3 (9/13/2006): Intro, cont; Teams & User Interfaces notes 2-up for printing
Egoless programming, Role of team leader, Models of teams
Slides covered: Intro #20-35, Teams&UIs #1-10
References: SOM Ch 22; PRE Ch 12;
An interesting website about GUI Blooprs.

Lecture 4 (9/18/2006): Teams & User Interfaces, cont;
User interfaces - 3 golden rules, kinds of users, Details: menus, display guidelines, Error handling, Help
Software Process notes 2-up for printing
What is software process?
Slides covered: Teams&UIs #10-23; SW Process #1-4
References: LAR: Chs 1-3; PRE Ch 2-3
Barry Boehm, "A Spiral Model of Software Development and Enhancement",
IEEE Computer, vol.21, #5, May 1988, pp 61-72;
(related article appeared in ACM SIGSOFT Software Engineering Notes (SEN), August 1986).

Drasko Sotirovski, "Heuristics for Iterative Software Development", IEEE Software, May/June 2001.

Lecture 5 (9/18/2006, recitation): SW process, cont.
Some sample processes: waterfall, prototype, spiral,
iterative and incremental
Slides covered: SW Process #4-36
References: LAR Chs 4-6;

Lecture 6 (9/20/2006): SW Process, cont.
What is the UP and how does it work?
Requirements Analysis notes 2-up for printing
Categories of requirements, Requirements in the UP,
Use cases -- what they are and how to form them?
Slides covered: SW Process #36-50; Reqs #1-22
References: LAR Chs 5-6

Lecture 7 (9/25/2006): Reqs, cont.
More on use cases, an ATM example
Slides covered: Reqs #23-28
References: LAR Chs 6-7

Lecture 8 (9/27/2006): Requirements Analysis-2 notes 2-up for printing
System sequence diagrams, relations to use cases, supplementary specification
Domain Models notes 2-up for printing
What are domain models, conceptual classes, associations,
attributes, implementation issues
Slides covered: Reqs2 #1-27; Domain Models #1-14
References: LAR Chs 7,9,10

Monday (10/2/2006): recitation and lecture are CANCELLED

Lecture 9 (10/4/2006) GUI demos from project

Lecture 10 (10/9/2006) Domain Models, cont.
associations, attributes, implementation issues
Slides covered: Domain Models #15-45
References: LAR Chs 9,11,31
Lookahead: readings on layered architectures and modular design

CLASS CANCELLED 10/11/2006

Lecture 11 (10/15/2006 3:30pm) Makeup lecture(for Oct 11th)
Domain Models-2 notes 2-up for printing
generalization, conceptual superclasses and subclasses, contracts
High-level Software Architecture notes 2-up for printing
software architectural styles: pipe & filter, event-based, data-centric,
process control, object-oriented, layered, Parnas' information hiding,
KWIK index architectures to hide design decisions
Slides covered: Domain Models-2 #1-19; High-level SW Arch #1-13;
References: LAR (domain model) Chs. 11,31; (high-level architecture) LAR Chs. 13,33,
PRE
Ch 10.1-10.3; plus Parnas papers shown in Lecture 10
Lookahead: readings on design principles, LAR Chs 17,18;
readings on UML interaction diagrams, LAR Chs 15,16;

Lecture 12 (10/16/2006) High-level software architecture, cont.
Examples of layered architectures, model-view separation principle
OO Design Principles notes 2-up for printing
Slides covered:High-level SW Arch #14-29; OO Design #1, 5-10
References: LAR Ch 17

Lecture 13 (10/18/2006) OO Design Principles, cont.
assigning responsibilities to objects and classes,
5 GRASP design patterns: Expert, Creator, Low Coupling, High Cohesion,
Controller (Facade & Use-case versions)
Slides covered:OO Design #11-41
References: LAR Ch 17

Lecture 14 (10/23/2006) UML Interaction diagrams notes 2-up for printing
Interaction diagrams -- what are they? what are their basic elements?
Choice: communication vs sequence diagrams, when to use?
ATM Example worked through domain diagram, design class diagram,
some communication diagrams
Slides covered: UML Interact #1-16
References: LAR Chs 15-16,18-20
Lookahead: LAR Ch 18 study particularly the design of the POS system
and the choices that were made. Ch 25 more useful patterns;

Lecture 15 (10/25/2006) Design2 notes 2-up for printing
Design class diagrams, navigability of associations, going to code from design artifacts,
ATM design example revisited
Slides covered: Design2 #1-24
Slides changed: Design2 #3,24,31
References: LAR Chs 18-20

Lecture 16 (10/30/2006)Design2, cont.
going from design to implementation
Design3 notes 2-up for printing
use of polymorphism, Liskov substitutability principle (LSP),
protected variations: encapsulation, abstraction, polymorphism, indirection
Design Patterns notes 2-up for printing
What are design patterns? Adaptor pattern
Slides covered: Design2 #25-35; Design3 #1-24; Patterns #1-8
Slides Changed: Design3 #14
References: LAR Ch 25
Lookahead: LAR Ch 26

Lecture 17 (11/1/2006) Patterns, cont.
Structural Patterns: Adaptor -- more uses, pluggable adaptors,
Bridge separating implementation from creation, Facade
Slides covered: Patterns #8-33
Diagram and code of Bridge pattern (from Prof Nasko Rountev, Ohio State University)
References: 1. LAR Ch 26
2. E. Gamma, R. Helm, R. Johnson, J. Vlissides, Design Patterns:
Elements of Reusable OO Software,
Addison-Wesley 1995, Ch 4
on the web
3. Eric Freeman, Elizabeth Freeman, Head First Design Patterns, O'Reilly, 2004

Lecture 18 (11/5/2006, Makeup for Nov 8th lecture) Design Patterns2 notes 2-up for printing
Creational Patterns: Abstract factory, Singleton,
Behavioral Patterns: Observer
Slides covered: Patterns2 #1-23
References: 1. LAR Ch 26,36(Abstract factory),37(Facade,State)
2. E. Gamma, R. Helm, R. Johnson, J. Vlissides, Design Patterns:
Elements of Reusable OO Software,
Addison-Wesley 1995, Ch 3,5
on the web
3. Eric Freeman, Elizabeth Freeman, Head First Design Patterns, O'Reilly, 2004

Lecture 19 (11/6/2006) Testing notes 2-up for printing
basic principles, traditional testing strategies, how they apply to OO,
Slides covered: Testing #1-19
References: 1. PRE Ch 13-14
2. G. Myers, The Art of Software Testing, Wiley 1979

(11/8/2006) LECTURE CANCELLED

Lecture 20 (11/13/2006) Testing2 notes 2-up for printing
white box testing, control-flow and dataflow methods,
black box testing with equivalence partitioning of input,
OO testing metrics (polymorphism)
Slides covered: Testing2 #1-35
References: 1. PRE Ch 13-14
2. S. Rapps and E. Weyuker, "Selecting SW Testing Data Using Dataflow Information",
IEEE Transactions on Software Engineering, April 1985, Volume SE-11
3. Wikipedia article on testing

Lecture 21 (11/15/2006) Testing2, cont. testing OO programs for coverage of polymorphism
More on Design Patterns (see lecture 18 for slides)
Behavioral Patterns: Observer, Iterator, State, Visitor
Creational Patterns: Abstract factory, Singleton,
Slides covered: Testing2 #35-43; Design2 #1-10, 24-35
References: 1. LAR Ch 26,36(Abstract factory),37(Facade,State)
2. E. Gamma, R. Helm, R. Johnson, J. Vlissides, Design Patterns:
Elements of Reusable OO Software,
Addison-Wesley 1995, Ch 3,5
on the web
3. Eric Freeman, Elizabeth Freeman, Head First Design Patterns, O'Reilly, 2004

Lecture 22 (11/15/2006) discuss feedback from Overall Design Documents in teams,
Testing3 notes 2-up for printing
state-based testing, difficulties posed by inheritance,
testing interacting classes, regression testing
Slides covered: Testing3 #1-13
References:

Lecture 23 (11/27/2006) Testing3, cont.
Please download Testing3 from Lecture 22 again, because Slides 22-28 are new.
testing interacting classes, regression testing,
design of GUI tests
Slides covered:
References: Some references for GUI testing info on the Web
GUI Testing Checklist
short paper by Prof Atif Memon, CS professor at University of Maryland
a short paper by Paul Gerrard on GUI Testing from EuroSTAR'97

Lecture 24 (11/19/2006) Guest Lecturer: Ms. Rashi Rai, Merck Corp.

Lecture 25 (12/4/2006) Change Impact Analysis notes 2-up for printing
Using tests (i) to better understand the effect of program changes
and (ii) to locate bugs in programs
References: 1. M. Stoerzer, B.G. Ryder, X. Ren, and F. Tip,
"Finding Failure-Inducing Changes in Java Programs using Change Classification",
in Proceedings of the 14th SIGSOFT Conference on the Foundations of
Software Engineering,
November 2006.
2. X. Ren, O. Chesley, and B.G. Ryder,
"Identifying Failure Causes in Java Programs: An Application of Change Impact Analysis",
IEEE Transactions on Software Engineering,
Volume 32, No 9, September 2006.

We will have a short class on Weds, Dec 6th to present guidelines for the project demos.
There will be no class on Monday, December 11th (team project work).
There will be an 'open office hours question session ' recitation on Monday, Dec 11th in our classroom.
Project demos on December 14, 15, 16th.


Last updated by Barbara Ryder 9:43pm, December 4, 2006