<!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>An Integrated Model for Requirements Structuring and Architecture Design</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Juha Savolainen</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Tuomo Vehkomäki</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>School of Computing and Mathematical Sciences, Glasgow Caledonian University</institution>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2002</year>
      </pub-date>
      <fpage>19</fpage>
      <lpage>33</lpage>
      <abstract>
        <p>Requirements guide the development of a software intensive system, whereas the software architecture largely dictates the achievable properties of the system. This interplay of requirements and architectures has been largely accepted by the researchers and practitioners alike. Despite the common understanding of the general approach, the exact guidelines on how to develop systems in practice are missing. Features are often used to map customer requirements into product properties. However, our experience shows that features are often misused. Their real role is not understood or they are used for premature design and solution specification purposes. A number of different methods for either analysing and modelling requirements or for designing architectures exists, but the combination and customisation of these methods is left for the practitioners. The transition from problem definition to architecture is ma inly dependent on the creativity and problem understanding of the chief architect. In this paper, we argue how 4 existing models, problem domain models, context diagrams, feature models, and architectural descriptions can be used together to make the transition process more transparent.</p>
      </abstract>
      <kwd-group>
        <kwd>Requirements</kwd>
        <kwd>features</kwd>
        <kwd>software architecture</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>The goal of software product development is to create systems that fulfil the needs of various
stakeholders. The needs are usually expressed as requirements which then drive the
construction of a software architecture that will satisfy those needs. However the transition
from requirements definition to architecture is mainly dependent on the creativity and
problem understanding of a chief architect and is often not transparent. One reason for this is
the confusion in defining the boundaries of the problem and solution domains and in
understanding the relationships between requirements, context specifications, features and
architecture.</p>
      <p>
        To address this issue, we argue that it is possible to integrate different modelling techniques
by considering them as different viewpoints on the same systems development problem. The
techniques we selected are: problem frames for problem domain definition
        <xref ref-type="bibr" rid="ref8">(Jackson, 2001)</xref>
        ,
context diagrams for defining the interface between a system and its environment in the
problem domain (Yourdon, 1988), feature models that provide a bridge between requirements
and their architectural realisation and architectural component descriptions used internally. In
our experience each of these approaches addresses a unique set of concerns and provides
useful views of a system that assists the practical development process.
      </p>
      <p>We have selected the problem frames because it has been well documented and it provides a
complete method for problem domain modelling. The method is easy to integrate with
common context modelling methods. Other methods such as conceptual modelling or
objectoriented analysis of the problem domain do not, in our opinion, provide as stable basis to
ground the context model to the problem space.</p>
      <p>The Yourdon method for context modelling has been chosen because it explicitly captures
interaction between the system and its environment. This allows immediate check the
consistency of the problem domain model and set the scope of the system. Use case models
could be also used for this purpose, but understanding the actual information exchange
requires inspecting the specification of each of the use cases. We find the data and control
flow diagrams easier to understand at the high level of abstraction.</p>
      <p>This paper is organised as follows. First we provide some definitions of requirements,
features, context diagrams and architecture. Then we describe a viewpoint model for
integrating the different modelling techniques. Then we show how the model can be used
with a detailed worked example. Finally we discuss some outstanding issues.</p>
    </sec>
    <sec id="sec-2">
      <title>2. Requirements, Features, Architecture</title>
      <p>
        An
        <xref ref-type="bibr" rid="ref6">IEEE standard (1990</xref>
        ) defines the term requirement as:
(A)
(B)
(C)
      </p>
      <p>A condition or capability needed by a user to solve a problem or achieve an
objective.</p>
      <p>A condition or capability that must be met or possessed by a system or system
component to satisfy a contract, standard, specification, or other formally imposed
document.</p>
      <p>A documented representation of a condition or capability as in definition (A) or
(B).</p>
      <p>Underpinning this definition is the notion that requirements describe a desired state of the
