J.E.D.I
operations. Similar with analysis, there are five guiding design principles that are applied in this phase.
1. Linguistic modular units 2. Few interfaces
3. Small interfaces and weak coupling 4. Explicit interface
5. Information hiding
Object-oriented Design Methodologies
There are several methods that are used in object-oriented design, and they correspond to the methodologies that were enumerated in object-oriented analysis methodologies.
They are briefly listed below.
1. Booch Method. Similar with his analysis methodology, it involves a micro-
development process and a macro-development process.
2. Coad and Yourdon Method. It addresses not only the application but also
the infrastructure for the application.
3. Jacobson Method. It emphasizes the traceability of the Object-oriented
Software Engineering analysis model.
4. Rambaugh Method. It encompasses a design activity that uses two different
levels of abstraction. Namely, they are system design which focuses on the layout for the components that are needed to complete the product, and object
design which focuses on the detailed layout of objects.
5. Wirfs-Brock Method. It defines a continuous tasks in which analysis leads
seamlessly into design. All of these methodologies follow a common set of steps that are performed in the
design. Each of these steps are elaborated as work products are produced in the Design Engineering chapter.
STEP 1. Define the subsystems of the software by defining the data-related subsystems entity design, control-related subsystem controller design and
human interaction-related subsystems boundary design. This should be guided by the software architecture of choice.
STEP 2. Define Class and Object Design. STEP 3. Define Message Design.
OO Design Main Work Products
There are several work products that are developed during this phase. They are briefly introduced below. Collectively, they are called the design model. Their development
will be elaborated in the Design Engineering chapter.
1. Software Architecture. This refers to the overall structure of the software.
It also includes the ways in which the structure provides conceptual integrity
Software Engineering 46
J.E.D.I
for a system. It is modeled using the package diagrams.
2. Data Design. This refers to the design and organization of data. It includes
code design and persistent design for the database. It uses the class diagrams and sequence diagrams.
3. Interface Design. This refers to the design of the interaction of the system
with its environment, particularly, the human-interaction aspects. It includes the dialog and screen designs. Report and form layouts are also included. It
uses the class diagrams and state transition diagrams.
4. Component-level Design. This refers to the elaboration and design of
control classes. This is the most important design because the functional requirements are represented by the control classes. It uses the class
diagrams, activity diagrams and state transition diagrams.
5. Deployment-level Design. This refers to the design of how the software will
be deployed for operational use. It uses the deployment diagram.
Software Engineering 47
J.E.D.I
2.4 Unified Modeling Language UML
The Unified Modeling Language UML is the standard language for specifying, visualizing, constructing, and documenting all the work products or artifacts of a software system. In
the earlier days, UML has different terminologies as shown in Table 3.
UML Class
Association Generalization
Aggregation
Booch Class
Uses Inherits
Containing Coad
Class Object Instance
Connection Gen-Spec
Part-whole Jacobson
Object Acquaintance
Association Inherits
Consists of Odell
Object Type Relationship
Subtype Composition
Rambaugh Class
Association Generalization
Aggregation ShlaerMellor Object
Relationship Subtype
na
Table 3 Different UML Terminologies
However, its notation was unified by Booch, Rambaugh and Jacobson. The Object Management Group maintains a set of standards for using UML for technical exchange of
models and design. Now, other contributors augments the definition of UML.
UML is not a method or methodology. It does not indicate a particular process. It is not a programming language. It is basically a standard set of modeling tool used to
develop work products of the software, which most of it will be models.
2.4.1 Modeling Activity
Software development is a complex activity; it is extremely difficult to carry out the necessary task if all details are in ones memory. In any development project that aims
to produce useful work products, the main focus of both analysis and design activities is on models. A model is a pattern of something to be made. It is both abstract and
visible. Software is not tangible for the users and by nature, are abstracts. However, it is constructed by a developing team who need to see each others model.
A model is a representation of something in the real world. They are useful in a variety of ways because they differ from the things that they represent. Particularly, they are:
• built quicker and easier than the real objects they represent. • used in simulation to better understand the thing they represent.
• modified to evolve as one learns about a task or problem.
Software Engineering 48