CS494, Spring 03 – Object-Oriented Analysis and Design

Dr. Tom Horton


Notes:

The pre-requisite is important. Students without CS216 will not be allowed to take the course. Contact me if you have questions.
If the course is full and you've met the pre-requisites, see the CS page on waiting lists to get on the list and/or talk to me at the first class.


Course Description:

The course will focus on using the how to create good object-oriented designs and implement them in Java. It will also emphasize using the Unified Modeling Language (UML) as a tool for modeling requirements and designs for software systems. We will use UML notations and techniques for modeling a system's domain in terms of class models and for describing a system's functionality using use cases. We will then look at issues of architecture and system design, using UML's class diagram models, interaction diagrams, state diagrams, and packages. We will address how to use design notations to implement systems in Java (with some reference to C++). We learn what object-oriented design patterns are and how they can be used in design and implementation . The course will attempt to balance emphasis on OO principles, techniques and methodologies with practical skills need to create successful software systems. A number of case studies will be used.

Note: Java will be introduced and used throughout the course, but students will be expected to develop most of their Java knowledge independently. The course will focus on OO design and will not provide a comprehensive coverage of all of Java's features, focusing only on what's needed to cover the design and implementation issues. (For example, in class we won't do much with user-interfaces, graphics, etc.)


Textbooks:

  1. Required. The Object Primer. 2nd edn. Scott W. Ambler (Cambridge Univ Press, February 15, 2001). On the Web: at Amazon.
  2. Recommended. Just Java 2. 5th edition published in 2001 by Prentice Hall. By Peter van der Linden.

    Or, any other good Java book that you might have already. One that's gotten good reviews is Thinking in Java, now in its 3rd edition. It's available in a very decent on-line form for free at the author's site. In teaching Java material in the course, I will base presentations on the Just Java 2 text but also cross-reference Thinking in Java when I can.

At this time I know there will also be required readings (chapters, sections) from:

  1. Design Patterns: Elements of Reusable Object-oriented Software. Erich Gamma et al. (Addison-Wesley, 1995).
  2. Java Design: Objects, UML and Process. Kirk Knoernschild (Addison-Wesley, 2002). This was almost our required textbook.
  3. Thinking in Patterns with Java. Bruce Eckel.
  4. Object-oriented Design Heuristics. Arthur J. Riel (Addison-Wesley, 1996).
  5. The Pragmatic Programmer: From Journeyman to Master. Andrew Hunt et. al. (Addison-Wesley, 1999).

Other required readings (book chapters, papers) will be given during the term.


Topics:

  1. Identifying classes and objects for small and medium programs.
  2. Identifying classes and objects for larger systems from user requirements.
  3. Describing functional requirements with use-cases and "stories".
  4. Thinking about and describing OO software designs for programs.
  5. Thinking about and describing software architectures for large systems.
  6. Using UML notation to model requirements and designs.
  7. Heurtistics and guidelines for increasing design quality.
  8. OO design patterns (the study of proven design "idioms").
  9. Fundamental Java programming.
  10. Implementing UML-based designs in Java.
  11. Possible exposure to other topics: Extreme Programming (XP), testing and OO, refactoring, reverse engineering, using Java and databases, etc.


Grading (may be updated):

  1. Midterm Exam -- 20%.
  2. Final Exam -- 25% (partly comprehensive).
  3. Small homework assignments (probably individual) -- 25% total
  4. Group project work -- 30%

Homework: There will be about 4-5 relatively small homework assignments, probably all to be done individually. One or two of these may require you to explore a new topic outside the mainstream of the class focus.

Project Work: Complete details about the project will be supplied. It will likely be submitted in stages. It will involve groups of two or three students. Projects will involve using OO methods, UML, and Java to create:

  1. Requirements models of a system (e.g. use-cases, class diagrams)
  2. Design models of a system (e.g. class diagrams, state diagrams, sequence diagrams)
  3. Partial Implementation from design or prototypes.

We may find a real customer with a real problem for you to tackle. It is highly likely that class presentations of preliminary results (as carried out in CS340) will be required. For some projects, evaluation of work-products will be emphasized, so in some manner students will be asked to carry out a review of another group's models.

Honor policy: The Honor Policy will be in effect in this class. Each assignment will describe allowed collaborations, and deviations from these will be considered Honors violations. If you have questions on what is allowable, ask! Unless otherwise noted, exams and individual assignments will be considered pledged that you have neither given or received help.


Software to be Used by Students:

Optional, Possible Tools:



Last updated: 11/14/02