Part V - Conclusion and Case Studies
In this tutorial we have provided instructions on how to create object-oriented models and prototypes in C++. We have used a hybrid O-O methodology based upon Rumbaugh's OMT. We have showed how to use a scripting CASE tool to create object-oriented diagrams, tables, specification reports, data dictionaries, and C++ code. We have showed many examples of diagrams, tables, reports, data dictionaries, and C++ code listings. We have provided instructions on how to modify and create scripts to generate tables, reports, and source code. We have provided an "O-O Modeling and Prototyping Roadmap" in Chapter 2. We have provided several "charter to code" case studies that follow this roadmap. We are hopeful that you use this roadmap, a scripting CASE tool, and a C++ environment to rapidly model and prototype your systems. Good luck.
[Berard-86] Berard, Edward, An Object Oriented
Design Handbook for Ada Software. EVB Software Engineering
Gaithersburg Md. 1986
[Boehm-Davis-84] Boehm-Davis, D. and Ross, L. October
1984. Approaches to Structuring the Software Development Process,
Report GEC/DIS/TR-84-B1V-1. Arlington, VA: General Electric.
[Booch-91] Booch, Grady Object Oriented Design
with Applications. The Benjamin/Cummings Publishing Co 1991.
[Booch-92] Booch, Grady The Booch Notation: Part
I and II Computer Language Sept and Oct 1992.
[Borgida-85] Borgida, Alexander, Features of Languages
for the Development of Information Systems at the Conceptual Level.
IEEE Software vol. 2(1) January 1985.
[Cattell-93] The Object Database Standard: ODMG-93
edited by R.G.G. Cattell Morgan Kaufmann Publishers, San Mateo,
CA
[Cleaveland-86] Cleaveland, J. Craig, An Introduction
to Data Types. Addison-Wesley Publishing Company, Reading
MA.
[Coad-91a] Coad, Peter, and Yourdon, Edward, Object
Oriented Analysis, Second Edition, Prentice Hall, Englewood
Cliffs, N.J. 1991.
[Coad-91b] Coad, Peter, and Yourdon, Edward, Object
Oriented Design, Prentice Hall, Englewood Cliffs, N.J 1991.
[Coleman-94] Coleman, Derek, Arnold, Patrick, Bodoff,
Stephanie, Dollin, Chris, Gilchrist, Helena, Hayes, Fiona, Jeremaes,
Paul, Objet-Oriented Development The Fusion Method, Prentice
Hall, Englewood Cliffs, N.J. 1994.
[Embley, David, Kurtz, Barry, Woodfield, Scott, Object-Oriented
Systems Analysis A Model-Driven Approach, Prentice Hall, Englewood
Cliffs, N.J 1991.2
[Faison-93] Faison, Ted Object-Oriented State
Machines Software Development Sep 93
[Feldman-85] Feldman, Michael Data Structures
with Ada Prentice Hall, Englewood Cliffs, N.J. 1985
[Felsinger-95] Felsinger, Richard Object Oriented
Analysis and Design Seminar Course Notes
[Fisher-90] Alan Fisher in CASE - Using Software
Development Tools
[Gamma-95] Gamma, Helm, Johnson, and Vlissides Design
Patterns Elements of Reusable Object-Oriented Software
[Gilliam-94] Gilliam, Clinton "An Approach for
Using OMT in the Development of Large Systems" in Journal
of Object-Oriented Programming 1994
[Harel-87] Harel, David Science of Computer Programming
[Jacobson-92] Jacobson, Christerson, Jonsson, Overgaard
Object-Oriented Software Engineering A Use Case Driven Approach,Prentice
Hall, Englewood Cliffs, N.J
[Meyer-92] Scott Meyer's Effective C++ Addison-Wesley
Publishing Company, Reading MA.
[McClure-89] Carma McClure in CASE is Software
Automation Prentice Hall, Englewood Cliffs, N.J. 1989
[Meyer-88] Meyer, Bertrand Object-Oriented Software
Construction Prentice-Hall, Englewood Cliffs, N.J. 1988.
[Microsoft-93] Microsoft Visual C++ Programmer's
Guide
[Papurt-95] Papurt, David M. Inside the Object
Model The Sensible Use of C++, 1995 SIGS Books, N.Y.
[Rumbaugh-91] Rumbaugh, J.,Blaha, M., Premerlani,
W., Eddy, K. and Lorensen, W. 1991. Object-Oriented Modeling
and Design, Prentice Hall, Englewood Cliffs, N.J.
[Rumbaugh-94a] Rumbaugh, James "Getting started
- Using use cases to capture requirements" in Journal
of Object-Oriented Programming September 1994
[Rumbaugh-94b] Rumbaugh, James "Going with the
Flow" in Journal of Object-Oriented Programming 1994
[Shlaer-88] Shlaer, Sally and Mellor, Stephen 1988
Object Oriented Systems Analysis Modeling the World in Data, Prentice
Hall, Englewood Cliffs, N.J.
[Shlaer-92] Shlaer, Sally and Mellor, Stephen 1992
Object Lifecycles Modeling the World in States Prentice-Hall,
Englewood Cliffs, N.J.
[Ward-85] Ward and Mellor in Structured Development
for Real-Time Systems Volume 1 Prentice-Hall, Englewood Cliffs,
N.J.
[Winblad-90] Winblad, A., Edwards, S. and King, D.
1990 Object-Oriented Software Addison-Wesley Publishing
Company, Reading MA.
[Wirfs-Brock-90] Wirfs-Brock, R, Wilderson, B, Wiener,
L 1990 Designing Object-Oriented Software, Prentice-Hall,
Englewood Cliffs, N.J.
[Yourdon-95] Yourdon, Edward Mainstream Objects,
1995, Prentice-Hall, Englewood Cliffs, N.J.
Ayeco Inc, COMPEDITOR 5025 Nassau Circle,
Orlando, Fl 32808 USA 407-295-0930
Borland International, Borland C++ Inc 1800
Green Hills Road, Scotts Valley, CA 95066 USA 408-438-8400
Excell Software, MacAnalyst, PO Box 1414 Marshalltown,
IA 50158 515-752-5359
ICONIX Software Engineering, Inc, ICONIX,
2800 28th St. Suite 320 Santa Monica, Ca 90405 310-458-0092
Mark V Systems Ltd, ObjectMaker 16400 Ventura
Boulevard, Encino, CA 91436 USA 818-995-7671 or 800-666-6232
MicroGold Software, With Class, 311 East 81st
Street 1RE, New York, NY 10028 908-722-6438
Select S/W Tools, Selelct OMT, 1526 Brookhollow
Suite 84, Santa Anna, CA 92705 714-957-6633 or 800-577-6633
or Idsall House, High St, Prestbury, Cheltenham GL52 3Ay UK 242-226-553
Object International, Inc OOATool 8140 N.
MoPac Expressway, 4-200 Austin, TX 78759-8864 512-795-0202
Objectory Corp, OBJECTORY 300 Atlantic Street,
Suite 1111, Stamford, CT 06901 (203) 363-7555
POET S/W, POET 4633 Old Ironsides Dr, Suite
110, Santa Clara, CA 95054 (415)286-4640 or 800-950-8845
Popkin SW and Systems, System Architect 11
Park Place, NY, NY 10007 212-571-3434 or 800-732-5227
ProtoSoft, Inc Paradigm Plus 17629 El Camino
Real Suite 202, Houston, TX 77050 USA 713-480-3233
ProtoViewDevelopment Corp ProtoGen+ 353 Georges
Road, Dayton, NJ. 08810 (908) 329-8588
Rational, Inc Rational Rose 1-800-767-3237
Roman Zielinski, OOTHER "Tors vag 5,
S-145 71 Norsborg, Sweden (CASE Shareware)
Action - any response
to an event. Actions may be updating an attribute, sending a message,
or similar action.
Aggregation (Strong Association)
- "Part of" or "bill of material" connection
between an assembly and parts that has special semantics for "part
of" (transitivity, antisymmetric, and propagation) and for
the creation, copy, and deletion of an assembly and parts
Assertion - a rule or
expression for correctness, such as a data value must always be
greater than zero.
Association - A link, connection, or mapping between two or more objects, such as "has a", "knows about", "part of", or "bill of materials".
Atomic Class - An atomic class is a primitive data type whose objects are not logically decomposable, such as character, Boolean, integer, and floating point types.
Attribute - A characteristic
or property of an object. An attribute has a name (ID), class
or type, and a value.
Class - A definition for one or more objects that have common attributes, common behavior, common relationships, and common semantics. In S/W a module that encapsulates attributes, operations, exceptions, and relationships.
Cohesion - the degree of internal relatedness of elements within a larger, more complex entity. Collection Class - A collection class defines an object that holds other objects called elements. Elements may be added or removed from the collection object. Elements are stored in the collection object with an index. Sample collection classes are array, sets, bags, lists, stacks, queues, rings, trees, etc. Composite Class - A composite class defines an object that has attributes and associated/part objects.
Condition - a guard or
Boolean that may affect the stimulus response logic. A condition
is a guard or Boolean expression signifying OK or NOTOK that
are used in IF Condition = True THEN DoSomeAction. Examples of
conditions in a Temperature Class might be "temperature high"
and "temperature OK".
Control Class - defines time oriented or state based stimulus response behavior including rules and logic to respond to events.
Coupling - the degree of interconnectivity, interdependence, joining and linking of entities.
Dynamic Binding - Late
binding (association) of an object name with an object and its
class at run time. The object name may later be associated with
a different object and its class. Also, the run time look-up of
the correct version of a polymorphic operation.
Entity Class - manages
and computes application information. An entity class is independent
of protocol details of other interacting systems.
Event - an occurrence
or physical phenomenon in the external environment that occurs
at a point in time such as a user pressing a button to which one
or more systems must respond. For finite state machines, an event
is any stimulus to an object that results in some action and that
may result in a transition to a new state.
Exception - An abnormal,
unusual error condition that may result in an operation performing
incorrectly. An exception check, such as a precondition or postcondition
check, is an expression that detects the presence of an exception
and invokes an exception handler. An exception handler takes some
action, such as attempts correct the abnormal condition or notify
a user.
Finite State Machine -
an entity that has state based stimulus response behavior in which
there may be different actions from the same event depending upon
the state of the entity.
Generalization Specialization
- An "is a" or "type of" connection between
superclasses and subclasses.
Generic Parameterized Class
(Template) - a class that can be modified with parameters
to contain or operate on objects of the parameter class, such
as a parameterized Stack Class.
Inheritance - The capability
of a subclass receive for use attributes and operations defined
in a superclass.
Initializer Class - a
top level class that initializes the system. It becomes the "main"
in a C++ program.
Interface Class - defines
communications with another interacting system. An interface class
handles events and/or responses. An interface class isolates protocol
details to communicate with other interacting systems.
Invariant - a general
rule or expression that must be satisfied at all times by all
applicable operations.
Message - A call to an
object of a class to invoke one of its operations. A one way message
is in one direction only from a requester to a server. A two way
message is a peer to peer message objects both send and receive
messages from each other, i.e. each can initiate a message to
each other.
Object Oriented Modeling
- A term referring to the modeling phases of object oriented S/W
development including analysis, design, and prototyping. It does
not include implementation, productization, testing, etc..
Object Oriented Design
- A software development methodology (set of steps) to build systems
consisting of classes and objects.
Object - A thing; an instance
of a class. An entity that has state (retained information), has
behavior (responds to messages), sends and/or receives messages
from other objects, and has relationships with other objects.
In S/W a variable defined by a class.
Object Oriented Programming
- A method to develop software using inheritance, dynamic binding,
and polymorphism with object oriented languages such as Smalltalk,
Actor, C++, Eiffel, Object Pascal, etc.
Operation precondition
- a rule or expression that must be satisfied before the execution
of an operation for correct results.
Operation postcondition
- a rule or expression that is satisfied upon the correct execution
of an operation.
Operation - An action, service, procedure, function that performs some action in response to a message.
Pattern - Two or more entities with a well defined purpose, behavior, connections, and structure, such as a tree pattern.
Polymorphism (one name
many forms) - An object name may refer to objects of different
classes. An operation name may refer to different implementations.
Problem Domain Object -
an object that exists in the system environment that is passed
in a message to or from the system.
Relationship - A link
or connection between classes or objects e.g. association "has
a", aggregation "part of", and generalization specialization
"is a" or "type of".
Response - a message from
the system to other H/W and S/W systems. A response implements
some action requested in an event.
State represents a mode
of behavior that has a unique combination of events, conditions,
actions, and next state. A state is static, i.e. waiting for an
event to arrive. While in a state, a defined set of rules, laws,
and policies apply. A state is like a manager or coordinator that
knows how to respond to each event according to his rules, laws,
and procedures.
Static Binding - The association
of an object name (ID) with an object and its class at compile
time. The object name (ID) is permanently bound to the object
and its class for the life of the program.
Subclass - A refined,
more specific class of a superclass. It defines more specific,
attributes, operations, and exceptions.
Subsystem - a component
of a larger system environment. A subsystem has components, such
as smaller subsystems or classes that are connected together.
Subtype class - defines
a specialized class. An object of the subtype may be substituted
for an object of the supertype. Objects of supertype and subtype
respond to the same messages.
Superclass - A general
class that defines the most general attributes, operations, and
exceptions which may be inherited by subclasses.
Supertype class - defines
a general class that has the same operations (same protocol) as
the specialized subtype classes.
System Environment - a
complex system that has other systems (subsystems) as components.
System - a general term
for a complex entity that can be treated as a unit and that has
simpler components that work together to perform a function. The
system is the S/W system to be developed. The system which is
the center of focus and which becomes a single program (.EXE file).
The system generally consists of 10 to 100 classes as a very rough
order of magnitude.
Transformation - a description
of how a data value may be correctly changed in a formula, expression,
table, etc.
Transition - a unique
pattern of an event, conditions, actions, and a destination state.
For each state identify applicable events. Then for each event
identify the applicable conditions, actions, and the destination
state.
Weak Association - "Has a" or "knows about" connection between associated objects that does not have aggregation semantics.