CIS 375 SOFTWARE ENGINEERING

University Of Michigan-Dearborn

Dr. Bruce Maxim, Instructor

Object Oriented Analysis Steps:

    1. Class modeling.
    2. (Build an object model similar to an ER diagram)

    3. Dynamic modeling.
    4. (Build a finite state machine type model)

    5. Functional modeling.

(Similar to data flow diagram)

Case Study:

Elevator model.

n - elevators.

m - floors in building.

Class Modeling

 

 

 

Dynamic Modeling:

"Normal" schemas (and 1 or 2 abnormal).

-> production rules (describe state transitions).

 

 

 

 

 

 

 

 

 

 

 

 

Functional Modeling:

(Identify source & destination node)

 

Object-Oriented Life Cycle Model:

Fountain Model:

Bottom up design.

Class Responsibility Collaborator Model (CRC):

Responsibilities:

    1. Distributed system intelligence.
    2. State responsibility in general terms.
    3. Information and related behavior in same class.
    4. Information attributes should be localized.
    5. Share responsibilities among classes when appropriate.

(Build a paper model, see if it works on paper)

On card:

(System is basically acted out)

O.O.D. (Booch – Abbot Method):

    1. Define problem.
    2. Develop process narrative for software realization of problem domain.
    3. Formalize strategy.
    1. Identify object & attributes.
    2. Identify operations which can be applied to objects.
    3. Establish interfaces by showing relationships between objects and operations.
    4. Resolve design details to allow implementation.
    1. Recursively apply (2) & (3).
    2. Refine work done during O.O.A..
    3. Represent data structures associated with object attributes.
    4. Represent procedural derail for each operation.

Operator Classifications:

    1. Data manipulator (add, delete, format).
    2. Computation.
    3. Monitors.

Basic Notation For O.O.D.:


(communication)


Alternative Generic Approach to O.O.D.:

    1. Identify the data abstraction for each sub-system.
    2. Identify attributes for each data abstraction.
    3. Identify operations for each data abstraction.
    4. Identify communication between objects.
    5. Apply inheritance where appropriate.

Object Oriented Program Design:

  1. Undertake object oriented system requirements specification.
  2. Identify object and their services.
  3. Establish interactions between objects (services required & rendered).
  4. Identification of reusable components from previous design.
  5. Implementation of low level objects.
  6. Introduce inheritance relationships (superclass & subclass).
  7. Class combination and generalization.

(prototype revision – change is healthy)

Common Design Flaws:

    1. Classes that make direct modifications to other classes.
    2. Classes with too much responsibility.
    3. Classes with no responsibility.
    4. Classes with unused responsibility .
    5. (too much junk in the class)

    6. Misleading names.
    7. Unconnected responsibility.
    8. Inappropriate inheritance.
    9. Repeated functionality.