world after a system has been constructed to interact with the world. The relevant part of the
world is called a system’s environment. The environment can affect the behaviour of a
system and the behaviour of a system can affect its environment. Before modelling the
environment of a system, a good designer first concentrates on understanding the problem to
be solved. A common mistake during software development is to focus on solution formation
before the problem is well understood and analysed. Matters are not helped by commercial
pressures that affect project schedules e.g. design and implementation must begin as soon as
possible.</p>
      <p>Many software development process models assume that stakeholders will describe their
product requirements using only problem domain entities. This rarely happens in the practice
and more often stakeholders explain their requirements in terms they understand and this may
include using solution domain entities. For example, in the domain of mobile phones a user
may identify a requirement for “ a sliding cover for the mobile phone”. Arguably, this
requirement is a solution to the underlying problem which may be that they want to protect
the phone against pressing keys accidentally or that they want to improve the aesthetic appeal
of the phone. In this paper we refer to requirements that are described in terms of the
properties of a product as features of that product.</p>
      <p>
        An
        <xref ref-type="bibr" rid="ref6">IEEE standard (1990</xref>
        ) defines the term feature as:
(A)
(B)
      </p>
      <p>A distinguishing characteristic of a software item (for example, performance,
portability, or functionality)
A software characteristic specified or implied by requirements documentation (for
example, functionality, performance, attributes, or design constraints).</p>
      <p>Clearly it is highly important to guarantee that the features described by each stakeholder do
actually satisfy their real needs. Features are important because they allow a customer to
more readily express their needs. In the development of a product line they are often used to
distinguish between products and establish product configurations. The main difference
between the features and the requirements is that features express requirements in terms of the
solution. This makes features an ideal bridge between the problem domain and the solution
domain. Features are typically implemented by one or more architectural components.
The role of software architecture is to distribute responsibilities to components and to
coordinate their behaviour so that they provide the needed features. Features can be assigned to
one architectural element or as the common responsibility of a set of elements. Typically,
large features express the basic behaviour of a system and therefore affect most of the main
architectural elements of the system. The mapping of features to components and other
architectural structures is crucial in order to guarantee the satisfaction of the main
requirements.</p>
    </sec>
    <sec id="sec-3">
      <title>3. System Development Models</title>
      <p>System development models are used to define the problem to be addressed, to describe a
solution that satisfies the problem and to ease the transition from problem definition to
solution description. The choice of models used on a project in a development organisation
can depend on the type of product, on how well the model types integrate with each other, and
on the level of expertise of the staff in the development organisation in understanding and
using these models.</p>
      <p>One of the main goals of the initial problem domain analysis is to find subproblems that can
be managed, at least partly, independently. Doing this effectively requires comparing and
contrasting the problem to some known problem types. Having an existing problem frame
(Michael Jackson (1995, 2001)) constrains the problem by fitting it into a known problem
type. This allows using known methods for dividing the problem and analysing its properties.
The problem domain model shows all relevant domains that either directly interact with the
system under development or affect the system by imposing or influencing the requirements
that the system should fulfil. Everything that is relevant to the requirements must appear in
some part of the problem domain model.</p>
      <p>We have experimented on using frame diagrams to describe real products. The most common
problem encountered is how to restrict the frame diagrams such that they only show the
problem domain concepts. This is especially difficult in the projects dealing with large
amounts of legacy assets. We feel that even then it is helpful to discuss and analyse the
problem without using explicit solution techniques. This allows evaluating the chosen
solutions and predetermined constraints for that problem.</p>
      <p>Context diagrams are helpful as they provide an explicit boundary specification. They show
