ESE Module 5-2

Object-OrientedAnalysis

Readings

The following excerpt has been adapted from

Software Engineering: A Practitioner's Approach and

presents basic analysis principles that are applicable

to OOA. (If you have completed Module 3-2, you may

skip this reading.)

Over a period of more than two decades, a number of soft-

ware analysis and specification methods have been devel-

oped. Investigators have identified problems and their

causes and have developed rules and procedures to over-

come them. Each analysis method has a unique notation

and point of view. However, all analysis methods are

related by a set of fundamental principles:

1. The information domain of a problem must be repre-

sented and understood.

2. Models that depict system information, function and

behavior should be developed.

3. The models (and the problem) must be partitioned in a

manner that uncovers detail in a layered (or hierarchical)

fashion.

4. The analysis process should move from essential infor-

mation toward implementation detail.

By applying these principles, the analyst approaches a

problem systematically. The information domain is exam-

ined so that function may be understood more completely.

Models are used so that information can be communicated

in a compact fashion. Partitioning is applied to reduce com

plexity. Essential and implementation views of the soft-

ware are necessary to accommodate the logical constraints

imposed by processing requirements, and the physical con-

straints imposed by other system elements.

TheInformationDomain

All software applications can be collectively called data pro-

cessing. Interestingly, this term contains a key to our under-

standing of software requirements. Software is built to

process data, to transform data from one form to another;

that is, to accept input, manipulate it in some way and pro-

duce output. This fundamental statement of objective is

true whether we build batch software for a payroll system

or real-time embedded software to control fuel flow to an

automobile engine.

It is important to note, however, that software also

processes events. An event represents some aspect of sys-

tem control and is really nothing more than boolean data--

it is either on or off; true or false; there or not there. For

example, a pressure sensor detects when pressure exceeds

a safe value and sends an alarm signal to monitoring soft-

ware. The alarm signal is an event that controls the behav-

ior of the system. Therefore, data (numbers, characters,

images, sounds, etc.) and control items (events) both reside

After you’ve had a few days to ponder basic con-

cepts, object-oriented (OO) thinking becomes quite

natural. But OO software engineering can still be a

challenge.

When faced with a problem, how do we charac-

terize it in a way that is amenable to OO software

engineering? What are the relevant objects, attribut-

es, and methods? How do we specify or model a

problem so that we can create an effective design?

Each of these questions is answered within the

context of object-oriented analysis--the first technical

activity that is performed as part of OO software engi-

neering.

OO analysis is grounded in a set of basic princi-

ples that were introduced in ESE Module 3-2. We'll

review them briefly in this module:

  • model the information domain
  • module function
  • model behavior
  • partition the models
  • work from essence to implementation

As we introduce OOA you'll recognize each of these

principles.

OOA is a modeling activity. In this ESE module,

we'll explore the elements of the OOA model and

work to establish a basis for object-oriented design.

Analysis Fundamentals

There is a set of basic principles that transcends the

method that is applied to requirements analysis and

modeling. For this reason, the principles are relevant

to the old school of analysis modeling (structured

analysis) and the new school (OOA).

5-2.2 ··EssentialSoftwareEngineering

within the information domain of a problem.

The information domain contains three different views

of the data and control items as each is processed by a com-

puter program: (1) information flow, (2) information con-

tent and (3) information structure. To fully understand the

information domain, each of these views should be consid-

ered.

Informationflow represents the manner in which data

and control items change as each moves through a system.

Input is transformed to intermediate information, which is

further transformed to output. Along this transformation

path (or paths), additional information may be introduced

from an existing data store (e.g., a disk file or memory

buffer). The transformations that are applied to the data are

functions or subfunctions that a program must perform.

Data and control that move between two transformations

(functions) define the interface for each function.

Information content represents the individual data and

control items that comprise some larger item of informa-

tion. For example, the data item paycheck is a composite of

a number of important pieces of information: the payee's

name, the net amount to be paid, the gross pay, deduc-

tions, and so forth. Therefore, the content of paycheck is

defined by the items that are needed to create it. Similarly,

the content of a control item called system status might be

defined by a string of bits. Each bit represents a separate

item of information that indicates whether a particular

device is on- or off-line.

Information structure represents the internal organiza-

tion of various data and control items. Are data or control

items to be organized as an n-dimensional table or as a

hierarchical tree structure? Within the context of the struc-

ture, what information is related to other information? Is

all information contained within a single structure or are

distinct structures to be used? How does information in

one information structure relate to information in another

structure? These questions and others are answered by an

assessment of information structure. It should be noted

that data stucture, a related concept, refers to the design

and implementation of information structure with soft-

ware.

Modeling

We create models to gain a better understanding of the

