ooad-2-r20
ooad-2-r20
ooad-2-r20
OOAD-2 - R20
The UML is a graphical language for visualizing, specifying, constructing, and documenting the
artifacts of a software-intensive system. The UML gives you a standard way to write a system's
blueprints, covering conceptual things, such as business processes and system functions, as well as
concrete things, such as classes written in a specific programming language, database schemas, and
reusable software components.
Model
A model is a simplification of reality. A model provides the blueprints of a system. A model may be
structural, emphasizing the organization of the system, or it may be behavioral, emphasizing the
dynamics of the system.
Why do we model
We build models so that we can better understand the system we are developing.
We build models of complex systems because we cannot comprehend such a system in its entirety.
Principles of Modeling
There are four basic principles of model
1. The choice of what models to create has a profound influence on how a problem is attacked and
how a solution is shaped.
2. Every model may be expressed at different levels of precision.
3. The best models are connected to reality.
4. No single model is sufficient. Every nontrivial system is best approached through a small set of
nearly independent models.
In software, there are several ways to approach a model. The two most common ways are
1. Algorithmic perspective
2. Object-oriented perspective
Algorithmic Perspective
Object-oriented perspective
The contemporary view of software development takes an object-oriented perspective.
In this approach, the main building block of all software systems is the object or class.
A class is a description of a set of common objects.
Every object has identity, state, and behavior.
Object-oriented development provides the conceptual foundation for assembling systems out of
components using technology such as Java Beans or COM+.
An Overview of UML
The Unified Modeling Language is a standard language for writing software blueprints. The
UML may be used to visualize, specify, construct, and document the artifacts of a software-
intensive system.
The UML is appropriate for modeling systems ranging from enterprise information systems to
distributed Web-based applications and even to hard real time embedded systems. It is a very
expressive language, addressing all the views needed to develop and then deploy such systems.
o Architecture
o Design
o Source code
o Project plans
o Tests
o Prototypes
o Releases
Interface
Interface is a collection of operations that specify a service of a class or component.
An interface therefore describes the externally visible behavior of that element.
An interface might represent the complete behavior of a class or component or only a part of that
behavior.
An interface is rendered as a circle together with its name. An interface rarely stands alone. Rather, it is
typically attached to the class or component that realizes the interface
Collaboration defines an interaction and is a society of roles and other elements that work together to
provide some cooperative behavior that's bigger than the sum of all the elements. Therefore,
collaborations have structural, as well as behavioral, dimensions. A given class might participate in
several collaborations.
Graphically, a collaboration is rendered as an ellipse with dashed lines, usually including only its name
Usecase
Use case is a description of set of sequence of actions that a system performs that yields an
observable result of value to a particular actor
Use case is used to structure the behavioral things in a model.
A use case is realized by a collaboration. Graphically, a use case is rendered as an ellipse with
solid lines, usually including only its name
Component is a physical and replaceable part of a system that conforms to and provides the realization
of a set of interfaces. Graphically, a component is rendered as a rectangle with tabs
Node is a physical element that exists at run time and represents a computational resource, generally
having at least some memory and, often, processing capability. Graphically, a node is rendered as a
cube, usually including only its name
Behavioral Things are the dynamic parts of UML models. These are the verbs of a model, representing
behavior over time and space. In all, there are two primary kinds of behavioral things
Interaction
state machine
Interaction
Interaction is a behavior that comprises a set of messages exchanged among a set of objects within a
particular context to accomplish a specific purpose
An interaction involves a number of other elements, including messages, action sequences and links
Graphically a message is rendered as a directed line, almost always including the name of its operation
State Machine
State machine is a behavior that specifies the sequences of states an object or an interaction goes
through during its lifetime in response to events, together with its responses to those events
State machine involves a number of other elements, including states, transitions, events and activities
Graphically, a state is rendered as a rounded rectangle, usually including its name and its substates
Grouping Things:-
1. are the organizational parts of UML models. These are the boxes into which a model can be
decomposed
Package:-
A package is a general-purpose mechanism for organizing elements into groups. Structural things,
behavioral things, and even other grouping things may be placed in a package
Graphically, a package is rendered as a tabbed folder, usually including only its name and,
sometimes, its contents
Annotational things are the explanatory parts of UML models. These are the comments you may apply
to describe about any element in a model.
A note is simply a symbol for rendering constraints and comments attached to an element or a
collection of elements.
Graphically, a note is rendered as a rectangle with a dog-eared corner, together with a textual or
graphical comment
Relationships in the UML: There are four kinds of relationships in the UML:
1. Dependency
2. Association
3. Generalization
4. Realization
Dependency:-
Dependency is a semantic relationship between two things in which a change to one thing may affect
the semantics of the other thing
Graphically a dependency is rendered as a dashed line, possibly directed, and occasionally including a
label
Association is a structural relationship that describes a set of links, a link being a connection among
objects.
Graphically an association is rendered as a solid line, possibly directed, occasionally including a label,
and often containing other adornments, such as multiplicity and role names
Realization is a semantic relationship between classifiers, wherein one classifier specifies a contract
that another classifier guarantees to carry out. Graphically a realization relationship is rendered as a
cross between a generalization and a dependency relationship
Diagram is the graphical presentation of a set of elements, most often rendered as a connected
graph of vertices (things) and arcs (relationships).
In theory, a diagram may contain any combination of things and relationships.
For this reason, the UML includes nine such diagrams:
Class diagram
Object diagram
Use case diagram
Sequence diagram
Collaboration diagram
Statechart diagram
Activity diagram
Component diagram
Deployment diagram
Class diagram
A class diagram shows a set of classes, interfaces, and collaborations and their relationships.
Class diagrams that include active classes address the static process view of a system.
Object diagram
Object diagrams represent static snapshots of instances of the things found in class diagrams
These diagrams address the static design view or static process view of a system
An object diagram shows a set of objects and their relationships
Models built during the development of a software-intensive system tend to evolve and may be viewed
by many stakeholders in different ways and at different times. For this reason, it is common for the
development team to not only build models that are well-formed, but also to build models that are
UML is made simpler by the presence of four common mechanisms that apply consistently throughout
the language.
1. Specifications
2. Adornments
3. Common divisions
4. Extensibility mechanisms
Specification that provides a textual statement of the syntax and semantics of that building block. The
UML's specifications provide a semantic backplane that contains all the parts of all the models of a
system, each part related to one another in a consistent fashion
Adornments Most elements in the UML have a unique and direct graphical notation that provides a
visual representation of the most important aspects of the element. A class's specification may include
other details, such as whether it is abstract or the visibility of its attributes and operations. Many of
these details can be rendered as graphical or textual adornments to the class's basic rectangular notation.
Extensibility Mechanisms
The UML's extensibility mechanisms include
1. Stereotypes
2. Tagged values
3. Constraints
Stereotype extends the vocabulary of the UML, allowing you to create new kinds of building
blocks that are derived from existing ones but that are specific to your problem
A tagged value extends the properties of a UML building block, allowing you to create new
information in that element's specification
A constraint extends the semantics of a UML building block, allowing you to add new rules or
modify existing ones
Architecture
A system's architecture is perhaps the most important artifact that can be used to manage these different
viewpoints and so control the iterative and incremental development of a system throughout its life
cycle.
Architecture is the set of significant decisions about
Software architecture is not only concerned with structure and behavior, but also with usage,
functionality, performance, resilience, reuse, comprehensibility, economic and technology constraints
and trade-offs, and aesthetic concerns.
Use
case
view Behavior
Process View Deployment
view
Process View
The process view of a system encompasses the threads and processes that form the system's
concurrency and synchronization mechanisms.
This view primarily addresses the performance, scalability, and throughput of the system
Static aspects of are captured with Class and object diagrams
Dynamic aspects are captured with Interaction diagrams,activity diagrams and Statechart diagrams
Implementation View
The implementation view of a system encompasses the components and files that are used to assemble
and release the physical system.
This view primarily addresses the configuration management of the system's releases, made up of
somewhat independent components and files that can be assembled in various ways to produce a
running system.
Static aspects of are captured with Component diagrams
Dynamic aspects are captured with Interaction diagrams, activity diagrams and Statechart diagrams
Deployment Diagram
The deployment view of a system encompasses the nodes that form the system's hardware topology on
which the system executes.
This view primarily addresses the distribution, delivery, and installation of the parts that make up the
physical system.
Static aspects of are captured with deployment diagrams
Dynamic aspects are captured with Interaction diagrams,activity diagrams and Statechart diagrams
An iterative process is one that involves managing a stream of executable releases. An iterative and
incremental process is risk-driven, meaning that each new release is focused on attacking and reducing
the most significant risks to the success of the project.
• This use case driven, architecture-centric, and iterative/incremental process
can be broken into four phases. A phase is the span of time between two major milestones of the
process.
Prepared by T Siva Ramakrishna, Associate Professor,CSE,BVCITS.
Names
Every class must have a name that distinguishes it from other classes.
A name is a textual string that name alone is known as a simple name;
a path name is the class name prefixed by the name of the package in which that class lives.
Attributes
An attribute is a named property of a class that describes a range of values that instances of the
property may hold.
A class may have any number of attributes or no attributes at all.
An attribute represents some property of thing you are modeling that is shared by all objects of that
class
You can further specify an attribute by stating its class and possibly a default initial value
Responsibilities
A Responsibility is a contract or an obligation of a class
When you model classes, a good starting point is to specify the responsibilities of the things in your
vocabulary.
A class may have any number of responsibilities, although, in practice, every well-structured class
has at least one responsibility and at most just a handful.
Graphically, responsibilities can be drawn in a separate compartment at the bottom of the class icon
o Identify those things that users or implementers use to describe the problem or solution.
o Use CRC cards and use case-based analysis to help find these abstractions.
o For each abstraction, identify a set of responsibilities.
o Provide the attributes and operations that are needed to carry out these responsibilities for
each class.
Once you start modeling more than just a handful of classes, you will want to be sure that your
abstractions provide a balanced set of responsibilities.
To model the distribution of responsibilities in a system
o Identify a set of classes that work together closely to carry out some behavior.
o Identify a set of responsibilities for each of these classes.
o Look at this set of classes as a whole, split classes that have too many responsibilities into
Prepared by T Siva Ramakrishna, Associate Professor,CSE,BVCITS.
Sometimes, the things you model may never have an analog in software
Your application might not have any software that represents them
To model non software things
o Model the thing you are abstracting as a class.
o If you want to distinguish these things from the UML's defined building blocks, create a new
building block by using stereotypes to specify these new semantics and to give a distinctive
visual cue.
o If the thing you are modeling is some kind of hardware that itself contains software, consider
modeling it as a kind of node, as well, so that you can further expand on its structure.
Modeling Primitive Types
At the other extreme, the things you model may be drawn directly from the programming language you
are using to implement a solution.
Typically, these abstractions involve primitive types, such as integers, characters, strings, and even
enumeration types
To model primitive types
Model the thing you are abstracting as a type or an enumeration, which is rendered using class notation
with the appropriate stereotype.
If you need to specify the range of values associated with this type, use constraints.
Relationships
In the UML, the ways that things can connect to one another, either logically or physically, are modeled
as relationships.
Graphically, a relationship is rendered as a path, with different kinds of lines used to distinguish the
kinds of relationships
In object-oriented modeling, there are three kinds of relationships that are most important:
Dependencies
Generalizations
Associations
Dependency
A dependency is a using relationship that states that a change in specification of one thing may affect
another thing that uses it but not necessarily the reverse.
Graphically dependency is rendered as a dashed directed line, directed to the thing being depended on.
Most often, you will use dependencies in the context of classes to show that one class uses another class
as an argument in the signature of an operation
Association
o An association is a structural relationship that specifies that objects of one thing are connected to
objects of another
o An association that connects exactly two classes is called a binary association
o An associations that connect more than two classes; these are called n-ary associations.
o Graphically, an association is rendered as a solid line connecting the same or different classes.
o Beyond this basic form, there are four adornments that apply to associations
Name
o An association can have a name, and you use that name to describe the nature of the relationship
Role
o When a class participates in an association, it has a specific role that it plays in that relationship;
o The same class can play the same or different roles in other associations.
o An instance of an association is called a link
Aggregation
o Sometimes, you will want to model a "whole/part" relationship, in which one class represents a
larger thing (the "whole"), which consists of smaller things (the "parts").
o This kind of relationship is called aggregation, which represents a "has-a" relationship, meaning that
an object of the whole has objects of the part
o Aggregation is really just a special kind of association and is specified by adorning a plain
association with an open diamond at the whole end
Another type of aggregation relationship, composition, is one in which the part elements cannot exist
without the aggregate. For instance, the rooms in a house cannot continue to exist if the house is
destroyed. For a composition relationship, a filled diamond is shown on the line near the aggregate
Create a dependency pointing from the class with the operation to the class used as a parameter in the
operation.
This figure shows a dependency from CourseSchedule to Course, because Course is used in both the
add and remove operations of CourseSchedule.
The dependency from Iterator shows that the Iterator uses the CourseSchedule; the CourseSchedule
knows nothing about the Iterator. The dependency is marked with a stereotype, which specifies that this
is not a plain dependency, but, rather, it represents a friend, as in C++.
Prepared by T Siva Ramakrishna, Associate Professor,CSE,BVCITS.
For each pair of classes, if you need to navigate from objects of one to objects of another, specify an
association between the two. This is a data-driven view of associations.
For each pair of classes, if objects of one class need to interact with objects of the other class other
than as parameters to an operation, specify an association between the two. This is more of a
behavior-driven view of associations.
For each of these associations, specify a multiplicity (especially when the multiplicity is not *,
which is the default), as well as role names (especially if it helps to explain the model).
If one of the classes in an association is structurally or organizationally a whole compared with the
classes at the other end that look like parts, mark this as an aggregation by adorning the association
at the end near the whole
Common Mechanisms
Note
A note is a graphical symbol for rendering constraints or comments attached to an element or a
collection of elements
Graphically, a note is rendered as a rectangle with a dog-eared corner, together with a textual or
graphical comment.
A note may contain any combination of text or graphics
Stereotypes
A stereotype is an extension of the vocabulary of the UML, allowing you to create new kinds of
building blocks similar to existing ones but specific to your problem.
Graphically, a stereotype is rendered as a name enclosed by guillemets and placed above the name of
another element
Tagged Values
Every thing in the UML has its own set of properties: classes have names, attributes, and
operations; associations have names and two or more ends (each with its own properties); and so
on.
With stereotypes, you can add new things to the UML; with tagged values, you can add new
properties.
A tagged value is not the same as a class attribute. Rather, you can think of a tagged value as
metadata because its value applies to the element itself, not its instances.
A tagged value is an extension of the properties of a UML element, allowing you to create new
information in that element's specification.
Graphically, a tagged value is rendered as a string enclosed by brackets and placed below the
name of another element..
That string includes a name (the tag), a separator (the symbol =), and a value (of the tag).
Constraints
A constraint specifies conditions that must be held true for the model to be well-formed.
Graphically, a constraint is rendered as a string enclosed by brackets and placed near the associated
element or connected to that element or elements by dependency relationships.
Modeling Comments
To model a comment,
Put your comment as text in a note and place it adjacent to the element to which it refers
Remember that you can hide or make visible the elements of your model as you see fit.
If your comment is lengthy or involves something richer than plain text, consider putting your comment
in an external document and linking or embedding that document in a note attached to your model
If you're convinced there's no other way to express these semantics, add this new property to an
individual element or a stereotype.
4.2.1 Inception
Train traffic management, including computerized train routing and monitoring of all elements
of the train system. Lower operating costs and more efficient use of resources are the goals, with
improved safety as an integral by-product.
In this section, we begin our analysis of the fictitious Train Traffic Management System
(TTMS) by specifying its requirements and the system use cases that further describe the required
functionality.
This is a very large and highly complex system that in reality would not be specified by simple
requirements. However, for this chapter, the requirements that follow will suffice for the purposes of
our analysis and design effort. Quite clearly, we would need to focus our efforts on the most critical
elements and prototype candidate solutions within the operational context of the system under
development.
The Train Traffic Management System has two primary functions: train routing and train
systems monitoring. Related functions include traffic planning, failure prediction, train location
tracking, traffic monitoring, collision avoidance, and maintenance logging. From these functions, we
define eight use cases, as shown in the following list.
■ Route Train: Establish a train plan that defines the travel route for a particular train.
■ Plan Traffic: Establish a traffic plan that provides guidance in the development of train plans for a
time frame and geographic region.
■ Monitor Train Systems: Monitor the onboard train systems for proper functioning.
■ Predict Failure: Perform an analysis of train systems’ condition to predict probabilities of failure
relative to the train plan.
■ Track Train Location: Monitor the location of trains using TTMS resources and the Navstar Global
Positioning System (GPS).
■ Monitor Traffic: Monitor all train traffic within a geographic region.
■ Avoid Collision: Provide the means, both automatic and manual, to avoid train collisions.
■ Log Maintenance: Provide the means to log maintenance performed on trains.
These use cases establish the basic functional requirements for the Train Traffic Management
System, that is, they tell us what the system must do for its users. In addition, we have nonfunctional
requirements and constraints that impact the requirements specified by our use cases, as listed here.
Nonfunctional requirements:
■ Safely transport passengers and cargo
■ Support train speeds up to 250 miles per hour
■ Interoperate with the traffic management systems of operators at the TTMS boundary
■ Ensure maximum reuse of and compatibility with existing equipment
■ Provide a system availability level of 99.99%
■ Provide complete functional redundancy of TTMS capabilities
■ Provide accuracy of train position within 10.0 yards
■ Provide accuracy of train speed within 1.5 miles per hour
■ Respond to operator inputs within 1.0 seconds
■ Have a designed-in capability to maintain and evolve the TTMS
Constraints:
■ Meet national standards, both government and industry
Prepared by T Siva Ramakrishna, Associate Professor,CSE,BVCITS.
■ Dispatcher establishes train routes and tracks the progress of individual trains.
■ TrainEngineer monitors the condition of and operates the train.
■ Maintainer monitors the condition of and maintains train systems.
■ Navstar GPS provides geolocation services used to track trains.
Figure 9–1 The Use Case Diagram for the Train Traffic Management System
Figure 9–1 shows the use case diagram for the Train Traffic Management System. In it, we see
the system functionality used by each of the actors. We also see that we have «include» and «extend»
relationships used to organize relationships between several of the use cases. The functionality of the
use case Monitor Train Systems is extended by the use case Predict Failure. During the course of
monitoring systems, a failure prediction analysis (condition: {request Predict Failure}) can be requested
for a particular system that is operating abnormally or may have been flagged with a yellow condition
indicating a problem requiring investigation. This occurs at the Potential Failure extension point.
Prepared by T Siva Ramakrishna, Associate Professor,CSE,BVCITS.
We may specify the details of the functionality provided by each of these use cases in textual
documents called use case specifications. We have chosen to focus on the two primary use cases, Route
Train and Monitor Train Systems, in the following use case specifications. The format of the use case
specification is a general one that provides setup information along with the primary scenario and one
or more alternate scenarios.
This view is used when we are concerned with what the system does, not how the system does it.
Use case name: Route Train
Use case purpose: The purpose of this use case is to establish a train plan that acts as a repository for
all the pertinent information associated with the route of one particular train and the actions that take
place along the way.
Point of contact: Katarina Bach
Date modified: 9/5/06
Preconditions: A traffic plan exists for the time frame and geographic region (territory) relevant to the
train plan being developed.
Postconditions: A train plan has been developed for a particular train to detail its travel route.
Limitations: Each train plan will have a unique ID within the system. Resources may not be committed
for utilization by more than one train plan for a particular time frame.
Assumptions: A train plan is accessible by dispatchers for inquiry and modification and accessible by
train engineers for inquiry.
Primary scenario:
A. The Train Traffic Management System (TTMS) presents the dispatcher with a list of options.
B. The dispatcher chooses to develop a new train plan.
C. The TTMS presents the template for a train plan to the dispatcher.
D. The dispatcher completes the train plan template, providing information about locomotive ID(s),
train engineer(s), and waypoints with times.
E. The dispatcher submits the completed train plan to the TTMS.
F. The TTMS assigns a unique ID to the train plan and stores it. The TTMS makes the train plan
accessible for inquiry and modification.
G. This use case ends.
Alternate scenarios:
Condition triggering an alternate scenario:
Condition 1: Develop a new train plan, based on an existing one.
B1. The dispatcher chooses to develop a new train plan, based on an existing one.
B2. The dispatcher provides search criteria for existing train plans.
B3. The TTMS provides the search results to the dispatcher.
B4. The dispatcher chooses an existing train plan.
B5. The dispatcher completes the train plan.
B6. The primary scenario is resumed at step E.
Condition triggering an alternate scenario:
Condition 2: Modify an existing train plan.
B1. The dispatcher chooses to modify an existing train plan.
B2. The dispatcher provides search criteria for existing train plans.
B3. The TTMS provides the search results to the dispatcher.
B4. The dispatcher chooses an existing train plan.
B5. The dispatcher modifies the train plan.
B6. The dispatcher submits the modified train plan to the TTMS.
B7. The TTMS stores the modified train plan and makes it accessible for inquiry and modification.
B8. This use case ends.
4.2.2 Elaboration
Our attention now turns to developing the overall architecture framework for the Train Traffic
Management System. We begin by analyzing the required system functionality that leads us into the
Prepared by T Siva Ramakrishna, Associate Professor,CSE,BVCITS.
Let’s begin by looking at Figure 9–2, which analyzes the primary scenario of the Route Train
use case. This activity diagram is relatively straightforward and follows the course of the use case
scenario. Here we see the interaction of the Dispatcher actor and the RailOperationsControlSystem,
which we’ve designated as the primary command and control center for the TTMS, as the Dispatcher
creates a new TrainPlan object.
The energy management system advises the train engineer in real time as to the most efficient
throttle and brake settings. The onboard display system provides the human/machine interface for the
train engineer.
The data management unit serves as the communications gateway between all onboard systems
and the rest of the network, to which all trains, dispatchers, and other users are connected.
Train location tracking is achieved via two devices on the network: location transponders and
the Navstar GPS.
A wayside interface unit is placed wherever there is some controllable device (such as a switch)
or a sensor (such as an infrared sensor for detecting overheated wheel bearings).
Every ground terminal controller relays its information to a common network control system.
The network control system is ultimately connected to one or more dispatch centers, which
comprise the rail operations control system and other users.
After completing our systems engineering analysis of the TTMS functionality (through its
architectural levels), we must allocate the system requirements to hardware, software, and even
operational elements.
Figure 9–7 illustrates the target deployment hardware for the Train Traffic Management System,
using the notation for deployment diagrams. This hardware architecture parallels the block diagram of
the system shown earlier in Figure 9–5.
Figure 9–7 The Deployment Diagram for the Train Traffic Management System
Prepared by T Siva Ramakrishna, Associate Professor,CSE,BVCITS.
1. Message passing
2. Train schedule planning
3. Displaying information
4. Sensor data acquisition
These four mechanisms form the soul of our system.
4.2.3 Construction
In this section, we start by examining the semantics of each of this system’s four key
mechanisms: message passing, train schedule planning, displaying information, and sensor data
acquisition.
Message Passing
By message, we do not mean to imply method invocation, as in an object-oriented programming
language; rather, we are referring to a concept in the vocabulary of the problem domain, at a much
higher level of abstraction. For example, typical messages in the Train Traffic Management System
include signals to activate wayside devices, indications of trains passing specific locations, and orders
from dispatchers to train engineers. In general, these kinds of messages are passed at two different
levels within the TTMS:
Each of these classes is further specialized. Indeed, our final design might include dozens of
such specialized classes, at which time the existence of these intermediate classes becomes even more
important; without them, we would end up with many unrelated—and therefore difficult to maintain—
components representing each distinct specialized class. As our design unfolds, we are likely to
discover other important groupings of messages and so invent other intermediate classes.
Fortunately, reorganizing our class hierarchy in this manner tends to have minimal semantic
impact on the clients that ultimately use te base classes.
Displaying Information
It is important to encapsulate our design decisions regarding how various objects are represented
visually.
For example, we might select just the primary scenarios of three use cases: Route Train, Monitor
Train Systems, and Monitor Traffic. Together, the implementation of these three scenarios requires us
to touch almost every critical architectural interface, thereby forcing us to validate our strategic
assumptions. Once we successfully pass this milestone, we might then generate a stream of new
releases, according to the following sequence.
Prepared by T Siva Ramakrishna, Associate Professor,CSE,BVCITS.
For a 12- to 18-month development cycle, this probably means generating a reasonably stable
release every 3 months or so, each building on the functionality of the other. When we are done, we will
have covered every scenario in the system.
System Architecture
Figure 9–13 The Top-Level Component Diagram for the Train Traffic Management System
The component diagram shown in Figure 9–13 represents our design decisions regarding the
top-level system architecture of the Train Traffic Management System. Here we see a layered
architecture that encompasses the functions of the four subproblems we identified earlier, namely,
networking, database, the human/ machine interface, and real-time device control.
Subsystem Specification
The component diagram in Figure 9–13 is merely a starting point for the specification of the
TTMS subsystem architecture. These top-level subsystems must be further decomposed through
multiple architectural levels of nested subsystems.
The subsystem named Databases builds on the resources of the subsystem NetworkFacilities and
implements the train plan mechanism we created earlier. We choose to further decompose this
subsystem into two public subsystems, representing the major database elements in the system. We
name these nested subsystems TrainPlanDatabase and TrackDatabase, respectively. We also expect to
have one private subsystem, DatabaseManager, whose purpose is to provide all the services common to
the two domain-specific databases.
Prepared by T Siva Ramakrishna, Associate Professor,CSE,BVCITS.
In the Devices subsystem, we choose to group the software related to all wayside devices into
one subsystem and the software associated with all onboard locomotive actuators and sensors into
another. These two subsystems are available to clients of the Devices subsystem, and both are built on
the resources of the TrainPlanDatabase and Messages subsystems. Thus, we have designed the Devices
subsystem to implement the sensor mechanism we described earlier.
Finally, we choose to decompose the top level UserApplications subsystem into several smaller
ones, including the subsystems EngineerApplications and DispatcherApplications, to reflect the
different roles of the two main users of the Train Traffic Management System. The subsystem
Engineer-pplications includes resources that provide all the train-engineer/machine interaction specified
in the requirements, including the functionality of the locomotive analysis and reporting system and the
energy management system. We include the subsystem DispatcherApplications to encompass the
software that provides the functionality of all dispatcher/machine interactions. Both
EngineerApplications and DispatcherApplications share common private resources, as provided from
the subsystem Displays, which
embodies the display mechanism we described earlier.
4.2.4 Post-Transition
For the Train Traffic Management System, we can envision a significant addition to our
requirements, namely, payroll processing. Specifically, suppose that our analysis shows that train
company payroll is currently being supported by a piece of hardware that is no longer being
manufactured and that we are at great risk of losing our payroll processing capability because a single
serious hardware failure would put our accounting system out of action forever. For this reason, we
might choose to integrate payroll processing with the Train Traffic Management System.
At first, it is not difficult to conceive how these two seemingly unrelated problems could
coexist; we could simply view them as separate applications, with payroll processing running as a
background activity.