Вы находитесь на странице: 1из 15

Using Bayesian Belief Networks in Assessing

Software Architectures
Jilles van Gurp & Jan Bosch
[Jilles.van.Gurp|Jan.Bosch]@ipd.hk-r.se
University of Karlskrona/Ronneby
Department of Software Engineering and Computer Science
Soft Center, S-372 25 Ronneby
http://www.ipd.hk-r.se/[jvg|bosch]

Abstract. Quantitative techniques have traditionally been used to assess software architectures.
We have found that early in the development process there is often insufficient quantitative
information to perform such assessments. So far the only way to make assessments about an
architecture, is to use qualitative assessment techniques like for instance a peer review. The
problem with this type of assessment techniques is that they depend on the knowledge of the
expert designers who use them. In this paper we introduce a technique that automates making
qualitative assessments of software architectures.

1 Introduction of setbacks. The reason for this is that testing wheth-


er the product meets the quality requirements does
Traditionally the development of software is orga- not occur until the testing phase.
nized into different phases. The phases usually occur
in a linear fashion (the waterfall model). Often the To assess whether a system meets certain quality re-
phases of this model are repeated in an iterative quirements, there are several assessment tech-
fashion. This is especially true for Object Oriented niques. Most of these techniques are quantitative in
systems. During the requirement specification phase nature. I.e. they measure properties of the system.
both functional and non-functional requirements are Quantitative assessment techniques are not very well
collected. Based on these requirements the design is suited for use early in the development process,
conceived. After the design phase, the design is im- however. The reason for this is that incomplete
plemented. Then the implementation is tested. This products like design documents and requirement
test is also the final verification that the product specifications provide not enough quantifiable infor-
meets the requirements. After that the product is de- mation to perform the assessments. Instead develop-
ployed. After the product deployment the product ers resort to qualitative assessment techniques. A
has to be maintained. Maintenance can be bug fixing frequently used technique is, for instance, the peer
(corrective maintenance) but can also involve opti- review where design and or requirement specifica-
mizations (perfective maintenance) and adaptations tion documents are reviewed by a group of experts.
(adaptive maintenance) [18]. Though these techniques are very useful in finding
the weak spots in a system, many flaws go unnoticed
At any phase in the process, the process can shift until the system is fully implemented. Fixing the ar-
back to an earlier phase. If, for instance, during test- chitecture in this stage can be very expensive be-
ing a design flaw is discovered, the design phase and cause by then the system has become complicated.
consequently also the implementation phase need to
be repeated. It is also possible that developers dis- Qualitative assessment techniques, like the peer re-
cover during implementation that meeting a certain view, rely on qualitative knowledge. This knowl-
requirement is not feasible (for instance because it is edge resides mostly in the heads of developers and
too expensive) in which case requirements need to may consist of solutions for certain types of prob-
be renegotiated. This type of setback in the software lems (patterns [2][6]), statistical knowledge (60% of
development process can be costly, especially if rad- the total system cost is spent on maintenance), like-
ical changes in the earlier phases (triggering even ly causes for certain types of problems (“our choice
more radical changes in consequent phases) are for the broker architecture explains weak perfor-
needed. We have found that non-functional require- mance“), aesthetics (“this architecture may work but
ments or quality requirements often cause these type it just doesn’t feel right“), etc. A problem is that this

1
type of knowledge is inexplicit and very hard to doc- section 3 we introduce a belief network for process-
ument. Consequently, qualitative knowledge is high- ing qualitative information. In section 4 we validate
ly fragmented and largely undocumented in most this network using a few cases. Related work is pre-
organizations. There are only a handful known ways sented in section 5 and we conclude our paper in
to handle qualitative knowledge: section 6.
• Assign experienced designers to a project. Experi-
enced designers have a lot of knowledge about 2 An introduction to Bayesian Belief
how to engineer systems. Experienced designers Networks
are scarce, though, and when an experienced A BBN is a directed acyclic graph. The nodes in the
designer resigns from the organization he was graph represent probability variables and the arrows
working for, his knowledge will be lost for the represent dependencies (not causal relations!). If
organization. two nodes are not directly connected by an arrow,
• Knowledge engineering. Here organizations try to this means they are independent given the nodes in
capture the knowledge they have in documents. between.
This method is especially popular in large organi-
zations since they have to deal with the problem of Each node can contain a number of states. A condi-
getting the right information in the right spot in the tional probability is associated with each of these
organization. A major obstacle is that it is very states for each combination of states of their direct
hard to capture qualitative knowledge as discussed predecessors (see figure 1 for an example). By us-
above. ing a smart algorithm, the conditional chances for all
• Artificial Intelligence (AI). In this approach quali- of the variables in the network can be calculated,
tative knowledge is used to built intelligent tools something that would take exponential amounts of
that can assist personnel in doing their jobs. Gen- processing power using conventional math (it’s a NP
erally, such tools can’t replace experts but they complete problem). A BBN can be used by entering
may help to do their work faster. Because of this evidence (i.e. setting probabilities of variables to a
less experts are needed. certain value). The chances for the states of the other
variables are then recalculated. How this is done is
In this paper we present a way for representing and beyond the scope of this paper, however (for an in-
using qualitative knowledge in the development pro- troduction to BBNs we refer to [16]). Instead we
cess. The technique we use for representing qualita- will focus on how to build and use these networks
tive knowledge, Bayesian Belief Networks, for qualitative assessment of software architectures.
originates from the AI community. We have found A BBN consists of both a qualitative and a quantita-
that this technique is really good at modeling and tive specification. The qualitative specification is the
manipulating the type of knowledge described graph of all the nodes. The quantitative specifica-
above. Bayesian Belief Networks are currently used tion is the collection of all conditional chances asso-
in many organizations. Examples of such organiza- ciated with the states in each node.
tions are NASA, HP, Boeing, Siemens [8]. BBNs
are also applied in Microsoft’s Office suite where In figure 1 an example of a very small BBN is given
they are used to power the infamous paperclip [13]. that we will use to explain the concepts of a BBN. In
this figure there are four variables. Each variable in
We created a Bayesian Belief Network, called our example has only two states (true and false). To
SAABNet (Software Architecture Assessment Be- the left, a qualitative version of the network is
lief Network), that enables us to feed information drawn, to the right all the probabilities that are need-
about the characteristics of an architecture to SAAB- ed for the quantitative part of the network are given.
Net. Based on this information, the system is able to Each node in a BBN has to specify the conditional
give feedback about other system characteristics. probabilities for each of its states given a combina-
The SAABNet BBN consists of variables that repre- tion of its direct parent states. In our example A and
sent abstract quality variables such as can be found B don’t have any parents so there only are two prob-
in MC Call’s quality factor model [12] (i.e. main- abilities. C has both A and B as a parent and thus has
tainability, flexibility, etc.) but also less abstract to specify 8 different probabilities. The figure only
variables from the domain of software architectures lists four but the remaining four (C=false) can be de-
like for instance inheritance depth and program- rived from these (since the probabilities for both
ming language. The variables are organized in such states have to add up to 1). The same goes for vari-
a way that abstract variables decompose into less ab- able D. Note that variable D does not depend on
stract variables. variable A. Variable D is called conditionally inde-
In section 2 we give a short introduction to BBNs. In pendent of variable A given variable C. Because of
this concept it is possible to create very large net-