dataflows and those domains that directly interact with the system. These domains are the
adjacent domains of the system. The space that is outside the system and which is inhabited
by the adjacent domains is called the system’s environment. However, the context diagram
with its dataflow representation shows only data (and control) exchange over the system
boundary. It does not show the responsibilities that the entities have regarding these
interactions. For a system consisting of many different products, it is essential to agree a
common understanding of the role that each of the products has within the system. This
observation holds for both functional requirements as well as for any quality characteristics.
The main difference between a problem domain model and a context diagram is that the
problem domain model shows all the domains that have any effect on the problem that the
system tries to solve, whereas the context diagram shows only those entities that have a direct
interaction with the system. The problem domain model is not limited to the parts of the
environment that are directly interacting with the system. Also the use of these models is
different. The problem domain model is useful for organising and analysing requirements
whereas the context model shows the scope of the system explicitly and identifies the
interfaces for specification purposes. The problem domain models such as frame diagrams
focus on the shared phenomena between two domains as the main type of interaction.
Context diagrams typically describe actual data flows but on a rather high conceptual level.
This means that actual interaction or messages are not shown – only the type of the interaction
and the main flow of information are displayed.</p>
      <p>
        Feature modelling has been an integral part of product line research. Most methods
        <xref ref-type="bibr" rid="ref1">(Cohen,
Standley, Peterson and Krut, 1992)</xref>
        <xref ref-type="bibr" rid="ref2 ref9">(Lee, Kang, Chae and Choi, 2000)</xref>
        <xref ref-type="bibr" rid="ref2">(Czarnecki and
Eisenecker, 2000)</xref>
        provide mechanisms for representing the commonality and variability in
the product line. However, often feature modelling methods do not provide sufficient
techniques to model complex dependencies between features. Our previous work has focused
on the dependency modelling among features
        <xref ref-type="bibr" rid="ref11 ref3">(Ferber, Haag and Savolainen, 2002)</xref>
        . The
resulting model shares the key concepts of the previous contributions, such as the part of
hierarchy among features, variability assumptions, and feature dependency modelling.
Architectural design is responsible for converting requirements and constraints as defined
from outside of the system boundary into distribution and refinement of those requirements
for logical components. The requirements and finally satisfied by making design decisions
that shape the architecture. Design decisions create the high level structure of the software by
adding new requirements and constraints and distributing the existing ones
        <xref ref-type="bibr" rid="ref11">(Savolainen and
Kuusela, 2002)</xref>
        . The logical compone nts represent the initial structuring of the software into
separate entities, which allows specifying and designing at least partly independently. The
final properties of the system are determined by the design of those elements as well as the
collaborations among the components.
      </p>
    </sec>
    <sec id="sec-4">
      <title>4. Viewpoint Approach For Model Definition</title>
      <p>
        A viewpoint defines a way of looking at a system
        <xref ref-type="bibr" rid="ref7">(IEEE, 2000)</xref>
        . A viewpoint can be
described by a metamodel that expresses the type of entities and relationships that are of
concern from the specific perspective. A view, on the other hand, instantiates a viewpoint and
conforms to its rules. A view uses types, which are defined in the corresponding viewpoint,
and describes concrete architectural entities by instantiating new objects as parts of the view.
A viewpoint defines types and a view instantiates those types to describe the structure of the
software – similar to the distinction between classes and objects in object-oriented design.
Dividing a difficult development problem into a set of viewpoints helps to manage the
problem’s complexity. When viewpoints are instantiated to views, the challenge is to
integrate the views to ensure completeness and consistency in problem understanding. One
way to integrate views is to consider what each of the viewpoints provides and requires from
the other viewpoints
        <xref ref-type="bibr" rid="ref5">(Hillard, 1999)</xref>
        . Viewpoint responsibility is defined by the elements the
viewpoint provides. No other viewpoint can declare elements of the same kind.
The IEEE recommended practice
        <xref ref-type="bibr" rid="ref7">(IEEE, 2000)</xref>
        defines the basic set of information that is
needed for each viewpoint. Each viewpoint shall have:
•
•
•
a viewpoint name;
a list of stakeholders to be addressed by the viewpoint;
a set of concerns to be addressed by the viewpoint;
      </p>
      <sec id="sec-4-1">
        <title>Purpose</title>
      </sec>
      <sec id="sec-4-2">
        <title>Stakeholders</title>
      </sec>
      <sec id="sec-4-3">
        <title>Concerns</title>
        <p>Product marketing
Product management
Requirements engineers</p>
        <p>Architects
• the language, modelling techniques, or analytical methods to be used in constructing a
view based upon the viewpoint;
• the source e.g. for a library viewpoint the source could include author, date, or
reference to other documents.</p>
        <p>In the following subsections we consider the 4 different modelling formalisms as separate
