EEC 521: Software Engineering

Authorship Disclaimer. The lecture slides on this page are intended to serve as teaching instruments for a course on Software Engineering. While the slides were formatted by Dr. Sridhar, the content is compiled from other sources, including the readings listed on the course website, other books on Software Engineering and various internet materials. In almost every case, the ideas belong to someone other than Dr. Sridhar. Indeed, text is often quoted verbatim without an explicit citation (to improve the readability of the slides). The original authors retain all copyrights. If you are interested in citing any of the material in these slides, please contact Dr. Sridhar for the original source(s). DO NOT CITE THESE PRESENTATIONS. THE CONTENT SHOULD NOT BE ATTRIBUTED TO DR. SRIDHAR. SEE DR. SRIDHAR IF YOU HAVE ANY QUESTIONS.

Course Schedule

The following is a fairly accurate schedule of how we will proceed through our lectures. We may change the schedule a bit depending of how the class progresses through the material.

Date Topic Reading Homework
25-Aug Introduction and Course Policies
Lecture Slides
   
27-Aug Software Product
Lecture Slides
Somerville, Ch. 1
Software's Chronic Chrisis
No Silver Bullet
 
1-Sep Software Process
Prescriptive Process Models
Lecture Slides
Somerville, Ch. 4
The Push to Make Software Engineering Respectable
 
3-Sep Agile Process Models
Lecture Slides
Ch. 4
All I really needed to know about Pair Programming I learned in Kindergarten
Dispelling the Process Myth: Having a Process Does Not Mean Sacrificing Agility or Creativity
 
8-Sep Software Cost Estimation
Lecture Slides
Somerville, Ch. 26
An Empirical Validation of Software Cost Estimation Models
An Overview of the COCOMO 2.0 Software Cost Model
10-Sep Requirements Engineering
Lecture Slides
Somerville, Ch. 6, 7.
Requirements Engineering: A Roadmap
15-Sep Analysis Modeling - 1
Lecture Slides
Somerville, Ch. 7, 8
17-Sep Analysis Modeling - 2
Lecture Slides
Somerville, Ch. 8  
22-Sep Classes and Objects; UML
Lecture Slides
Analysis Modeling Exercises
Somerville, Ch. 8  
24-Sep Specifying Component Behavior
Lecture Slides
Ch. 10  
29-Sep Specifications in Spec#
Ch. 10  
1-Oct Midterm 1    
6-Oct Introduction to Software Design
Lecture Slides
Iterators Reconsidered
Ten Commandments of Formal Methods
Ten Commandments of Formal Methods... Ten Years Later
8-Oct Software Architectural Design
Lecture Slides
Ch. 11
Non-Functional Requirements
13-Oct Object-Oriented Design
Lecture Slides
Ch. 14
On the Criteria To Be Used in Decomposing Systems into Modules
Assignment 2 Handout
15-Oct Design Patterns (Template Method, Strategy)
Lecture Slides

Template Method Pattern Code Example
Strategy Pattern Code Example
 
20-Oct Design Patterns (Factory Method, Abstract Factory, Observer, Iterator)
Lecture Slides
Factory Method
AbstractFactory
AbstractFactory (with error fixed)
Observer
Iterator
 
22-Oct Design Patterns (Decorator, Singleton, Proxy)
Lecture Slides
Decorator
Singleton
Proxy
 
27-Oct Refactoring
Lecture Slides
Video Store code example
Refactored Video Store code example
29-Oct Aspect-Oriented Programming
Lecture Slides
Somerville, Ch. 32
Logging example
Fibonacci example
3-Nov Midterm 2    
5-Nov Aspect-Oriented Programming
Aspect J programming
Somerville, Ch. 32
Design Pattern Implementation in Java AspectJ
Aspect Association example
Observer pattern using Aspects
Home Security example
Inter Aspect Precedence example
Privileged Aspect example
10-Nov Verification and Validation
Lecture Slides
Ch. 22
12-Nov Black-Box Testing, Junit
Lecture Slides
Ch. 23
JUnit Queue Example
JUnit BijectivePartialMap Example
17-Nov White-Box Testing
Lecture Slides
Ch. 23
Testing Example
 
19-Nov Test generation using Pex
 
24-Nov Test generation using Pex
   
26-Nov Thanksgiving; Class canceled!    
1-Dec Software Model Checking; Verifying Compiler Grand Challenge
Lecture Slides
 
3-Dec Course Review; Final Exam handout
   
8-Dec Final Exam Due