<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Embedded System Construction - Evaluation of Model- Driven and Component-Based Development Approaches</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Christian Bunse</string-name>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Hans-Gerhard Gross</string-name>
          <email>h.g.gross@tudelft.nl</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Christian Peper</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Delft University of Technology</institution>
          ,
          <addr-line>Delft</addr-line>
          ,
          <country country="NL">The Netherlands</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Fraunhofer Institute for Experimental Software Engineering</institution>
          ,
          <addr-line>Kaiserslautern</addr-line>
          ,
          <country country="DE">Germany</country>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>International University in Germany</institution>
          ,
          <addr-line>Bruchsal</addr-line>
          ,
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <fpage>41</fpage>
      <lpage>50</lpage>
      <abstract>
        <p>Model-driven development has become an important engineering paradigm. It is said to have many advantages, such as reuse or quality improvement, over traditional approaches, even for embedded systems. Along a similar line of argumentation, component-based software engineering is advocated. In order to investigate these claims, the MARMOT method was applied to develop several variants of a small micro-controller-based automotive subsystem. Several key figures, like model size and development effort were measured and compared with two main-stream methods: the Unified Process and Agile Development. The analysis reveals that model-driven, component-oriented development performs well and leads to maintainable systems and a higher-than-normal reuse rate.</p>
      </abstract>
      <kwd-group>
        <kwd>Exploratory Study</kwd>
        <kwd>Embedded</kwd>
        <kwd>Model-Driven</kwd>
        <kwd>Components</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1 Introduction</title>
      <p>Embedded software design is a difficult task due to the complexity of the problem
domain and the constraints from the target environment. One specific technique that
may, at first sight, seem difficult to apply for the embedded domain, is modeling and
Model-Driven Development (MDD) with components. It is frequently used in other
engineering domains as a way to solve problems at a higher level of abstraction, and
to verify design decisions early. Component-oriented development envisions that new
software can be created with less effort than in traditional approaches, simply by
assembling existing parts. Although, the use of models and components for embedded
software systems is still far from being industrial best practice. One reason might be,
that the disciplines involved, mechanical-, electronic-, and software engineering, are
not in sync, a fact which cannot be attributed to one of these fields alone. Engineers
are struggling hard to master the pitfalls of modern, complex embedded systems.
What is really lacking is a vehicle to transport the advances in software engineering
and component technologies to the embedded world.</p>
      <p>
        Software Reuse is currently a challenging area of research. One reason is that software
quality and productivity are assumed to be greatly increased by maximizing the (re)use of
(part of) prior products instead of repeatedly developing from scratch. This also stimulated
the transfer of MDD and CBD [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] techniques to the domain of embedded systems, but
the predicted level of reuse has not yet been reached. A reason might be that empirical
studies measuring the obtained reuse rates are sparse. Studies, such as [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] or [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] examined
only specific aspects of reuse such as specialization or off-the-shelf component reuse, but
did not provide comparative metrics on the method’s level. Other empirical studies that
directly focus on software reuse either address non-CBD technology [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ], or they focus on
representations on the programming language-level [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]. Unfortunately, there are no
studies in the area of MDD/CBD for embedded systems.
      </p>
      <p>
        This paper shortly introduces the MARMOT system development method. MARMOT
stands for Method for Component-Based Real-Time Object-Oriented Development and
Testing, and it aims to provide the ingredients to master the multi-disciplinary effort of
developing embedded systems. It provides templates, models and guidelines for the
products describing a system, and how these artifacts are built. The main focus of the paper is
on a series of studies in which we compare MARMOT, as being specific for MDD and
CBD with the RUP and Agile Development to devise a small control system for an
exterior car mirror. In order to verify the characteristics of the three development methods,
several aspects such as model size [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] and development effort are quantified and
analyzed. The analysis reveals that model-based, component-oriented development performs
well and leads to maintainable systems, plus a higher-than-normal reuse rate, at least for
the considered application domain.
      </p>
      <p>The paper is structured as follows: Section 2 briefly describes MARMOT, and
