Fundamentals of Software Engineering

COM 3205 Spring, 2002

Covers software life cycle models (waterfall, spiral, etc.), domain engineering methods, requirements analysis methods, software design principles and methods, verification and testing methods, resource and schedule estimation for individual software engineers, component-based software development methods and architecture, languages for describing software processes. Includes a project where some of the software engineering methods (from domain modeling to testing) are applied in an example.

The only prerequisite is some background in object-oriented programming.

The textbooks are:

 Software Engineering, 6th Edition by Ian Somerville, Addison-Wesley ISBN 0 201 39815 X.

Supporting materials found at :

UML Distilled, Second Edition, by Martin Fowler with Kendall Scott, Addison-Wesley ISBN 020165783X

Project Part 1.

Using the description of the company and application described in the sample midterm ( sample3) , develop a detailed requirements document. The document should present your representation of the application requirements, detail the functional and non-functional requirements, present the use cases and/or VORD specifications that describe the stakeholders and the related details. Where appropriate, system models (e.g. FSM, Entity Relationship, or Data Flow Diagrams) should be used to reflect your understanding of the workings of the intended application. A high level architectural diagram should show the different tiers involved in the application and in particular describe the interactions between the different computers as well as internal and external networks. The questions and answers on the project so far questions.txt .

Project Part 2

Present a 4+1 architectural view of this application. Concentrate on the aspect of the application that supports the web customers. Use UML to describe the high level designs of the required components. Here is a sample .

Connection Pool - Interaction Diagram homework

A web server needs to support many concurrent users. It uses a listener object to 'listen' for requests from users. The listener object asks a ResponseThreadManager object for a thread to perform the work required to respond to request.

The ResponseThreadManager manages a collection of 50 threads. When the listener asks for a thread to perform answer the request, if the manager has an available thread, it gets the thread and gives the thread to a ResponsHandler object to do the work.

While the ResponseHandler is off doing its work, the listener will, in parallel, return to listen for the next request.

If the manager has allocated all 50 threads to current requests, then the listener will sleep and wait for the RequestThreadManager to notify it that a thread has become available. Model the behavior of these objects using a Sequence diagram.


The Mid-Term Exam is on Thursday, 5/2, 2002, during the first 90 minutes of the class period. There will be a lecture after the Mid-Term Exam. The Final Exam is on Thursday 6/6, 2002. The Final Exam is a two hour exam. Both the Mid-Term Exam and Final Exam are open book/open notes exams.

There will be a series of assignments and group projects.

Project groups will be assigned randomly. Each group will have 3 people. Group meetings will take place during part of the class period. For each project there will be at least two meetings. Except for these two meetings, groups must communicate by email.

The schedule given below indicates the order in which topics will be covered, along with the reading assignment for each topic.


Introduction to Software Engineering and Process Phases ( Risks Forum )

Chapters 1, 2, 3


Software Life-Cycle Models, Requirements, Use Cases

Chapters 4,5,6


The Specification Phase - Project part 1 assigned

Chapter 7,8,9,15




The Analysis and Planning Phases,

4+1 Model of Architecture

Chapters 13,14,23


Mid-Term Exam ( sample1 sample2, sample3), Extreme Programming

Extreme Programming


The Design Phase with UML - Projects part 1 due.

UML distilled and other UML resources


Further modeling with UML

Chapter 29


Critical Systems

Chapter 16,17,18


Testing and Maintenance,

Projects due

Formal Methods

Chapters 19,20,21,24


Final Exam ( sample1 sample2 sample3)


General Information

My email address is . I will generally be available 30 minutes or so before each class.

If you have questions about the course material, please send me email. 

University Policy

Please refer to the University Calendar and Handbook for the important dates and policies regarding W and I grades.