B.1 Structural Modeling
The next few sections present solutions for Part II.
The figure shows a Report class. The class has the following attributes:
NextID, which is private, holds an integer value,
is initialized to 1, and is shared by all the objects of the class.
ID, which is private, holds an integer value, is
not initialized to any value, and is specific to each object of the
class.
Name, which is private, holds a string value, is
initialized to an empty string, and is specific to each object of the
class.
CreationDate, which is private, holds a string
value, is initialized to an empty string, and is specific to each
object of the class.
SectionName, which is private, holds one or more
ordered string values that are initialized to an empty string, and is
specific to each object of the class.
ProjectName, which is private, holds one or more
unordered string values that are initialized to an empty string, and
is specific to each object of the class.
OwnerName, which is private, holds a string value,
is not initialized to any value, and is specific to each object of
the class.
The class has the following operations:
create, which is public, receives no parameters,
returns a value of type Report, and applies to the
class rather than a specific object of the class.
create, which is public, receives one parameter,
returns a value of type Report, and applies to the
class rather than a specific object of the class. The operation
receives a parameter named theOwnerName, which is
input and may not be modified by the operation, holds a string value,
and is initialized to the string "Unknown
Owner".
destroy, which is public, receives no parameters,
returns nothing, and applies to objects of the class.
getID, which is public, receives no parameters,
returns an integer value, and applies to objects of the class.
setName, which is public, receives one parameter,
returns nothing, and applies to objects of the class. The operation
receives a parameter named theName, which is input
and may not be modified by the operation, holds a string value, and
is not initialized to any value.
getName, which is public, receives no parameters,
returns a string value, and applies to objects of the class.
getCreationDate, which is public, receives no
parameters, returns a string value, and applies to objects of the
class.
setSectionName, which is public, receives two
parameters, returns nothing, and applies to objects of the class. The
first parameter that the operation receives is named
theSectionName, which is input and may not be
modified by the operation, holds a string value, and is not
initialized to any value. The second parameter that the operation
receives is named theSectionOrder, which is input
and may not be modified by the operation, holds an integer value, and
is initialized to the value 1.
getSectionName, which is public, receives one
parameter, returns a string value, and applies to objects of the
class. The operation receives a parameter named
theSectionOrder, which is input and may not be
modified by the operation, holds an integer value, and is initialized
to the value 1.
addProjectName, which is public, receives one
parameter, returns nothing, and applies to objects of the class. The
operation receives a parameter named
theProjectName, which is input and may not be
modified by the operation, holds a string value, and is not
initialized to any value.
removeProjectName, which is public, receives one
parameter, returns nothing, and applies to objects of the class. The
operation receives a parameter named
theProjectName, which is input and may not be
modified by the operation, holds a string value, and is not
initialized to any value.
setOwnerName, which is protected, receives one
parameter, returns nothing, and applies to objects of the class. The
operation receives a parameter named theOwnerName,
which is input and may not be modified by the operation, holds a
string value, and is not initialized to any value.
getOwnerName, which is protected, receives no
parameters, returns a string value, and applies to objects of the
class.
doesReportHaveProjectName, which is public,
receives one parameter, returns a Boolean value, and applies to
objects of the class. The operation receives a parameter named
theProjectName, which is input and may not be
modified by the operation, holds a string value, and is not
initialized to any value.
setNameAndOwner, which is public, receives two
parameters, returns nothing, and applies to objects of the class. The
first parameter that the operation receives is named
theName, which is input and may not be modified by
the operation, holds a string value, and is not initialized to any
value. The second parameter that the operation receives is named
theOwnerName, which is input and may not be
modified by the operation, holds a string value, and is not
initialized to any value. An operation named
getNameAndOwner, which is public, receives two
parameters, returns nothing, and applies to objects of the class. The
first parameter that the operation receives is named
theName, which is output and may be modified by
the operation, holds a string value, and is not initialized to any
value. The second parameter that the operation receives is named
theOwnerName, which is output and may be modified
by the operation, holds a string value, and is not initialized to any
value.
refreshNameAndOwner, which is public, receives two
parameters, returns nothing, and applies to objects of the class. The
first parameter that the operation receives is named
theName, which is input and may be modified by the
operation, holds a string value, and is not initialized to any value.
The second parameter that the operation receives is named
theOwnerName, which is input and may be modified
by the operation, holds a string value, and is not initialized to any
value.
The figure shows a Report object named
ProjectAndTeamStatus, described in the following:
The object's ID attribute has the
integer value of 1.
The object's Name attribute has
the string value of "Project
Report".
The object's CreationDate
attribute has the string value of "January
2002".
The object's SectionName
attribute has the ordered string values of "Project
Information", "Status
Information", and "Team
Information".
The object's ProjectName
attribute has the unordered string values of
"Eagle",
"Falcon", and
"Hawk".
The object's OwnerName attribute
has the string value "Nora".
The following describes the figure: workers and skills are related,
projects and activities are related, and activities and skills are
related.
Figure B-1 shows the figure.
Figure B-2 shows the figure.
Figure B-3 shows the figure.
Figure B-4 shows the figure.
Figure B-5 shows the figure.
Figure B-6 shows the figure.
Figure B-7 shows the resulting diagram, which
includes all the steps in this question.
The following describes the figure: a plan relates workers and
activities on a project.
Figure B-8 shows the figure.
Figure B-9 shows the figure.
Figure B-10 shows the figure.
Figure B-11 shows the figure.
Figure B-12 shows the figure.
Figure B-13 shows the resulting diagram, which
includes all the steps in this question.
The following figures result:
Figure B-14 results from the description.
Figure B-15 results from the description.
Figure B-16 results from the description.
The following describes the figure:
There is one type, named TDocumentation.
There are two interfaces, named IView and
IPrint. The IView interface has
two operations, named show and
hide, which receive no parameters and return a
Boolean value. The IPrint interface has one
operation, named print, which receives one
parameter and returns a Boolean value. The print
operation receives a parameter, named thePrinter,
which is input and may not be modified by the operation, holds a
value of type Printer, and is not initialized to
any value.
There is one implementation class, named Artifact.
There are two undifferentiated classes, named
Report and Printer.
Figure B-17 shows the resulting diagram, which
includes all the steps in this question.
The figure shows a security subsystem, named
Security, which has the following specification
elements:
An operation, named start, which receives no
parameters and returns a Boolean value.
An operation, named stop, which receives no
parameters and returns a Boolean value.
A Login use case that is realized by the
SecurityManager class.
An IUserManagement interface.
An ISecureResourceManagement interface.
An ISecurity interface that specifies an
operation, named validateUserNameAndPassword,
which receives two parameters and returns a Boolean value. The first
parameter is named theUserName, which is input and
may not be modified by the operation, holds a string value, and is
not initialized to any value. The second parameter is named
thePassword, which is input and may not be
modified by the operation, holds a string value, and is not
initialized to any value.
The subsystem has the following realization elements:
Figure B-18 shows the resulting diagram.
The following describes the figure:
The project management system interacts with human resources,
printers, project web servers, and backup systems. Human resources
include project managers, resource managers, and system
administrators.
A human resource may log in and out of the system.
A project manager may manage projects, including maintaining
projects, activities, and tasks.
A project manager may publish project status by either generating a
report involving a printer or generating a web site involving a
project web server.
A system administrator may administer the system, including starting
up or shutting down the system. Before starting up the system, the
system administrator may restore data; after shutting down the
system, the system administrator may backup data. Likewise, the
system administrator may initiate the process or the system may
initiate an interaction with the system administrator informing the
actor of the system's status.
A resource manager may manage resources.
When a project manager manages projects, a system administrator
administers the system, or a resource manger manages resources, their
activities are logged.
The following updates are made to the diagram:
Figure B-19 shows the figure.
Figure B-20 shows the figure.
Figure B-21 shows the figure.
Notice that a generalization relationship is used from the
Send Encrypted
Email use case to the Send
Email use case, because when sending email and
selecting the secure option, the whole interaction with the system is
secure, not just the resulting email message being encrypted. If only
the email message was encrypted and the interaction was not, this
could have been modeled as an extend relationship from the
Send Encrypted
Email use case to the Send
Email use case, and the Send
Encrypted Email use case would
have been named Encrypt Email.
Figure B-22 shows the figure.
Figure B-23 shows the figure.
Figure B-24 shows the resulting diagram, which
includes all the steps in this question.
The following describes the rules for what use cases must be
developed before other use cases:
The Log Activity use case must be developed before
the Manage Project,
Manage Resource, and
Administer System use cases.
The Manage Project use case must be developed
before the Maintain Project,
Maintain Activity, and Maintain
Task use cases.
The Publish Status use case
must be developed before the Generate Report and
Generate Website use cases.
The Administer System use case
must be developed before the Startup
System and Shutdown System use
cases.
The Startup System use case must be developed
before the Restore Data use case.
The Shutdown System use case must be developed
before the Backup System use case.
The Manage Professional
Development Plan use case must
be developed before the Manage
Resource Profile use case.
The Manage Resource use case
must be developed before the Manage
Resource Profile use case.
The Log Transaction use case must be developed
before the Send Email and Receive
Email use cases.
The Send Email use case must be developed before
the Send Encrypted Email use case.
The following describes the figure:
The User Interface package uses
the Utility package and the
IBusiness Processing interface
provided by the Business
Processing subsystem.
The Business Processing
subsystem provides the IBusiness
Processing interface, uses the
Utility package, and uses the
IConsumable and IProducible
interfaces provided by the Data subsystem.
The Data subsystem uses the
Utility package and provides the
IConsumable and IProducible
interfaces.
The User Interface package,
Business Processing subsystem,
and Data subsystem reside in the
User Interface component.
The User Interface component
provides the IBusiness
Processing, IConsumable, and
IProducible interfaces.
The User Interface component is
deployed on the Desktop Client
node.
The Desktop Client node is
connected to the Backup Storage
Device node.
The following describes the figure: there are User
Interface and Utility packages,
and a Reporting subsystem that provides the
IView and IPrint interfaces.
Figure B-25 shows the figure.
Figure B-26 shows the figure.
Figure B-27 shows the figure.
Figure B-28 shows the figure.
Figure B-29 shows the figure.
Figure B-30 shows the figure.
Figure B-31 shows the resulting diagram, which
includes all the steps in this question.
|