2
P(A=true) = 0.75 P(B=true) = 0.21
A B P(A=false) = 0.25 P(B=false) = 0.79

P(C=true|A=true,B=true) = 0.97
P(C=true|A=true,B=false) = 0.67
C P(C=true|A=false,B=true) = 0. 71
P(C=true|A=false,B=false) = 0.43 P(D=true|C=true,B=true) = 0.31
P(D=true|C=true,B=false) = 0.48
D P(D=true|C=false,B=true) = 0.65
P(D=true|C=false,B=false) 0.84
FIGURE 1. A small BBN
works without the calculations getting too complex. edge are:
With modern computers it is possible to calculate
• Patterns. The pattern community provides us with
networks with hundreds of nodes.
a rich source of solutions for certain problems.
With this network and the algorithms that are used Part of a pattern is a context description where the
in BBNs it is possible to calculate probabilities like author of a pattern describes the context in which a
P(D=false|C=false,B=true) with variable A un- certain problem can occur and what solutions are
known or P(A=true|B=true) with variable C and D applicable. This part of a pattern is the most useful
unknown. This can be done by entering the probabil- in modeling a BBN because this matches the para-
ity information behind the bar into the network. The digm of dependencies between variables.
BBN algorithm will than calculate the probabilities. • Experiences. Experienced designers can indicate
Feeding probability information to the network is whether certain aspects in a software architecture
usually referred to as entering evidence. In the ex- depend on each other or not, based on their experi-
ample above, entering the evidence P(C=false)=1 ence.
and P(B=true)=1 enables the algorithm to calculate • Statistics. These can be used to reveal or confirm
the probabilities for the states in all the other vari- dependencies between variables.
ables given these two variables. This is called propa-
gating evidence through the network. 2.2 Construction of BBNs
A BBN is typically used by entering information Constructing a BBN generally involves the follow-
that is known. I.e. the chances for states of variables ing steps:
are set to a value. The value can be 1 if the knowl-
edge is 100% certain but may also be set to other • Identify relevant variables in the domain
values. The BBN then uses the conditional probabil- • Define/identify the probabilistic dependencies and
ities in the quantitative specification to recalculate conditional independencies between the variables.
all the probabilities of other variables’ states. These (this should lead to a qualitative specification of
recalculated probabilities form the output of the net- the BBN)
work. The more evidence is fed to the network, the • Assess the conditional probabilities (this should
more accurate the output. lead to a quantitative specification of the BBN)
• Test the network to verify that the output of the
2.1 What type of knowledge can be put in a network is correct.
BBN? We have found that the last two steps need to be iter-
The nature of human knowledge is that it is unstruc- ated many times and sometimes enhancements in the
tured, incomplete and fragmented. These properties qualitative specification are needed.
make that it is very hard to make a structured, com- Basically the only way to establish whether a BBN
plete and unfragmented mathematical model of this is reliable is to do casestudies. Doing such case stud-
knowledge. The strength of BBNs is that it enables ies means feeding evidence of a number of selected
us to reason with uncertain and incomplete knowl- cases to the network and verifying whether the out-
edge. The problem of fragmentation still exists for put of the network corresponds with the data avail-
this way of modeling knowledge, though. able from the case studies. The network can be
To build a BBN, knowledge from many different relied upon to deliver mathematical correct probabil-
sources has to be collected. In our case the knowl- ities given correct qualitative and quantitative speci-
edge resides in the heads of developers but there fications of the BBN. If a BBN doesn’t give correct
may also be some knowledge in the form of books output, that may be an indication that the probabilis-
and documentation. Examples of sources for knowl- tic information in the network is wrong or that there

3
is something wrong with the qualitative specifica- • The perceived definition of a term does not match
tion of the network. the BBNs definition. This is a matter of under-
Problems with the qualitative specification may be standing our BBN. Maybe the BBN needs to be
missing variables (over simplification) or incorrect changed to reflect the perceived definition or
dependency relations between variables (missing ar- maybe some additional documentation may
rows or to many arrows). Problems with the quanti- resolve the misunderstanding.
tative specification are caused by incorrect • The user is wrong. If none of the above is the
conditional probabilities. Estimating probabilities is cause of the contradiction, the user is wrong.
something that human beings are not good at so it is Maybe the user has a different understanding of
not unlikely that the quantitative specification has the variables in the network. Maybe the user
errors in it. Most of these errors only manifest them knows something that was not entered into the net-
in very specific situation, however. Therefore a net- work. Maybe the user assumes a causal connection
work has to be tested very thoroughly to make sure that is not there.
the output of it correct. In many cases the BBN will give neutral output. I.e.
the probabilities for each state in a certain variable
2.3 Interpreting the output of a BBN are more or less equal. Possible causes for this are:
It is important to realize that any model is a simplifi- • There is not enough information available to favor
cation of reality. Therefore, the output of a BBN is any of the states of this variable.
also a simplification of reality. When we designed • The variable has no incoming arrows. This vari-
our SAABNet network, we aimed to get realistic able might be intended as an input variable. Espe-
output. I.e. output that stresses good points and bad cially when the number of outgoing arrows is low,
points of the architecture. it is unlikely that this variable is affected by the
The output of a BBN consists of probabilities for rest of the model very much.
each state in each variable. The idea is that a user If all of the above things are solved, the BBN may
enters chances for some of the variables (for in- give high probabilities for some variable states. If
stance P(implementation_language=Java)=1.0). This this happens (assuming it does not conflict with real-
information is then used together with the quantita- ity), the network has provided useful output. It may
tive specification of the network to calculate all the confirm what had already been suspected in which
other chances. Since also chances other than 1.0 can case proper argumentation can be found for this sus-
be entered, the user is able to enter information that picion by examining the rest of the network. It may
is uncertain. also provide new information in which case it is cer-
Though the output of the network in it self is quanti- tainly recommended to find out why the BBN gives
tative, the user can use this output to make qualita- a high probability.
tive statements about the architecture (“if we choose
the broker architecture there is a risk that the system 3 SAABNet
will have poor performance and higher complexi-
Based on a number of cases we have created a BBN
ty“) based on the quantitative output.
for assessing software architectures called SAAB-
Sometimes the output of a BBN contradicts with Net (Software Architecture Assessment Belief Net-
what one expects from the given input. Contradict- work). The aim of SAABNet is help developers
ing output always has a cause: perform qualitative assessments. Its primary aim is
to support the architecture design process. Conse-
• The model is wrong. This means that either there’s
quently, it does not support later phases of the soft-
something wrong with the qualitative model. I.e.
ware development process.
some variables are not taken into account that
really are of importance. Or the quantitative model
is wrong. I.e. the influence of some variables is 3.1 Overall structure of SAABNet
overrated/underrated. Either error can be fixed by The variables in SAABNet can be divided into three
adapting the network. categories:
• There is not enough input for the model to come
• Architecture attributes
up with a reliable estimation. In this case more
evidence needs to be added. • Quality Criteria
• The entered evidence does not match reality. In • Quality Factors
this case the BBN cannot be expected to come up This categorization was inspired by Mc Call’s quali-
with reasonable estimates. ty requirement framework [12]. In this framework,