Sections 3, 4, and 5 present the study, discuss results and address threats to validity.
Finally, Section 6 presents a brief summary, conclusions drawn, and future research.</p>
    </sec>
    <sec id="sec-2">
      <title>2 MARMOT Overview</title>
      <p>
        Reuse is a key challenge and a major driving force in hardware and software
development. Reuse is pushed forward by the growing complexity of systems. This section
shortly introduces the MARMOT development method [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] for model-driven and
component-based development (CBD) of embedded systems. MARMOT builds on
the principles of KobrA [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ], assuming its component model displayed in Fig. 1, and
extends it towards the development of embedded systems. MARMOT components
follow the principles of encapsulation, modularity and unique identity that most co
mponent definitions put forward, and their communication relies on interface contracts
(i.e., in the embedded world these are made available through software abstractions). An
additional hardware wrapper realizes that the hardware communication protocol is
translated into a component communication contract. Further, encapsulation requires separating
the description of what a software unit does from the description of how it does it. These
descriptions are called specification and realization (see Fig. 1).
      </p>
      <p>
        The specification is a suite of descriptive (UML [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]) artifacts that collectively define
the external interface of a component so that the component can be assembled into or used
by a system. The realization artifacts collectively define a component’s internal
realization. Following this principle, each component is described through a suite of models as if
it was an independent system in its own right.
      </p>
      <p>Specification</p>
      <p>Functional Model
(operation specs.)
Interaction Model
(UML collaboration
diagrams)</p>
      <p>Activity Model
(UML activity
diagrams)</p>
      <p>C
poonem tsyeSm
n
t
Decision Model</p>
      <p>Decision Model
Behavior Model
(UML statechart diagram)</p>
      <p>Structural Model
(UML class/object
diagrams)
Structural Model
(UML class/object
diagrams)</p>
      <p>Realization</p>
      <p>The fact that components can be realized using other components, turns a MARMOT
project into a tree-shaped structure with consecutively nested abstract component
representations. A system can be viewed as a containment hierarchy of components in which
the parent/child relationship represents composition. Any component can be a
containment tree in its own right, and, as a consequence, another MARMOT project. Acquisition
of component services across the tree turns a MARMOT project into a graph. The four
basic activities of a MARMOT development process are composition, decomposition,
embodiment, and validation as shown in Fig. 2.</p>
      <p>Decomposition follows the divide-and-conquer paradigm, and it is performed to
subdivide a system into smaller parts that are easier to understand and control. A project
always starts above the top left-hand side box in Fig. 2. It represents the entire system to be
built. Prior to specifying the box, the domain concepts must be determined, comprising
descriptions of all relevant domain entities such as standard hardware components that
will appear along the concretization dimension. The implementation-specific entities
determine the way in which a system is divided into smaller parts. During decomposition,
newly identified logical parts are mapped to existing components, or the system is
decomposed according to existing components. Whether these are hard- or software is not
important since all components are treated in a uniform way, as software abstractions.
Composition represents the opposite activity, which is performed when individual
components have been implemented or reused, and the system is put together. After
having implemented some of the boxes and having some others reused, the system
can be assembled according to the abstract model. The subordinate boxes with their
respective super-ordinate boxes have to be coordinated in a way that exactly follows
the component description standard introduced above.</p>
      <p>Embodiment is concerned with the implementation of a system and a move towards
executable representations. It turns the abstract system (i.e., models) into concrete
representations that can be executed. MARMOT uses refinement and translation
patterns for doing these transformations. MARMOT supports the generation of code
skeletons and can thus be regarded as a semi-automatic approach.</p>
      <p>Validation checks whether the concrete representations are in line with the abstract
ones. It is carried out in order to check whether the concrete composition of the
embedded system corresponds to its abstract description.</p>
    </sec>
    <sec id="sec-3">
      <title>3 Description of the Study</title>
      <p>In general, empirical studies in software engineering are used to evaluate whether a “new”
technique is superior to other techniques concerning a specific problem or property. The
objective of this study is to compare the effects of MARMOT concerning reuse in embedded
system development to other approaches such as the Unified process and agile development.</p>
      <p>The study was organized in three runs (i.e., one run per methodology). All runs
