Colorado State University Computer Science Department

Software Specification and Design
Spring 2001


Advanced Software Engineering Methods

Objectives General Information Course Materials Schedule Assignments
Projects Exams Modeling Session Grading Useful links


Send the instructor your email address and postal address. I will maintain an email list of all the CSUN students so that I can send them information about each lecture the same day.



All CS 517 students (including CSUN studnets) need to have a WebCT account. Your login and password from your Holly account will work for WebCT. Get an account on Holly here if you don't have one.

All lecture notes, assignments, projects and grades will be made available through WebCT. Announcements will be made through the bulletin board in WebCT. You can set up discussion groups and chat-rooms for the course using WebCT.

Click here to go to the password protectd CS517 WebCT page.

Click here for instructions on using WebCT.

Course Objectives

Prerequisite: CS414 and CS314 (or their equivalent courses) or consent of instructor.

This course is about systematic, disciplined, multi-person development of complex program systems. Rigorous techniques for modeling, analyzing, and constructing complex systems will be emphasized. The course focusses on the principles underlying rigorous software development techniques. Technology (i.e., specific tools, methods and procedures and languages) will be discussed in terms of how it can be used to incorporate SE principles into processes and products.

At the end of the course students should be familiar with:

  • new technologies that have the potential of significantly enhancing current software development practices,
  • the strengths and weaknesses of software development processes,
  • the strengths and weaknesses of a variety of software development techniques, including function-oriented, data-centric and object-oriented requirements and design techniques,
  • the situations in which particular techniques are applicable and situations in which they are not,
  • work on developing reusable software development experiences, specifically, work on software architectures, design patterns, and domain engineering,
  • a select set of major specification, analysis and construction techniques.

The following topics will be covered in the course:

  1. Software engineering principles
  2. Requirements engineering
  3. Rigorous specification and analysis techniques
  4. Software architectures
  5. Component-based software design
  6. Design patterns
  7. Refactoring
  8. Object oriented analysis and design
  9. Distributed object systems
  10. Concurrent programming
  11. Extreme programming

General Information

Sudipto Ghosh
US Mail: Computer Science Department, Colorado State University, Fort Collins, CO 80523
Phone: (970) 491-4608
Fax: (970) 491-2466
Office Location: 224 University Services Center
Office Hours: MW 11:00-12:00

MWF 10:00-10:50
201 Glover Eng

Late work will not be accepted without prior permission. Extensions may be granted when permission is sought in advance for reasons that are unexpected and beyond your control.

Homework assignments are to be done individually. Projects are to be done in groups. You are responsible for any announcements made in class.

All written work must be typed on 8.5 by 11 paper, have at least 1 inch margins and be printed in 10, 11 or 12 point type. Work should be single-spaced. Diagrams have to be drawn with the help of Rational Rose. All work must be neat and legible.

Read the departmental policy on cheating, incompletes and class attendance.

Course Materials

  • Required Texts:
    1. Principles of Object Oriented Software Development by Anton Eliens, Addison Wesley, ISBN: 0201-39856-7 Copyright 2000, 2nd edition.
    2. Design Patterns: Elements of Reuseable Object-Oriented Software by E. Gamma, R. Helm, R. Johnson and J. Vlissides, Addison-Wesley, ISBN: 0-201-63361-2, Copyright 1995.

  • Supplementary Texts: (Will be available in the library)
    1. Applying UML and Patterns - An Introduction to Object-Oriented Analysis and Design, Craig Larman, Prentice Hall, 1998, ISBN 0-13-748880-7.
    2. Component-Software - Beyond Object-Oriented Programming, Clemens Szyperski, Addison-Wesley, Copyright 1998, ISBN 0-201-17888-5.
    3. Concurrent Programming in Java: Design Principles and Patterns, Doug Lea, 2nd Edition, Addison-Wesley, Copyright 2000, ISBN 0-201-31009-0.
    4. Java Programming with CORBA, Andreas Vogel and Keith Duddy 2nd Edition, John Wiley and Sons, Copyright 1999, ISBN 0471247650.
    5. Extreme Programming Explained: Embrace Change, Kent Beck, Addison-Wesley, Copyright 2000, ISBN 0-201-61641-6.
    6. Refactoring: Improving the Design of Existing Code, Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Roberts, Addison-Wesley, Copyright 1999, ISBN 0-201-48567-2.
    7. Software Architecture in Practice, Len Bass, Paul Clements, Rick Kazman, Addison Wesley, Copyright 1998, ISBN 0-201-19930-0.

  • Papers: (Mandatory reading, will be tested)
    1. The Current State of CBSE, Alan W. Brown and Kurt C. Wallnau, IEEE Software Vol.15, No. 5, September/October 1998.
    2. Business Object Component Architecture, Tom Digre, IEEE Software Vol.15, No. 5, September/October 1998.
    3. DCOM and CORBA Side by Side, Step by Step, and Layer by Layer, P. Emerald Chung, Yennun Huang, Shalini Yajnik, Deron Liang, Joanne C. Shih, Chung-Yih Wang, Yi-Min Wang.
    4. The 4+1 View Model of architecture, P. Krutchen, IEEE Software, 12(6):42-50, 1995.
    5. Architectural Mismatch: Why Reuse is so hard, D. Garlan, R. Allen, and J. Ockerbloom, IEEE Software, 12(6):17026, 1995.
    6. Automatic inheritance hierarchy restructuring and method refactoring, Ivan Moore, Proceedings of the eleventh annual conference on Object-oriented programming systems, languages, and applications October 6 - 10, 1996, San Jose, CA USA.
    7. Embracing Change with Extreme Programming pp. 70-77, Kent Beck, Computer, Vol. 32, No. 10, October 1999.

  • Course Notes will be accessible through WebCT only.