4
implementation_langauge dynamic_binding arch_style nr_of_threads context_switches

multiple_inheritance class_inheritance comp_granularity interface_granularity comp_interdependencies exception_handling responsiveness throughput scalability

vertical_complexity reusability coupling memory_usage


fault_tolerance

performance
documentation complexity horizontal_complexity

testability understandability configurability usability safety security

modifieability flexibility
reliability

maintainability correctness

FIGURE 2. Qualitative specification of SAABNet


abstract quality factors, representing quality require- quantitative specification simple. The more incom-
ments, are decomposed in less abstract quality crite- ing arrows, the higher the number of combinations
ria. We have added an additional decomposition of states of the predecessors. The cleverness of a
layer, called architecture attributes, that is even less BBN is that it organizes the variables in such a way
abstract. Architecture attributes represent concrete, that there are few dependencies (otherwise the num-
observable artifacts of an architecture. ber of conditional probabilities becomes exponen-
tially large). Without a BBN, all combinations of all
Though this suggests a nicely layered tree for our
variable states would have to be considered (nearly
BBN, this is not the case. SAABNet has many ar-
impossible to do in practice because the number ris-
rows and it is impossible to give a nicely layered
es exponentially). In addition to limiting the number
view of this network. However, this layered struc-
of incoming arrows we also limited the number of
ture does reflect the fact that variables with no out-
states the variables can be in. Most of the variables
going arrows are more abstract than variables with
in our network only have two states (i.e. good and
no incoming arrows.
bad or high and low etc.). We may add more states
SAABNet is capable of finding non trivial argumen- later on to provide greater accuracy.
tation (by following the arrows in the graph in the
We will give a short description of the variables (in
reverse direction) for the state of variables in the
alphabetical order) in our network and indicate how
model. This argumentation nicely matches the argu-
they depend on other variables. We have organized
mentation that would otherwise be provided by an
them into three groups corresponding with the dif-
expert designer.
ferent types of variables we discussed in 3.1.
3.2 Qualitative specification
3.2.1 Architecture Attributes
In this section we discuss the qualitative specifica-
tion of SAABNet. In figure 2, a qualitative represen- arch_style (pipesfilters/broker/layers/blackboard).
tation of our network is given (i.e. a directed acyclic This is the only variable with more than two states.
graph). Though at first sight our network may seem The styles they represent correspond with architec-
rather complicated, it is really not that complex. tual styles discussed in [2]. This variable has no in-
While designing we carefully avoided having to coming arrows so all the states have the same
many incoming arrows for each variable. In fact default probability.
there are no variables with more than three incoming
arrows. The reason that we did this was to keep the class_inheritance_depth (deep/not deep). Dependen-

5
cies: implementation_language, comp_granularity. pling, nr_of_threads. A context switch can occur in
This variable indicates the inheritance depth. Studies multi threaded systems when data currently owned
have shown that inheritance hierarchies, deeper than by a particular thread is needed by another thread.
approximately three, are more difficult to compre- Especially on distributed architectures this can be
hend [3]. It is important to note that this variable is the cause of performance hits. But also on smaller
not meant to be interpreted this exactly. I.e. if the in- architectures context switches can be bad for perfor-
heritance hierarchy depth stays below three mostly mance.
and only incidentally is deeper than three, the archi-
tecture should have high probability for not so deep coupling (static/loose). Dependencies: interface_
inheritance. Whether an inheritance hierarchy is granularity, comp_interdependencies. Dependen-
deep or not is partly a design decision but it is also cies can have several forms. This variable acts as an
influenced by the programming language used. indicator of which type of dependency is used most-
Nearly all OO languages come with some sort of ly. With static coupling, components are linked to
framework that offers default functionality. The way each other with hard references while loose coupling
this framework is structured is reflected in applica- indicates that the references are more dynamic (for
tions created with the language. Furthermore also instance because an event mechanism is used or be-
the size of components is important. Large, coarse- cause the reference to components is obtained dy-
grained components do not rely on inheritance so namically). Interfaces are often used to add typing to
much so the inheritance depth is not likely to be as loose coupled component relations while compo-
deep as with fine-grained components. nents with many interdependencies are likely to be
coupled in a static way.
comp_granularity (fine-grained/coarse-grained). De-
pendencies: implementation_language, arch_style. documentation (good/bad). This is an input variable,
This variable acts as an indicator of component size. if no evidence is entered a probability of 0.7 is as-
A component, in our view, can be anything from a signed to the ‘bad’ state (this reflects the situation
single class up to a large number of classes [5]. In that in most organizations documentation is not en-
the first case we speak of fine-grained component tirely adequate).
granularity and in the other case we speak of coarse-
dynamic_binding (high/low). Dependencies: implem-
grained granularity. Creating coarse-grained or
entation_language, interface_granularity. Modern
fine-grained components is largely a design deci-
languages such as C++ and Java support dynamic
sion. Developers have a natural tendency to concen-
binding (i.e. the decision what code to execute is de-
trate functionality in groups which leads to coarse-
layed until runtime). If static binding (i.e. the rela-
grained components. Creating smaller components
tions between executable code pieces are fixed at
usually is the result of careful designing. This can be
compiletime) is used the architecture will be less
influenced by the implementation language (some
flexible. The presence of interfaces and or abstract
languages provide more mechanisms to support this
classes is usually an indicator that dynamic binding
than others) and the architectual style which is a
is used. Client components can than use references
dominant factor in the whole architecture.
with the involved interface/abstract class as a type.
comp_interdependencies (many/few). Dependencies: In C++ dynamic binding has a performance impact
arch_style, dynamic_binding. This indicates the that discourages users to apply it. Java on the other
number of dependencies between components. De- hand encourages dynamic binding by making it the
pendencies can be any sort of reference to other default way of binding.
components: it can be a hardcoded reference or it
exception_handling (yes/no). Dependencies: implem-
can be of a more dynamic form (for instance through
entation_language. Exception handling is a mecha-
an event mechanism). The type and number of de-
nism that helps to capture fault states in a program.
pendencies are partially influenced by the architec-
This variable can have the states ‘yes’ (exception
tural style. Some styles, for instance the broker style,
handling is used in the architecture) and ‘no’ (excep-
explicitly use dynamic binding to link components
tion handling is not used). Some languages (like
together. The involved components thus have very
Java [6]) support this natively while in other lan-
few interdependencies. Other styles like the layers
guages no default mechanism is available to do ex-
style are more performance oriented and avoid the
ception handling. For this reason it is less likely (not
use of (slow) dynamic binding. This leads to a more
impossible) that a system using such a language will
static architecture with more dependencies between
have exception handling because it is more trouble-
the components.
some to implement.
context_switches (many/few). Dependencies: cou-
implementation_language (java/c++). We have only

