Conference PaperPDF Available

A Quantitative Evaluation of the Impact of Architectural Patterns on Quality Requirements

Authors:

Abstract and Figures

When designing software architectures, an architect relies on a set of pre-defined styles commonly named architectural patterns. While architectural patterns embody high level design decisions, an architectural tactic is a design strategy that addresses a particular quality attribute. Tactics; in fact, serve as the meeting point between the quality attributes and the software architecture. To guide the architect in selecting the most appropriate architectural patterns and tactics, the interactions between quality attributes, tactics and patterns should be analyzed and quantified and the results should be considered as decision criteria within a quality-driven architectural design process. In this paper, we propose an approach for a quantitative evaluation of the support provided by a pattern for a given targeted set of quality attributes.
Content may be subject to copyright.
1 École de Technologie Supérieure, Montreal, Canada
2 Université du Québec à Montréal, Montreal, Canada
A QUANTITATIVE EVALUATION OF THE
IMPACT OF ARCHITECTURAL PATTERNS
ON QUALITY REQUIREMENTS
Mohamad Kassab1, Ghizlane El-Boussaidi1 and Hafedh Mili2
Abstract When designing software architectures, an architect relies on a set of
pre-defined styles commonly named architectural patterns. While architectural
patterns embody high level design decisions, an architectural tactic is a design
strategy that addresses a particular quality attribute. Tactics; in fact, serve as the
meeting point between the quality attributes and the software architecture. To
guide the architect in selecting the most appropriate architectural patterns and tac-
tics, the interactions between quality attributes, tactics and patterns should be ana-
lyzed and quantified and the results should be considered as decision criteria with-
in a quality-driven architectural design process. In this paper, we propose an
approach for a quantitative evaluation of the support provided by a pattern for a
given targeted set of quality attributes.
Key words: architectural patterns; architectural tactics; quality requirements; arc-
hitectural design.
1 Introduction
In the process-oriented and goal-oriented software development approaches, user
requirements are established based on an analysis of business goals and of the ap-
plication domain. Subsequently, architectures of the desired systems are designed
and implemented. One of the primary goals of the architecture of a system is to
create a system design to meet the required functionality, while satisfying the de-
sired quality. In fact, if we consider a system’s architecture as a set of architectural
decisions, the most significant ones concern the satisfaction of quality attributes
[1].
When designing software architectures, an architect relies on a set of idiomatic
patterns commonly named architectural styles or patterns. A Software Architec-
tural Pattern defines a family of systems in terms of a pattern of structural organi-
zation and behavior [3]. More specifically, an architectural style determines the
vocabulary of components and connectors that can be used in instances of that
style, together with a set of constraints on how they can be combined [2]. Many
common architectural patterns are described in [3, 4, 7, 10, 19, 20]. Common ar-
chitecture patterns include Layers, Pipes and Filters, Model View Controller
(MVC), Broker, Client-Server and Shared Repository.
While architectural patterns embody high level design decisions, an architec-
tural tactic [13] is a design strategy that addresses a particular quality attribute. In-
deed tactics serve as the meeting point between the quality attributes and the soft-
ware architecture. In [8], the authors define an architectural tactic as an
architectural transformation that affects the parameters of an underlying quality
attribute model. “The structure and behavior of tactics is more local and low level
than the architectural pattern, and therefore must fit into the larger structure and
behavior of patterns applied to the same system” [9]. Implementing a tactic into a
pattern may affect the pattern by modifying some of its components, adding some
components and connectors, or replicating components and connectors [9].
Architectural patterns have been described using different frameworks (see e.g.
[10], [11], [20]). A common framework to describing patterns includes the name,
an example, the problem, the structure and the dynamics of the solution, and the
consequences of using a pattern expressed in terms of its benefits and its liabili-
ties. Hence the selection of an architectural pattern is qualitatively driven by the
properties it exhibits [17] and the architecture knowledge and experience with pat-
terns. To guide the architect in selecting the most appropriate architectural patterns
and tactics, the interactions between quality attributes, tactics and patterns should
be analyzed and quantified and the results should be considered as decision crite-
ria within a quality-driven architectural design process. In this paper, we propose
an approach for a quantitative evaluation of the support provided by a pattern for a
given targeted set of quality attributes.
The paper is organized as follows. We start by the quantitative mapping of
quality attributes into architectural tactics where we consider not only the positive
contribution of tactics to implement the qualities but also the potential conflict
among qualities due to the introduced tactics (Section 2), then we relate the archi-
tectural patterns to the tactics based on quantitative evaluations of the impact of
incorporating the latter within the former (Section 3). The quantitative impact of
incorporating the quality into architectural patterns is then calculated through a
matrix transformation method using the data from the quality-tactic and tactic-
pattern quantified relations (Section 4). Section 5 discusses related work, and Sec-
tion 6 provides conclusion and the future work discussion. The approach is dem-
onstrated throughout the paper through the analysis of the impact of incorporating
both “Performance” and “Security” qualities into Pipes-Filters, Layers, MVC and
Broker patterns.
2 Quality-tactics interaction
Quality is “the totality of characteristics of an entity that bear on its ability to satis-
fy stated and implied needs” [12]. Software Quality is an essential and distinguish-
ing attribute of the final product. Many approaches [12, 14, 22] classify software
quality in a structured set of characteristics which are further decomposed into
sub-characteristics. In [24], quality taxonomy was built out of many inputted ap-
proaches starting from the ISO 9126-1 [12] to define the root nodes for the quality
taxonomy (External Quality, Internal Quality and Quality in Use).
Tactics on the other hand are measures taken to improve the quality attributes
[13]. For example, introducing concurrency for a better resource management is a
tactic to improve system’s performance. Similarly, Authentication and Authoriza-
tion are popular tactics to resist unwanted attacks on the system and improve the
overall security. In [13], the authors list the common tactics for the qualities:
Availability, Modifiability, Performance, Security, Testability and Usability.
Typically, systems have multiple important quality attributes, and decisions
made to satisfy a particular quality may help or hinder the achievement of another
quality attribute. The best-known cases of conflicts occur when the choice of a
tactic to implement certain quality attribute contributes negatively towards the
achievement of another quality. For example, decisions to maximize the system
reusability and maintainability through the usage of “abstracting common servic-
es” tactic may come at the cost of the “response time”. “Authentication” is a clas-
sical tactic to achieve Security, but it may come on the cost of Performance and
Usability; as in the case of requiring additional ID. Therefore, architects must deal
with tradeoffs, priorities and interdependencies among qualities and tactics before
selecting some tactics that may achieve one quality and hinder another. In this pa-
per, we present these interdependencies empirically using three point scale
adopted from [14]; where +1 indicates that if the tactic is implemented then a posi-
tive contribution (support) is given to the quality; -1 indicates that if the tactic is
implemented then a negative contribution (hinder) is given to the quality; and 0
indicates that the tactic has no impact on the quality.
In Figure 1 we used the Softgoal Interdependency Graph notations [14] to illu-
strate the quality / tactics relationship on Security and Performance qualities. We
used the same set of tactics recommended in [13]. In addition, we incorporated our
observations towards the interdependencies between security / performance quali-
ties due to the derived tactics.
For example, the Security tactic “Implementing Identification for Attacker” re-
quires an audit trail, which is a space consuming; thus the value -1 was assigned
between this tactic and Performance quality. The Security tactics “Authorization”
and “Authentication” have negative effects on the response time of the system,
and thus the value of -1 was assigned between these tactics and the Performance
quality.
On the other hand, while “Maintaining Multiple Copies” tactic contributes po-
sitively to the achievement of performance, each copy increases the risk of reveal-
ing confidential data, and thus a value of -1 was assigned between this tactic and
Security quality.
Fig.1 Impact of Security and Performance Tactics
3 Tactics - Architectural patterns interaction
For a given quality attribute, the tactics are organized into sub-sets called catego-
ries in [13] and design concerns in [18]. Captured qualities can be realized through
satisfying these design concerns. For example, performance is divided into three
design concerns: resource demand, resource management and resource arbitration.
A design concern by itself is realized through the implementation of a set of prop-
er tactics. Each tactic is a design option for the architect [13] to satisfy a particular
concern. For example, some tactics that support the “Resource Management” de-
sign concern are: Introduce Concurrency, Maintain Multiple Copies of either data
or computations and Increase Available Resources.
Tactics are considered as the building blocks from which architectural patterns
are composed [13]. While an architectural pattern is commonly defined by its
components, their interactions and interrelationships and their semantic, its im-
plementation includes a combination of tactics depending on the pattern’s objec-
tives. For example, the Broker pattern implements the modifiability tactic “Use an
Intermediary” by introducing the Broker component which acts as an intermediary
between clients and servers to provide location-transparent service invocations [8].
Nevertheless patterns can impact individual tactics by making it easier or more
difficult to implement them [9]. Indeed the changes due to a tactic’s implementa-
tion within a pattern may-at worst-break the pattern’s structure and/or behavior.
To study the relationship between tactics and patterns, we analyze a pattern to
evaluate the support it provides to help implementing a tactic. In [15], the authors
identified six types of changes that a pattern’s structure or behavior might undergo
when a tactic is implemented:
Implemented in: The tactic is implemented within a component of the pattern.
Actions are added within the sequence of the component.
Replicates: A component is duplicated. The component’s sequence of actions is
copied intact, most likely to different hardware.
Add, in the pattern: A new instance of a component is added to the architecture
while maintaining the integrity of the architecture pattern. The new component
comes with its own behavior while following the constraints of the pattern.
Add, out of the pattern: A new component is added to the architecture which
does not follow the structure of the pattern. The added actions do not follow the
pattern.
Modify: A component’s structure changes. This implies changes or additions
within the action sequence of the component that are more significant than
those found in “implemented in”.
Delete: A component is removed.
In this paper, we adopt the five point scale from [15] to identify the impact magni-
tude of incorporating tactics within architectural patterns, where +2 presents
“Good Fit” category, +1 presents “Minor Changes” required for the incorporation,
-1 presents “Significant changes” required for the incorporation, -2 presents “Poor
Fit” category and 0 presents that the tactic and the pattern are basically orthogonal.
The impact is defined as a function of number of participants impacted as listed in
Table 1.
Table 1: Impact magnitude as a function of number of participants impacted [15].
Change Type
Number of Changes
Impact Range
Implemented in
1
+2 to +1
Replicates
3 or less
+2 to +1
More than 3
+1 to 0
Add, in the pattern
3 or less
+2 to +1
More than 3
+1 to 0
Add, out of the pattern
3 or less
0 to -1
More than 3
-1 to -2
Modify
3 or less
+2 to -1
More than 3
0 to -2
Tables 2 and 3 summarize our findings on the impact of implementing Security
and Performance tactics (using the scale described above) on pipes and filters,
Layered, MVC and Broker patterns.
Table 2: Impact of Incorporating Security Tactics into Pipes/Filters, Layered, MVC and Broker
patterns
Pipes / Filters
Layered Architecture
Broker
Security Tactics: Resisting Attacks
Authenticate Users
-2
+1
+2
Authorize Users
-2
-2
-2
Limit Access
+1
+1
-2
Limit Exposure
+2
+2
-1
Maintain Data Confidentiality
-1
-1
0
Security Tactics: Detecting Attacks
intrusion detection
0
0
+1
Security Tactics: Recovering From
an Attack
Identification of Attacker
-2
-2
-2
Restoration
-2
-1
+2
Average
-0.75
-0.25
-0.25
Table 3: Impact of Incorporating Performance Tactics into Pipes/Filters, Layered, MVC and
Broker patterns
Pipes / Filters
Layered
MVC
Broker
Performance Tactics: Resource Demand
increase computation efficiency
-1
-1
+1
+1
reduce computational overhead
-1
-1
+1
-2
manage event rate
-1
-1
+1
-2
control frequency of sampling
+1
+1
+1
+1
Performance Tactics: Resource Manage-
ment
introduce concurrency
+2
+1
+1
0
maintain multiple copies
-2
-1
+1
0
increase available resources
0
0
0
0
Performance Tactics: Resource Arbitration
Scheduling Policy
-1
-1
+1
+1
Average
-0.375
-0.375
0.875
-0.125
For example, The Pipes and Filters architectural pattern provides a structure for
systems that compute a stream of data [10]. Each computation is encapsulated in a
component (filter). Data is passed between adjacent filters through connectors
(pipes). Computations transform one or more input streams into one or more out-
put streams, incrementally. There are no shared states between filters (stateless),
and there is no central control in this pattern. In order to implement authorization,
a new component must be introduced to manage role profiles along with new con-
nections to each filter component. In addition, changes are required within exist-
ing filters to enable them to communicate with the new introduced component.
These changes mean that significant work is required to implement authorization
in this pattern; thus authorization is considered as a poor fit for the Pipes and Fil-
ters pattern as it represents a major “Add, out of the pattern” scenario and modifi-
cations to the existing components and thus -2 value was assigned.
Because of the “stateless” nature for the filters, this poses as a challenge when
implementing the “restoration” tactic which aims at bringing the system to a latest
correct state. In that case, it usually makes most sense to restart processing of that
data from the beginning. If one must implement this tactic, then states must be de-
fined for each filter and a mechanism must be created to restore a filter to the
proper state when it comes back up. That may require a monitoring process. These
changes involve major changes to components, plus possible major Add, out of
the pattern” and “Modify”. Hence a value of -2 was assigned. On other hand,
pipes-filters pattern naturally supports concurrent execution. Each filter can be
implemented as a separate task and potentially executed in parallel with other fil-
ters [3]. The performance may be improved with filters running on different pro-
cessors and processing data in an incremental and parallel way, i.e. a filter can
work on partial results of its predecessors [16]. A value of +2 was assigned.
Regarding the Layers pattern, this is a widely used pattern. The Layers pattern
structures an application by decomposing it into groups of subtasks where each
group of subtasks is at a particular level of abstraction [10]. In other words,
Layered Architecture is an organized hierarchy, each layer providing service to the
layer above it and serves as a client to the layer below [3]. Because of Layers ar-
chitecture organization, implementing the “Authenticate users” tactic is relatively
easier than in Pipes and Filters. Indeed this tactic can be added as an additional
layer on top of the existing ones; changes to the existing architecture are limited to
its top layer and the new layer is within the structure of the pattern [15]. This is an
example of (Add, in the pattern); and thus (+1) was assigned as a value. On other
hand, as Layered Pattern supports layers of access, this limits the exposure by not
placing all the logic and data into one layer. The spreading of layers among differ-
ent hosts is recommended though to minimize the probability of an attack. A value
of +2 was assigned for the difficulty of incorporating Limit Exposure in Layered
architecture.
The MVC pattern divides an interactive application into three components [10]:
1) The model which encapsulates the core functionality and data; 2) Views which
display the model information to the user; and 3) Controllers which handle user
input and which are associated to views. The consistency between the model and
its views is ensured using a change-propagation mechanism. Because the model
component encapsulates core data and functionality, in order to implement the
“Limit Exposure” tactic, this component needs to be broken into different compo-
nents each with limited services. The components which will assume the model
are preferably to be distributed among different hosts to limit the possibility of at-
tacks. Such an implementation changes the pattern structure and behavior (“Ma-
jor”, Add, out of the pattern) and thus a value of -2 is assigned. On other hand, de-
pending on the interface of the model, a view may need to make multiple calls to
obtain all its display data [10]. This negatively impacts the response time to user
requests and, hence to the Performance requirement. The response time may be
improved by caching data within views. This is a “Minor” modification to an ex-
isting component; thus a value of +1 was assigned to “Manage Event Rate” tactic.
4 Calculation of the Impact of Architectural Patterns on quality
attributes
We will now compute the quantitative impact of architectural patterns on quality
attributes combining the data from the quality-tactic and tactic-pattern quantified
relations. In the previous section, we discussed the latter impact considering each
quality in isolation from the rest of the set of qualities that are aimed for the sys-
tem. Averaging the values of impact of tactics against the patterns in the above
analysis yields a value ranging from -2 to 2 representing how much the pattern is
accommodating for the quality’s tactics in abstract; with the value of -2 represents
the least accommodating case, and the value of +2 represents the most accommo-
dating.
For example, averaging the values for impact of Security tactics against the
four patterns in Table 2 revealed that:
Both Layered and Broker patterns are the most accommodating patterns for Se-
curity tactics.
MVC is the least accommodating pattern for Security tactics.
Similarly for Performance, averaging the values for impact of Performance tac-
tics against the four patterns in Table 3 revealed that:
MVC is the most accommodating pattern for Performance tactics.
Both Pipes/Filters and Layered are the least accommodating patterns for Per-
formance tactics.
While this analysis is important for the architect as it provides quantitative evi-
dences that can be used to optimize his architectural choices, it is still ignorant to
the positive/negative interdependencies in the quality-tactics relationship as a ma-
jor dimension to be considered when it comes to the architect’s choices. We pr o-
pose to consider the quality-tactics relation in conjunction with tactics-patterns re-
lation through a matrix multiplication operation that yields the impact of
architectural patterns on quality attributes.
Let A be the matrix of the impact values of the tactics on architectural patterns;
A is composed of a set of atp values where atp is the impact value for the tactic t on
the pattern p. In addition, let B be the matrix representing the quality-tactics rela-
tionship; B is composed of a set of bqt values where bqt represents the impact value
of the tactic t on the quality q. Then the matrix representing the impact of incorpo-
rating quality attributes in architectural patterns is calculated as:
C = (AB) / ||Total number of Tactics||
An element in C (e.g. cij ) is the scalar product of the ith row of A with the kth
column of B; divided by the total number of tactics being considered for the sys-
tem.
The results from this calculation represent quantitatively the impact against
each pattern p for each quality q (defined in total set of qualities Q being consi-
dered for the system) in the presence and relativity to the rest of all other qualities
defined in set Q. It is important to note that the numbers in the result matrix
(quality vs. pattern) are relative to the rest of the set of qualities to be considered
for the system. That is, if we choose to consider adding more qualities to the sys-
tem, for example, then these numbers will change accordingly.
Table 4 shows the results of our calculation following the above method on the
impact of incorporating both Security and Performance Tactics into Pipes-Filters,
Layered, MVC and Broker patterns. The results reveal that when both Security
and Performance are to be considered as the key qualities of the system, then:
MVC is the most accommodating pattern for the Performance quality while
implementing all tactics of both Security and Performance in this system (it
scored the highest among the four patterns against Performance).
Broker is the least accommodating pattern for the Performance quality while
implementing all tactics of both Security and Performance in the system (it
scored the lowest among all patterns against Performance).
Layered is the most accommodating pattern for the Security quality while im-
plementing all tactics of both Security and Performance in this system (it
scored the highest among the four patterns against Security).
MVC is the least accommodating pattern for the Security quality while imple-
menting all tactics of both Security and Performance in the system (it scored
the lowest among all patterns against Security).
Table 4: Impact of Incorporating Security / Performance into selected architectural patterns.
Security
Performance
Pipes-Filters
-0.25
0.3125
Layered
-0.063
0.125
MVC
-0.562
0.875
Broker
-0.125
-0.125
These results are based on the assumption that all the tactics implementing each
quality are to be accommodated for the system. In practice; though, the architect
may choose to select only a subset of the tactics to satisfy the quality achievement.
The numbers derived from our approach can be useful for the architect to tune his
selection of tactics as will be discussed in the future work section.
5 RELATED WORK
Many patterns have been proposed and described in the literature (e.g. [3], [10],
[4], [11], [20]). However, patterns consequences descriptions are incomplete, not
searchable or cross-referenced and, mostly qualitative [9]. They are often classi-
fied according to the specific classes of systems they enable to construct (e.g. vir-
tual machines). Our work aims at providing a quantitative method for comparing
and evaluating architectural design choices and in particular by using information
drawn from tactics descriptions as given in [13] and the quantitative impact of
these tactics on quality attributes and architectural patterns. The SEI Attribute
Driven Design method [13] [18] describes an iterative process to designing soft-
ware architecture where at each iteration of the process, the architect chooses arc-
hitectural tactics and patterns that satisfy the most important quality attributes for
that iteration. However the architectural decisions such as the selection of a pat-
tern is mainly based on a qualitative evaluation and the architect expertise and
knowledge.
Our analysis is based on the scale introduced in [15]. Harrison and Avgeriou
propose a general model that relates patterns to tactics and quality attributes. In
particular the proposed framework concentrates on the interaction between tactics
and patterns and especially how tactic implementations affect patterns. Our ap-
proach may be seen as complementary to this framework as we consider both the
impact of a tactic on a pattern and the impact of the tactic on other quality
attributes.
Our work is closely related to Bode and Riebisch’s work [17]. They present a
quantitative evaluation of a set of selected architectural patterns regarding their
support for the evolvability quality attribute. They refine the evolvability attribute
into sub-characteristics and relate them to some properties that support good de-
sign. The selected patterns are used in a case study and the resulting design is as-
sessed to determine the impact of these patterns on these properties. A matrix of
impact values of patterns on evolvability sub-characteristics is inferred from the
matrix relating properties to sub-characteristics and the matrix relating properties
to patterns. For each pattern, the impact on evolvability is calculated from the re-
sulting matrix as an average of all impact values on evolvability sub-
characteristics. Our approach differs from Bode and Riebisch’s approach in the
way the analysis of the relationship between patterns and quality requirements was
carried out; they use a particular case study and an evaluation by experts while our
approach is based on the analysis of the generic structures and behavior of tactics
and patterns. Besides, we consider more than one quality attribute in our analysis.
6 Conclusion and Future Work
In this paper, we proposed a quantitative approach to selecting architectural pat-
terns starting from a subset of quality requirements. This approach relies on a
quantitative assessment of the impact of architectural tactics on quality require-
ments, in the one hand, and the impact of incorporating these tactics in architec-
tural patterns, in the other hand. We illustrate the approach using four common
architectural patterns and assessing their support for both Security and Perfor-
mance quality requirements. Though this is a preliminary quantitative investiga-
tion of the architectural patterns when considering more than one quality require-
ment, we believe that it’s a key step towards a quality-driven architectural design
process.
In the future, we plan to extend the ontology in [23] to integrate our quantita-
tive approach to support the selection process of a set of tactics and patterns that
satisfies a set of quality attributes while considering the trade-offs among quality
attributes, tactics and patterns. Furthermore we plan to refine the approach in two
ways. First we would like to refine our analysis and results by considering sub-
characteristics of quality attributes (e.g. analyzing availability and confidentiality
as sub-characteristics of security). Second, the numerical value that is assigned to
a pattern regarding its support for a quality attribute depends on the selected sub-
set of tactics to achieve the targeted attribute. In this paper we derived this value
by considering all the tactics related to an attribute. However, in the future we
would like to give the opportunity to an architect to tune these values by consider-
ing or discarding alternative tactics. This will help to alleviate impacts of the pat-
tern whose choice was driven by a core of quality attributes on the other attributes.
REFERENCES
[1] Jansen J., van der Ven J., Avgeriou P., Hammer D.K., “Tool Support for using Architectural
Decisions”, In proceedings of the 6th Working IEEE/IFIP Conference on Software Architec-
ture (WICSA'07), Mumbai, India, 2007.
[2] Microsoft Application Architecture Guide: Patterns & Practices, 2nd Edition,
http://msdn.microsoft.com/en-us/library/ff650706.aspx.
[3] Garlan, D., Shaw, M., “An Introduction to Software Architecture”, Technical Report,
CMU, Pittsburgh, PA, USA, 1994.
[4] Avgeriou, P. and Zdun, U., “Architectural Patterns Revisited– a Pattern Language”, In Pro-
ceedings of 10th European Conference on Pattern Languages of Programs (EuroPLoP 2005),
pp. 1- 39, 2005.
[5] Garcia, A. F., and Rubira, C. M., “An Archietctural-based Reflective Approach to Incorporat-
ing Exception Handling into Dependable Software”, Advances in exception handling tech-
niques, vol. 2022, Springer-Verlag, pp. 189-206, 2001.
[6] Garcia, A. F., Rubira, C. M. F., Romanovsky, A. B., and Xu, J. A., “A Comparative Study of
Exception Handling Mechanisms for Building Dependable Object-Oriented Software”, Jour-
nal of Systems and Software vol. 59, Issue 2, pp. 197-222, 2001.
[7] Issarny, V., Benatre, J.-P., “Architecture-based Exception Handling”, In Proceedings of the
34th Annual Hawaii international Conference on System Sciences (Hicss-34), 2001.
[8] Bachmann, F., Bass, L., Nord, R., “Modifiability Tactics”, Technical Report, SEI, CMU/SEI
2007-TR-002, September 2007.
[9] Harrison, N., Avgeriou, P., Zdun, Uwe, “On the Impact of Fault Toler-
ance Tactics on Architecture Patterns”, In proceedings of 2nd International Workshop on
Software Engineering for Resilient Systems (SERENE 2010), London, UK, 2010.
[10] Buschmann, F., Meunier, R., Rohnert, H., Sommerlad, P., Stal, M., “Pattern-Oriented Soft-
ware Architecture: A System of Patterns”, John Wiley & Sons, 1996.
[11] Gamma, E., Helm, R., Johnson, R., Vlissides, J.M., “Design Patterns: Elements of Reusable
Object-Oriented Software systems”, Addison-Wesley, 1994.
[12] International Standard ISO/IEC 9126-1. (2001). Software engineering Product quality
Part 1: Quality model. ISO/IEC 9126-1:2001, 200.
[13] Bass, L., Clements, P., Kazman, R., “Software architecture in practice”, Addison-Wesley,
2003.
[14] Chung, L., Nixon, B.A., Yu, E., and Mylopoulos, J., “Nonfunctional Requirements in Soft-
ware Engineering”, Kluwer Academic Publishing, 2000.
[15] Harrison, N. B., Avgeriou, P., “How do architecture patterns and tactics interact? A model
and annotation”, Journal of Systems and Software, vol. 83, Issue 10, pp. 1735-1758, 2010.
[16] Gröne, B., and Keller F., “Conceptual architecture patterns”, FMC-based representation,
Potsdam: Univ.-Verl., 2004.
[17] Bode, S., Riebisch, M., “Impact Evaluation for Quality-Oriented Architectural Decisions
Regarding Evolvability”, The 4th European conference on Software architecture, pp.182-197,
2010.
[18] Wood, W. G., A Practical Example of Applying Attribute-Driven Design (ADD)”, Version
2.0. February 2007, Technical report CMU/SEI-2007-TR-005 ESC-TR-2007-005, 2007.
[19] Völter, M., Kircher M., Zdun U., “Remoting Patterns: Foundations of Enterprise, Internet
and Realtime Distributed Object Middleware”, Wiley, 2005.
[20] Shaw M., Garlan D., “Software Architecture: perspectives on an emerging discipline”, Pren-
tice Hall, 1996.
[21] Yoder J., Barcalow J., “Architectural Patterns for Enabling Application Security”, Proceed-
ings of Pattern Language of Programs conference, Allerton Park, Illinois, U.S.A, 1997.
[22] Boehm, B. W., Brown, J. R., & Lipow, M., Quantitative Evaluation of Software Quality,
The 2nd International Conference on Software Engineering, IEEE Computer Society, (pp.
592- 605), 1967.
[23] Kassab, M., “Non-Functional Requirements: Modeling and Assessment”, VDM Verlag Dr.
Mueller, ISBN 978-3-639-20617-3, 2009.
... Architects might face recurring issues in different software architecture design. For saving of huge cost and the reduction of risks, software architecture decisions can rely on a set of idiomatic patterns commonly named architectural styles or patterns [5]. A software architectural pattern defines a family of systems in terms of a pattern of structural organization and behavior [6]. ...
... In [15], the authors define an architectural tactic as an architectural transformation that affects the parameters of an underlying quality attribute model. "The structure and behavior of tactics is more local and low level than the architectural pattern and therefore must fit into the larger structure and behavior of patterns applied to the same system" [5]. Implementing a certain tactic within a pattern may affect the pattern by modifying some of its components, adding some components and connectors, or replicating components and connectors [5]. ...
... "The structure and behavior of tactics is more local and low level than the architectural pattern and therefore must fit into the larger structure and behavior of patterns applied to the same system" [5]. Implementing a certain tactic within a pattern may affect the pattern by modifying some of its components, adding some components and connectors, or replicating components and connectors [5]. This may yield to a final architectural structure that differs from the initial chosen pattern structure. ...
Article
Full-text available
Software architecture involves a series of decisions based on many factors in a wide range of software development. Architects face recurring issues in different software architecture design, and to reduce huge cost and risks, software architecture decisions can rely on a set of idiomatic patterns commonly named architectural styles or patterns. Architectural pattern determines the vocabulary of components and connectors that are used in instances of the pattern together with a set of constraints to combine the two. Little contemporary data exists to document actual practices used by software professionals when selecting and incorporating architectural patterns for their projects in industry. Therefore, a comprehensive survey of software professionals was conducted to attempt to discover these practices. This exploratory survey and its quantitative results offer opportunities for further interpretation and comparison. Data from this survey are presented in this paper and include characteristics of projects, practices, organizations, and practitioners related to the usage of architectural patterns. Some of the notable findings include that architectural patterns are widely used in software projects with the Model–View–Controller being the most common. Despite reported difficulties in incorporating architectural patterns, the majority of the software professionals revealed that patterns were the most essential for completing the projects. The most difficult pattern to implement and the most expensive to adopt was the peer-to-peer, while the easiest was the client–server.
... This The adoption of idempotency patterns in event producers has emerged as a critical success factor. Quantitative analysis of enterprise systems shows that properly implemented idempotency controls can reduce duplicate event processing by 91% and decrease data consistency issues by 84% [4]. ...
... The implementation of sophisticated error handling mechanisms in consumer systems has shown significant benefits. Research conducted across multiple enterprise implementations indicates that systems utilizing advanced retry mechanisms and dead letter queues achieve a 94% success rate in processing previously failed events, with 89% of these recoveries occurring without manual intervention [4]. ...
Article
Full-text available
This comprehensive article explores the evolution and implementation of Event-Driven Architecture (EDA) in modern enterprise systems. It explores the fundamental components, patterns, and best practices that enable organizations to build responsive and scalable applications. The article analyzes various aspects of EDA implementation, including message broker selection, schema design, and performance optimization strategies, while providing detailed insights into real-world applications across different industries. Through extensive analysis of deployment scenarios and performance metrics, the article demonstrates how EDA transforms traditional request-response patterns into dynamic, asynchronous communication models that significantly enhance system responsiveness, operational efficiency, and business outcomes.
... Kassab et al. [12] use a technique based on Softgoal Interdependency Graph (SIG) notations [6] to describe the relations between tactics and QA, specifying a quantitative evaluation according to the impact between tactics and QA [12]. ...
... Kassab et al. [12] use a technique based on Softgoal Interdependency Graph (SIG) notations [6] to describe the relations between tactics and QA, specifying a quantitative evaluation according to the impact between tactics and QA [12]. ...
Conference Paper
Cyber-Physical Systems (CPS) attract growing interest from architects and attackers, given their potential effect on privacy and safety of ecosystems and users. Architectural tactics have been proposed as a design-time abstraction useful to guide and evaluate systems design decisions that address specific system qualities, but there is little published evidence of how Security Tactics help to mitigate security threats in the context of Cyber-Physical Systems. This article reports the principled derivation of architectural tactics for an actual SCADA-SAP bridge, where security was the key concern; the key inputs were (1) a well-known taxonomies of architectural tactics, and (2) a detailed record of trade-offs among these tactics. The project architects used client-specified quality attributes to identify relevant tactics in the taxonomy, and information on their trade-offs to guide top-level decisions on system global shape. We venture that all architectural tactics taxonomies should be enriched with explicit trade-offs, allowing architects to compare alternative solutions that seem equally good on principle but are not so in practice.
... When designing software architectures, an architect relies on a set of idiomatic patterns commonly named architectural styles or patterns [15]. A software architectural pattern defines a family of systems in terms of a pattern of structural organization and behavior [10]. ...
... Implementing a certain tactic within a pattern may affect the pattern by modifying some of its components, adding some components and connectors, or replicating components and connectors [15]. This may yield to a final architectural structure that differs from the initial chosen pattern structure. ...
Conference Paper
Full-text available
Software in medical devices can be used in many ways to improve patient outcomes. Little contemporary data exists to document the actual practices used by software professionals for software engineering activities while building Software intensive medical devices. A carefully constructed survey has the potential to: 1) remedy the deficiency of lack of data and 2) to identify the software engineering best practices, which can then be disseminated. Two recent survey studies were conducted to explore the state of practice in Requirements Engineering and Software Architecture. Each survey attracted projects across a broad range of application domains. In this paper, we filter the reported projects from the two surveys with a focused scope on the software for medical devices projects. The results from our analysis of the filtered data are presented herein.
... Kassab et al. [31] developed a quantitative approach to assess the impact of architectural patterns on performance and security. They used matrix transformations to calculate how patterns support these quality attributes. ...
Preprint
Full-text available
Contemporary intelligent systems incorporate software components, including machine learning components. As they grow in complexity and data volume such machine learning systems face unique quality challenges like scalability and performance. To overcome them, engineers may often use specific architectural patterns, however their impact on ML systems is difficult to quantify. The effect of software architecture on traditional systems is well studied, however more work is needed in the area of machine learning systems. This study proposes a framework for quantitative assessment of architectural patterns in ML systems, focusing on scalability and performance metrics for cost-effective CPU-based inference. We integrate these metrics into a systematic evaluation process for selection of architectural patterns and demonstrate its application through a case study. The approach shown in the paper should enable software architects to objectively analyze and select optimal patterns, addressing key challenges in ML system design.
... Another way to relate ADDs with QAs is the use of architectural tactics-see, for instance, [5,33] and [23]-or by combining requirements goal models with component diagrams [40]. Finally, other works like CoCoADvISE [30] introduce a reusable architectural decision meta-model which integrates design solutions (i.e. ...
Article
Full-text available
Over the past 10 years software architecture has been perceived as the result of a set of architecture design decisions rather than the elements that form part of the software design. As quality attributes are considered major drivers of the design process to achieve high quality systems, the design decisions that drive the selection and use of specific quality properties and vice versa are closely related. Consequently, quality attributes must play a role for decision making processes and be documented alongside the decisions captured. Consequently, we conduct a systematic literature review to study the importance and impact of the relationships between quality attributes and architecture design decisions and to what extent existing architecture knowledge management methods and tools deal with the decisions that affect the quality of a system. We also report on the challenges and future research paths for architectural knowledge management methods and tools. Our results reveal important explicit relationships between both software artifacts, the role of uncertainty in decision making and empirical studies reporting the use of quality attributes in architecture knowledge management activities.
... In the domain of architectural patterns, Kassab, El-Boussaidi & Mili (2012) analyzed the impact of the patterns Pipes and Filters, Layers, Model View Controller, and Broker on the two QAs performance and security. They determined the quantitative effect of patterns on QAs via the proxy of architectural tactics. ...
Article
Full-text available
Background: Design patterns are supposed to improve various quality attributes of software systems. However, there is controversial quantitative evidence of this impact. Especially for younger paradigms such as service- and Microservice-based systems, there is a lack of empirical studies. Objective: In this study, we focused on the effect of four service-based patterns—namely Process Abstraction, Service Façade, Decomposed Capability, and Event-Driven Messaging—on the evolvability of a system from the viewpoint of inexperienced developers. Method: We conducted a controlled experiment with Bachelor students (N = 69). Two functionally equivalent versions of a service-based web shop—one with patterns (treatment group), one without (control group)—had to be changed and extended in three tasks. We measured evolvability by the effectiveness and efficiency of the participants in these tasks. Additionally, we compared both system versions with nine structural maintainability metrics for size, granularity, complexity, cohesion, and coupling. Results: Both experiment groups were able to complete a similar number of tasks within the allowed 90 min. Median effectiveness was 1/3. Mean efficiency was 12% higher in the treatment group, but this difference was not statistically significant. Only for the third task, we found statistical support for accepting the alternative hypothesis that the pattern version led to higher efficiency. In the metric analysis, the pattern version had worse measurements for size and granularity while simultaneously having slightly better values for coupling metrics. Complexity and cohesion were not impacted. Interpretation: For the experiment, our analysis suggests that the difference in efficiency is stronger with more experienced participants and increased from task to task. With respect to the metrics, the patterns introduce additional volume in the system, but also seem to decrease coupling in some areas. Conclusions: Overall, there was no clear evidence for a decisive positive effect of using service-based patterns, neither for the student experiment nor for the metric analysis. This effect might only be visible in an experiment setting with higher initial effort to understand the system or with more experienced developers.
Article
Full-text available
Distributed systems form the backbone of our modern digital infrastructure, powering everything from global financial transactions to streaming services and real-time communications. As these systems evolve from simple client-server architectures to complex interconnected components spanning multiple geographic regions, they face transformative trends and significant challenges. Edge computing, serverless architectures, AI-driven operations, data mesh principles, chaos engineering, and sustainability initiatives are reshaping how distributed systems are designed and operated. Meanwhile, organizations must navigate expanding security concerns, complex regulatory requirements, growing operational complexity, and interoperability challenges. This article explores the future landscape of large-scale distributed systems, offering insights into how forward-thinking organizations can leverage emerging patterns and technologies to deliver more responsive, reliable, and efficient services while maintaining security and environmental responsibility in an increasingly connected world.
Article
Full-text available
Architecture-based development environments are becoming an effective solution towards the construction of robust distributed systems. Through the abstract description of complex software systems configurations in terms of the interconnection of software elements at the interface level, software reuse and evolution get promoted. In addition, as shown by research results from the software architecture domain, it becomes feasible to provide formal notations for the precise description of configuration behavior, together with associated CASE tools for their automated analyses. However, little attention has been paid to software fault tolerance and in particular exception handling in that context, although this is crucial for achieving software robustness. This paper investigates the design and implementation of exception handling support for architecture-based development environments. After a survey of the issues raised by exception handling at the level of software architecture description, we introduce an exception handling facility for architecture-based software systems, addressing the resulting extension to architecture description languages and the mapping to implementation of software architectures embedding exception handling.
Article
Full-text available
One important way that an architecture impacts fault tolerance is by making it easy or hard to implement tactics that improve fault tolerance. Information about how the implementation of fault tolerance tactics affects the architecture patterns of a system should be useful to architects during architectural design in selecting optimal fault tolerance tactics and architecture patterns. In order to understand more about how useful this information can be, we performed an informal study of teams designing fault tolerance tactics in an architecture. One group used information about the interaction of tactics and architecture patterns; the other did not. We observed that the group with the information produced better quality architectures, and were able to better estimate the difficulty of implementing the tactics. We recommend that information about the interaction of tactics and architecture patterns be made available to architects, particularly those with less familiarity about fault tolerance tactics.
Article
This report describes an example application of the Attribute-Driven Design (ADD) method developed by the Carnegie Mellon Software Engineering Institute. The ADD method is an approach to defining a software architecture in which the design process is based on the quality attribute requirements the software must fulfill. ADD follows a recursive process that decomposes a system or system element by applying architectural tactics and patterns that satisfy its driving quality attribute requirements. The example in this report shows a practical application of the ADD method to a client-server system. In particular this example focuses on selecting patterns to satisfy typical availability requirements for fault tolerance. The design concerns and patterns presented in this report-as well as the models used to determine whether the architecture satisfies the architectural drivers-can be applied in general to include fault tolerance in a system. Most of the reasoning used throughout the design process is pragmatic and models how an experienced architect works.