Professional Documents
Culture Documents
net/publication/220757076
CITATIONS READS
16 8,499
2 authors:
Some of the authors of this publication are also working on these related projects:
All content following this page was uploaded by Stella Pachidi on 05 June 2014.
Abstract. Although a lot of research has been carried out on the technical
architecture of software systems, the domain of Functional Architecture in the
software product industry lacks a formalization of the related concepts and
practices. Functional Architecture Modeling is essential for identifying the
functionalities of the software product and translating them into modules, which
interact with each other or with third party products. Furthermore, the
functional architecture serves as a base for mapping the requirements and
planning the product releases. Some software vendors intuitively tend to design
the functional architecture of their products, but this practice has been
unstructured so far and realized only in specific business domains. In this paper,
we present the Functional Architecture Diagrams, a powerful modeling tool for
the functional architecture of software products, which comprises: a modular
decomposition of the product functionality; a simple notation for easy
comprehension by non-specialists; and applicability in any line of business,
offering a uniform method for modeling the functionalities of software
products.
The discipline of software architecture, developed mainly during the last 20 years, is
considered to be fundamental for the successful development of software products.
According to Bass, Clements & Kazman [4] software architecture: constitutes a
common language for the stakeholders −architects, product managers, software
engineers, consultants, customers, marketing department− to communicate; captures
design decisions in the early stages of a software product, which enable or inhibit
implementation attributes and are used as reference in the future for managing
change; consists of generalized constructs that can be transferred and reused in other
product lines.
According to IEEE Standard 1471 [13], architecture is defined as “the
fundamental organization of a system embodied in its components, their relationships
to each other and to the environment and the principles guiding its design and
evolution”. A lot of definitions for software architecture have been developed [24],
among which we find interesting the view of Johnson [9], who considers architecture
as “the set of design decisions that must be made early in a project”.
Architecture viewpoints in software products provide guidelines to describe
uniformly the total system and its subsystems. In the sense that the architecture should
address the concerns of the stakeholders of the system [13][14], a viewpoint can be
understood as a frame that identifies the modeling techniques that should be used to
describe the architecture in order to address a defined subset of these concerns.
Following the categorization of concepts by Broy et al. [7], we suggest that
architecture viewpoints could be divided into three abstraction layers: The functional
architecture describes the system by its functional behavior and the interactions
observable with the environment. The logical architecture describes the system's
internal structure, represented as a network of logical components that implement the
system's functionality. The technical architecture describes how the system is
realized, its software behavior, and its hardware structure.
A view represents the content of a viewpoint applied to a particular system.
According to IEEE Standard 1471 description, view is defined as “a representation of
the whole system from the perspective of a related set of concerns” [13]. Numerous
sets of views have developed since 1990, amongst which we distinguish Kruchten's
“4+1” view model of software architecture [16], the Siemens Four View model [22]
and the model proposed by Herzum and Sims [11] in their book Business Component
Factory. Furthermore, frameworks from the area of Enterprise Architecture such as
Zachman's Framework [27] and TOGAF [8] include sets of architectural views that
could also be applied in software architecture.
According to Van Vliet [25], the phase of designing the architecture of a software
product is placed in the product lifecycle between the requirements engineering phase
and the design phase. During the architecture design phase the architectural views are
developed and relevant design decisions are taken with respect to all stakeholders'
concerns and interests [14]. Hence, considering the requirements as triggers and input
for the architecture design phase, we look for a method of capturing the requirements
into the software product architecture. Although many well known techniques have
evolved at a low level (e.g. use case diagrams), we have observed that there is no
formal way of modeling the Functional Architecture at a high level, such that it can
comprise all requirements addressed to the product's functions, and it can be
communicated amongst all stakeholders in an efficient and effective way and
constitute a basis for the product design and planning. In this context, we have
developed and present here a technique for Functional Architecture Modeling.
We define Functional Architecture (FA) as an architectural model which
represents at a high level the software product's major functions from a usage
perspective, and specifies the interactions of functions, internally between each other
and externally with other products.
The Functional Architecture Model (FAM) includes all the necessary modules and
structures for the visualization of the functional architecture of a software product and
its relevant applications in the business domain. Consequently, it constitutes a
standard arrangement of all the requirements positioned in modules that correspond to
the product's functionalities. The Functional Architecture should be designed together
with product managers, architects, partners and customers, and should be expressed in
easy to understand diagrams. Referring back to the definition of viewpoints, we
clarify that Functional Architecture addresses mainly the concerns of stakeholders
like customers, marketing and sales employees, end-users, i.e. stakeholders with no
technical expertise.
The Functional Architecture Model that we propose, can be used by software
product manages to show the product roadmap to their customers and can constitute a
reference base for the architecture design phase in the software product lifecycle. As a
consequence, it can also be used as reference for managing the product vision for
subsequent releases, registering incoming requirements and dividing work amongst
development teams.
Many organizations already tend to design intuitively the functional architecture
of their software systems. A practical example is the effort to model the functional
architecture of Baan ERP, the main product of Baan, a vendor of enterprise resource
planning software that is currently owned by Infor Global Solutions. In [10], the case
studies indicate an effort to model the product's functionalities, but from a more
technical perspective. Also, in this context, we have noticed the use of reference
architectures during the design phase of enterprise solutions [20][3], which provide
generic templates for the functional architecture of applications in a particular line of
business. In [2], software reference architecture is defined as “a generic architecture
for a class of information systems that is used as a foundation for the design of
concrete architectures from this class”. The IBM Insurance Application Architecture
[12] is a reference architecture for the insurance domain, which covers all related
business functions. Another example is the Supply Chain Operations Reference [23]
which is a process reference model in the area of supply chain management. The use
of reference architecture in software engineering helps indicate the complete
functional coverage of a product, define the technical quality of its modules, and
identify market growth options and functionalities to put in the product roadmap.
Despite the invaluable contribution of reference architectures and other similar
modeling attempts in specific lines of business, there is no scientifically supported
way to design the functional architecture of software products in any domain. In this
paper we intend to formalize the existing practices in a uniform modeling technique
that can be used in all product lines and can be easily communicated to the non-
specialist stakeholders. This technique has been followed in the FA design of
approximately 40 innovative software products developed by the students of ICT
Entrepreneurship course in Utrecht University for the last four years [18].
In the following sections of this paper, we present the structures of the Functional
Architecture, provide guidelines for modeling the functional architecture of a software
product, and finally illustrate this process through an example.
Table 1. Font sizes of headings. Table captions should always be positioned above the tables.
The purpose of this paper is to emphasize the need for a uniform technique to model
the Functional Architecture of Software Products. In this section we present the
concepts related to Functional Architecture and we propose the Functional
Architecture Model and its corresponding views, which are designed through the
Functional Architecture Diagrams. In the second part of the section, we elaborate on
the modular decomposition of the Functional Architecture.
The Functional Architecture of a software product is not limited in the product scope
level. Instead, it can be modeled in more layers, supporting the functional
decomposition of the product. A module of the software product represents a set of
sub-modules which correspond to lower level functions that interoperate to implement
the corresponding functionality. On a second FA layer, we could consequently model
the functional architecture on the module level. In figure 4 we can see the FAD that
visualizes the module scope for the function Authoring. We strongly encourage
preserving the consistency between FADs on different levels. For example, in figure 4
we can notice the same external interactions for the module Authoring, as the internal
flows between this module and other modules in the FAD of the product scope in
figure 3.
From our experience, we have noticed that the functional architecture is usually
modeled in two to three layers. The FADs are designed following the same notation
and rules, which we will see in the next section. On the lowest level, each module is
supported by features, which represent the processes that constitute the respective
function that the module implements. We remind here that functions were defined as
collections of processes. A process is defined as an activity, the start and end of which
are clearly defined and its execution can be described in terms of needed and
delivered data. The features indicate what the software system does and not how it
realizes it. They include lower level of details than the module.
The names of features usually start with a verb, to indicate the process they
correspond to. Examples are: “open template”, “send template to”, “select rules”, etc.
Processes are modeled by Feature Models, which constitute a modeling tool for the
process support functionality in a software product. Riebisch [21] has elaborated on
defining feature models for supporting processes in software product lines. The
feature models are considered as a criterion for ending the modular decomposition of
the functional architecture, as we know that by reaching the process level we have
created a sufficient number of views of the functional architecture model.
In this section we presented the Functional Architecture Model, which is reflected
in the different views, visualized by Functional Architecture Diagrams, on different
layers of decomposition. In the next section we will suggest a technique for creating
the FAM in simple and uniform diagrams, applicable for any product domain.
4 An Approach for Designing Functional Architecture Diagrams
One of our goals is to have a very simple notation so that functional architecture can
easily be communicated with stakeholders with no specialization on software
architecture, such as the customers of the software vendor. The notation of a FAD can
be seen in figures 3 and 4. The following constructs are used:
a) We use boxes to model modules or sub-modules of the product, which represent
functions or processes. For the naming we use substantivized nouns (e.g. Planning
instead of Plan), which need to start with capital letter. The choice of names is
critical: since the diagram will constitute a fundamental means of communication
amongst the stakeholders, precise and determining terms that are well known in the
business domain are preferred. Finally, coloring can be used to categorize the
modules hierarchically or according to their use.
b) Arrows are used to model interactions between modules in the form of
information flows. Typical examples of information flows include notifications,
requests, feedback to requests, and documents. The names of information flows are all
written in lower case.
c) A rectangle is used to cover the modules of the product (or the sub-modules of
the modules) to indicate the product (or module) scope. The module name should be
stated in the lower-right corner of the rectangle.
In this section we present the basic steps for modeling the Functional Architecture of
a software product with a functional architecture diagram. We illustrate the process
with the example of a Dining Room Management Application. The usage context of
the product consists of all the functions that need to be performed in a restaurant,
from the handling of a reservation, the processing of an order, up to the customer's
payment.
(a) Product Scope and external products (b) Request-feedback flows with external applications
Fig. 7. Adding control and monitoring modules in the Dining Room Management
application
In this paper, we accentuated the need for modeling the Functional Architecture of
software products. We proposed the Functional Architecture Model which can be
visualized through Functional Architecture Diagrams in different layers of
decomposition. We provided a technique for creating FADs and in parallel illustrated
the design process through an example.
The Functional Architecture Model has been introduced in a manner that supports
the design principles and structures for FA discussed in section 2. As far as the
principles for the FA design process are concerned: The FA can be designed by one or
few architects, based on the existing requirements and prioritized qualities, which can
easily be mapped on the product's modules. The notation is easily understandable by
non-specialists, thus all stakeholders (product managers, architects, developers,
customers, marketing and sales, end-users) can be involved in the review of FA. The
visualization of FA through FADs eases the identification of bottlenecks and the
inspection of qualitative and quantitative measures. Finally, the suggested modular
decomposition supports the creation of a “skeletal system” that can easily be
expanded in the future by adding new modules.
Regarding the principles for the structure of FA, first of all the modules in our
FAM separate concerns and support the hiding of information, while the interfaces are
placed only when request-feedback flows between modules and/or external products
are needed. Evidently, since each module corresponds to different functionality, it is
possible to develop modules quite independently from one another, while the focus on
functionalities makes the architecture independent of technical changes and of
particular commercial products, and enables the introduction of few and simple
interaction patterns that increase performance and enhance modifiability and
reliability. The suggested convention of positioning the modules hierarchically and
according to the flow of execution separates the modules that “produce data” from
those that “consume data”.
The suggested design structures for the FA were followed in our FAM approach.
Modularity is supported by the creation of modules which correspond to different
product functionalities and are later on decomposed in lower levels of abstraction. In
section 3, we inspected the modules of the product scope for a Collaborative
Authoring Tool and the decomposition of its “Authoring” module into sub-modules.
The FADs are structured in a way that the FA can easily be adapted in different
organizational settings. For example, the FAD for a Dining Room Management
application in figure 8 was constructed for a restaurant environment. However, it
could easily be adapted in other similar environments: certain modules (Ordering,
Inventory Control, Order Processing, Pricing, Payment Processing, Financial
Management) are standard for all organizational settings while the remaining modules
are variant according to the environment. If we wanted to create the FAD for a fast
food restaurant, we could simply remove the modules Reservations Management,
Waitlist Management, Order Management and Table Arrangement and insert the
module Order Forecasting. Finally, the inspection of the request-feedback flows
enables the identification of all possible interfaces that will need to be designed so
that the product can flexibly interact with different external products, confirming the
interoperability structure.
The Functional Architecture Model can facilitate the system design by describing
the inherent functional structure of the system's modules and their interactions, as
well as the interactions with external applications. The modular decomposition offers
a separation of the system's functionalities, thus it reduces complexity, eases the
communication and collaboration among stakeholders, enables managing the product
development by partitioning work into independent tasks, and set off transferrable and
reusable elements of the product.
We suggest that FADs constitute a powerful tool for modeling the functional
architecture of software products. The notation is rather simple thus they can easily
and quickly be designed, leaving space to the architect to deal with planning the
functionalities of the product in an optimal way and easing the communication with
the non-specialist customers, who can recognize the models without formal training.
FADs can be used to determine the modules of the software product. Although
certain programming languages like Java support hierarchical module structure, other
languages (e.g. PHP) have not developed modularity sufficiently. A module structure
is critically essential for designing a software product, in order to plan and organize
the development work [19].
Moreover, FADs indicate the interactions between the product's modules and the
environment. This is convenient from a development point of view, since we have a
visualization of which interfaces will need to be implemented for the software
product, as also from a management point of view, to have an indication of which
third party products will interact with the software product.
Finally, our proposed approach for Functional Architecture Modeling can be
applied in any type of business: public sector (healthcare, governmental) and private
sector (manufacturing, financial, services, food and beverage, project industries).
In our future research we intend to inspect the incorporation of scenarios with the
functional architecture diagrams, in order to visualize on a high level the flow
between the product's modules and third party applications for the implementation of
the system's functionalities.
References
1. Anderson, D.M.: Design for Manufacturability. Optimizing Cost, Quality and Time-to-
Market. CIM Press, Cambria, CA (2001)
2. Angelov, S., Grefen, P.W.P.J., Greefhorst, D.: A classifcation of software reference
architectures: Analyzing their success and effectiveness. In: Proceedings Joint Working
IEEE/IFIP Conference on Software Architecture & European Conference on Software
Architecture 2009. (2009) 141–150
3. Arsanjani, A., Zhang, L.J., Ellis, M., Allam, A., Channabasavaiah, K.: Design an SOA
solution using a reference architecture. (2007) From
http://www.ibm.com/developerworks/library/ar-archtemp/
4. Bass, L., Clements, P., Kazman, R.: Software architecture in practice. Addison-Wesley
Longman Publishing Co., Inc., Boston, MA, USA (1998)
5. Brinkkemper, S.: Dynamic enterprise innovation: Establishing continuous improvement in
business. In R. van Es (eds.) pp. 4–15. Baan Business Innovation.(1998)
6. Brinkkemper, S., Soest, I. van & Jansen, R.L.: Modeling of product software businesses:
Investigation into industry product and channel typologies. In proceedings of the Sixteenth
International Conference on Information Systems Development (ISD 2007). Springer-
Verlag.(2007)
7. Broy, M., Gleirscher, M., Merenda, S., Wild, D., Kluge, P., Krenzer, W.: Toward a holistic
and standardized automotive architecture description. Computer 42 (2009) 98–101
8. Buckl, S., Ernst, A.M., Matthes, F., Ramacher, R., Schweda, C.M.: Using enterprise
architecture management patterns to complement TOGAF. In: EDOC’09: Proceedings of
the 13th IEEE international conference on Enterprise Distributed Object Computing,
Piscataway, NJ, USA, IEEE Press (2009) 32–39
9. Fowler, M.: Who needs an architect? IEEE Softw. 20(5) (2003) 11–13
10. van Gurp, J., Brinkkemper, S., Bosch, J.: Design preservation over subsequent releases of a
software product: a case study of baan erp: Practice articles. J. Softw.Maint. Evol. 17(4)
(2005) 277–306
11. Herzum, P., Sims, O.: Business Components Factory: A Comprehensive Overview of
Component-Based Development for the Enterprise. JohnWiley & Sons, Inc.,New York,
NY, USA (2000)
12. IBM Insurance Application Architecture, http://www-
07.ibm.com/solutions/sg/insurance/enterprise_aa/summary.html
13. Ieee std 1471–2000, recommended practice for architectural description of software-
intensive systems. Technical report, IEEE (2000)
14. Koning, H.: Communication of IT Architecture. Thesis Dutch Research School for
Information and Knowledge Systems. (2008)
http://igitur-archive.library.uu.nl/dissertations/2008-0908-200828/koning.pdf
15. Koning, H., Bos, R., Brinkkemper, S.: A lightweight method for the modeling of enterprise
architectures. In: Service-Oriented Computing – ICSOC 2008 Workshops: ICSOC 2008
International Workshops, Sydney, Australia, December 1st, 2008, Revised Selected Papers,
Berlin, Heidelberg, Springer-Verlag (2008) 375–387
16. Kruchten, P.: The 4+1 view model of architecture. IEEE Softw. 12(6) (1995) 42–50
17. Moon, M., Yeom, K.: An Approach To Developing Core Assets in Product Line, Asia-
Pacific Software Engineering Conference, pp. 586-588, In: 11th Asia-Pacific Software
Engineering Conference (APSEC’04), 586-588 (2004)
18. Nab, J., Pilot, A., Brinkkemper, S., Berge, H. ten.: Authentic competence-based learning in
university education in entrepreneurship. International Journal of Entrepreneurship and
Small Business. 9(1) (2010) 20 – 35.
19. Parnas, D.L.: On the criteria to be used in decomposing systems into modules. Commun.
ACM 15(12) (1972) 1053–1058
20. Reed, P.: Reference Architecture: The best of best practices. (2002)
http://www.ibm.com/developerworks/rational/library/2774.html
21. Riebisch, M.: Towards a more Precise Definition of Feature Models – Modelling
Variability for Object-Oriented Product Lines. BookOnDemand Publ. Co., Norder-stedt.
(2003) 64–76.
22. Soni, D., Nord, R.L., Hofmeister, C.: Software architecture in industrial applications. In:
ICSE ’95: Proceedings of the 17th international conference on Software Engineering, New
York, NY, USA, ACM (1995) 196–207
23. Supply Chain Council (2010). What is SCOR? Retrieved March 10, 2010, from
http://www.supply-chain.org/about/scor/what/is
24. Software Engineering Institute.: How Do You Define Software Architecture? (2005)
http://www.sei.cmu.edu/architecture/definitions.html
25. van Vliet, H.: Software engineering (2nd ed.): principles and practice. John Wiley & Sons,
Inc., New York, NY, USA (2000)
26. van de Weerd, I., Brinkkemper, S., Nieuwenhuis, R., Versendaal, J., Bijlsma, L.: Towards a
reference framework for software product management. In: IEEE International Conference
on Requirements Engineering, Los Alamitos, CA, USA, IEEE Computer Society (2006)
319–322
27. Zachman, J.A.: A framework for information systems architecture. IBM Syst. J. 26(3)
(1987) 276–292