Object-Oriented Analysis and Design

Department of Computer Science
University of Houston
Houston, TX 77204

Send email to Dr. Venkat Subramaniam

Today, more and more companies are beginning to implement their software systems using OOP languages like Smalltalk, C++, and Java. This trend is the result of many facts: confidence built by companies successfully completing projects using object technology, establishment of standards, availability of excellent programming and debugging tools, training offered by Universities and other institutions, and availability of more programmers who are knowledgeable in OOP. Programming with objects helps to develop systems that are more extensible and maintainable. However, the overall development of such systems is by no means easy.

"How does one know if she is developing the software right?!

How does one know if she is developing the right software?!"

This course will address several issues in Object-Oriented Software Development including the following:

  1. Object-Oriented Design Issues
    • How does one identify System Objects?
    • How to express Relationships among Objects?
    • How to organize all the identified classes?
  2. Object-Oriented Analysis Issues
    • How does one identify Domain objects?
    • How to identify the Relationships among these Objects?
  3. Quality of the Analysis and Design
    • How to measure the quality of an Object-Oriented design?
    • How to compare and evaluate different OO Design options?
  4. Object-Oriented Requirements Analysis and System Behavior Issues
    • What is Object-Oriented Requirements Analysis?
    • What are the benefits of Use Case Analysis?
  5. Which methodology/approach to use?
    • What are the different Object-Oriented Analysis & Design Methodologies?

Pre-requisite: COSC 4318/3318/1320 or 4351 is a pre-requisite for this course. Knowledge of Object Paradigm fundamentals and C++, Java or Smalltalk required. Students will have to take a preliminary diagnostics on the first day of class to access their knowledge. Based on their performance in the diagnostics, they will be advised on continuing in this course.The material for the diagnostic exam will be fundamentals of OOP and C++( and/or Java). Please refer to my web page for details on COSC 4318.

Contents/Syllabus of the course: (Roughly one third of the course will be on Design Patterns, one third on Use-case Analysis and one third on Design issues and approaches)

  1. Quick review of the Object-Oriented Paradigm
  2. Unified Modeling Language
    • Notations for model representation
  3. Proper Classification
    • Identifying Objects & Classes, Building Quality classes and Objects
  4. Object-Oriented Design: The Process
    • Iterative and incremental development process, Identifying the Semantics of classes, Relationships among classes
  5. Object Modeling
    • Links and Associations, Generalization and Inheritance, Grouping Constructs, Aggregation, Abstract Classes, Generalization as Extension and Restriction, Metadata, Candidate keys, Constraints.
  6. Dynamic Modeling
    • Events and States, Operations, Nested State Diagrams, Advanced Dynamic Modeling Concepts, Relationship between Object and Dynamic Models, Practical Modeling Tips.
  7. Functional Modeling
    • Functional Models, Relationship among Functional, Object and Dynamic Models.
  8. Object Modeling Technique
    • The OMT Methodology, Impact of an Object-Oriented Approach, Object-Oriented Design.
  9. Metrics of Object-Oriented Design
    • Cohesion, Coupling, techniques for good Object-Oriented design.
  10. Object-Oriented Requirements Analysis and Systems Behavior
    • Model Architecture, Requirements model, Use Case Analysis
  11. Comparison of various Object-Oriented Methodologies
    • Review and discussion of some of the major methodologies, and the new unified efforts.
  12. Design Patterns
    • Creational, Structural, Behavioral Patterns

Assignments and Group Projects:

There will be two midterms. Assignments will be provided on the course material. In addition, each student will work on a group project to solve different problems. Each group will come up with several solutions and write reports comparing them. Final implementation of the group project will be in C++, Java or Smalltalk. Students will use a commercial CASE tool to carry out their assignments and project work.

(Now that you have read through all this - all this subject to change!)