Analyzing Software Evolvability of An Industrial Automation Control System
Analyzing Software Evolvability of An Industrial Automation Control System
{ivica.crnkovic, rikard.land}@mdh.se
respect to evolvability; and (ii) perform architectural
Abstract transformation. It is generally acknowledged that the
Evolution of software systems is characterized by software’s architecture holds a key to the possibility to
inevitable changes of software and increasing software implement changes in an efficient manner [1].
complexity, which in turn may lead to huge Therefore, in this paper, we analyze evolvability at the
maintenance and development costs. For long-lived architecture level and identify the evolvability
systems, there is a need to address evolvability (i.e. a subcharacteristics of interest in an industrial case study,
system’s ability to easily accommodate changes) where a large automation control system at ABB was
explicitly in the requirements and early design phases, evolved from a monolithic architecture towards a
and maintain it during the entire lifecycle. This paper product line. We present our experiences of the
describes our work in analyzing and improving the development of the product line architecture in the
evolvability of an industrial automation control system, form of a general method, which we have constructed
and presents 1) evolvability subcharacteristics based from data in the manner of grounded theory research
on the problems in the case and available literature; 2) [25]. In addition, the risk of bias has been further
a structured method for analyzing evolvability at the decreased through the involvement of other researchers
architectural level - the ARchitecture Evolvability in the analysis of the experiences.
Analysis (AREA) method. This paper includes also the The remainder of this paper is structured as follows.
main analysis results and our observations during the Section 2 describes the context of the case study.
evolvability analysis process in the case study. The Section 3 presents our architecture evolvability analysis
evolvability subcharacteristics and the method should method - AREA. Section 4 presents the case study, in
be generally applicable, and they are being validated which the method was applied to analyze, evaluate and
within another domain at the time of writing. improve the software architecture of the automation
1. Introduction controller software system. Section 5 discusses the
Studies indicate that more than 50% of the total life experiences we gained through the case study. Section
cycle cost is spent after the initial development [18]. 6 reviews related work. Section 7 concludes the paper.
Therefore, it becomes essential to cost-effectively carry 2. Context of the Case
out software evolution. In order to prolong the This section presents the case to motivate
productive life of a software system, the need to evolvability analysis and describe seven evolvability
explicitly address software evolvability is becoming subcharacteristics from the case perspective.
recognized [6]. There are examples of industrial
systems with a lifetime of 20-30 years. These systems
2.1 Motivating Evolvability Analysis
are subject to and may undergo a substantial amount of The case study was based on a large automation
evolutionary changes, e.g. shifting business and control system at ABB and focused on the latest
organizational goals, software technology changes, generation of the controller. The controller software
software systems merge due to organizational changes consists of more than three million lines of code written
[16], demands for distributed development, system in C/C++ and uses a complex threading model, with
migration to product line architecture, etc. The support for a variety of different applications and
evolution problems we have observed came from devices. It has grown in size and complexity, as new
various cases in industrial context, where evolvability features and solutions have been added to enhance
was identified as a very important quality attribute that functionality and to support new hardware, such as
must be maintained. In order to preserve and improve devices, I/O boards and production equipment. Such a
evolvability, we need to (i) analyze the system with complex system is difficult to maintain. It is also
important and considerably more difficult to evolve. must have the capability to be analyzed and explored in
Due to different measures such as organizational and terms of the impact to the software by introducing a
lifecycle process improvements, the system keeps the change.
maintainability, but the evolvability becomes more Architectural Integrity A strategy for communicating
difficult since the increased complexity in turn leads to architectural decisions that we found out from various
decreased flexibility, resulting in problems to add new case studies was to appoint members of the core
features. Consequently, it becomes costly to adapt to architecture team as technical leaders in the
new market demands and penetrate new markets. development projects. However, this strategy although
Our particular system is delivered as a single helpful to certain extent, did not completely prevent
monolithic software package, which consists of various developers from insufficient understanding and/or
software applications developed by distributed misunderstanding of the initial architectural decisions,
development teams. These applications aim for specific resulting in unconscious violation of architectural
tasks in painting, welding, gluing, machine tending and conformance. This may lead to evolvability
palletizing, etc. To keep the integration and delivery degradation in the long run. Therefore, it is important
process efficient, the initial architectural decision was to record rationale for each design decision, strategy
to keep the deployment artifact monolithic. The and architectural solution.
complete set of functionality and services is present in Changeability Due to the monolithic characteristic of
every product even though not everything is required in the controller software, modifications in certain parts of
the specific product. As the system grew, it became the software package lead to some ripple effects, and
more difficult to ensure that the modifications of requires recompiling, reintegrating and retesting of the
specific application software do not affect the quality whole system. This results in inflexibility of patching
of other parts of the software system. As a result, it and customers have to wait for a new release even in
became difficult and time-consuming to modify case of corrective maintenance and configuration
software artifacts, integrate and test products. To changes. Therefore, it is strongly required that the
continue exploiting the substantial software investment software system must have the ease and capability to be
made and to continuously improve the system for changed without negative implications or with
longer productive lifetime, it has become essential to controlled implications to the other parts of the
explicitly address evolvability, since software software system.
evolvability is a fundamental element for increasing Portability The current controller software supports
strategic and economic value of the software [28]. The VxWorks and Microsoft Windows NT. There is a need
inability to effectively and reliably evolve software of openness for choosing among different operating
systems means loss of business opportunities [2]. system (OS) vendors, e.g. Linux and Windows CE, and
2.2 Evolvability Subcharacteristics from Case possibly new OS in the future.
Perspective Extensibility The current controller software supports
around 20 different applications that are developed by
In our previous work [21], we have identified
several distributed development centers around the
subcharacteristics that are of primary importance for an
world. To adapt to the increased customer focus on
evolvable software system. Definitions and detailed
specific applications and to enable establishment of
explanations of evolvability subcharacteristics are
new market segments, the controller, like any other
provided in [21]. The derivation of evolvability
software systems, must constantly raise the service
subcharacteristics are based on survey and analysis of
level through supporting more functionality and
literatures (see related work section), problems we have
providing more features [4], while keeping some
observed and experiences from several earlier case
important extra-functional properties, such as
studies. We do not exclude the possibilities that other
performance, or reliability.
domains or cases might have slightly extended set of
Testability The controller software exposed huge
subcharacteristics. Each subcharacteristic is explained
number of public interfaces which resulted in
below in conjunction with the case.
tremendous time merely on interface tests. One task
Analyzability The release frequency of the controller
was therefore to reduce the public interfaces to around
software is twice a year, with around 40 various new
10% of the original public interfaces. Besides, due to
major requirements that need to be implemented in
the monolithic characteristic, error corrections in one
each release. These requirements have impact on
part of the software requires retesting of the whole
different attributes of the system, and the possible
system. One issue was therefore to investigate the
impact must be analyzed before the implementation of
feasibility of testing only modified parts.
the requirements. This requires that the software system
Domain- specific attributes The controller software This phase focuses on the identification and
has critical real-time calculation demands. It is also improvement of the components that need to be
expected to reduce the base software code size and refactored.
runtime footprint. Step 2.1: Extract architectural constructs related to the
3. Overview of the ARchitecture respective identified requirement.
Evolvability Analysis (AREA) Method We mainly focus on architectural constructs that are
related to each identified requirement. In order for the
The steps that we performed in the case are divided architecture to allow changes in the software without
into three main phases as shown in Figure 1. compromising software integrity and to evolve in a
Phase 1: Analyze the implications of change stimuli on controlled way, documentation of architectural
software architecture. decisions and their rationale play a key role.
This phase analyzes the architecture for evolution and Step 2.2: Identify refactoring components for each
understands the impact of change stimuli on the current identified requirement.
architecture. Software evolvability concerns both In this step, we identify the components that need
business and technical issues [29], since the stimuli of refactoring in order to fulfill the prioritized
changes come from both perspectives, e.g. requirements.
environment, organization, process, technology and Step 2.3: Identify and assess potential refactoring
stakeholders’ needs. These change stimuli have impact solutions from technical and business perspectives.
on the software system in terms of software structures Refactoring solutions are identified and design
and/or functionality. decisions are taken in order to fulfill the requirements
Step 1.1: Identify potential requirements in the derived from the first phase. The change propagation of
software architecture. the effect of refactoring need to be considered and
Any change stimulus results in a collection of potential provided as an input to the business assessment,
requirements that the software architecture needs to estimating the cost and effort on applying refactorings.
adapt to. The aim of this step is to extract these In some cases, the refactoring of a certain component is
requirements that are essential for software architecture straightforward if we know how to refactor with only
enhancement so as to cost-effectively accommodate to local impact. When the implementation is uncertain
change stimuli. Architecture workshops can be and might affect several subsystems or modules,
conducted, where the stakeholders discuss and identify prototypes need to be made to investigate the feasibility
the potential architecture requirements. Each of potential solutions as well as the estimation of
requirement is concretized with a collection of implementation workload. As part of this step, an
identified refined activities. Afterwards, each identified assessment regarding the compatibility of the
requirement must be checked against the evolvability refactoring solutions and rationale with earlier made
subcharacteristics so as to ensure the consistency and design decisions is made to ensure architectural
completeness. integrity.
Step 1.2: Prioritize potential requirements in the Step 2.4: Define test cases.
software architecture. New test cases that cover the affected component,
In order to establish a basis for common understanding modules or subsystems need to be identified.
of the architecture requirements among stakeholders Phase 3: Finalize the evaluation.
within the organization, all the potential requirements In this phase, the previous results are incorporated,
identified from the first step need to be prioritized. We analyzed and structured into a collection of documents.
do not propose any general criteria for requirement Step 3.1: Analyze and present evaluation results.
prioritization that apply to all the software systems The evaluation results include (i) the identified and
evolution, since the criteria might be different from prioritized requirements on the software architecture;
case to case depending on factors such as development (ii) the identified components/modules that need to be
and organizational constraints, the probability of refactored for enhancement or adaptation; (iii)
potential requirements becoming mandatory refactoring investigation documentation which
requirements that the architecture must adapt to, etc. describes the current situation, rationale and solutions
Phase 2: Analyze and prepare the software to each identified candidate that need to be refactored,
architecture to accommodate change stimuli and including estimated workload; (iv) test scenarios; and
potential future changes. (v) impact analysis on evolvability.
Figure 1. The steps of the ARchitecture Evolvability Analysis (AREA) method