Professional Documents
Culture Documents
Chapter 6 Assignment
Chapter 6 Assignment
WOLLO UNIVERSITY
Name Id
Contents
Chapter 6 .................................................................................................................................................. 1
Software Architecture Evolution .............................................................................................................. 1
6.1 Introduction ............................................................................................................................. 1
6.2 Component-Based Software Architecture: Concepts and Open Issues ................................... 2
6.2.1 Architecture Specification and Analysis ........................................................................... 2
6.2.2 System Configuration and Code Generation ................................................................... 3
6.2.3 Architecture Centric integrated Development Enviroment ............................................ 4
6.2.4 Evaluation: Managing Software Architecture Evolution ................................................ 5
6.3 Dynamic Software Architecture Description ............................................................................ 6
6.3.1 Explicit Specification of Software Architecture Dynamics .............................................. 6
6.3.2 Evaluation ......................................................................................................................... 7
6.3.3 Frame for Dynamic Software Architecture ...................................................................... 8
6.4 Aspect-Oriented Architectures Description Language ........................................................... 10
6.4.1 Issue................................................................................................................................ 10
6.4.2 Using Aspects in Architectural Description ................................................................... 11
6.4.3 Evaluation ....................................................................................................................... 12
6.5 The Safe Integration of New Concerns in a Software Architecture ....................................... 13
6.5.1 Overview of Tran SAT .................................................................................................... 13
6.5.2 Integrating a Session Expiration Concern using TranSAT framework ........................... 14
6.5.3 Issue................................................................................................................................ 14
6.5.4 A Specific Language for Software Architecture Transformation ................................. 15
6.5.5 Static Verification of Transformation .......................................................................... 17
6.6 Dynamic Verification .............................................................................................................. 18
6.7 Assessment............................................................................................................................. 19
6.8 References .............................................................................................................................. 21
Group 1 Page i
Software Architecture Evolution
Chapter 6
6.1 Introduction
Group 1 Page 1
Software Architecture Evolution
The software architecture of a system defines its structure and behavior at a high level. It
includes software components, their connections, and how they interact behaviorally.
Developing a software architecture enhances system comprehension and aids in the design
process. Architectural Description Language (ADL) is used to describe software architectures.
Group 1 Page 2
Software Architecture Evolution
is a formal language used to describe network topologies and software architecture in dynamic
distributed systems. It specifies the behavior of the system using Finite State Process (FSP)
Languages. A succinct description of Labelled Transition Systems (LTSs) may be found in
FSP.
According to the Fractal component model, there are two types of components: composites,
which are merely used as a way to combine components into a whole, and primitives, which
contain actual code. An XML-based ADL with constructs to define component types,
primitive templates, and composite templates is offered by Fractal. An implementation can be
made via a tool that parses a Fractal ADL specification and instantiates the relevant
components. A Java package called Julia is one of the Fractal implementations that makes it
possible to specify and modify components and architectures at runtime. Primitives in Julia
can be regular Java classes that follow certain coding guidelines.
A framework for creating applications with basic and composite software components is
offered by SOFA (Software Appliances). A component's architecture and frame serve as
descriptions. The architecture is an abstract implementation, and the frame is a component
interface. A frame, which can be implemented by multiple architectures, defines the services
that the component provides and needs. By instantiating direct subcomponents and defining
the links between them, a composite's architecture explains the component's structure. A
primitive only has an implementation, which could be binary, and no architecture. Component
Definition Language (CDL), a text-based ADL offered by SOFA, is derived from OMG IDL.
Group 1 Page 3
Software Architecture Evolution
This ADL allows specifying the communication among SOFA components and embeds a
process algebra called behavior protocols to express the behavior of each component. The
ADLs ArchJava and Fractal provide a tight link between the architecture and the
implementation, but unlike Darwin or Wright do not provide any facilities for behavior
specification and analysis. Indeed, the only check on the interaction between components is to
ensure that connected ports provide and require services with compatible signatures. The
language CDL used with SOFA, however, additionally allows specifying behavior protocols
in terms of regular expressions on sequences of events, which constrains the set of admissible
traces of the component.
ArchStudio,
AcmeStudio,
SafArchie.
1. Arch Studio
2. Acme Studio
Group 1 Page 4
Software Architecture Evolution
It allows the designer to define new Acme families and customize the environment to work
with those families by defining diagram styles.
3. SafArchie Studio
It allows a designer to describe an architecture and then to check its properties using either a
built-in model checker or the verification tool LTSA. Finally, it can generate code for use with
Arch Java or Fractal.
Group 1 Page 5
Software Architecture Evolution
A running system often diverges from its initial architecture due to new components and
interactions. To effectively handle these changes, it is important to document and analyze the
potential alterations that can occur. Two main categories of approaches exist for addressing
system dynamics at the architectural level: explicit specification of all possible evolutions or
defining the space of potential evolutions.
The first solution to express the dynamics of a software architecture was an extension of
Wright. This extension utilizes the behavior notation of Wright to model reconfiguration. It
allows architects to view the architecture as a series of architectural snapshots, each with its
own steady-state behavior.
B. Fractal/FScript
The execution model of Fractal is flexible, allowing for dynamic instantiation of components
and bindings at runtime, as well as changing the configuration of a composite. However, the
Fractal ADL limits the expression of system instantiation to a single instance, defining how
components are connected.
Group 1 Page 6
Software Architecture Evolution
C. ArchJava
ArchJava, described before the above lesson enables dynamic instantiation and connection of
statically defined components. Components have a parent component and adhere to
communication integrity. Interaction between subcomponents is documented using a
connection pattern, but ArchJava does not support explicit destruction of components or
connectors.
D. AADL
An international standard called AADL (Architecture Analysis & Design Language) is used in
model-based engineering for embedded and real-time applications. It is aimed at the
automotive, avionics, and space industries and draws inspiration from MetaH.
6.3.2 Evaluation
This section discusses languages that explicitly represent dynamic architectures. These
languages are based on a limited version of the CRUD primitives, allowing for the creation
and deletion of components or connections.
However, the reconfiguration policies are separate from the software architecture for
Fractal/FScript and AADL, but are intertwined with the components for ArchJava and
Group 1 Page 7
Software Architecture Evolution
partially for Wright. Additionally, these languages have different goals in describing
dynamics.
A. UML 2.0
UML 2.0 allows for the specification of logical components, both at the level of business and
process components, through the composite structure diagram.
The deployment diagram, on the other hand, is used to represent deployed components such as
artifacts and nodes. The system is modeled as a hierarchical structure of nested components
that provide and require interfaces.
Decomposition is supported through the use of structured classifiers, which can be internally
decomposed into classes, collaboration, and components.
The diagram represents a component as a self-contained unit that encapsulates the state and
behavior of a set of classifiers, with its own behavior specification and contract of
provided/required services. The relationships between components are represented by
connectors and ports. This type of diagram is particularly useful in designing software
architectures, where the variability of the architecture is confined within the subcomponents.
The connections between component instances must match the connection patterns declared in
the enclosing component between component types. However, UML 2.0 does not provide a
framework to illustrate the dynamics of the software architecture in cases where the nested
hierarchy is modeled with fixed cardinality instances.
B. Saf Archie
Group 1 Page 8
Software Architecture Evolution
Saf Archie defines architecture types, which enforce constraints on component interfaces and
their interactions.
These types are used to ensure compatibility between components. An architecture type
consists of port types, component types, composite types, bindings, operations, and attributes.
Port types specify desired operations, component types define port types and their cardinality,
and composite types determine component types and their cardinality. Bindings enable
interactions between port types within composite types. Typed software architectures must
adhere to these constraints.
C. ACL
Tibermacine and his colleagues propose an Architectural Constraint Language (ACL) that
allows for the formal description of architectural choices in the component-based software
development process.
ACL is based on the UML's Object Constraint Language (OCL) but modifies the syntax and
semantics to limit the scope of constraints to specific components. Each constraint context in
ACL introduces an identifier corresponding to the name of an instance in the meta-class
context. ACL interprets constraints based on the meta-class context, but restricts them to the
specified instance. This enables components to define their own structural constraints. Unlike
OCL, ACL only expresses invariants and does not include pre- and post-conditions. By using
ACL, architects can define a set of invariants that all system configurations must adhere to,
providing a framework for software architecture.
Compared to using UML 2.0 or SafArchie, ACL allows for more precise constraints and is
easier for designers to define and understand compared to formal languages like OCL.
D. Arch Studio
Group 1 Page 9
Software Architecture Evolution
Arch Studio introduces constraints to restrict runtime changes that compromise system
integrity. These constraints confine the set of changes and specify when they may occur. Arch
Studio supports transactional modifications, with the constraints checked only at the end,
allowing the system architecture to be temporarily in an invalid state.
However, there are limitations with current approaches. Firstly, there is a lack of connection
with component-based platforms, as existing models do not combine a scripting language with
architecture checks to evaluate evolutions. Secondly, defining valid architectures with
constraints or architecture types often results in an infinite number of possibilities, making it
impossible to check the correctness of all architectures using current model checkers.
6.4.1 Issue
An early version of ArchStudio proposes a method to restrict runtime changes that
compromise system integrity. This is achieved through the use of constraints, which confine
the types and timing of changes that can occur.
Arch Studio supports transactional modifications, where constraints are checked only at the
end of a transaction, allowing the system to be temporarily in an invalid state. However, there
are two main limitations with these approaches. Firstly, there is a lack of integration with
component-based platforms, as no approach combines scripting language with architectural
constraints. Secondly, the number of valid architectures defined by constraints or architecture
types can be infinite, making it impossible to evaluate all of them using current model
checkers.
Group 1 Page 10
Software Architecture Evolution
A. IEEE 1471
IEEE 1471 is a formal standard that defines what an architectural description (AD) is for
software-intensive systems. It was developed by the IEEE Architecture Working Group
between 1995 and 2000 and later became a draft international standard. This standard
emphasizes the separation of concerns in software architecture description.
The framework establishes content requirements for an architectural description and specifies
how it should be organized and its information content. It is method-neutral and notation-
independent, allowing it to be used with a variety of existing and new architectural methods
and techniques. An AD in IEEE 1471 consists of a collection of products used to document an
architecture. It is governed by a set of rules that define its conformance to the standard. The
framework also identifies architectural concerns such as functionality, security, performance,
and reliability, which are considered as aspects managed at the design stage.
Architectural views in an AD are representations of the whole system from the perspective of
a set of concerns. Each view is governed by an architectural viewpoint, which provides
conventions and rules for constructing, interpreting, and analyzing the view. Stakeholder
concerns must be covered by at least one architectural viewpoint, otherwise, the AD is
considered incomplete.
While IEEE 1471 does not propose the use of Aspect-Oriented Modelling for composing
views, it recognizes the importance of stakeholder management and the separation of concerns
in software architecture description. It provides a conceptual framework that can be combined
with other tools and methods to support aspect-oriented software development.
B. Aspect-Oriented ADLs
Several ADLs have been developed to enhance modularity and component reusability by
integrating Aspect-Oriented (AO) abstractions. These abstractions, such as aspects, join
points, point cuts, and advice, address the modeling of crosscutting concerns. Cross cutting
Group 1 Page 11
Software Architecture Evolution
The aspectual component interface includes a glue clause, base roles, and crosscutting roles,
specifying how the aspectual component affects regular components. Fractal Aspect
Component (FAC) extends the Fractal ADL by introducing Aspect Components (AC) to
specify crosscutting concerns. ACs can affect components through a special interception
interface, with bindings between components and ACs defined either directly or using pointcut
expressions.
PRISMA takes a symmetrical approach where functionality and aspects are treated equally,
with aspects representing specific behaviors of concerns that crosscut the software
architecture. PRISMA provides a homogeneous treatment of functional and non-functional
requirements. Aspects are considered first-order citizens in software architectures.
6.4.3 Evaluation
The lack of consensus among existing approaches regarding the definition of aspects in
software architecture is highlighted in this section. Some approaches view aspects as
components, while others consider them as a type of component or as components composed
of aspects. However, it is generally agreed upon that the semantics of composition should be
expanded to incorporate aspects into an Architecture Description Language (ADL). In
software architecture, software connectors facilitate interactions between components, and
numerous approaches modify the semantics of connectors to accommodate the principles of
Aspect-Oriented Software Development (AOSD) in architecture descriptions.
AOSD not only assists in separating concerns during software development but also helps
address issues related to software evolution. Enhancing separation at the architecture level can
Group 1 Page 12
Software Architecture Evolution
enable coordination between various stakeholders and allow for independent modification of
concerns.
The AOSD evolution paradox emphasizes how the evolution of a concern can disrupt the
consistency of the software architecture. Ensuring consistency when modifying the base
architecture with an aspect is a crucial concern in the software architecture community. To
explore this problem and propose a potential solution, the framework TranSAT is introduced
for in-depth study, which facilitates the integration of new concerns in a software architecture
incrementally.
Tran SAT aims to streamline the integration process while minimizing disruptions and risks
to the system's functionality and integrity.
Group 1 Page 13
Software Architecture Evolution
6.5.3 Issue
Integrating a Session Expiration Concern using the Tran SAT framework may lead to various
issues. These include dependency conflicts, which can create challenges and runtime issues.
Performance may be impacted if session expiration mechanisms are not optimized or
Group 1 Page 14
Software Architecture Evolution
thoroughly tested. Changes related to session expiration can also affect user experience and
require careful design and validation. Improper implementation could introduce security risks
like session hijacking. Integrating session expiration into the existing architecture may require
significant effort and coordination. Additionally, ongoing maintenance and updates may
increase system complexity.
The Join Point Mask is a tool used in software architecture transformation. It helps identify
specific points within the architecture where transformations should be applied. It acts as a
filter, selecting relevant components, connectors, interactions, or other elements for
transformation. The mask uses criteria or patterns to determine what should be transformed.
These criteria can be based on attributes like component types, interface properties,
communication protocols, or data flow patterns. The mask can operate at different levels of
granularity within the architecture, targeting individual elements, groups, or entire subsystems.
It should be flexible enough to handle different scenarios, allowing for complex conditions
using logical operators, pattern matching, or custom predicates. It is important for the mask
language to be expressive and easily understood by architects, designers, and developers
involved in the process.
A Specific Language for Software Architecture Transformation involves transformation rules
that govern architectural changes. These rules have key aspects:
Group 1 Page 15
Software Architecture Evolution
Purpose: The rules aim to achieve specific goals like improving performance,
enhancing scalability, ensuring standards compliance, and addressing architectural
concerns.
Conditions: Each rule has conditions based on architectural properties, system states,
context information, or user-defined constraints that must be satisfied for the rule to be
applied.
Actions: The rules specify actions like adding/removing components, modifying
interfaces, adjusting configurations, optimizing algorithms, or reorganizing system
structure when conditions are met.
Order of Application: Rules may specify the order of application to ensure the correct
sequence of transformations and avoid conflicts or inconsistencies.
Dependencies: Rules may have dependencies on other rules or external factors, which
must be managed for a coherent transformation process.
Validation and Verification: Rules should be validated and verified for correctness,
completeness, and effectiveness through testing, simulation, or formal techniques.
Documentation and Explanation: Clear documentation and explanations of each rule's
purpose, rationale, and impact on the architecture help stakeholders understand them.
Computation transformation primitives are essential operations in software architecture
transformation. They focus on modifying computational aspects of the architecture, including
components' behavior, operations, and interfaces. These primitives serve the purpose of
introducing changes in the computational behavior of architectural elements. They enable
architects and developers to modify component interaction, data processing, and operations
within the software system.
There are several types of computation transformation primitives, such as creating ports to
facilitate communication, defining new operations to enhance functionality, replacing existing
operations to modify behavior while maintaining compatibility, destroying ports when they are
no longer needed, and moving operations within components for reorganization and
optimization.
Group 1 Page 16
Software Architecture Evolution
These primitives are integrated with transformation rules to implement specific changes or
actions in the transformation process. They can operate at different levels of granularity, from
fine-grained operations like creating or destroying individual ports to coarse-grained actions
like redefining entire component behaviors.
Interaction transformation primitives are essential components in a language for software
architecture transformation. They manage interactions between components, communication
protocols, and composite content. Their purpose is to modify interactions, communication
protocols, and composite structures within the software architecture.
They can manage component bindings by creating, modifying, or deleting bindings and
establishing communication paths. They can also modify or replace communication protocols
and mechanisms used for inter-component communication.
Group 1 Page 17
Software Architecture Evolution
Syntactic Correctness: Verifying that transformation rules adhere to the syntax rules
of the language, ensuring proper structure, valid expressions, and absence of syntax
errors.
Semantic Consistency: Checking that transformation rules are logically correct,
meaningful, and do not contain contradictory or nonsensical rules.
Type Compatibility: Ensuring that types used in transformation rules match
appropriately, such as validating operations on architectural elements for validity and
type-safety.
Rule Conformance: Validating that transformation rules comply with the language's
rules and specifications, including proper usage of language features and adherence to
transformation guidelines.
Constraint Validation: Checking that constraints specified in transformation rules are
satisfied by the target architecture, verifying preconditions, post conditions, invariants,
and other specified constraints.
Invariant Preservation: Ensuring that transformation rules preserve invariants and
architectural properties before and after applying transformations, avoiding violations
of system invariants or inconsistencies in the architecture.
Execution-Based Testing: Transformation rules are executed and their effects on the
system's behavior, structure, and performance are observed. This can be done using
real system instances, simulated environments, or test beds designed for dynamic
testing.
Test Scenarios: Different aspects of the architecture undergoing transformation are
tested by defining test scenarios and input data. This includes covering various use
cases, system states, edge cases, and performance benchmarks.
Group 1 Page 18
Software Architecture Evolution
Observation and Analysis: Developers observe and analyze the system's behavior and
outputs to assess the impact of transformations. This includes monitoring changes in
functionality, performance metrics, resource utilization, and compliance with
architectural constraints.
Validation Criteria: Validation criteria and expected outcomes are defined for
dynamic verification tests. This includes specifying desired system behaviors,
performance targets, functional correctness, and compliance with transformation rules
and architectural requirements.
Performance Testing: Performance testing is included to assess the impact of
transformations on system performance, scalability, responsiveness, and resource
utilization, identifying bottlenecks and potential degradation.
Integration Testing: Dynamic verification is integrated with other testing processes to
ensure end-to-end validation of architectural transformations within the software
development lifecycle.
6.7 Assessment
Group 1 Page 19
Software Architecture Evolution
Group 1 Page 20
Software Architecture Evolution
6.8 References
Group 1 Page 21