CS494 – Object-Oriented Analysis and Design
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.
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.)
Also, required readings from:
Other required readings (book chapters, papers) will be given during the term.
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:
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.
BlueJ. A Java IDE that is very good for beginning Java programmers. We'll discuss this in class. Free from http://www.bluej.org (Be sure to look at the 13-page tutorial.) Requires a Java SDK installation; you can use what comes with JBuilder or install Sun's (http://java.sun.com/j2se/1.3)
Together. A UML OO analysis and design tool, with support for code generation from diagrams and reverse engineering of code. (Similar to the tool Rational Rose.) Installed in 001 and Thornton labs. Free for use on home machines from http://www.togethersoft.com (get a license key from me).
Borland JBuilder 5 Personal. An IDE based Java environment. Installed in 001 and Thornton labs.
Free for download at http://www.borland.com/jbuilder/personal/
Note: If you have another Java IDE or you prefer just using the Sun SDK, that's fine.