Schedule - Subject to change

Jan 15


Jan 17

Overview of Software Engineering

Jan 19

Lifecycle models, software process

Jan 22

OO Analysis and Design
Introduction to UML

Jan 24

Use cases

Project Assigned
Groups formed

Jan 26

Use Cases

Jan 29

Conceptual Models

Jan 31

Conceptual Models

Feb 2

Interaction Diagrams

Feb 5

Interaction Diagrams

Feb 7

Class Diagrams

Feb 9

Class Diagrams

Feb 12

Class Diagrams

Feb 14

Mapping Designs to Code

Feb 16

State Diagrams

Modeling Session - I

Feb 19

Modeling Session - II

Feb 21

Modeling Session - III

Feb 23


Feb 26

Introduction to Design Patterns

Feb 28

Behavioral Pattern
- Visitor

Design Documents Due

Homework 1 Assigned

Mar 2

Behavioral Pattern
- Iterator
- Observer

Mar 5

Spring break

Mar 7

Spring break

Mar 9

Spring break

Mar 12

MVC pattern

Mar 14

Creational Patterns
Factory, Singleton

Mar 16

Broker Pattern

Mar 19

Introduction to CORBA

Mar 21


Homework 1 Due

Homework 2 Assigned

Mar 23


Mar 26

Introduction to Component Based Software Engineering

Mar 28

Patterns, Frameworks and Architectures

Mar 30

Examples of CBSE Techniques

Apr 2

Introduction to Software Architecture
Envisioning architecture

Apr 4

Introduction to Software Architecture
Creating and analyzing architectures

Apr 6

Software Architecture
Case study

Apr 9

Introduction to Concurrent Programming
Concurrent OO programming

Apr 11

Introduction to Concurrent Programming

Homework 2 Due

Homework 3 Assigned

Apr 13

Introduction to Concurrent Programming
State Dependence

Apr 16

Introduction to Concurrent Programming
Creating threads

Apr 18

Designing Concurrent Programs

Apr 20

Real-time Java

Apr 23


Apr 25


Apr 27


Project Due

Apr 30

eXtreme Programming

May 2

eXtreme Programming

Homework 3 Due

May 4

Course Review

May 7

Finals week

May 9

Finals week

May 11

Finals week

Homework Assignments

There are 3 homework assignments in this course. Each involves programming with Java. Each homework is worth 10% of the grade. Assignments will be made available through WebCT.

# Name Assigned Due
1 Programming using Visitor Pattern February 28 March 21
2 CORBA application March 21 April 11
3 Concurrent Java April 11 May 2


Each student is expected to work in a group to develop a software system. Each group is expected to produce a project plan, a requirements document, a design document and code for their project. The project is worth 30% of the final grade. Project demos will be held in the week of April 30 - May 4. Project descriptions will be available through WebCT

# Task Date Grade
1 Project assigned January 24  
2 Groups formed January 24  
3 Design Documents due February 28 20%
4 Project code due April 27 10%


There are two exams: one midterm exam (in class) and one final exam (final's week).

Exam Date
Midterm exam: February 23 in class
Final exam: May 9, 7:00 am - 9:00 am

Modeling Sessions

There are 3 modeling sessions. These are classes that are dedicated to discussing the models created by students. The students will discuss the models and improve on them. Models must be developed with Rational Rose.


Homework: 30%
Project: 30%
Midterm exam: 15%
Final exam: 25%

Final letter grades will be based on the relative distribution of total scores and not on any preset numerical grade. Click here to see your grades.

Useful Links

Last modified: Feb 12, 2001.