followed the same schema. Based on an existing system, documentation subjects performed
a number of small projects. These covered typical project situations such as maintenance,
ports to another platform, variant development, and reuse in a larger context. The first run
applied MARMOT. The second run repeated all projects but used a variation of the
Unified process, specifically adapted for embedded system development. The third run,
applying an agile approach, was used to validate that modeling has a major impact and to rule
out that reuse effects can solely be obtained at the code level. Metrics were collected in all
runs and were analyzed in order to evaluate the respective research questions.</p>
      <sec id="sec-3-1">
        <title>3.1. RESEARCH APPROACH</title>
        <p>Introducing MDD and CBD in an organization is generally a slow process. An
organization will start with some reusable components, and eventually build a component
repository. But they are unsure about the return on investment gained by initial component
development plus reuse for a real system, and the impact of the acquired technologies on quality
and time-to-market. This is the motivation for performing the study and asking questions
on the performance of these techniques.</p>
        <p>
          Research Questions. Several factors concerning the development process and its
resulting product are recorded throughout the study in order to gain knowledge about
using MDD and CBD for the development of small embedded systems. The research
questions of the case-study focus on two key sets of properties of MDD in the context of
component-oriented development. The first set of questions (Q1-Q4) lead to an
understanding of basic and/or general properties of the embedded system development
approach:
Q1: Which process was used to develop the system? Each run of the study used a
different development approach (i.e., MARMOT, Unified Process, and Agile). These
are compared in terms of different quality attributes of the resulting systems.
Q2: Which types of diagrams have been used? Are all UML diagram types required,
or is there possibly a specific subset sufficient for this domain?
Q3: How were models transferred to source code? Developers typically work in a
procedural setting that impedes the manual transformation of UML concepts into C [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ].
Q4: How was reuse applied and organized? Reuse is central to MDD with respect to
quality, time-to-market, and effort, but reuse must be built into the process, it does not
come as a by-product (i.e., components have to be developed for reuse).
The second set of questions (Q5-Q9) deals with the resulting product of the applied
approach (i.e., with respect to code size, defect density, and time-to-market).
Q5: What is the model-size of the systems? MDD is often believed to create a large
overhead of models, even for small projects. Within the study, model size follows the
metrics as defined in [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ].
        </p>
        <p>
          Q6: What is the defect density of the code?
Q7: How long did it take to develop the systems and how is this effort distributed
over the requirements, design, implementation, and test phases? Effort saving is one
promise of MDD and CBD [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ], though, it does not occur immediately (i.e., in the
first project), but in follow-up projects. Effort is measured for all development phases.
Q8: What is the size of the resulting systems? Memory is a sparse resource and
program size extremely important. MDD for embedded systems will only be successful if
the resulting code size, obtained from the models, is small.
        </p>
        <p>Q9: How much reuse did take place? Reuse is central for MDD and CBD and it must
be seen as an upfront investment paying off in many projects. Reuse must be
examined between projects and not within a project.</p>
        <p>
          Research Procedure. MDD and CBD promise efficient reuse and short
time-tomarket, even for embedded systems. Since it is expected that the benefits of MDD
and CBD are only visible during follow-up projects [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ], an initial system was
specified and used as basis for all runs. The follow-ups then were:
R1/R2 Ports to different hardware platforms while keeping functionality. Ports were
performed within the family (i.e., ATMega32) and to a different processor family (i.e.,
PICF). Implementing a port within the same family might be automated at the
codelevel, whereas, a port to a different family might affect the models.
        </p>
        <p>R3/R4 Evolving system requirements by (1) removing the recall position
functionality, and (2) adding a defreeze/defog function with a humidity sensor and a heater.
R5 The mirror system was reused in a door control unit that incorporates the control
of the mirror, power windows, and door illumination.</p>
      </sec>
      <sec id="sec-3-2">
        <title>3.2. PREPARATION</title>
        <p>
          Methodologies. The study examines the effects of three different development