viewpoints to cover the problem-solution space. The fact that some of the viewpoints have
overlapping information does not render them unfeasible. In fact, it improves their practical
usage as the duplicated information provides a tool to verify model consistency and helps to
assess the suitability of the chosen concepts from multiple perspectives.
4.1</p>
        <sec id="sec-4-3-1">
          <title>Problem Domain Viewpoint (Using Frame Diagrams)</title>
          <p>Problem domain concept viewpoints form a common vision on the main concepts in the
application domain. They provide a shared precise vocabulary of relationships among
domain concepts.</p>
          <p>Identification of the main concepts
Unification of vocabulary
Understanding the problem</p>
          <p>Communication and sharing of domain knowledge
«type of shared phenomena»</p>
          <p>has4
1..*</p>
          <p>1..*
domain</p>
          <p>requirement
Figure 1 shows that a problem has many requirements. The domains of interest can be divided
into three different types. The system1 under design is a unique domain - that is there can be
only one such domain in the problem domain view. The other domains can be either designed
domain or given domains. A given domain is a domain over which we have no control. All
it’s properties shall be taken as given – we cannot change any of those, the only option is to
adapt the design of the system to take the characteristics of the given domain into
consideration. The third domain type is the designed domain.</p>
        </sec>
      </sec>
      <sec id="sec-4-4">
        <title>Provided elements</title>
        <p>Problem domains
Shared phenomena</p>
        <p>Main requirement groups</p>
      </sec>
      <sec id="sec-4-5">
        <title>Required elements</title>
        <p>Requirements
4.2</p>
      </sec>
      <sec id="sec-4-6">
        <title>Purpose</title>
        <sec id="sec-4-6-1">
          <title>Context viewpoint</title>
        </sec>
      </sec>
      <sec id="sec-4-7">
        <title>Stakeholders</title>
      </sec>
      <sec id="sec-4-8">
        <title>Concerns</title>
        <p>Management
Requirements engineers</p>
        <p>Software architects</p>
        <p>Scope definition</p>
        <p>Environment - system interaction
The purpose of a context diagram is to provide a definition of the system scope by describing
systems and/or users that interact with the system and the definition of the data and control
flows through the identified interfaces.
1 We use the term system to separate the product that we are building from the other domains. The reader should
note that Jackson uses the term machine for the same purpose.
external interface
domain
{from viewpoint = problem domain}
3 has</p>
        <p>1
3 interacts with
1..*
1
Figure 2 shows that a system will interact with its environment through several external
interfaces using control flows and dataflows. These interfaces are towards some of the
domains of the problem domain viewpoint. The interaction can happen only with the domains
that are adjacent in the problem domain model and that are shown in the context model.</p>
      </sec>
      <sec id="sec-4-9">
        <title>Provided elements</title>
        <p>Logical external interfaces
External data flows</p>
        <p>External control flows</p>
      </sec>
      <sec id="sec-4-10">
        <title>Required elements</title>
        <p>4.3</p>
      </sec>
      <sec id="sec-4-11">
        <title>Purpose</title>
      </sec>
      <sec id="sec-4-12">
        <title>Stakeholders</title>
      </sec>
      <sec id="sec-4-13">
        <title>Concerns</title>
        <sec id="sec-4-13-1">
          <title>Feature viewpoint</title>
          <p>Product marketing
Product management
Requirements engineers
Architects
Surrounding domains (from the problem domain viewpoint)
Shared phenomena - between the surrounding domains and the system (from the
problem domain viewpoint)
The feature viewpoint describes the main features of a system. It shows the dependencies and
bridges the requirements and the architectural specification.</p>
          <p>Identification of the main features</p>
          <p>Identification of the minimal configuration (in the product line context)
feature</p>
          <p>is implemented by4
