Professional Documents
Culture Documents
With increasing number of product variants arising from the need of local modifi-
cations at different customer sites, a simple software library is not effectively filling
its purpose anymore [9]. Individual variants inherently have their distinctive charac-
teristics, which need to be considered during maintenance and updates of the system.
Thus, leading to increased costs and decreased quality [7]. To control this additional
complexity of variability while still achieving the benefits of systematic software
reuse, Software Product Line Engineering (SPLE) was developed. Before covering
the concept of SPLE, first some essential terms are explained.
parameterization.
2.1.3 Variant
Pohl et al. [15] defines a variant as a representation of variability within artifacts
in which variability means the ability to change. A variant is a single choice in a
variation point. For example, in the context of a car, a variation point could be the
color of a car whereas variants could be then red (car) and green (car). A variant can
also be defined as a complete product or a system in a product line, which consists
of a set of artifacts [18]. Both definitions are used in this thesis depending on the
context.
model comparison and merging. Yoshimura et al. [24] introduced an approach for
detecting variability in software products from change history. Furthermore, similar
tools have been proposed in industrial automation research. For example, Schlie et al.
[5] proposed a framework for comparing PLCopen1 projects in Extensible Markup
Language (XML) form and visualizing the produced results.
Besides managing and creating core assets through variability management, core
asset development involves defining product line scopes and production plans [14].
The product line scope encompasses all the products that construct the product
line, while the production plan outlines how these products are generated from the
core assets. These three outputs are then utilized in product development. In this
thesis, individuals involved in the core asset development are referred to as platform
engineers, while application engineers are responsible for the product development.
Figure 4: Feature models used as a method for deriving products from a common
platform [7].
1
https://www.plcopen.org
20
2.2.3 Management
Management activity in SPLE is divided into technical and organizational manage-
ment [14]. Technical management oversees the activities of the core asset and the
product development teams by ensuring that these two units follow their intended
product line process tasks and collect data for progress tracking. Organizational
management ensures that the organizational structure supports SPLE activities and
that the organizational units receive enough resources.
Figure 5: Time to market with respect to the number of different systems with and
without Product Line Engineering [15].
In core asset development, there are costs in creating reusable assets. In con-
trast, application engineering generates expenses when retrieving the assets
and configuring them into individual products [31].
• Reusable assets. There are technical challenges for software reuse, such as
issues related to finding suitable reusable software, legacy components, and
difficulties involving adaptation of the assets [13].
In contrast, SPLE involves modifying core assets to ensure that products are
created correctly using a product configurator [17]. Addressing the source of defects
in core assets rather than individual issues on a product-by-product basis, results in
an O(N ) operation compared to an O(N 2 ) operation. Therefore, SPLE approach,
visualized in Figure 7, is more scalable and effective for managing a large portfolio
of products.
24
Figure 7: PLE factory and O(N ) time complexity described and illustrated in [17].
Due to the mentioned challenges in Section 2.2.5 and the interdisciplinary nature
of industrial automation, SPLE is not widely adopted in the field of industrial
automation [3]. Product-centric development is still more common in the field
because not all companies apply modular software concepts in their development
processes. Most common form of reuse is a non-systematic approach called clone-
and-own.
2.3.1 Clone-and-Own
Clone-and-own is a non-systematic and unplanned software reuse technique in which
software is copied and subsequently modified to address product requirements that
are similar but not identical [9]. The term clone refers to the copying of artifacts,
while own means to take ownership of the copy by modifying it. This technique
is illustrated in Figure 8. However, this non-systematic technique, without proper
central governance, eventually leads to significant number of variants of a system.
This phenomenon is known as software mitosis. Faust and Verhoef [9] describe it as an
uncontrolled natural emergence of variants caused by ungoverned local modifications.
Despite the availability of new techniques to manage this complexity of variability,
cloning is still widely used due to its perceived simplicity and availability, as shown in
a study conducted by Dubinsky et al. [6]. The approach provides a quickly available
mechanism to start from projects that are already verified, while still allowing to
modify them freely and independently. In the study, they found that practitioners
are lacking the awareness and knowledge of alternative software reuse methods.
Therefore, it is hard to convince them that other methods might yield better results.
Various tools and frameworks have been proposed to deal with cloned product
25
variants. Some propose to merge the variants into a single platform to eliminate all
clones [9], while others suggest maintaining variants [18] without trying to refactor
them. Faust and Verhoef [9] introduced a grow-and-prune technique in their study
to address software mitosis. The technique involves directed growth phases to
quickly address market needs, followed by pruning phases in which generic solutions
are created by identifying commonalities between the products. Grow-and-prune
technique balances between the high demands of customer specific software in the
short term and a more maintainable generic solution which saves in costs and efforts
in the long term.
of material. The cranes are usually fully autonomous making the entire process safer,
more efficient and profitable.
The stored instructions are mostly implemented in compliance with the IEC 61131-
3 standard [4], which includes programming language standards, such as Ladder
Diagram (LD), Function Block Diagram (FBD), Structured Text (ST) and Sequential
Function Chart (SFC). Field devices or external equipment such as input devices
e.g., switches and sensors and output devices e.g., motors are connected to the PLC
through Input/Output (I/O) modules.
During the operation of a PLC, its Central Processing Unit (CPU) completes
three cyclic tasks: (1) it reads the input signals from the field devices, (2) applies
the programmed behavior stored in the memory and (3) writes signals to output
devices, which then control a machine or a process [35]. This sequential process
is known as scanning. The PLC architecture, visualized in Figure 11, consists of
multiple subsystems, which implement this process [36]. The architecture results in
a flexible automation system used for controlling processes that vary in their nature
and complexity. To modify a control system, only the programmed instructions need
to be changed [35]. There is no need to rewire the connections to the input and
output devices. Unlike general purpose computers, PLCs are mechanically more
robust, resistant to vibration, and are designed to function in extreme temperatures
under dirty conditions. This allows PLCs to be used reliably for extended times in
industrial environments.
that the PLC runs cyclically as part of the scanning process. Hardware configuration
and executable program can still both be divided into their own standard and fail-safe
components.