6
included two languages (Java and C++) for this in- will have to be set to the appropriate value manually.
put variable in the current network. Adding more
languages is not so difficult if the qualitative net- horizontal_complexity (high/low). Dependencies:
work is left intact. Only the quantitative part will coupling, comp_granularity. We split up complexi-
have to be edited (all the conditional probabilities ty into two variables (horizontal and vertical com-
for the states in the variables on the outgoing arrows plexity). The reason for this was that with just one
of this variable). complexity variable there would be many incoming
arrows in the qualitative network. With horizontal
interface_granularity (coarse-grained/fine-grained). complexity we mean the complexity of the relations
between the components. Vertical complexity on the
Dependencies: comp_granularity, implementation_-
other hand refers to the complexity of inheritance re-
language. In [5] we introduced a conceptual model
lations (and ‘implements’ relations in Java). Hori-
of how to model a framework. One of the aspects of
zontal complexity is usually the result of many,
this model is to use small interfaces that implement
hardwired relations between components. This typi-
a role as opposed to the traditional method of putting
cally is the case if there are many small components
many things in a single interface. We refer to these
that are linked together in a static way.
small interfaces as fine-grained interfaces and to the
larger ones as coarse-grained interfaces. This vari- memory_usage (high/low). Dependencies: comp-
able is an indication of whether fine-grained or _granularity. Indicates whether an architecture is
coarse-grained interfaces are used in the architec- likely to use much memory or not. Large compo-
ture. Coarse-grained components are likely to have nents are usually more memory efficient than a large
coarse-grained interfaces. Furthermore, some pro- cluster of small components.
gramming languages promote the use of small
grained interfaces more than others. responsiveness (good/bad). Dependencies: arch_style.
Indicates whether the application is responsive
multiple_inheritance (yes/no). Dependencies: imple- enough. This factor is influenced by the architectual
mentation_language. Indicates whether multiple in- style. Some styles limit the responsetime while oth-
heritance is used in an architecture. Some languages ers don’t have these limitations.
do not support multiple inheritance and even if it is
supported, it is not always used. Just like a deep in- security (secure/unsecure). The system is secure if it
heritance tree, use of multiple inheritance is bad for protects itself from malicious users and prevents us-
understandability. ers from causing fault situations.

nr_of_threads (high/low). Dependencies: arch_style. testability (good/bad). Dependencies: understandabil-


Indicates whether there are many threads or not. ity. This variable gives an indication of whether the
Some architectual styles make it easy to split a sys- resulting system can easily be tested or not. At this
tem into threads while with other styles this is more moment in time it is only dependable of understand-
difficult. ability but additional variables may be added later.

3.2.2 Quality Criteria throughput (good/bad). Dependencies: context_swit-


ches, arch_style. Indicates whether implementations
complexity (high/low). Dependencies: vertical_com- of the architecture process enough data. Context
plexity, horizontal_complexity. This variable indi- switches take time and are therefore bad for the
cates whether an architecture is perceived as com- throughput. The architectual style is another impor-
plex. Vertical and horizontal complexity are tant factor since that determines how the data will
explained in more detail below. flow through the system.

fault_tolerance (tolerant/intolerant). Dependencies: understandability (good/bad). Dependencies: com-


implementation_language, exception_handling. A plexity, documentation. This variable is influenced
fault tolerant architecture recovers nicely (in a well by documentation and complexity. In other words: a
defined way) from run time errors. Some languages complex system that has poor documentation can-
are safer than others in that they provide mecha- not be understood easily whereas a well document-
nisms to prevent certain types of fault situations. Ex- ed system with low complexity can be understood
ception handling in addition helps solve fault easily.
situations should they arrive. Of course there are
other mechanisms for fault tolerance which in the vertical_complexity (high/low). Dependencies: multi-
current version of our network are not taken into ac- ple-_inheritance, class_inheritance_depth, interface-
count. If such mechanisms are used, this variable _granularity. Also see horizontal complexity. As op-
posed to horizontal complexity this variable gives an