1
1..*</p>
          <p>logical component
{from viewpoint = logical}
Figure 3 shows that requirements identified in the problem domain viewpoint, and mapped to
features, can be implemented by architectural components that are identified in the logical
viewpoint model. The feature dependency modelling supports deriving valid configurations
for product lines. The dependency models can also be used to describe the minimal core
functionality that a set of products have. However, the dependency modelling issues are out of
scope of this paper.</p>
        </sec>
      </sec>
      <sec id="sec-4-14">
        <title>Provided elements</title>
        <p>Features</p>
        <p>Feature dependencies</p>
      </sec>
      <sec id="sec-4-15">
        <title>Required elements</title>
        <p>4.4</p>
        <sec id="sec-4-15-1">
          <title>Logical viewpoint</title>
        </sec>
      </sec>
      <sec id="sec-4-16">
        <title>Purpose</title>
      </sec>
      <sec id="sec-4-17">
        <title>Stakeholders</title>
      </sec>
      <sec id="sec-4-18">
        <title>Concerns</title>
        <p>Subsystem architects</p>
        <p>Software designers</p>
        <p>Identification of dependencies between components
Refinement of functionality
Variability assumptions (note that product line issues are out of scope of this paper)
Main requireme nt groups/sources (domains from the problem domain viewpoint)
Logical components (from the logical viewpoint)</p>
        <p>Requirements (from the problem domain viewpoint)
The logical viewpoint defines the system's internal structure and interactions among its parts.</p>
        <p>Interface
0..*
internal interface</p>
        <p>external interface
{from viewpoint = context}</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>5. Worked Example</title>
      <p>Logical components
Internal interfaces
Dependencies between logical components</p>
      <p>External interfaces (from the context viewpoint)
In the following worked example we demonstrate our method using a limited, imaginary
product. 2 Consider a mobile phone product that has a typical portfolio of features. Almost all
current mobile terminals support short message services (SMS). The SMS service provides
user to user communication with short text messages that can be entered with the keyboard of
the mobile phone.</p>
      <p>
        Figure 5 shows a simplified problem domain model for the SMS messaging. In order to save
space and reduce the complexity of the diagrams, we do not show the definition of the shared
phenomena between the domains and Table 1 shows only some of the requirements. We use
the notation developed for frame diagrams by
        <xref ref-type="bibr" rid="ref8">Jackson (2001)</xref>
        .
2 Please note that all information on the mobile phone products is based on the public knowledge of the mobile
terminal domain. The information presented here is not a basis of actual products from any supplier. This
example is only given to demonstrate our viewpoint model and should not be used for other purposes. The
analysis is made by the authors and does not represent the opinion of our employers.
      </p>
      <p>Keyboard</p>
      <p>User
Display</p>
      <p>Core network
A user interacts with the system by pressing the keys on the keyboard. The keyboard
activates the event dispatcher that translates a key press shared phenomena into a set of
computer events and provides basic error control and buffering. The SMS domain (the system
under design) then creates the SMS messages and sends them through the GSM protocol stack
that decodes the messages and deliverers them to the network. The GSM protocol stack also
takes care of receiving SMS messages.</p>
      <sec id="sec-5-1">
        <title>Requirement</title>
        <p>Send SMS
Send business card
Receive SMS</p>
      </sec>
      <sec id="sec-5-2">
        <title>Description</title>
        <p>Edit a text message (SMS), select a recipient contact from the
phonebook and sent the message to the recipient.</p>
        <p>Select a contact from the phonebook, select a recipient contact
from the phonebook and send the details of the first contact as a
text message to the recipient.</p>
        <p>
          Receive a text message, store it into the message database and
notify the user about the new message.
Incoming and edited text messages are broadcast to the display that shows the current
message to the user of the mobile terminal. Based on the displayed message the user can take
an appropriate action and send or modify the message by interacting with the keyboard. In a
real mobile phone a lot of other features are controlled and monitored using the user interface
software, but these features are beyond the scope of this example. However many difficult
problems arise from the fact that different features use shared resources such as the display of
the mobile phone. For more information consult the work by
          <xref ref-type="bibr" rid="ref10">Lorentsen, Tuovinen, and Xu
(2001</xref>
          ).