actual entity to be built. When the entity is a physical thing

(a building, a plane, a machine) we can build a model that

is identical in form and shape, but smaller in scale.

However, when the entity to be built is software, our

model must take a different form. It must be capable of

modeling the information that software transforms, the

functions (and subfunctions) that enable the transformation

to occur, and the behavior of the system as the transforma-

tion is taking place.

During software requirements analysis, we create

models of the system to be built. The models focus on what

the system must do, not on how it does it. In many cases,

the models that we create make use of a graphical notation

that depicts information, processing, system behavior, and

other characteristics as distinct and recognizable icons.

Other parts of the model may be purely textual. Descrip-

tive information can be provided using a natural language

or a specialized design language for describing require-

ments.

Models created during requirements analysis serve a

number of important roles:

  • the model aids the analyst in understanding the infer-

mation, function and behavior of a system, thereby making

the requirements analysis task easier and more systematic;

  • the model becomes the focal point for review, and

therefore, the key to a determination of completeness, con-

sistency, and accuracy of the specification;

  • the model becomes the foundation for design, provid-

ing the designer with an essential representation of soft-

ware that can be mapped into an implementation context.

The analysis methods that are discussed in this ESE

module are actually modeling methods. Although the

modeling method that is used is often a matter of personal

(or organizational) preference, the modeling activity is fun-

damental to good analysis work.

Partitioning

Problems are often too large and complex to be understood

as a whole. For this reason, we tend to partition (divide)

such problems into parts that can be easily understood,

and establish interfaces between the parts so that overall

function can be accomplished. During requirements analy-

sis, the information, functional, and behavioral domains of

software can be partitioned.

In essence, partitioning decomposes a problem into its

constituent parts. Conceptually, we establish a hierarchical

representation of function or information and then parti-

tion the uppermost element by (1) exposing increasing

detail by moving vertically in the hierarchy or (2) function-

ally decomposing the problem by moving horizontally in

the hierarchy. To illustrate these partitioning approaches,

let us reconsider the SafeHome security system. The soft-

ware allocation for SafeHome (derived as a consequence of

system engineering and FAST activities) can be stated in

the following paragraph:

SafeHome software enables the homeowner to config-

ure the security system when it is installed, monitors all

sensors connected to the security system, and interacts

with the homeowner through a keypad and function keys

contained in the SafeHome control panel.

During installation, the SafeHome control panel is

used to program and configure the system. Each sensor is

assigned a number and type, a master password is pro-

grammed for arming and disarming the system, and tele-

phone number(s) are input for dialing when a sensor event

occurs.

When the software senses an event, it rings an audible

alarm attached to the system. After a specified delay time

set by the homeowner during system configuration activi-

ties, the software dials the telephone number of a monitor-

ing service and provides information about the location

and the nature of the event that has been detected. The

software will re-dial the number every 20 seconds until

telephone connection is obtained.

All interaction with SafeHome is managed by a user-

interaction subsystem that reads input provided through

the keypad and function keys and displays prompting

messages and system status information on the LCD dis-

play. Keyboard interaction takes the following form ...

Requirements for SafeHome software may be ana-

lyzed by partitioning the information, functional, and

behavioral domains of the product. To illustrate, the func-

tional domain of the problem will be partitioned. Figure 1

illustrates a horizontal decomposition of SafeHome soft-

ware. The problem is partitioned by representing con-

stituent SafeHome software functions and moving horizon-

tally in the functional hierarchy. Three major functions are

noted on the first level of the hierarchy.

The subfunctions associated with a major SafeHome

function may be examined by exposing detail vertically in

the hierarchy, as illustrated in Figure 2. Moving downward

along a single path below the function monitor sensors,

partitioning occurs vertically to show increasing levels of

functional detail.

The partitioning approach that we have applied to

SafeHome functions can also be applied to the information

domain and behavioral domain as well. In fact, partition-

ing of information flow and system behavior will provide

additional insight into system requirements. As the prob-

lem is partitioned, interfaces between functions are

derived. Data and control items that move across an inter-

face should be restricted to: inputs required to perform the

stated function and outputs required by other functions or

system elements.

Essential and Implementation Views

An essential view (some people call this the logical view) of

software requirements presents the functions to be accom-

plished and information to be processed without regard to

implementation details. For example, the essential view of

the SafeHome function read sensor status does not concern

itself with the physical form of the data or the type of sen-

sor that is used. In fact, it could be argued that read status

would be a more appropriate name for this function, since

it disregards details about the input mechanism altogether.

Similarly, an essential data model of the data item phone

number (implies the function dial phone number) can be

represented at this stage without regard to the underlying

data structure (if any) used to implement the data item. By

focusing attention on the essence of the problem at early