7
indication of the complexity of the vertical inherit- ability, coupling. The ability to modify an architec-
ance relations. Vertical complexity can be caused by ture. Modification can be either perfective or
deep inheritance trees but may also be the result of corrective maintenance. In order to be able to per-
using multiple inheritance. Also the use of fine- form modifications to an architecture, the architec-
grained interfaces may make the hierarchy compli- ture has to be understood well. Loosely coupled
cated. code is easier to change because the changes have
less impact on the other code.
3.2.3 Quality Factors
performance (good/bad). Dependencies: throughput,
configurability (good/bad). Dependencies: coupling, responsiveness. Indicates whether the system will
understandability. This indicates the ability to con- perform well. A well performing system has a high
figure the architecture at runtime (for compile time throughput and a good repsonsetime. Any problems
configurability see the variable modifiability). There in this area are reflected as bad performance in our
are two types of configurability: parameter modifi- network.
cation and component rearranging. Both types of
configuration become easier if the architecture can reliability (reliable/unreliable). Dependencies: safe-
be easily understood. If, in addition, coupling is ty, security. Reliability depends on security and
loose, the second type of configuration becomes safety in our model. So the definition of a reliable
more like the first type (i.e. components can be rear- architecture we use here, is that architectures have to
ranged by setting certain parameters). be both safe (functions correctly and does no harm
to its environment) and secure (it can’t be abused by
correctness (good/bad). Dependencies: maintainabili- users) in order to be reliable.
ty, understandability. This variable indicates wheth-
er implementations of the architecture are likely to reusability (good/bad). Dependencies: understand-
behave correctly. I.e. whether they will always give ability, comp_granularity, coupling. An architecture
correct output. An architecture that is well under- supports reuse if people are able to understand it, if
stood and easy to fix is more likely to be correct than the components sufficiently large enough to imple-
an architecture that isn’t understood or easy to ment enough functionality but not so big they are in-
maintain. flexible and if the components are loosely coupled
(i.e. reusing one component doesn’t require the use
flexibility (good/bad). Dependencies: modifiability, of all other components).
reusability, configurability. Flexibility is the ability
to adapt to new situations. A flexible architecture safety (safe/not safe). Dependencies: fault_tolerance,
can easily be tuned to new requirements and to correctness. Safety is all about not affecting the en-
changes in its environment. These three variables all vironment in a negative way. For software architec-
represent a way of adapting to a new situation. The tures this means that faults need to be taken care of
easier this is, the more flexible the architecture. in a well defined way (exception handling) and that
the system gives correct output if there’s is no fault
maintainability (good/bad). Dependencies: config- situation (correctness).
urability, modifiability. In our network the variable
maintainability depends on two other variables: scalability (good/bad). Dependencies: memory_us-
modifiability and configurability. This suggests a age, context_switches, nr_of_threads. With scalabil-
nice definition for maintainability: the ability to ity we refer to performance scalability. I.e. the sys-
change the system either by configuring it or by tem is scalable if performance goes up if better
modifying parts of the code in order to meet new re- hardware is used. While this may seem trivial, this is
quirements. This definition can also be mapped to not true for all systems. in fact there are systems that
the decomposition of maintainability into perfec- are known to perform worse when more processors
tive, corrective and adaptive maintenance [18]. Per- are used (the performance hit of context switching
fective and corrective maintenance are covered by outweighs the benefit of extra processing power). To
modifiability (they both require source code chang- be able to use multiple processors, a system has to
es) while adaptive maintenance is covered by con- be multithreaded. The more threads, the easier it is
figurability (no source code changes are required). to distribute them. A limiting factor is the number of
Maintenance is all about performing changes in the context switches. If there are many contextswitches
architecture. If this is made easy (either by improv- between the threads, the cost of performing them
ing modifiability or by improving configurability), will outweigh the benefit of extra processing power.
an architecture can be called maintainable. The memory consumption of the system can also be
a limiting factor.
modifiability (good/bad). Dependencies: understand-

8
usability (good/bad). Dependencies: performance, likely. This does not automatically mean that other
configurability, reliability. There are a number of values of these variables won’t give this result, it
factors influencing the usability of an architecture: just means that it is not as likely to happen.
performance, configurability and reliability. These • Verifying of choosing certain properties for the
are all important factors from a user’s point of view. variables indeed has the wanted effect on other
variables. This is useful to provide argumentation
3.3 Quantitative Specification for decisions early in the design process.
Since quantitative information about the attributes • Identifying variables that will need special atten-
we are modeling here is scarce, our main method for tion during the development process. I.e. the BBN
finding the right probabilities was mostly through indicates that there will be a problem with one of
trial and error. Since our assessment did not provide the variables. Avoiding the causes for this prob-
us with detailed information, we provided the net- lem may improve the situation.
work with estimates of the conditional probabilities. Our BBN provides
Since the goal of this network is to provide qualita-
tive rather than quantitative information., this is not • Arguments for existing ideas about the architec-
necessarily a problem. ture
• Early warning for problem areas in the architec-
A complete quantitative specification of our network ture
is beyond the scope of this paper. A reason for this • Argumentation for taking design decisions
is that there are simply too many relations to list
here. Our network contains 30+ variables that are The BBN we discuss in this paper is a first version
linked together in all sorts of ways. A complete primarily intended to study the feasibility and use-
quantitative specification would have to list close to fulness of doing qualitative assessments using
200 probabilities. As an illustration we will show the BBNs. If successful, SAABNet will have to go
conditional probabilities of the configurability vari- through a number of evolution cycles in which more
able in SAABNet. variables are added and in which the conditional
probabilities are enhanced.
understandability good bad
coupling loose static loose static 4 Validation
good 0.9 0.2 0.7 0.1 As a proof of concept, we implemented SAABNet
bad 0.1 0.8 0.3 0.9 using Hugin [7] and used it with some cases. This
TABLE 1. Conditional probabilities configurability tool makes it possible to draw the network and enter
the conditional probabilities. It can also run in the so
Configurability depends on understandability and called compiled mode where evidence can be en-
coupling. In table 1 the conditional probabilities for tered and the conditional probabilities for each vari-
the the two states of this variable (good and bad) are able’s states are recalculated (for a complete
listed. Since there are 2 predecessors with each two specification of SAABNet in the form of a Hugin
states, there are 2 times 2 makes 4 combinations of file, please contact the first author). The primary aim
states for each state in configurability. Since we for the validation was to show that even with a sim-
have two states that is 8 probabilities for this vari- ple model as SAABNet, it is possible to get useful
able alone. Note that the sum of each column is 1. qualitative assessments.
The precision of our model is not very high. we used The evaluation method we used consists of the fol-
one decimal for the probabilities, so any output the lowing steps
BBN gives can’t be more accurate than that. Instead
of using the exact probabilities we prefer to inter- • Take an existing architecture
pret the figures as trends which can be either strong • Use assessment techniques and interviews to
if the differences between the probabilities are high unveil different properties of the architecture
or weak if the probabilities do not differ much in • Feed this information to the network and verify
value. the findings of the network in the real architecture
Possible uses of our model:
• OR partially feed the information to the network
and check how much of the other information is
• Assistance in selecting system properties based on deduced by the network
quality requirements. I.e. we want a flexible,
For validation of the output we relied on the same
highly configurable system without taking a per-
sources that provided us with the input for the cas-
formance penalty. Our network will suggest what
es. In most cases this was system documentation.
states the other variables need to be in to make this