methods on software reuse and related quality factors. In the first run, we used the
MARMOT method that is intended to provide all the ingredients to master the
multidisciplinary effort of developing component-based embedded systems. In the second
run we followed an adapted version of the Unified Process for embedded system
development [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ] (i.e., RUP SE). RUP SE includes an architecture model framework that
supports different perspectives. A distinguishing characteristic of RUP SE is that the
components regarding the perspectives are jointly derived in increasing specificity from the
overall system requirements. In the third run, an agile process (based on Extreme
Programming) [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ], adapted towards embedded software development, was used.
Subjects of the study were graduate students from the Department of Computer Science
at the University of Kaiserslautern (1st run) and the School of IT at the International
University (2nd and 3rd run). All students, 45 in total (3 per team/project), were enrolled
in a Software Engineering class, in which they were taught principles, OO methods,
modeling, and embedded system development. Lectures were supplemented by practical
sessions in which students had the opportunity to make use of what they had learned. At
the beginning of the course, subjects were informed that a series of practical exercises
were planned. Subjects knew that data would be collected and that an analysis would be
performed, but were unaware of the hypotheses that were being tested. To further
control for learning and fatigue effects and differences between subjects, random
assignment to the development teams was performed. As the number of subjects was known
before running the studies it was a simple procedure to create teams of equivalent size.
Metrics. All projects were organized according to typical reuse situations in
component-based development, and a number of measurements were performed to answer
the research questions of the previous sub-section:
        </p>
        <p>
          Model-size is measured using the absolute and relative size measures proposed in [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ].
Relative size measures (i.e., ratios of absolute measures) are used to address UMLs
multidiagram structure and to deal with completeness [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ]. Absolute measures used are: the
number of classes in a model (NCM), number of components in a model (NCOM),
number of diagrams (ND), and LOC, which are sufficient as complexity metrics for the simple
components used in this case. NCOM describes the number of hardware/software
components, while NCM is represents the number of software components. These metrics are
comparable to metrics such as McCabe’s cyclomatic complexity for estimating the
size/nesting of a system. Code-size is measured in normalized LOC. System size is
measured in KBytes of the binary code. All systems were compiled using size optimization.
        </p>
        <p>The amount of reused elements is described as the proportion of the system which can
be reused without any changes or with small adaptations (i.e., configuration but no model
change). Measures are taken at the model and code level.</p>
        <p>Defect density is measured in defects per 100 LOC, whereby defects where collected
via inspection and testing activities.</p>
        <p>Development effort and its distribution over development phases are measured as
development time (hours) collected by daily effort sheets.</p>
        <p>Materials. The study uses a car-mirror control system that moves a mirror horizontally
and vertically into the desired position. Positions can be stored/recalled to support driver
profiles. The simplified version of this study controls two servos via potentiometers, and
indicates movement on a LCD. A replication package is available from the authors.</p>
        <p>For each run, the base system documentation was developed by the authors of this
paper. The reason was that we were interested in the reuse effects of one methodology in the
context of follow-up projects. Using a single documentation for all runs would have
created translation and understanding efforts. Therefore, reasonable effort was spent to
make all three documents comparable concerning size, complexity, etc. This is supported
by the measures of each system.</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>4 Evaluation and Comparison</title>
      <p>In the context of the three experimental runs, a number of measurements were
performed with respect to maintainability, portability, and adaptability of software
systems. Tables 1, 2, and 3 provide data concerning model and code size, quality, effort,
and reuse rates. Table columns denote the project type1.</p>
      <p>First Run Porting the system (R1) required only minimal changes to the models. One