The context diagram elaborates the definition of the problem domain model. It shows the
actual data and control flows with which the system interacts with its environment. The
context model gives an improved understanding about the interfaces the system shall
implement in order to provide services and wanted functionality.
        </p>
        <p>&lt;&lt;requirement&gt;&gt;</p>
        <p>Send SMS</p>
        <p>&lt;&lt;requirement&gt;&gt;
Send business card
&lt;&lt;requirement&gt;&gt;</p>
        <p>Receive SMS</p>
        <p>Fetch a contact from the database using the name as a search key.</p>
      </sec>
      <sec id="sec-5-3">
        <title>Feature</title>
        <p>Edit message
Send message
Receive message
Store message</p>
      </sec>
      <sec id="sec-5-4">
        <title>Description</title>
        <p>Interact with the user to compose a text message.</p>
        <p>Send a complete text message to a recipient via the GSM protocol
stack
Receive a message from GSM protocol stack and notify the user.</p>
        <p>Store a message persistently into the database.
Figure 9 shows a simple logical view for our SMS application. The application has three
logical components (Table 3). The message client is mainly responsible for providing the
user with the functionality to edit, read, and modify the SMS messages. The database
component manages the persistency of stored SMS messages. SMS messages can be stored
for later viewing, if enough memory is available. The database can also store draft copies of
the current message whilst the message is being edited.</p>
        <p>
          The mapping of the features to the logical components is based on known software design
methods. The goal of the design is to create components that provide a cohesive set of
responsibilities through their interfaces
          <xref ref-type="bibr" rid="ref12">(Wirfs-Brock, Wilkerson and Wiener, 1990)</xref>
          . The
logical component may also serve as an information-hiding unit. The Messaging Server
component hides the communication protocols that are used when interacting with the
network. The SMS client manages the user communication and the Database component
provides a control over the shared resource. This division helps achieving even distribution of
responsibilities among the logical components.
        </p>
        <p>Software patterns may also be used to bridge the gap between the solution and the problem
domain. Patterns provide tested solutions to commonly encountered problems. They are
complementary to our approach. Patterns can be used to structure the system into subsystem
and for developing class structure of the subsystems. Especially, patterns help achieving the
identified quality aspects of the system. But during real-life development they provide
solutions for a very small number of problems – mapping the requirements to a few places in
the architecture.</p>
        <p>enter text
SMS control
display SMS
receive SMS
&lt;&lt;logical component&gt;&gt;</p>
        <p>DataBase</p>
        <p>store SMS
search contact
forward SMS
&lt;&lt;use&gt;&gt;
&lt;&lt;use&gt;&gt;
&lt;&lt;use&gt;&gt;
&lt;&lt;use&gt;&gt;</p>
        <p>send SMS
&lt;&lt;use&gt;&gt;
display text
&lt;&lt;logical component&gt;&gt;</p>
        <p>Message server
&lt;&lt;use&gt;&gt;</p>
        <p>SMS editing
&lt;&lt;logical component&gt;&gt;</p>
        <p>Message client
In the logical model, we have used two different ways to represent dependencies between the
logical components and the system interfaces. Within the SMS application, the collaboration
of the different elements is shown using provided interfaces and dependency relations from
the components that use those interfaces. Since only the SMS application is shown in the
figure 9, it is not appropriate to show how the SMS application component depends on other
components. The component should not depend on the actual components but rather the
interfaces that the component needs to provide its services. To represent this information for
the integration purposes, we show the required interfaces by dependency relation to the
interface that this component requires (send SMS and display text). This notation is typically
used to show the outside boundary of a component when other components are not show in
the current scope of the model.</p>
        <p>The table 3 provides a brief description of the main responsibilities of each of the logical
components that are part of the SMS messaging application.</p>
      </sec>
      <sec id="sec-5-5">
        <title>Logical</title>
      </sec>
      <sec id="sec-5-6">
        <title>Component</title>
        <p>Messaging
server
SMS client
Database</p>
      </sec>
      <sec id="sec-5-7">
        <title>Description</title>
        <p>Messaging server communicates with the GSM protocol stack to send and