9
Entered evidence Output of the network
documentation bad arch_style layers (0.47)
class_inheritance_depth deep configurability bad (0.76)
comp_granularity coarse_grained coupling static (0.76)
comp_interdependencies many horizontal_complexity high (0.66)
complexity high maintainability bad (0.71)
context_switches few multiple_inheritance yes (0.77)
implementation_language C++ vertical_complexity high (0.87)
interface_granularity coarse_grained modifiability bad (0.90)
reusability bad (0.68)
understandability bad (1.0)
TABLE 2. Status Quo
We conducted a number of tests based on real archi- problems.
tectures. The results of these tests are listed in table
2 till table 5. Each case is discussed in more detail in Facts/evidence. We know several things about the ar-
the sections after this. All tests were conducted with chitecture that can be fed to our network:
the same version of the network. For the output vari- • C++ is used as an implementation language
ables we picked a subset of the variables for each • The documentation is incomplete and usually is
case. The reason for this selection is that not every not up to date
variable is worth consideration in every case. Also • Because of the use of frameworks, the class inher-
often the network does not provide a clear prefer- itance depth is deep.
ence for a variable state indicating a lack of evi-
• Components are coarse-grained
dence. For clarity we left these variables out. We did
• There are many dependencies between the mod-
include variables with either confirming or conflict-
ules and the components
ing values. In the discussion of the results below,
conflicts with reality are discussed and clarified. • The whole architecture is large and complicated. It
consists of hundreds of modules adding up to hun-
4.1 Case 1: An embedded system dreds of thousands lines of code.
Architecture • Interfaces are only present in the form of header
files and abstract classes form the frameworks
For our first case we evaluated the architecture of • There are very few context switches (this has been
aswedish company that specializes in producing em- a design goal to increase performance)
bedded software for hardware. The devices in-
volved, run on proprietary hardware and software. Based on this knowledge we can enter the evidence
We were allowed to examine this company’s inter- listed in table 2.
nal documents for our cases. Output of the network. In table 2 some of the output
The software, originally written in C, has been port- variables are shown. The results clearly show that
ed to C++ over the past years. Most of the architec- there is a maintainability problem. There is a depen-
ture is implemented in C++ nowadays. The current dency between configurability and maintainability
version of the architecture has recently been evaluat- and a dependency between modifiability and main-
ed in what could be interpreted as a peer review. The tainability in figure 2. So, not surprisingly, modifi-
main goal of this evaluation was to identify weak ability and configurability are also bad in the results.
spots in the architecture and come up with solutions Reusability (depends on understandability,
for the found problems. The findings of this evalua- comp_granularity and coupling) is also bad since all
tion are very suitable to serve as a testcase for our the predecessors in the network also score negative-
BBN. We were allowed access to internal docu- ly. The latter, however, conflicts with the company’s
ments for this purpose. claims of having a high level of reuse.
In section 3.2 we described the reusability variable
4.1.1 Status Quo in an implicit way. We merely listed the prerequi-
The current architecture has a number of problems sites for reusability (i.e. understandability, compo-
(which were identified in the evaluation project). In nent granularity and coupling). Clearly the
this case we test whether our network comes to the architecture scores bad on these prerequisites (poor
same conclusions and whether it will find additional understandability, coarse-grained components and

10
Entered evidence Output of the network
arch_style broker configurability good (0.52)
class_inhertance_depth deep maintainability good (0.64)
comp_granularity coarse_grained modifiability good (0.66)
interface_granularity coarse_grained reusability bad (0.65)
context_switches few understandability good (0.64)
documentation good coupling loose (0.54)
implementation_language C++ correctness good (0.75)
comp_interdependencies few (0.79)
TABLE 3. Planned changes
static coupling) so the conclusion of the network can • Documentation will be better than it used to be
be explained. The network only considers binary because of the process changes.
component reuse. This is not how they reuses their • The inheritance depth will probably not change
code. Instead, when reusing code, they take existing since the frameworks will continue to be used.
modules, which are then tailored to the new situa- • The component granularity will still be coarse-
tion. Another reason why their claim of having reuse grained.
in their organization legitimate despite the output of • The component interfaces will remain coarse-
SAABNet is that they have a lot of expert program- grained since the frameworks are not affected by
mers who know a great deal about the system. This the changes.
makes the process of adapting code to new situa- • There are still very few context switches.
tions a bit easier than would normally be the case.
• The architecture is now a broker architecture.
The network also gives the layers architectural style
the highest probability (out of four different styles). Output of the network. A key question is whether
This is indeed the architectual style that is used by our network predicts the expected result of doing the
them. As can be deduced from the many outgoing suggested changes. One of the reasons the broker ar-
arrows of this variable in our network, this is an im- chitecture has been suggested was that it would re-
portant variable. Choosing an architectural style in- duce the number of interdependencies. Our network
fluences a lot of other variables. It is therefore not confirms this with a high probability for few compo-
surprising that it picks the right style based on the nent interdependencies. However, the network does
evidence we entered. not give such a high probability for loose coupling
(as could be expected from applying a broker archi-
4.1.2 Planned Changes tecture). The reason for this is that the involved
components are coarse-grained. While the relations
To address the problems mentioned, the company between those components are probably loose, the
plans to modify their architecture in a number of relations between the classes inside the components
ways. The most important architectural change is to are still static.
move from a layers based architecture to an archi-
tecture that still has a layers structure but also incor- A second reason for using the broker architecture
porates elements of the broker architecture. A broker was to increase configurability. In particular, it
architecture will make it easier to plug in compo- should be possible to link together components at
nents to the architecture. In addition, this will im- runtime instead of statically linking them at compi-
prove the runtime configurability. letime. The low score for good configurability is a
bit add odds with this. It is an improvement of the
Apart from architectural changes, also changes to high probability for bad configurability in the previ-
the development process have been suggested. ous case, though. The reason that it doesn’t score
These changes should lead to more accurate docu- very high yet is that the influencing factors, under-
mentation and better test procedures. Also modular- standability and coupling, don’t score high probabil-
ization is to be actively promoted during the ities for good and loose. The improved
development process. documentation did of course have a positive effect
on understandability but it was not enough to com-
Facts/evidence.
pensate for the probability on high complexity.
• C++ is still used as a primary programming lan-
guage.

