COM 3205 Fundamentals of Software Engineering
Fall 2002

Covers software life cycle models (waterfall, spiral, etc.), domain engineering methods, requirements analysis methods (including formal specifications), 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 requirement elicitation to implementation) are applied in an example.

The only prerequisite is a solid background in object-oriented programming.

The textbook for this course is The Pragmatic Programmer. A recommended book (but not required) is Bernd Bruegge and Allen Dutoit Object-Oriented Software Engineering Conquering Complex and Changing Systems Prentice-Hall, 2000. ISBN 0-13-489725-0




General Information

University Policy


The Midterm Exam counts for 15%, the Final Exam counts for 20% and the the assignments count for 65% of the course grade. The exams are open books and notes.


This schedule is subject to change depending on class input and complexity of the material on AOSD and Eclipse. We will use a spiral model of software development, meaning that early in the course we will implement simple requirements using AspectJ. This means that we will do analysis and design much earlier than indicated by the schedule.

The schedule given below indicates the order in which topics will be covered along with suggested reading assignments.

9/26Introduction Software Engineering, Requirement Elicitation, Law of Demeter (LoD). Chapter 7: Before the project + 5.26 (LoD)
10/3 Aspect-Oriented Software Development, Software Lifecycle. Chapter 8: Pragmatic Projects,,
10/10Communication, Chapter 2: A Pragmatic Approach
10/17Project Management Chapter 1, A Pragmatic Philosophy.
10/24Software Lifecycle continued. Chapter 8
10/31Mid-Term Exam. Software Architecture, ArchJava. Chapter 5,
11/7Analysis, including Aspect-Oriented Analysis
11/14Design, including Aspect-Oriented Design Chapter 4: Pragmatic Paranoia.
11/21Objects and Aspects Chapter 6: While You Are Coding. Chapter 3: Basic Tools.
12/5 Tool Demonstrations using Eclipse
12/12Final Exam


There will be several assignments, each corresponding to a phase of a project. The project is about developing a code refactoring tool for the Law of Demeter. The starting point is a program that is strongly coupled containing many violations of the Law of Demeter and the tool will help the programmer to refactor the program. The project has the external constraint that it must be written in AspectJ (which includes all of Java) and be a plug-in to Eclipse. See and

There will be an assignment every week related to the project.

There is no provision for late submissions. If you haven't completed the documents, then turn in what you have on the due date. If nothing is turned in by the due date, then your score for the assignment is 0. The grader will acknowledge receipt of all assignments.

General Information

My office number is 237 CN and telephone number is x2077. My email address is My home page is at My home page has my current office hours. The course home page is

If you have questions about the course material, please send me email. I will usually post my response to the course home page. If you request it in your question ("hide my identity please"), no trace of your identity will appear in the posting.

Karl Lieberherr
237 Cullinane Hall
College of Computer Science
Northeastern University
360 Huntington Avenue
Boston, MA 02115