reason is that MARMOT supports the idea of platform-independent modeling
(platform specific models are created in the embodiment step). Ports to different processor
families (R2) are supported by MARMOT’s reuse mechanisms.
1 Project types are labeled following the scheme introduced in section 3 (e.g., “Original” stands
for the initial system developed by the authors as a basis for all follow-up projects, “R1” –
Port to the ATMEGA32 microcontroller (same processor family), “R2” – Port to the PIC F
microcontroller (different processor family), “R3“ – Adaptation by removing functionality
from the original system, “R4” – Adaptation by adding functionality to the original system,
and “R5” – Reuse of the original system in the context of a larger system.
3.25
1.375
3.5</p>
      <p>Concerning the adaptation of existing systems (R3 and R4), data show that large
portions of the system could be reused. In comparison to the initial development project the
effort for adaptations is quite low (26hrs vs. 3/10hrs). The quality of the system profits
from the quality assurance activities of the initial project. Thus, the promises of CBD
concerning time-to-market and quality could be confirmed.</p>
      <p>Interestingly, the effort for the original system corresponds to standardized effort
distributions over development phases, whereby the effort of follow-ups is
significantly lower. This supports the assumption that component-oriented development has
an effort-saving effect in subsequent projects.</p>
      <p>Porting and adapting an existing system (R1-R4) implies that the resulting variants are
highly similar, which explains why reuse works well. It is, therefore, interesting to look at
larger systems that reuse (components of) the original system (i.e., R5). 60% of the R5
system was reused without requiring major adaptations of the reused system. Effort- and
defect density are higher than those of R1-R4, due to additional functionality and
hardware extensions. However, when directly compared to the initial effort and quality, a
positive trend can be seen that supports the assumption that MARMOT allows embedded
systems development at a low cost but with high quality.
3.5
2.3
The Second and Third Run replicated the projects of the first run but used different
development methods. Interestingly, the results of the second run are quite close to
those of the first. However, the Unified Process requires more overhead and increased
documentation, resulting in higher development effort. Ironically, model-size seems to
have a negative impact on quality and effort. Interestingly, the mapping of models to
code seems not to have added additional defects or significant overheads.</p>
      <p>Although the amount of modeling is limited in the agile approach, it can be observed
that the original system was quickly developed with a high quality. However, this does
not hold for follow-up projects. These required substantially higher effort than the effort
required for runs 1 and 2. A reason might be that follow-ups were not performed by the
developers of the original system. Due to missing documentation and abstractions, reuse
rates are low. In contrast, the source-code is of a good quality.
The authors view this study as exploratory. Thus, threats limit generalization of this
research, but do not prevent the results from being used in further studies.
Construct Validity. Reuse is a difficult concept to measure. In the context of this paper
it is argued that the defined metrics are intuitively reasonable measures. Of course, there
are several other dimensions of each concept. However, in a single controlled study it is
unlikely that all the different dimensions of a concept can be captured.</p>
      <p>Internal Validity. A maturation effect is caused by subjects learning as the study
proceeds. The threat to this study is subjects learned enough from single runs to bias
their performance in the following ones. An instrumentation effect may result from
differences in the materials which may have caused differences in the results. This
threat was addressed by keeping the differences to those caused by the applied
method. This is supported by the data points as presented in table 1, 2, and 3. Another
threat might be the fact that the studies were conducted at different institutes.
External Validity. The subjects were students and are, therefore, unlikely to be
representative of software professionals. However, the results can be useful in an industrial context
for the following reasons: Industrial employees often do not have more experience than
students when it comes to applying MDD. Furthermore, laboratory settings allow the
investigation of a larger number of hypotheses at a lower cost than field studies.
Hypotheses supported in the laboratory setting can be tested further in industrial settings.</p>
    </sec>
    <sec id="sec-5">
      <title>6 Summary and Conclusions</title>
      <p>The growing interest in the Unified Modeling Language provides a unique opportunity
to increase the amount of modeling work in software development, and to elevate
quality standards. UML 2.0 promises new ways to apply object/component-oriented and
model-based development techniques in embedded systems engineering. However, this
chance will be lost, if developers are not given effective and practical means for
handling the complexity of such systems, and guidelines for applying them systematically.</p>
      <p>This paper shortly introduced the MARMOT approach that supports the
component-oriented and model-based development of embedded software systems. A series
of studies was described that were defined to empirically validate the effects of
MARMOT on aspects such as reuse or quality in comparison to the Unified Process
and an agile approach. The results indicate that by using MDD and CBD for
embedded system development will have a positive impact on reuse, effort, and quality.
However, similar to product-line engineering projects, CBD requires an upfront
investment. Therefore, all results have to be viewed as initial. This has led to the
planning of a larger controlled experiment to obtain more objective data.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <surname>Atkinson</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bayer</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bunse</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <article-title>and others. Component-Based Product-Line Engineering with UML</article-title>
          ,
          <string-name>
            <surname>Addison-Wesley</surname>
          </string-name>
          , UK,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <surname>Bunse</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gross</surname>
          </string-name>
          , H.-G.,
          <string-name>
            <surname>Peper</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <article-title>Applying a Model-based Approach for Embedded System Development, 33rd SEAA</article-title>
          , Lübeck, Germany,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <surname>Bunse</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gross</surname>
          </string-name>
          , H.-G.,
          <article-title>Unifying Hardware and Software Components for Embedded System Development</article-title>
          ,
          <source>In: Architecting Systems with Trustworthy Components</source>
          , Reussner, Staffort, Szyperski (Eds),
          <source>Lecture Notes in Computer Science</source>
          , Vol.
          <volume>3938</volume>
          , Springer,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <surname>Cantor</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <article-title>Rational Unified Process for Systems Engineering, the Rational Edge e-</article-title>
          <string-name>
            <surname>Zine</surname>
          </string-name>
          ,
          <year>2003</year>
          , http://www.therationaledge.com/content/aug_03/f_rupse
          <source>_mc.jsp.</source>
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <surname>Crnkovic</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Larsson</surname>
          </string-name>
          , M. (Eds.),
          <source>Building Reliable Component-Based Software Systems, Artech House</source>
          ,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <surname>Douglass</surname>
            ,
            <given-names>B.P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Real-Time Design</surname>
            <given-names>Patterns</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Addison-Wesley</surname>
          </string-name>
          ,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <surname>Briand</surname>
            ,
            <given-names>L.C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bunse</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Daly</surname>
            ,
            <given-names>J.W.</given-names>
          </string-name>
          ,
          <article-title>A Controlled Experiment for Evaluating Quality Guidelines on the Maintainability of Object-Oriented Designs</article-title>
          , IEEE TSE,
          <volume>27</volume>
          (
          <issue>6</issue>
          ),
          <fpage>2001</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <surname>Li</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Conradi</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Slyngstad</surname>
            ,
            <given-names>O.P.N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Torchiano</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Morisio</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bunse</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <article-title>A State-ofthe-Practice Survey of Risk Management in Development with Off-the-</article-title>
          <string-name>
            <surname>Shelf</surname>
            <given-names>Software</given-names>
          </string-name>
          ,
          <source>IEEE Transaction on Software Engineering</source>
          ,
          <volume>34</volume>
          (
          <issue>2</issue>
          ),
          <fpage>2008</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <surname>Hruschka</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rupp</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Agile</surname>
            <given-names>SW</given-names>
          </string-name>
          -
          <article-title>Entwicklung für Embedded Real-Time Systems mit</article-title>
          UML, Hanser,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <surname>Marwedel</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Embedded System</surname>
            <given-names>Design</given-names>
          </string-name>
          ,
          <source>(Updated Version)</source>
          , Springer,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11] Object Management Group,
          <source>UML Infrastructure and Superstructure, V2.1.2</source>
          , 2007
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <surname>Szyperski</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <source>Component Software. Beyond OOP</source>
          ,
          <string-name>
            <surname>Addison-Wesley</surname>
          </string-name>
          ,
          <year>2002</year>
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <surname>Lange</surname>
            ,
            <given-names>C.F.</given-names>
          </string-name>
          ,
          <source>Model Size Matters, Workshop on Model Size Metrics</source>
          ,
          <year>2006</year>
          <article-title>(co-located with the ACM/</article-title>
          IEEE MoDELS/UML Conference); October,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <surname>Burkhard</surname>
            ,
            <given-names>J-M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Detienne</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <article-title>An Empirical Study of Software Reuse By Experts in Object-Oriented Design</article-title>
          , INTERACT'95,
          <string-name>
            <surname>Lillehammer</surname>
            <given-names>Norway</given-names>
          </string-name>
          , June 27-29 1995
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <surname>Lee</surname>
            ,
            <given-names>N-Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Litecky</surname>
            ,
            <given-names>C.R.</given-names>
          </string-name>
          ,
          <article-title>An Empirical Study of Software Reuse with Special Attention to ADA</article-title>
          ,
          <source>IEEE Transaction on Software Engineering</source>
          ,
          <volume>23</volume>
          (
          <issue>9</issue>
          ),
          <fpage>1997</fpage>
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>