receive text messages. The messaging server is capable of notifying a
messaging client about received messages.</p>
        <p>SMS client is responsible of notifying the user about received text
messages and allows the user display and edit text messages.
The database offers a persistent storage of contacts and text messages and
provides search services to find a contact using the name as a search key.</p>
      </sec>
    </sec>
    <sec id="sec-6">
      <title>6. Discussion</title>
      <p>The four different modeling approaches were designed to articulate different stakeholder
needs at different stages of the transition process from requirements to architecture
specification. The viewpoint approach is used to integrate the models and make the transition
process more transparent. Viewpoints also allow different stakeholders to remain focused on
one part of the transition process at a time.</p>
      <p>The approach gives prominence to feature modeling as a bridge between requirements and
their realization in architectural design. This is important because features are a natural way
for customers and users to express their needs.</p>
      <p>The approach is based on intensive use of different models that share entities. This can easily
lead to inconsistencies between different views. It will be essential to have computer-aided
support for creating and browsing the viewpoint models and to ensure consistency between
them.</p>
      <p>One of the main benefits of the viewpoint model is that is does not strongly force to adapt a
certain development process or method. The set of viewpoints that are used for a particular
development project can be tailored based on known major concerns. The information on the
required entities allows us to select a set that has all the needed concepts. If selected
viewpoints require entities that are not introduced by other selected viewpoints then additional
viewpoints shall be added based on those dependencies.</p>
      <p>Even if can be argued that the viewpoint approach supports multiple methods and process, it
is clear that our selection of viewpoints and their entities imply certain practises. The four
viewpoints introduced in this paper are in practise often used as follows.</p>
      <p>First a problem domain model is created or an existing model is adapted for the new situation.
Then the main features of the system are collected and structured to form the initial feature
hierarchy. Most products have existing feature lists that form the basis of that work. When an
improved version of a system is created it often supports most of the features of the previous
system. Simultaneously, the requirements for the system are collected and structured
according to the problem domain model. The requirements are then mapped to the feature
models and the resulting structure is analysed for possible gaps and overlapping requirements.
An important step during the process is to identify architecturally significant requirements and
to which features these are attached.</p>
      <p>After creating the initial models for the first three viewpoints, the first skeleton architecture is
drafted. This is mainly based on the most important features and the identification of the
architecturally significant requirements. The main objective for the initial architecture is to
demonstrate that the main features can be implemented while satisfying the key requirements.
After this each of the models are updated and elaborated when new features and requirements
are added. The work typically progresses in highly iterative manner where new increments are
added and the understanding of the feasibility to satisfy specified requirements improves
during the iterations.</p>
      <p>The main contributions of the paper are the following. We have identified the main steps of a
general product development process and specified abstract viewpoints to support these steps.
We have explained, how these different methods and techniques interrelate and how they can
be used together during practical development. To achieve this, we introduced an integrated
model that provides metamodels for each of the four viewpoints. Finally, we demonstrated
our model with a worked example.</p>
      <sec id="sec-6-1">
        <title>Acknowledgements</title>
        <p>This paper has been partially done in CAFE project. CAFE is project 00005 in ITEA