11
Entered evidence Output of the network
class_inheritance_depth deep complexity low (0.62)
comp_granularity coarse-grained configurability high (0.55)
comp_interdendencies few correctness good (0.73)
exception_handling yes fault_tolerance tolerant (0.70)
implementation_language c++ flexibility good (0.55)
interface_granularity coarse-grained maintainability good (0.65)
memory_usage low modifiability good (0.66)
multiple_inheritance no reliability reliable (0.74)
reusability bad (0.64)
usability good (0.65)
understandability good (0.52)
TABLE 4. EPOC 32: Prediction of design goals by architectual properties
4.2 Case 2: Epoc32 • It must be able to recover from errors since EPOC
programs are expected to run for months or even
Epoc32 is an operating system for PDAs (personal
years
digital assistants) and mobile phones. It is devel-
oped by Symbian. The Epoc32 architecture is de- • The software has to be modular so that the system
signed to make it easy for developers to create can be tailored for different hardware platforms
applications for these devices and too make it easy • The software must be reliable, crashes are not
to port these applications to the different hardware acceptable
platforms EPOC 32 runs on. Its framework provides Facts/evidence. We assessed some architectual prop-
GUI constructs, support for embedded objects, ac- erties using the online EPOC documentation [17].
cess to communication abilities of the devices, etc. From this documentation we learned that:
Since devices like PDAs and mobile phones have
• A special mechanism to allocate and deallocate
very strict requirements on stability and memory us-
objects is used
age, the architecture provides mechanisms to make
• Multiple inheritance is not allowed except for
it easy to meet those requirements. The Epoc32 op-
abstract classes with no implementation (the func-
erating system was programmed in C++, which is
tional equivalent of the interface construct in
also the main language to develop the applications
Java).
in. When programming for the Epoc32 there are
some restrictions on the usage of C++. Multiple in- • The depth of the inheritance tree can be quite
heritance, for instance, is restricted to one imple- deep. There is a convention of putting very little
mentation class and possibly more than one abstract behavior in virtual methods, though. This causes
class. the majority of the code to be located in the leafs
of the tree.
To learn about the EPOC 32 architecture we exam- • A special exception handling mechanism is used.
ined Symbian’s online documentation [17]. This C++ default exception handling mechanism uses
documentation consisted of programming guide- too much memory so the EPOC 32 OS comes with
lines, detailed information on how C++ is used in its own macro based exception handling mecha-
the architecture and an overview of the important nism.
components in the system. • Since the system has to operate in devices with
limited memory capacity, the system uses very lit-
4.2.1 Architecture properties predict design goals tle memory. In several places memory usage was a
In this case we examine whether the design goals of motivation to choose an otherwise less than opti-
the EPOC 32 architecture are predicted by our mod- mal solution (exception handling, the way DLLs
el given the properties we know about it. The de- are linked)
sign goals of the EPOC 32 architecture can be • Components are medium sized. I.e. large compo-
summarized as follows: nents are pointless because they don’t provide
enough modularity. Small components on the
• It has to perform well on limited hardware other hand have too much overhead to run effi-
• It has to be small to be able to fit in the generally ciently. Components come in the form of one or
small memory of the target hardware more DLLs or an executable. The general rule is

12
Entered evidence Output of the network
configurability good class_inheritance_depth not deep (0.52)
fault_tolerance tolerant comp_granularity coarse-grained (0.83)
memory_usage low comp_interdendencies few (0.75)
modifiability good exception_handling yes (0.80)
performance good implementation_language java (0.66)
reliability reliable interface_granularity fine-grained (0.58)
multiple_inheritance no (0.77)
TABLE 5. EPOC 32: Prediction of architectual properties by design goals
that components contain a group of related acceptable and the system is expected to recover
classes. The presence of unrelated classes in a from application errors.
components may cause the component to be split • Since the system has to operate on relatively small
into two components. hardware, performance and low memory usage are
• There are few dependencies between components. important
In particular circular dependencies are not • Since the system has to run on a wide variety of
allowed. hardware (varying in processor, memory size, dis-
• Generally components can be replaced with binary play size), the system must be tailorable (i.e. con-
compatible replacements which indicates that the figurability and modifiability should be easy)
components are loosely coupled.
Output of the network. It is unreasonable to expect
Output of the network. our network to come up with all the properties of the
EPOC 32 OS based on this input. The output howev-
The output of the network confirms that the right
er once again confirms that design choices for
choices have been made in the design of the EPOC
EPOC 32 make sense. One of the interesting things
32 operating system. Our network predicts that low
is that our network suggests a high probability on
complexity is probable, high reliability is also prob-
Java as a programming language. While EPOC 32
able. Furthermore the system is fault tolerant (which
was programmed in C++, its designers tried to mim-
partially explains reliability.). The system also
ic many of Java’s features (also see [17]). In particu-
scores well on maintainability and flexibility. A sur-
lar they mimicked the way Java uses interfaces to
prise is the low score on reusability. Unlike the pre-
expose API’s (using abstract classes with virtual
vious case, the EPOC 32 features so called binary
methods), they used an exception handling mecha-
components. What obstructs their reuse is the fact
nism, they created a mechanism for allocating and
that the components are rather large and the fact that
deallocating memory which is safer than the regular
the interfaces are also coarse-grained. Also of influ-
C++ way of doing so. Considering this, it is under-
ence is the fifty fifty score on understandability
standable that our network picked the wrong lan-
(good understandability is essential for reuse). The
guage.
latter is probably the cause of a lack of evidence, not
because of an error in the network. The available ev- Our network also predicts coarse-grained compo-
idence is insufficient to make meaningful assump- nents which is correct. In addition to that it gives a
tions about understandability. high probability for the presence of exception han-
dling which is also correct. The net work is also cor-
4.2.2 Design goals predict architecture properties rect in predicting no multiple inheritance and few
component interdependencies. It is wrong, howev-
Though its certainly interesting to see that the archi-
er, in predicting an low inheritance depth and pre-
tectural properties predict the design goals, it is also
dicting fine-grained interfaces. The latter two errors
interesting to verify whether the design goals pre-
can easily be explained since they would only help
dict the architectual properties.
achieving the goals that were set for the EPOC 32
Facts/evidence. In this case we entered properties architecture.
that were presumably wanted features of the EPOC
architecture: 4.3 Evaluation of SAABNet
• Fault tolerance and reliability are both important Our evaluation clearly shows that even with a sim-
for EPOC since EPOC systems are expected to run ple model, as presented in this paper, it is possible to
for long periods of time. System crashes are not make qualitative assessments about an architecture
that can rival with expert assessments. Especially in