stages of requirements analysis, we leave our options open

to specify implementation details during later stages of

requirements specification and software design.

The implementation view (also called the physical

view) of software requirements presents the real world

manifestation of processing functions and information

structures. In some cases, a physical representation is

developed as the first step in software design. However,

most computer-based systems are specified in a manner

that dictates accommodation of certain implementation

details. A SafeHome input device is a perimeter sensor (not

a watchdog, a human guard or a booby trap). The sensor

detects illegal entry by sensing a break in an electronic cir-

cuit. The general characteristics of the sensor should be

noted as part of a software requirements specification. The

analyst must recognize the constraints imposed by prede-

fined system elements (the sensor) and consider the imple-

mentation view of function and information when such a

view is appropriate.

We have already noted that software requirements

analysis should focus on what the software is to accom-

plish, rather than on how processing will be implemented.

However, the implementation view should not necessarily

be interpreted as a representation of how. Rather, an imple-

mentation model represents the current mode of operation;

that is, the existing or proposed allocation for all system

elements. The essential model (of function or data) is

generic in the sense that realization of function is not

explicitly indicated.

Exercise5-3,

ApplyingAnalysisPrinciples

inanOO World

The analysis principles that were just introduced are

applicable to object-oriented thinking. Consider the

basic OO concepts that were introduced in ESE

Module 5-1 and answer the following questions:

1. How does the analysis of the information domain

come into play when we think about objects? What

information domain components do you think we'll

have to define during OO analysis?

Object-OrientedAnalysis .. 5-2.3

2. What are the functional components of an OO

model?

3. Does behavior have meaning in the context of

OO? Can you think of a special form of behavior that

is specific to OO systems?

4. How does partitioning manifest itself in an OO

model?

5. How do we move from essence to implementa-

tion in the context of OO software engineering?

6. Compare your answers with a colleague.

Object 0rientedAnalysis

Object-Oriented Analysis (OOA) has one dominant

objective: to define all classes that are relevant to the

problem to be solved. To accomplish this objective a

number of tasks must occur:

1. Classes must be identified (i.e., attributes and

methods are defined).

2. A class hierarchy must be specified.

3. Object-to-object relationships (object connec-

tions) should be represented.

4. Tasks 1 through 3 are reapplied iteratively until the

model is complete.

Like all analysis approaches, OOA is a modeling activ-

ity. Therefore, to accomplish the tasks noted above,

we'll need a notation and a set of heuristics for apply-

ing the notation.

Readings

The following excerpt has been adapted from

Software Engineering: A Practitioner's Approach and

presents a discussion of a popular OOA notation.

All analysis methods make use of the object definition pre-

sented in [ESE Module 5-1], but each introduces its own

notation, heuristics and philosophy. To illustrate the OOA

modeling approach, the notation adapted from Coad and

Yourdon [1] will be used.

The OOA approach proposed by Coad and Yourdon

consists of five steps: (1) identifying objects; (2) identifying

structures; (3) defining subjects; (4) defining attributes and

instance connections, and (5) defining operations and mes-

sage connections. An overview of the mechanics and nota-

tion for steps 1through 5 is presented in the paragraphs

that follow.

Identifying Objects

If you look around a room, there is a set of physical objects

that can be easily identified, classified and defined (in

terms of attributes and operations). But when you look

around the problem space of a software application, the

5-2.4··EssentialSoftwareEngineering

objects may be more difficult to comprehend.

We can begin to identify objects by examining the

problem statement or by performing a grammatical parse

on the processing narrative for the system to be built.

Objects are determined by underlining each noun or noun

clause and entering it in a simple table. Synonyms should

be noted. If an object is required to implement a solution,

then it is part of the solution space; otherwise, if an object is

necessary only to describe a solution, it is part of the prob-

lem space. But what should we look for once we've isolated

all of the nouns?

Objects manifest themselves in one of the following

ways. They can be:

  • external entities (e.g., other systems, devices, people)

that produce or consume information to be used by a com-

puter-based system;

  • things (e.g, reports, displays, letters, signals) that are

part of the information domain for the problem;

  • occurrences or events (e.g., a property transfer or the

completion of a series of robot movements) that occur

within the context of system operation;

  • roles (e.g., manager, engineer, salesperson) played by

people who interact with the system;

  • organizational units (e.g., division, group, team) that are

relevant to an application;

  • places (e.g., manufacturing floor or loading dock) that

establish the context of the problem and the overall func-

tion of the system;

  • structures (e.g., sensors, four-wheeled vehicles or com-

puters) that define a class of objects or in the extreme, relat-

ed classes of objects.

It is also important to note what objects are not. An

object is not a module or procedure in the conventional

sense. For example, if the developers of software for a med-