An Architectural Pattern for Enterprise Level Monitoring Tools

advertisement
An Architectural Pattern for Enterprise Level Monitoring Tools
∗
Olav Skjelkvåle Ligaarden∗† , Mass Soldal Lund∗ , Atle Refsdal∗ , Fredrik Seehusen∗ , and Ketil Stølen∗†
Department for Networked Systems and Services, SINTEF ICT, PO Box 124 Blindern, N-0314 Oslo, Norway
E-mail: {olav.ligaarden, mass.s.lund, atle.refsdal,fredrik.seehusen, ketil.stolen}@sintef.no
† Department of Informatics, University of Oslo, PO Box 1080 Blindern, N-0316 Oslo, Norway
Abstract—Requirements from laws and regulations, as well
as internal business objectives and policies, motivate enterprises
to implement advanced monitoring tools. For example, a
company may want a dynamic picture of its operational risk
level, its performance, or the extent to which it achieves its
business objectives. The widespread use of information and
communication technology (ICT) supported business processes
means there is great potential for enterprise level monitoring
tools. In this paper we present an architectural pattern to
serve as a basis for building such monitoring tools that collect
relevant data from the ICT infrastructure, aggregate this data
into useful information, and present this in a way that is
understandable to users.
Keywords-architectural pattern; enterprise level monitoring;
software engineering
I. I NTRODUCTION
Requirements from laws and regulations, as well as internal business objectives and policies, motivate enterprises to
implement advanced monitoring tools. With cloud computing it becomes even more important. An enterprise may take
advantage of cloud computing by outsourcing all or parts
of its information and communication technology (ICT)
supported processes. In that case, monitoring becomes a
necessity to ensure that the outsourcing party delivers the
agreed performance. When designing an enterprise level
monitoring tool based on an ICT infrastructure or a cloud
system, we need to take into consideration the characteristics
of the infrastructure/system. Events that can be observed
directly at the ICT infrastructure level are typically of a
low-level nature, such as service calls or responses. The
significance of single events or types of events with respect
to what we want to monitor and present at the enterprise
level cannot usually be understood in isolation, and enterprise information has to be aggregated from a large number
of different kinds of events and data. Extracting useful
information from the available data in a manual fashion
may be costly and unfeasible in practice. A main purpose
of an enterprise level monitoring tool is therefore to close
the gap between the low-level data obtained from the ICT
infrastructure and the comprehension of human operators
and decision makers. Ideally, such a monitoring tool will
be able to collect all relevant input from the running ICT
infrastructure, process this input so that it is turned into
useful information, and present this information in a way
that is understandable for those who need it. The desired
‹,(((
level of detail depends on the role of the user. For example,
a security engineer may want to know how often a port
in a firewall is opened, while the company manager wants
a high-level assessment of the information security risk to
which the company is exposed.
Typically, a main objective for wanting to monitor something is to ensure that a certain value stays within an
acceptable range. For example with respect to performance,
we may want to monitor the average time delay between
two steps of a business process, and to take suitable action
if this delay is too long. This means that the monitor should
automatically give a warning if the average delay is too long.
Irrespective of the particular kind of enterprise level
monitoring tool that is being built and deployed, we consider
the following capabilities to be core features of such a tool:
• Collect low-level data from the ICT infrastructure.
• Aggregate the collected low-level data.
• Evaluate the aggregated data.
• Present the aggregated data and the evaluation results
to different types of enterprise users.
• Present the most recent aggregated data and evaluation
results.
• Configure the tool with respect to:
– The low-level data that should be collected.
– How the low-level data should be aggregated into
information that is relevant and useful.
– How aggregated data should be evaluated.
– The kind of aggregated data and evaluation results
that should be presented and how this should be
made comprehensible to different types of enterprise users.
In this paper we present an architectural pattern that
should serve as a basis for building enterprise level monitoring tools with the above features. The pattern identifies the
core components and shows how these components interact.
We believe that this pattern is a good starting point for
building specialized monitoring tools within various kinds
of domains and enterprises.
The architectural pattern has been developed with the aim
of fulfilling the following characteristics:
• It should serve as a basis for building monitoring tools
within a wide range of domains and enterprises.
• It should facilitate modularity and reuse.
DataSource
Enterprise Monitor pattern
MonitorConfig
MonitorModel
MonitorConsole
Figure 1.
The components of the Enterprise Monitor pattern and its
environment
•
It should be scalable (handle growth in size or complexity).
The origin of the pattern is a risk monitor that we
developed in the MASTER [1] research project. We believe
that the risk monitor exhibits a number of features that are
not specific to the monitoring of risks, but general to a
broad class of enterprise level monitoring tools. We have
therefore generalized the architecture of the risk monitor into
an architectural pattern for this class of tools. In Section
II we present this pattern. In Section III we demonstrate
the pattern by showing the risk monitor as an instance, and
we exemplify the use of the risk monitor in a health care
scenario. After presenting related work in Section IV we
conclude in Section V.
II. A RCHITECTURAL PATTERN
In the following we present our architectural pattern using
part of the pattern template presented in [2]. According to
this template, a pattern is described by the use of fourteen
different categories. We do not use all categories since not
all of them are relevant. The two categories Context and
Problem have already been covered in Section I, while the
Example category is covered in Section III.
A. Name and short summary
The Enterprise Monitor architectural pattern divides an
enterprise level monitoring tool into three components: MonitorModel which contains the core monitoring functionality
and data; MonitorConsole which presents core monitoring
data in a specific way to a group of enterprise users; and
MonitorConfig which is used by enterprise analysts to set
up the enterprise level monitoring tool and to configure it
during run-time.
B. Solution
In Fig. 1 is a UML [3] component diagram which shows
the components of the Enterprise Monitor pattern as well
as the component DataSource, which is part of the pattern’s environment. The Enterprise Monitor collects lowlevel data from DataSource during run-time. DataSource
may for instance be a sensor network, an ICT infrastructure,
a cloud system, a database, and so on. The external behavior
of the different components is defined by provided and
required interfaces. A provided interface, represented by a
full circle, describes services that a component provides to
other components, while a required interface, represented by
a half circle, describes services that a component requests
from other components. The interfaces are again connected
to ports on the component.
The component MonitorModel contains the core monitoring functionality and data. An enterprise analyst configures
MonitorModel using the component MonitorConfig. This
component is also used by the analyst to re-configure
MonitorModel during run-time. The MonitorModel is independent of how core monitoring data is presented to different
enterprise users.
An Enterprise Monitor may have several MonitorConsoles, but for simplicity, only one is shown in Fig. 1. Each
MonitorConsole presents core monitoring data in a specific
way to a group of enterprise users. The MonitorConfig
configures how each MonitorConsole should present core
monitoring data to its enterprise users. The MonitorModel
must keep track of which MonitorConsoles that depend
on the different core monitoring data. Each MonitorConsole therefore notifies the MonitorModel about what core
monitoring data it depends on. When core monitoring data
is updated, the MonitorModel notifies the MonitorConsoles. These MonitorConsoles then retrieve the data and
present it to their enterprise users. This change-propagation
mechanism is described in the Publisher-Subscriber1 design
pattern [2].
C. Structure
In this section we specify the structure of the pattern by
the use of Class-Responsibility-Collaborator (CRC) cards [4]
and a UML class diagram.
In Fig. 2 CRC-cards describing the three components are
shown, while in Fig. 3 a UML class diagram describing how
the components are related to each other is provided. Each
CRC-card describes the responsibilities of one component
and specifies its collaborating components. In the UML class
diagram each component is represented by a class. The
different classes are related to each other by associations,
where each end of the association is given a multiplicity.
The responsibilities of MonitorConfig are to create a data
config and a number of presentation models, and to configure
the MonitorModel and MonitorConsoles. The relation between a data config and a presentation model is important for
understanding the structure of the pattern. In Fig. 4 a UML
1 Also
referred to as Observer.
class diagram that shows the relation between a presentation
model and a data config is provided. We distinguish between
basic and composite indicators. By a basic indicator we
mean a measure such as the number of times a specific event
generated by the ICT infrastructure has been observed within
a given time interval, the timing of an event, the load on the
network at a particular point in time, or similar. The basic
indicators are the low-level data. A composite indicator is an
aggregation of basic indicators. The information carried by
a composite indicator should be both relevant and useful for
an enterprise user. The basic indicators and the aggregation
functions are defined in the data config. A presentation
model specifies how results from the monitoring should be
presented to the enterprise user. Each presentation model
is parameterized with respect to the composite indicators
in the data config. The presentation models can therefore
easily be updated when the composite indicators change.
This parameterization is exemplified in Fig. 5. The figure
shows excerpts from a data config, in the form of a file,
and a presentation model. An enterprise user is presented
the presentation model with the value of f1 inserted. In this
example we only use a textual presentation model, but other
kinds of models, such as graphical presentation models, may
be used as well. We can also consider letting different values
trigger different presentations. For instance in the example in
Fig. 5, the enterprise user may be presented with a warning
if the value of f1 exceeds some threshold.
The MonitorModel keeps a registry, referred to as
observerList in Fig. 3, to keep track of the composite
indicators that the different MonitorConsoles depend on. The
core monitoring data cmd contains the basic and composite
indicators used by MonitorModel, as well as other data
used during the monitoring. The MonitorConsoles realize the
interface Observer and therefore implements the update
procedure. A MonitorConsole’s update procedure is invoked by the notify procedure if one or more of the MonitorConsole’s composite indicators have been updated. The
update procedure will then retrieve the updated composite
indicators from MonitorModel, and the MonitorConsole will
update its display.
Class
MonitorConfig
Collaborators
ņ MonitorModel
ņ MonitorConsole
Responsibility
ņ Creates data config and presentation models.
ņ Configures and re-configures MonitorModel.
ņ Configures and re-configures MonitorConsoles.
Class
MonitorModel
Collaborators
ņ MonitorConsole
ņ MonitorConfig
Responsibility
ņ Retrieves updated basic indicators from some data source.
ņ Aggregates basic indicators into composite indicators.
ņ Registers and unregisters dependent MonitorConsoles.
ņ Notifies dependent MonitorConsoles about updated composite
indicators.
Class
MonitorConsole
Collaborators
ņ MonitorModel
ņ MonitorConfig
Responsibility
ņ Evaluates composite indicators.
ņ Presents composite indicators and evaluation results by the use of a
presentation model to its enterprise users.
ņ Retrieves updated composite indicators from MonitorModel.
ņ Implements the update procedure.
Figure 2.
CRC-cards for the three components
MonitorModel
observerList : List
cmd : CoreMonitoringData
1
1..*
«interface»
Observer
update()
1
1
MonitorConfig
dc : DataConfig
p : PresentationModel[1..*]
1
1..*
MonitorConsole
p : PresentationModel
update()
updateDisplay(updatedCompInds : List)
configure(p : PresentationModel)
1..*
D. Dynamics
This section presents typical scenarios, modeled by the
use of UML sequence diagrams, that describe the dynamic
behavior of the pattern. Each entity in a sequence diagram
is a component and is represented by a dashed, vertical
line called a lifeline, where the box at its top specifies
which entity the lifeline represents, its name as well as its
type separated by a colon. Entities interact with each other
through the transmission and reception of messages, which
are shown as horizontal arrows from the transmitting lifeline
to the receiving lifeline.
The sequence diagram in Fig. 6 describes the initial
configuration of the MonitorModel and MonitorConsoles,
1
register(o : Observer, compInds : List)
unregister(o : Observer)
notify()
getData(o : Observer)
configure(d : DataConfig)
updatedData()
updateCoreMonitoringData(updatedBasicInds : List)
Figure 3.
Components and their relations
while the sequence diagram in Fig. 7 describes how the
displays of the MonitorConsoles are updated when basic
indicators are updated. For simplicity, we only use one
MonitorConsole.
In Fig. 6 the entity config configures the entity model
by the use of a data config d. During configuration, model
will set up a connection with some data source, specified by
a sequence diagram Data source setup (not shown in
this paper) referred to by the ref construct in the diagram.
sd Configure
Basic Indicator
*
Aggregation Function
model :
MonitorModel
defined in
1..*
1
configure(d)
1
configure(p)
1..*
*
Composite Indicator
Figure 4.
1..*
1..*
console :
MonitorConsole
Data Config
defines the
parameters of
is parameterized by
config :
MonitorConfig
ref
Data source setup
Presentation Model
register(console, compInds)
The relation between presentation model and data config
Figure 6.
Composite indicator
Basic indicator
b1
…
bn
f1
sd Update basic indicators
Excerpt from a data config
: The number of computer viruses detected in the
period of one week
: The number of Trojans detected in the period of
one week
model :
MonitorModel
console :
MonitorConsole
updatedData()
getUpdatedData()
= b1 + … + bn
Aggregation function
f1 malicous softwares were detected by the system last
week.
Excerpt from a presentation model
Figure 5.
Sequence diagram “Configure”
updatedBasicInds
updateCoreMonitoringData(updatedBasicInds)
notify()
Parametrization exemplified
update()
getData(console)
config also configures the entity console by the use of
a presentation model p. After configuration, the console
registers with the model in order to receive updated composite indicators. The parameter compInds specifies the
composite indicators for which console wants to receive
updates.
The interaction specified in Fig. 7 starts by the model
receiving a message from the data source (not shown in
the diagram) saying that there are updated basic indicators.
This message is sent when one or more of the basic
indicators have been updated. The model then retrieves
these basic indicators (updatedBasicInds), and updates its core monitoring data by updating its basic and
composite indicator values. The model then invokes the
notify procedure, which invokes the update procedure
of console (if the presentation model of console is
parameterized by one or more of the updated composite
indicators), which again retrieves updated composite indicators (updatedCompInds) from the model and updates its
presentation model based on this data. During the execution
of updateDisplay, the console may evaluate one
or more of the updated composite indicators and use the
evaluation results when updating the display.
updatedCompInds
updateDisplay(updatedCompInds)
Figure 7.
Sequence diagram “Update basic indicators”
E. Implementation
In this section we provide guidelines for implementing
the pattern in the form of code fragments written in Java.
The code fragments serve only as suggestions, but they
high-light some important aspects that should be considered
when implementing the pattern. In the code fragments we
use bi and ci to refer to basic and composite indicators,
respectively. In Fig. 8 some of the code that may be
used to implement MonitorModel is provided. The Maps
biVals and ciVals use basic and composite indicator
names, respectively, as keys, while the values assigned to
the indicators during monitoring are used as values. The
indicator names should be specified in the data config
used to configure the MonitorModel. The Map ciDefs
uses composite indicator names as keys, while the values
are the definitions of the composite indicators. This Map
is used when aggregating basic indicators. The last Map
observers uses Observer objects as keys, where each
object refers to a MonitorConsole, while the values are
Maps. Each of these Maps uses composite indicator names
as keys and Booleans as values. The value is true if the
MonitorConsole has not retrieved the latest updated value
of the composite indicator, and false otherwise. The Map
observers keeps track of which MonitorConsoles have
registered with MonitorModel, and makes sure that MonitorConsoles only retrieve composite indicators that have been
updated.
The function updateCoreMonitoringData is executed after the MonitorModel has retrieved updated basic
indicators from some data source. It takes a Map of basic
indicator names and their updated values as input. The
function updates the values of the basic indicators in the
Map biVals. Then it checks for each composite indicator
if it needs to be updated. This is done by checking whether
the definition of the composite indicator refers to any of the
basic indicators in biNames. If this is the case, the value of
the composite indicator in ciVals is updated. The function
aggregate produces this value based on the definition d
and the basic indicator values stored in biVals. At the
end, the function notify is called with the names of the
updated composite indicators as parameter.
For each Observer object in the Map observers the
function notify sets the value in obsMap to true if
the key is a member of the set updatedCis. If obsMap
contains one or more true values and if obsMap did not
contain any true values before notify started updating
its values, then update for the Observer o is called.
update will not be called if updateCalled equals true
since this means that update has already been called and
that Observer o has not retrieved the updated composite
indicators yet.
The definition of update is shown in Fig. 9. MonitorConsole implements the update function since it implements the Observer interface. The return value of calling
the getData function, shown in Fig. 8, is a Map of
composite indicators names and their updated values. The
Map updatedCis is used to update the display of MonitorConsole. We can see from the definition of getData, in
Fig. 8, that only updated composite indicators are retrieved.
All values in the Map obsMap are false when getData
returns, since Observer o has retrieved all updated composite
indicators.
class MonitorModel {
private Map<String,Object> biVals = null;
private Map<String,Object> ciVals = null;
private Map<String,Definition> ciDefs = null;
private Map<Observer,Map<String,Boolean>>
observers = null;
private void updateCoreMonitoringData(
Map<String,Object> updatedBis){
Set<String> updatedCis;
//Construct updatedCis
Set<String> biNames = updatedBis.keySet();
for(String name : biNames){
biVals.put(name, updatedBis.get(name));
}
for(String name : ciDefs.keySet()){
Definition d = ciDefs.get(name);
if(ciNeedsUpdate(d,biNames)){
ciVals.put(name, aggregate(d));
updatedCis.add(name);
}
}
notify(updatedCis);
}
private void notify(Set<String> updatedCis){
boolean updateCalled;
for(Observer o : observers.keySet()){
Map<String,Boolean> obsMap = observers.get(o);
updateCalled = obsMap.containsValue(true);
for(String name : updatedCis){
if(obsMap.get(name) != null){
obsMap.put(name,true);
}
}
if(!updateCalled && obsMap.containsValue(true)){
o.update();
}
}
}
public Map<String,Object> getData(Observer o){
Map<String,Object> updatedCis;
//Construct updatedCis
Map<String,Boolean> obsMap = observers.get(o);
for(String name : obsMap.keySet()){
if(obsMap.get(name)){
updatedCis.put(name,ciVals.get(name));
obsMap.put(name,false);
}
}
F. Consequences
In this section we present the consequences in the form
of benefits and liabilities of applying the pattern.
The application of the Enterprise Monitor pattern has the
following benefits:
• Separation of MonitorModel and MonitorConsoles.
The pattern separates user interfaces from the core
observers.put(o,obsMap);
return updatedCis;
}
}
Figure 8.
Some Java code for class MonitorModel
interface Observer {
abstract void update();
}
Risk Monitor
class MonitorConsole implements Observer {
private MonitorModel m;
private PresentationModel p;
public void update(){
Map<String,Object> updatedCis = m.getData(this);
updateDisplay(updatedCis);
}
Run-time Risk Monitor
Indicator Harvester
Risk Analyzer
Risk Monitor Controller
private void updateDisplay(
Map<String,Object> updatedCis){
//Update the presentation model "p" based
//on "updatedCis".
//Display the updated model.
}
Risk
Model Display
}
Figure 9. Some Java code for interface Observer and class MonitorConsole
CORAS
Diagram Editor
Used by enterprise user
Risk Data
Config Editor
Used by risk analyst
Data Interface
•
•
•
•
monitoring functionality and data.
Synchronized
MonitorConsoles.
The
changepropagation
mechanism
ensures
that
all
MonitorConsoles are notified about updates of
their data at the correct time.
Efficient updates. MonitorConsoles are only notified
when their data have been updated. The MonitorConsoles retrieve only the data that have been updated and
nothing more.
Re-configuration. By using a data config and presentation models it is possible to re-configure the enterprise
level monitoring tool during run-time.
Creation of MonitorConsoles during run-time. It is
possible to create new MonitorConsoles and register
them with the MonitorModel during run-time.
The liabilities of the pattern are as follows:
•
•
•
Scalability. Using the pattern to build a very large
enterprise level monitoring tool may lead to high complexity and a large number of MonitorConsoles. It may
then be better to build separate tools for the different
monitoring tasks.
Close coupling of MonitorModel to MonitorConfig. The
MonitorModel depends on the specific language in
which the data config is expressed. Change of language
may most likely require changing the code of the
MonitorModel.
Re-configuration. If the MonitorModel is re-configured
it may also be necessary to re-configure a number of
the MonitorConsoles. Losing track of which presentation models must be changed when the data config
used by the MonitorModel is changed is a potential
consequence.
Data Warehouse
Figure 10.
Component diagram of the risk monitor
G. Related patterns
The Model-View-Controller [2] (MVC) architectural pattern solves a related problem. This pattern was used as
inspiration when we designed our pattern. MVC divides an
interactive application into a model (core functionality and
data) and different user interfaces, where the user interfaces
presents the same core data in different ways. If the core
data is updated in the model or in a user interface, then this
change should be reflected in all user interfaces. As for our
pattern, MVC uses the Publisher-Subscriber design pattern
[2] to implement the change-propagation mechanism. This
mechanism ensures consistency between the model and user
interfaces.
III. D EMONSTRATION OF ARCHITECTURAL PATTERN
The risk monitor is an implementation of the architectural
pattern presented in this paper. It is a monitor specialized
at aggregating basic indicators related to risk and presenting
the results in risk models. In particular, the language used
for the presentation models is the CORAS risk modeling
language. For more information on the language and the
use of indicators in risk analysis, we refer to [5] and [6],
respectively. The structure of the risk monitor is shown in
Fig. 10 in the form of a UML component diagram.
The Run-time Risk Monitor contains the components that
play a part at run-time, while the three components Risk
Model Display, CORAS Diagram Editor, and Risk Data
Config Editor provide a graphical user interface to the user;
MonitorModel
Risk Data Config Editor
Old transportation
Drug Personalized
equipment
Kit damaged during
transportation
[Likely]
MonitorConfig
Drug provider
CORAS Diagram Editor
Risk Model Display
e
Run-time Risk Monitor
0.4
0.6
MonitorConsole
Poor quality
control
Inadequate
health care due
to unavailable or
damaged drugs
[Likely]
od
er
at
Pattern
M
Risk Monitor
Patient
health
Drug Personalized Kit
not received on time
[Possible]
Figure 11. Correspondence between risk monitor components and pattern
components
Figure 12.
they are either used to configure the monitor or view the
output of the monitor. Fig. 11 shows the correspondence
between the components of the risk monitor and the components described in the pattern.
In the Risk Monitor the Indicator Harvester retrieves
updated basic indicators from a data repository, referred
to as Data Warehouse in the diagram. The Risk Analyzer
aggregates the basic indicators into composite indicators.
The Risk Monitor Controller configures the Run-time Risk
Monitor based on the data config provided by the Risk Data
Config Editor, while the CORAS Diagram Editor configures
the Risk Model Display by the use of a risk model.
The Risk Monitor implements its components as plug-ins
to Eclipse. As a result, the Risk Monitor appears to the risk
analyst as a standalone Eclipse tool with the three front-end
components: CORAS Diagram Editor, Risk Data Config Editor, and Risk Model Display, as well as basic functionality
to communicate with the Risk Monitor Controller, available
as a integrated whole. The Risk Model Display is primarily
used by the enterprise user during run-time, but can also
be used by the risk analyst for testing when configuring the
Risk Monitor.
In the following we concentrate on the configuration of
the Risk Monitor, but first we give a little introduction to
risk analysis by the use of CORAS.
A prerequisite for doing risk monitoring is to do a
risk analysis. The outcome of a risk analysis is usually a
description of threats to the target of analysis, vulnerabilities
that the threats might exploit, unwanted incidents initiated by
the threats, risks (which are usually defined as the likelihood
of an unwanted incident and its consequence for a specified
asset), and treatment of the risks.
In the CORAS methodology for model-based risk analysis [5], threats, threat scenarios (series of events initiated
by threats, leading to unwanted incidents), vulnerabilities,
unwanted incidents, and risks are modeled using a number
of diagrams, referred to as CORAS diagrams. In Fig. 12,
a simple CORAS threat diagram is shown. The example is
adapted from one of the example cases used in the MASTER
Example CORAS threat diagram
[1] project and concerns a hospital that has outsourced its
drug stock management. A Drug Personalized Kit contains
the drugs needed in the treatment of a particular patient. A
drug provider is responsible for delivering Drug Personalized
Kits to the hospital within a given deadline after receiving
an order from the hospital. The diagram documents a part
of a risk analysis where the focus is on protecting the asset
“Patient health”. The unwanted incident “Inadequate health
care due to unavailable or damaged drugs” may harm this
asset. Two different threat scenarios which may lead to this
unwanted incident have been identified, each represented
by an oval with a warning sign. Both threat scenarios
are initiated by the unintentional threat “Drug provider”.
The first scenario is initiated via the vulnerability “Old
transportation equipment”, while the second is initiated via
the vulnerability “Poor quality control”. Moreover, the threat
scenarios and unwanted incident, as well as the relations
between them, are annotated with quantitative or qualitative
likelihood (i.e. frequency or probability) values, and the
relation between the unwanted incident and the asset is
annotated with a consequence value. Fig. 12 represents a
snapshot view at the point in time when the risk analysis
was conducted, and the assigned likelihood and consequence
values are assumed to apply at that point. The goal of
the Risk Monitor, however, is to obtain risk pictures that
are updated as the situation changes. In the Risk Monitor
we achieve this by using values that are derived from
basic indicators that represent observable and measurable
properties of the target. These basic indicators are aggregated
and presented as part of the risk picture.
To configure the Risk Monitor, the risk analyst needs to
create a data config, used by the Run-time Risk Monitor,
and a presentation model, used by the Risk Model Display.
The risk analyst creates the data config by the use of the
Risk Data Config Editor. In the data config, the risk analysts
define:
•
•
the basic indicators that should be monitored; and
variables (composite indicators), aggregated from basic
Request new
transportation
method
[t1]
Old transportation
Drug Personalized
equipment
Kit damaged during
transportation
[f1]
Drug provider
Poor quality
control
Inadequate
health care due
[p1] to unavailable or
damaged drugs
[p2]
[f3]
Drug Personalized Kit
not received on time
[f2]
[t2]
c
Patient
health
Replace drug
provider
...
indicator b1 = "The number of DPKs rejected on
arrival due to damage"
indicator b2 = "The number of DPKs that arrive
between 1 and 6 hours after deadline"
indicator b3 = "The number of DPKs that arrive
more than 6 hours after deadline"
variable f1 = b1;
variable f2 = (b2 / 2) + b3;
variable f3 = (f1 * p1) + (f2 * p2);
variable t1 = r == 1 and f1 >= 15;
variable t2 = r == 1 and f2 >= 20;
...
Figure 14. Excerpt from the data config used by the Run-time Risk Monitor
to Fig. 12, with the possible addition of treatments.
Figure 13. Example presentation model in the form of a CORAS threat
diagram, annotated with variables
indicators, for likelihood values, consequence values,
trigger conditions, and risk levels.
The presentation model used is a risk model annotated
with variables from the data config. The risk analyst creates
the presentation model by the use of the CORAS Diagram
Editor. In Fig. 13 an example presentation model is provided,
while a small excerpt of an example data config, which
provides definitions for how to assign values to some of
the variables used in the presentation model, is shown in
Fig. 14.
The diagram in Fig. 13 is similar to the diagram in
Fig. 12, but it differs in two ways. First, the likelihood and
consequence values have been replaced by variables whose
values will be dynamically updated during run-time. For
variable names we follow a convention where b is a basic
indicator, f is a frequency, p is a probability, t is a triggering
condition, c is a consequence, and r is a risk level.
Second, treatments have been attached to the two threat
scenarios. Each of these will be shown to the enterprise user
only if the Boolean variables t1 and t2 have been assigned
the value true.
From Fig. 14 we can see that the variables f1, f2, f3,
p1, and p2 are the likelihood variables that occur in Fig. 13,
while b1, b2, and b3 are the basic indicators whose values
will be obtained via the Indicator Harvester. t1 and t2
are the Boolean variables that also occur in Fig. 13. The
variable r, that is used in the definition of t1 and t2, will
be 0 if the risk level associated with the unwanted incident
is acceptable and 1 otherwise. Note that the definitions of r,
p1, p2, and c have been omitted from the excerpt to save
space.
The variables in Fig. 13 will be substituted for actual
values retrieved from the Run-time Risk Monitor during
run-time, while treatments will appear in the diagram if the
retrieved Boolean variables have the value true. We do
not illustrate this further, as these diagrams will be similar
IV. R ELATED
WORK
To the best of our knowledge, there exist no other architectural patterns that address the problem of building enterprise
level monitoring tools with the core features described in
Section I. As already mentioned, the MVC [2] architectural
pattern solves a related problem. Our pattern and MVC
are related, since MVC was used as inspiration when we
designed our pattern. One of the main differences between
the two patterns is that in MVC all the user interfaces display
the same core data, while in our pattern the MonitorConsoles
can display different core monitoring data, which means that
they need to be updated differently.
Design patterns specifically targeted on building software
health monitoring applications are described in [7]. It focus on design patterns for sensors collecting information
about the internal state and operation of software and
how this information can be combined into software health
indicators describing different aspects of software health.
Design patterns [8] describe relationships between classes
and objects. Our pattern is at the architectural level, since
it describes relationships between components. Examples of
architectural patterns can be found in [2]. Another approach
for creating monitoring applications is described in [9],
which presents a tool framework called Mozart that uses
a model driven approach to create performance monitoring
applications using indicators.
Within business intelligence (BI) there are many tools that
do some form of enterprise level monitoring. In the following we mention some of the most central ones. One type of
tools is digital dashboards [10]. A dashboard should present
monitored data in a highly visual and intuitive way so that
managers can monitor their progress towards their identified
goals. Other types of tools that do a sort of monitoring are
data [11] and process [12] mining tools. Within business
intelligence, data mining uses techniques from statistics and
artificial intelligence to identify interesting patterns in often
large sets of business data. Process mining is used to extract
information about business process by the use of event logs.
Both data and process mining use historical data, while
in our approach we deal with real-time data as well as
historical data. Another type of tools that rely on monitoring
is business performance management [13] tools. These tools
are used to monitor, control, and manage the implementation
of business strategies.
A monitoring tool closely related to our pattern is the
MASTER ESB [14]. This tool is used to monitor compliance
with access and usage policies in a system. The tool monitors
low-level evidence data that is aggregated into meaningful
evidence on how different parties comply with the policies.
This evidence is then evaluated, and actions against compliance violations may be taken.
A central aspect of our pattern is the aggregation of data
into more meaningful information. Fault trees [15], Markov
models [16], and Bayesian networks [17] all specify some
form of aggregation, and have support for updating the output values when the input values changes. In [18], fault trees
are used with influence diagrams [19], a graphical language
originally designed for supporting decision making based
on the factors influencing the decisions. These diagrams
are connected to leaf nodes in fault trees. The influencing
factors contribute to the probabilities of the leaf nodes, and
these probabilities are propagated to the unwanted incident
specified at the root of the tree. In this case, the fault tree
specifies how the low-level data at the leaf nodes should be
aggregated into something more meaningful. It is possible to
monitor these influencing factors as well as the input values
for the other approaches that aggregate data.
The pattern presented in this paper uses basic and composite indicators. Indicators are also used by other monitoring
approaches, such as in [20] where low-level indicators are
aggregated to create high-level indicators. These high-level
indicators are used to monitor business performance. The
low-level and high-level indicators are equivalent to our two
types of indicators.
V. C ONCLUSION
In this paper we have presented an architectural pattern
called Enterprise Monitor that may serve as a basis for
building enterprise level monitoring tools. The pattern identifies the core components and shows how they interact.
The applicability of the pattern is demonstrated by an
instantiation in the form of a risk monitor.
We believe the architectural pattern captures the core
features of enterprise level monitoring tools. The MonitorModel collects relevant low-level data in the form of basic
indicators from the ICT infrastructure and aggregates the
basic indicators into composite indicators. The MonitorConsoles retrieve the most recent updated composite indicators
from MonitorModel, evaluate them if needed, and update
the displays used by their enterprise users based on the
composite indicators and evaluation results. The enterprise
analyst can quite easily configure the two above-mentioned
components by using a data config and presentation models. The analyst also has the option of re-configuring the
components during run-time. Since the architectural pattern
captures all the core features and since these features are
general, the pattern can be used as a starting point for
building specialized monitoring tools within various kinds
of domains and enterprises.
The pattern supports modularity by separating the MonitorConsoles from the MonitorModel, making it quite easy
to introduce new MonitorConsoles. There are however some
dependencies between the MonitorModel and the MonitorConfig. The MonitorModel depends on the specific language
that the data config is written in. If this language is changed,
then most likely the code of the MonitorModel must be
changed as well.
The design pattern also promotes reuse of components. It
is possible to make very general implementations of some of
the components since configurations are used to specialize
the components. For instance, it is possible to make a very
general MonitorModel, which becomes specialized when
configured.
Today, enterprises are starting to take advantage of the
possibilities provided by cloud computing. This will result
in increased need and demand for enterprise level monitoring
and new challenges with respect to the capabilities of
enterprise level monitoring tools. In future work we will
identify and address these challenges.
ACKNOWLEDGMENTS
The research on which this paper reports has been carried out within the DIGIT project (180052/S10), funded
by the Research Council of Norway, and the MASTER
and NESSoS projects, both funded from the European
Community’s Seventh Framework Programme (FP7/20072013) under grant agreements FP7-216917 and FP7-256980,
respectively.
R EFERENCES
[1] “MASTER: Managing Assurance, Security and Trust for
sERvices,” http://www.master-fp7.eu/, Accessed: 2011-07-11
14:00PM CEST.
[2] F. Buschmann, R. Meunier, H. Rohnert, P. Sommerlad, and
M. Stal, Pattern-Oriented Software Architecture, Volume 1: A
System of Patterns, 1st ed. Wiley, 1996.
[3] Object Management Group (OMG), “Unified Modeling Language Specification, version 2.0,” 2004.
[4] K. Beck and W. Cunningham, “A Laboratory for Teaching
Object-Oriented Thinking,” in Proceeding of Object-oriented
programming systems, languages and applications (OOPSLA
’89). ACM, 1989, pp. 1–6.
[5] M. S. Lund, B. Solhaug, and K. Stølen, Model-Driven Risk
Analysis: The CORAS Approach, 1st ed. Springer, 2010.
[6] A. Refsdal and K. Stølen, “Employing Key Indicators to
Provide a Dynamic Risk Picture with a Notion of Confidence,” in Proceedings of Third IFIP WG 11.11 International
Conference (IFIPTM’09). Springer, 2009, pp. 215–233.
[7] A. Lau and R. Seviora, “Design Patterns for Software Health
Monitoring,” in Proceedings of the 10th IEEE International
Conference on Engineering of Complex Computer Systems
(ICECCS’05). IEEE, 2005, pp. 467–476.
[8] E. Gamma, R. Helm, R. Johnson, and J. Vlissides, Design
Patterns: Elements of Reusable Object-Oriented Software,
1st ed. Addison-Wesley Professional, 1994.
[9] M. Abe, J. Jeng, and Y. Li, “A Tool Framework for KPI
Application Development,” in Proceedings of the IEEE International Conference on e-Business Engineering (ICEBE’07).
IEEE, 2007, pp. 22–29.
[10] C. Dover, “How Dashboards Can Change Your Culture,”
Strategic Finance, vol. 86, no. 4, pp. 43–48, 2004.
[11] Y. Fu, “Data Mining,” IEEE Potentials, vol. 16, no. 4, pp.
18–20, 1997.
[12] W. M. P. van der Aalst, B. F. van Dongen, J. Herbst,
L. Maruster, G. Schimm, and A. J. M. M. Weijters, “Workflow
Mining: A Survey of Issues and Approaches,” Data Knowledge Engineering, vol. 47, no. 2, pp. 237–267, 2003.
[13] M. N. Frolick and T. Ariyachandra, “Business Performance
Management: One Truth,” Information Systems Management,
vol. 23, no. 1, pp. 41–48, 2006.
[14] B. Crispo, G. Gheorghe, V. D. Giacomo, and D. Presenza,
“MASTER as a Security Management Tool for Policy Compliance,” in Towards a Service-Based Internet, ser. Lecture
Notes in Computer Science, E. D. Nitto and R. Yahyapour,
Eds. Springer Berlin / Heidelberg, 2010, vol. 6481, pp. 213–
214.
[15] International Electrotechnical Commission, “Fault Tree Analysis (FTA),” 1990.
[16] International Electrotechnical Commission, “Application of
Markov Techniques,” 1995.
[17] D. Lidley, Introduction to Probability and Statistics from a
Bayesian Viewpoint. Cambridge University Press, 1965.
[18] J. Spouge and E. Perrin, “Methodology Report for the
2005/2012 Integrated Risk Picture for Air Traffic Management in Europe,” EUROCONTROL, Tech. Rep., 2006, eEC
Technical/Scientific Report No. 2006-041.
[19] R. A. Howard and J. E. Matheson, “Influence Diagrams,”
Decision Analysis, vol. 2, no. 3, pp. 127–143, 2005.
[20] P. Huang, H. Lei, and L. Lim, “Real Time Business Performance Monitoring and Analysis Using Metric Network,” in
Proceedings of IEEE International Conference on e-Business
Engineering (ICEBE’06). IEEE, 2006, pp. 442–449.
Download