13
situations where little information is available (the archical decomposition. We adopted and enhanced
second EPOC case for instance), useful output is their decomposition of performance into throughput
given. We have been able to give a logical explana- and responsiveness. However, we did not use their
tion for all incorrect output of the network. In all decomposition of modifiability into maintainability
cases the explanation either pointed out that there and configurability as we needed a more detailed de-
was a lack of evidence or that given the input the composition. Rather we adopted Swanson’s decom-
output was generally true. The latter stresses the fact position of maintenance into perfective, adaptive
that our network gives probabilities as output. This and corrective maintenance. We mapped the notion
means that sometimes reality is simply unlikely but of perfective and corrective maintenance onto modi-
not impossible given the limited set of facts fed to fiability while adaptive maintenance is mapped onto
the network. configurability. A reason for this difference in de-
composition is that we prefer to think of modifiabili-
5 Related work ty as code modifications and of configurability as
run time modifications.
Important work in the field of BBNs is that of Judea
Perl [16]. In this book the concept of belief networks The SAABNet technique, we created, would fit in
is introduced and algorithms to perform calculations nicely with existing development methods such as
on BBNs are presented. Other important work in this the method presented in [1] which was developed in
area is that of Drudzel & Van der Gaag [4] where our research group. In this design method, an archi-
methodology for quantification of a BBN is dis- tecture is developed in cycles. After each cycle, the
cussed. architecture is evaluated and weaknesses are identi-
fied. In the next cycle the weaknesses are addressed
We were not the first to apply belief networks to by applying transformations to the architecture. Our
software engineering. In [14] and [15], BBNs are technique could be used to detect weak spots earlier
used to assess system dependability and other quali- so that they can be addressed while it is still cheap to
ty attributes. Contrary to our work, their work focus- transform the architecture.
es on dependability and safety aspects of software
systems. SAABNet could also be used in spiral development
methods, like ATAM (Architecture Tradeoff Analy-
The qualitative network we created could be per- sis Method) [10], that also rely on assessments. It is
ceived as a complex quality requirement framework however not intended to replace methods like
as the one presented by Mc Call [12]. Apart from SAAM [11] which generally require an architecture
our model being more complex, there are some description since SAABNet does not require such a
structural differences with Mc Call. In our model ab- description. Rather SAABNet could be used in an
stract attributes like flexibility and understandabili- earlier phase of software development.
ty are decomposed into less abstract attributes
(follow the arrows in reverse direction). Mc Call’s
decomposition is far more simple than ours is: it
6 Conclusion
only has three layers and there are no connections In this paper we presented a method to automate rea-
within one layer. We think that his decomposition is soning with qualitative knowledge in the software
too simplistic for our goal which is to make useful development process. As we have pointed out, this
qualitative assessments about software architecture techique should not be seen as a replacement for ex-
using a BBN. Mc Call’s decomposition does not pert designers but rather as a assisting technique that
model independencies very well (which essential for allows a designer to work more efficiently.
a BBN). Many criteria like “modularity“ show up in
Despite the small size of our belief network, we
the decomposition of nearly every quality factor. In
were able to get meaningful output from it in the
a BBN that would lead to many incoming arrows.
cases we tested. In both cases, SAABNet identified
We feel that our model may be a better decomposi-
both problems and positive things in the architec-
tion because it tries to find minimal decompositions
ture. There were a few deviations from our cases
and groups simple quality criteria into more abstract
though but those could be explained by either exam-
ones. An example of this is our decomposition of
ining the network more closely or by pointing out
complexity into vertical and horizontal complexity.
that there was a subtle difference in perception of
However, continued validation is required to prove
terminology used in SAABNet and used in the cas-
our position.
es.
Lundberg et al. provide another decomposition of a
All this gives us reason to believe that a larger net-
limited number of quality attributes [9] . Like Mc
work based on the knowledge of experienced devel-
Call’s decomposition. Their decomposition is a hier-
opers would provide us with a very powerful tool.

14
6.1 Future Work [8] Hugin, “General Information”, http://
www.hugin.dk/gen-inf.html
The SAABNet presented in this paper represents a
first version and considerable research efforts are re- [9] L. Lundberg, J. Bosch, D. Häggander, P. O.
Bengtsson, “Quality Attributes in Software Architecture
quired to mature this work. There’s a lot of research
Design“, Accepted for the IASTED 3rd International
being done in the field of Bayesian belief networks. Conference on Software Engineering and Applications,
Results from this research may be applicable to the July 1999
domain discussed in this paper. Right now there are
two developments in this field that may be applica- [10] R. Kazman, M. Klein, M. Barbacci, T. Longstaff, H.
Lipson, J. Carriere, “The architecture Tradeoff Analysis
ble: object oriented BBNs and influence diagrams.
Method“, Proceedings of ICECCS, August 1998,
OO BBNs may enhance our ability to model qualita- Monterey, CA
tive knowledge even better and influence diagrams
may be used to support the decision process in soft- [11] R. Kazman, L. Bass, G. Abowd, M. Webb,
ware development. An upcoming version of Hugin “SAAM: A Method for Analyzing the Properties
Software Architectures”, pp. 81-90, Proceedings of ICSE
[7] will have support for these enhancements. The
16, May 1994
current version has limited support for influence dia-
grams. [12] J. A. McCall, “Quality Factors“, encyclopedia of
Software Engineering, vol 2 O-Z pp. 958-969, John
As a proof of concept, our model can be called a Wiley & Sons New York 1994
success, though it has to be noted that it is only a
[13] Microsoft Research, “Machine Learning and
first attempt at modeling qualitative design knowl- Applied Statistics“, http://research.microsoft.com/
edge. To make it more useful, more knowledge will research/mlas/
have to be added to the network and the quantitative
part of the network will have to be refined. Existing [14] M. Neil, B. Littlewood, N. Fenton, “Applying
Bayesian Belief Networks to Systems Dependability
literature on BBNs suggest that this a very compli-
Assessment“, Proceedings of Safety Critical Systems
cated task to perform. Club Symposium, Leeds, Springer-Verlag February
1996
7 References [15] M. Neil, N. Fenton, “Predicting Software Quality
[1] J. Bosch, P. Molin, “Software Architecture Design: using Bayesian Belief Networks“, Proceedings of 21st
Evaluation and Transformation“, in Proceedings of the Annual Software Engineering Workshop, 1996
1999 IEEE Coneference on Engineering of Computer
Based Systems. December 1998 [16] J. Pearl, “Probabilistic Reasoning in Intelligent
Systems“, Morgan Kaufmann Publishers, Inc. San Mateo
[2] F. Buschmann, C. Jäkel, R. Meunier, H. Rohnert, 1988
M. Stahl, “Pattern-Oriented Software Architecture - A
System of Patterns“, John Wiley & Sons, 1996 [17] Symbian, “EPOC World Library”, http://
developer.epocworld.com/EPOClibrary/
[3] J. Daly, A. Brooks, J. Miller, M. Roper, M. Wood, EPOClibrary.html
“The effect of inheritance on the maintainability of object
oriented software: an empirical study“, Proceedings of the [18] E. B. Swanson, “The dimensions of maintenance“,
international conference on software maintenance, pp. 20- proceedings of the 2nd international conference on
29, IEEE computer Society Press, Los Alamitos, CA, software engineering, pp. 492-497, IEEE Computer
USA, 1995 Society Press, Los Alamitos 1976

[4] M. J. Drudzel, L. C. van der Gaag, “Elicitation for


Belief Networks: Combining Qualitative and Quantitative
Information“, Proceedings of the 11th Annual Conference
on Uncertainty in Artificial Intelligence (UAI-95), pp.
141-148, Montreal August 1995
[5] J. van Gurp, J. Bosch, “Design, Implementation and
Evolution of Object Oriented Frameworks: Concepts &
Guidelines“, submitted July 1999
[6] J. Gosling, B. Joy, G. Steele, “The Java Language
Specification“, Addison Wesley, 1996. Gamma, R. Helm,
R. Johnson, J. Vlissides, “Design Patterns - Elements of
Reusable Object Oriented software”, Addison-Wesley,
1995
[7] Hugin “Hugin Expert A/S - Homepage”, http://
www.hugin.dk

15

Вам также может понравиться