organization a part of Eureka Σ! 2023 program.</p>
      </sec>
    </sec>
    <sec id="sec-7">
      <title>7. References</title>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          <string-name>
            <surname>Cohen</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Stanley</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Peterson</surname>
          </string-name>
          , and
          <string-name>
            <given-names>R.</given-names>
            <surname>Krut</surname>
          </string-name>
          (
          <year>1992</year>
          )
          <article-title>: Application of feature-oriented domain analysis to the army movement control domain</article-title>
          ,
          <source>Technical Report CMU/SEI-91- TR-028</source>
          , Software Engineering Institute, Carnegie Mellon University.
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          <string-name>
            <surname>Czarnecki</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          , and
          <string-name>
            <given-names>U.</given-names>
            <surname>Eisenecker</surname>
          </string-name>
          (
          <year>2000</year>
          )
          <article-title>: Generative Programming - Methods Tools and Applications</article-title>
          , Addison-Wesley.
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          <string-name>
            <surname>Ferber</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Haag</surname>
          </string-name>
          , J.
          <string-name>
            <surname>Savolainen</surname>
          </string-name>
          (
          <year>2002</year>
          )
          <article-title>: Feature Interaction and Dependencies: Modeling Features for Re-engineering a Legacy Product Line</article-title>
          , in
          <source>the Proceedings of the Second Product Line Conference (SPLC2)</source>
          ,
          <fpage>235</fpage>
          -
          <lpage>256</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          <string-name>
            <surname>Griss</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Favaro</surname>
          </string-name>
          , and
          <string-name>
            <surname>M d'Alessandro</surname>
          </string-name>
          (
          <year>1998</year>
          )
          <article-title>: Integrating feature modeling with the RSEB</article-title>
          .
          <source>In Proceedings of Fifth International Conference on Software Reuse, IEEE</source>
          , pp.
          <fpage>76</fpage>
          -
          <lpage>85</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          <string-name>
            <surname>Hillard</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          , (
          <year>1999</year>
          )
          <article-title>: Views and Viewpoints in Software Systems Architecture, a position paper for the First IFIP Working Conference on Software Architecture (WICSA1).</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          <string-name>
            <surname>IEEE</surname>
          </string-name>
          (
          <year>1990</year>
          )
          <article-title>: IEEE Standard Glossary of Software Engineering Terminology</article-title>
          ,
          <source>IEEE Std 610</source>
          .
          <fpage>12</fpage>
          -
          <lpage>1990</lpage>
          , IEEE.
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          <string-name>
            <surname>IEEE</surname>
          </string-name>
          (
          <year>2000</year>
          )
          <article-title>: Recommended Practice for Architectural Description of Software-Intensive Systems</article-title>
          , IEEE Std 1471
          <article-title>-2000</article-title>
          , IEEE.
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          <string-name>
            <surname>Jackson</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          , (
          <year>2001</year>
          )
          <article-title>: Problem Frames - Analyzing and structuring software development problems</article-title>
          , Addison-Wesley.
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          <string-name>
            <surname>Lee</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Kang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Chae</surname>
          </string-name>
          , and B.
          <string-name>
            <surname>Choi</surname>
          </string-name>
          (
          <year>2000</year>
          ):
          <article-title>Feature-based approach to object-oriented engineering of applications for reuse</article-title>
          ,
          <source>Software Practice and Experience</source>
          , vol.
          <volume>30</volume>
          , pp
          <fpage>1025</fpage>
          -
          <lpage>1046</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          <string-name>
            <surname>Lorentsen</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>A-P. Tuovinen</surname>
          </string-name>
          , and J.
          <string-name>
            <surname>Xu</surname>
          </string-name>
          (
          <year>2001</year>
          )
          <article-title>: Experiences in modelling feature interactions with colored petri nets</article-title>
          . Tibor Gyimothy, editor,
          <source>In the Proceedings of Seventh Symposium on Programming Languages and Software Tools SPLST</source>
          <year>2001</year>
          , pp.
          <fpage>221</fpage>
          -
          <lpage>230</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          <string-name>
            <surname>Savolainen</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          , and J.
          <string-name>
            <surname>Kuusela</surname>
          </string-name>
          (
          <year>2002</year>
          )
          <article-title>: Framework for Goal Driven System Design</article-title>
          , in
          <source>the Proceedings of COMPSAC</source>
          <year>2002</year>
          ,
          <volume>749</volume>
          -
          <fpage>756</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          <string-name>
            <surname>Wirfs-Brock</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Wilkerson</surname>
          </string-name>
          , and L.
          <string-name>
            <surname>Wiener</surname>
          </string-name>
          (
          <year>1990</year>
          ): Designing
          <string-name>
            <surname>Object-Oriented</surname>
            <given-names>Software</given-names>
          </string-name>
          , Prentice Hall.
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          <string-name>
            <surname>Yourdon</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          , (
          <year>1989</year>
          )
          <article-title>: Modern Structured Analysis</article-title>
          , Prentice Hall.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>