Structuring Software Cities – A Multidimensional Approach

Structuring Software Cities – A Multidimensional Approach
Andreas Hess, Bernhard Humm1, Markus Voss, Gregor Engels2
sd&m Research, Munich, Germany,
1
additionally Darmstadt University of Applied Sciences, 2additionally University of Paderborn
{Andreas.Hess, Bernhard.Humm, Markus.Voss, Gregor.Engels}@sdm.de
Abstract
Software cities alias application landscapes of large
enterprises comprise tens or even hundreds of IT
applications. Structuring software cities into domains
is an important task of enterprise architects. The
quality of the resulting domain model is crucial for the
success of enterprise architecture management and an
important tool for the governance of the development
of an enterprise’s application landscape. This paper
presents a novel method for constructing domain
models based on business services, business objects,
and business dimensions. The method has been
validated in numerous industrial projects.
to group the applications. In this paper these coloured
zones of an application landscape are called domains.
They define a high level structure for the application
landscape – the domain model – that can be used as a
tool in enterprise IT architecture management. In this
paper, we present a method for constructing domain
models for application landscapes. This method uses
multiple dimensions (customers / markets, products,
length of value chain, access channels to customers) to
deduce the domains. This method has been proven in
industrial practice.
1. Introduction
The IT departments of large enterprises today run tens
or even hundreds of IT applications. All applications,
together with their interconnectivity, we call the
application landscape of the enterprise. Application
landscapes are sometimes also called software cities. If
one compares the architecture of an individual
application with the architecture of a building then the
architecture of an application landscape is like the
structure of a city. Like real cities, software cities need
city planning to provide high quality support for the
enterprise’s business processes and flexible
adaptability to changes in the enterprise’s ecosystem.
Software city planning is the task of enterprise IT
architects. As a discipline, enterprise architecture
management addresses the structure of an application
landscape (software city) as well as the management
processes needed to govern the development of an
application landscape from an as-is situation to a target
structure.
Figure 1 shows the application landscape of a bank
as an example. It shows the applications as components
of the application landscape with their dependencies. It
also shows a base structure (the coloured boxes) used
Figure 1. Domain model and IT components of
a bank
This work is part of the research effort Quasar
Enterprise which has been conducted at sd&m
Research and sd&m IT Consulting for more than three
years. Quasar Enterprise distils the experience from
enterprise architecture management and systems
integration in numerous industrial projects with a total
effort of more than 100 person years.
The paper is structured as follows: in Section 2, we
introduce domain models. Section 3 defines the input
for the method for constructing a domain model. This
method is then presented in Section 4. Section 5 gives
an example, followed by project experience (Section 6)
Andreas Hess, Bernhard Humm, Markus Voß, Gregor Engels
Structuring Software Cities - A Multidimensional Approach
Proceedings of the 11th IEEE International EDOC Enterprise Computing Conference (EDOC 2007)
ISBN 0-7695-2891-0, IEEE Press, 2007
and related work (Section 7). Section 8 concludes this
paper.
2. Application Landscapes and Domains
2.1 Terminology
Domains are the districts and suburbs of software
cities. We use the term domain knowing that (like
component) it is heavily used in different contexts with
various meanings (e.g. domains in data modelling,
domain specific languages, domains in component
models like .NET, or business domains like banking).
We chose to stick to it since it is widely established in
the enterprise architects’ community [1], [2], [3].
The terms software city and application landscape
are often used in publications on enterprise architecture
as synonymous metaphors for the structure of an
enterprise’s IT application portfolio. Examples are [4]
and [5]. For the rest of this paper, we will use the term
application landscape.
Domains represent clusters of services and managed
information. They provide the top level structure of the
application landscape. Domains may be refined by sub
domains. In Figure 1, the domains are represented by
the differently shaded areas of the application
landscape. Domains group logical components which
are bundles of services – the white boxes in Figure 1.
The logical components are implemented using
physical applications (commercial off-the-shelf or
custom-built) that are integrated using an appropriate
integration infrastructure, e.g. an enterprise service bus
(ESB). The structure of the domains forms the domain
model of the enterprise. Depending on the industry and
the individual enterprise a domain model typically
consists of approximately 10 - 30 top-level domains.
In this paper, we do not address groups of
application landscapes, which would be a possible
option for enterprise architecture management for
multinational corporate groups.
We also focus on the top-level domain structure
only. Domain / sub domain structures and component /
subcomponent structures are possible. The presented
method applies accordingly for different levels of
granularity.
2.2 Why is a domain model important?
Domain models can be used by enterprise architects as
a tool for defining the target application landscape at
the enterprise level. Large Enterprises like Credit
Suisse [1] or Deutsche Post [2] follow the strategy of a
managed evolution of their application landscapes
from an as-is situation to defined target. The managed
evolution approach aims to define smaller IT projects
with positive business cases and limited scope, so as to
provide short-term business benefits while complying
with a standard target.
The evolution is managed, because enterprise
architects govern the development of the application
landscape. In this way domain models are used for
strategic planning as well as for the operational
management of an enterprise’s IT project portfolio.
A domain model also helps to establish business
ownership for applications and services as it links the
business process architecture and the IT application
architecture of an enterprise: domains represent sets of
applications and databases that are managed as units
for business reasons, instead of organizing them, e.g.,
by types of IT platforms.
Documenting application landscapes, another central
part of enterprise architecture management, relies
heavily on graphical and intuitive visualizations.
Planning, deciding, and controlling with respect to
measures on the application landscape all benefit from
such visualizations, called software maps [6], [7].
Similar to the concept of maps used in cartography, a
software map is composed of a base map and several
layers. Figure 1 is an example of such a software map.
Based on a defined domain structure, software maps
can be used to visualize the delta between an as-is
situation and the target situation defined by the domain
model: The target domain model is used as a base map
together with a mapping of the as-is application
components on an individual layer.
Domains can also be helpful for more technical
aspects of architecture management as they provide the
starting point for the definition of rules for
• the design of components, e.g., components must
not span domain boundaries
• the design of interfaces, e.g., loose coupling for
interfaces used across domain boundaries
• the use of technologies for application integration,
e.g. mandatory use of an enterprise service bus for
the integration of components in different domains
3. Required input for constructing a
domain model
The method for constructing a domain model deduces
the domains from a set of input parameters that are part
of the enterprise’s operating model.
sales & advice, operations (production), and support
service.
3.1 Business services
Application landscapes are structured according to the
business of an enterprise – not according to technology.
Hence, the most important inputs for modelling
domains are the business services of the enterprise. By
business services we understand a top-level grouping of
the main business activities that can be found in the
value chain of an enterprise. Identifying business
services is the task of business analysts. They can be
derived from the top level business processes and the
enterprise’s organization.
We distinguish between core business services and
management & support services. Core business
services directly facilitate the business strategy of an
enterprise whereas support services only indirectly
facilitate it. Business services can be structured
hierarchically. We aim at about 5-10 top-level core
business services. Figure 2 shows typical business
services of a bank.
Marketing
Sales
& Advice
Operations
Support
Service
Order
Management
Order
Execution
Settlement
Custody
Accounting
Controlling
Risk
Management
Human
Resources
Top-level business objects are coarse-grained. We aim
at about 5-10 business objects.
Compliance
Product
Contract
Order
Account
Figure 3. Business objects
Accounting
& Booking
Management &
Support Services
ERP
Business objects are the most relevant top-level
information items of an enterprise. In our banking
example we identify the following:
• Business Partner, e.g., a retail banking customer
• Product, e.g., savings, checking accounts, loans
• Account, e.g., the account used for booking of
payments
• Contract, e.g., the result of opening a checking
account
• Order, e.g., a bank transfer from one account to
another
Business
Partner
Core Business
services
Product
Development
3.2 Business objects
Treasury
…
Identifying the main business objects and is the
business analysts’ task. As for business services,
similarly named business objects are used in different
businesses. For example, an automotive manufacturer
also has business partners, products, contracts, and
orders.
…
Figure 2. Business services of a bank
(examples)
A bank comprises the following core business services:
• Product development, e.g., the development of new
products and services
• Marketing, e.g., performing campaigns
• Sales & advice, e.g., advising retail customers on
home loans
• Operations, e.g., selling stocks on the stock
exchange (order execution)
• Support service, e.g., sending monthly account
statements to customers
Management & support services are classic enterprise
resource planning services (e.g., accounting,
controlling, human resources), as well as risk
management, compliance, treasury etc.
Since business services are top-level and coarsegrained, they are similar for different businesses. For
example, an automotive manufacturer also performs the
business services of product development, marketing,
3.3 Business dimensions
The operating model of an enterprise is typically
shaped by the following question: Which products are
sold to which customers / markets using an how long is
the enterprise’s value chain?
A bank may answer this question in the following
way. The portfolio comprises the following products:
• Account-based products, e.g., savings bank accounts
• Loans, e.g., home loans
• Securities, e.g., stocks, bonds
• Payments, e.g., bank transfers
Products are sold to the following customers / markets:
• Retail banking customers, i.e., private customers
• Corporate customers, i.e., companies
The following value-creating operations are / are not
carried out by the enterprise:
• Product development, marketing, sales, and support
service are completely performed within the
enterprise.
• Payment transaction banking is not performed
within the enterprise but is being outsourced to a
partner corporation.
• Credit administration and securities settlement and
custody are candidates for possible process
outsourcing in the future. Both are subtasks of
operations.
Often in this context, the term business value creation
chain or shortly value chain is being used. The length
of the value chain defines which value-creating
operations are carried out within enterprise itself and
which are carried out by partners. The more tasks are
performed within the enterprise the longer the value
chain. The more tasks are outsourced to partners the
shorter the value chain. Modern enterprises tend to
shorten the value chain by concentrating on their core
business and by outsourcing specific tasks to
specialists.
Categories like products, customers / markets or
length of the value chain we call business dimensions.
See Figure 4 for the banking example.
…
Customers /
Markets
• Retail
banking
customers
• Corporate
customers
Products
• Branch
• Self-service
• E-banking
• Call
Centre
Customer Access
Channels
• Account-based products
• Loans
• Securities
• Payments
(depending on business service)
Length of
Value Chain
Figure 4. Business dimensions of a bank
The dimensions customers / markets, products and
length of value chain are relevant to most businesses.
Additionally, there may be business-specific
dimensions. For a bank, the following customer access
channels may be relevant:
• Branch, i.e. agencies where clerks directly service
customers face-to-face
• Self-service, e.g. automatic teller machines
• E-banking, i.e. offering banking products via
internet portals
• Call-centre, where clerks service customers via
telephone
Again, identifying the relevant business dimensions and
their values is the task of a business analyst. We aim at
about 3-5 business dimensions with about 2-5 values
each. The values of the dimensions are directly linked
to the business strategy of the enterprise. E.g., a direct
bank’s strategy is to focus solely on the customer
access channels e-banking and call centre.
Business services, business objects and business
dimensions of the operating model form the input
parameters for our method to deduce the domains. It is
presented in the next chapter.
4. A method for constructing a domain
model
Structuring application landscapes by domains is the
task of enterprise IT architects. Finding a domain
model of high quality is crucial for enterprise IT
architecture management. It requires a high level of
expertise, both in the business and in domain
modelling. Constructing a domain model in practice is
a highly incremental process. It is top-down from the
business strategy as well as bottom-up from the
existing application landscape. It requires a lot of
communication and alignment since the final domains
and their names must be understood and used by
numerous stakeholders.
Insofar, there cannot be a method for constructing a
domain model which can be applied mechanically and
in an uninformed manner which nevertheless leads to a
domain model of high quality. However, the experience
from numerous domain modelling projects shows that
there are common patterns, particularly in the top-down
driven parts of the process – the bottom-up driven parts
are usually specific to the application landscape under
consideration. The following method for constructing
domain models comprises those patterns in form of
concrete steps.
The input for this method comes from business
analysts as described in the last chapter:
• Business services, divided between core business
services and management & support services
• Business objects and their associations with business
services
• Business dimensions and their values according to
the business strategy
Given this input, the method is as follows.
1. Core business services: Take the top-level core
business services as initial domain candidates.
2. Business dimensions: Split domain candidates
according to the characteristics of one or more
business dimensions if their handling substantially
differs from a business point of view. Iterate this
step as long as the business strategy demands further
differentiation.
3. Business objects: Consider the top-level business
objects. In which of the domain candidates are they
being written, i.e., generated, modified, or deleted?
Make new domain candidates for all business
objects that are being written in more than one of the
existing domain candidates.
4. Management & support services: Make domain
candidates for all management & support services.
They usually follow the structure of modules that
enterprise resource planning (ERP) software uses.
5. Finalize: The domain candidates become the final
domains. Find meaningful domain names that are
understood and accepted throughout the enterprise –
if not already done during the iterations. Find a
meaningful and intuitive graphical representation of
the domain model. Check for completeness of the
model by mapping the physical as-is applications to
the domains.
Sales
& Advice
Business dimension customers / markets
Retail banking customers
Corporate customers
Corporate
Retail Banking
Banking
(sales & advice for
(sales & advice for
retail banking
corporate
customers)
customers)
Figure 6. Splitting sales & advice according to
customers / markets
The business service support service differs according
to the business dimension customer access channels.
The resulting domain candidates are named branch
systems, self-service, e-banking, and call centre. See
Figure 7.
Support Service
Business dimension customer access channel
Branch
E-banking
Self-service
Call centre
5. Example
We demonstrate the method for constructing a domain
model using the bank example.
Branch
Applications
(Support service
via branch)
Step 1: Core business services
Figure 7. Splitting support service according
to customer access channels
In the first step, the top-level core business services
form the initial domain candidates. See Figure 5.
Product
Development
Marketing
Sales
& Advice
Operations
Self-Service
(Support service
via self-service
facilities)
E-Banking
(Support services
via e-banking)
Call Centre
(Support service
via call centre)
Additionally, the business service operations differs
according to both business dimensions value chain and
product. See Figure 8.
Support
Service
Business dimension length of value chain
Figure 5. Core business services
Operations
Order
Management
Order
Execution
Settlement
Custody
Accounting
& Booking
The second step is the most difficult step since it
requires fundamental knowledge of the business
strategy of the enterprise.
According to the business strategy of the bank, the
business service sales & advice is to be performed
differently along the business dimension customers /
markets, e.g., for retail banking customers and for
corporate customers. Therefore, the domain candidate
sales & advice is split into two domains. The resulting
domain candidates are named retail banking and
corporate banking. See Figure 6.
Business dimension product
Step 2: Business dimensions
Accountbased
products
Core banking
(Order management, order execution, settlement, and custody for
account-based products)
Loans
Credit Approval
(Order management and order
execution for loans)
Credit Administration
(Settlement and custody for loans)
Securities
Securities Trading
(Order management and order
execution for securities)
Securities Custody
(Settlement and custody for
securities)
Payments
Payments Order
Management
(o.m. for payments)
Accounting &
Booking
(Accounting and
booking for all
products)
Payment Transaction
(Order execution, settlement and custody for
payments)
Figure 8. Splitting operations according to
product and length of value chain
The business service operations differs substantially
for the different products and therefore different
horizontal domain candidates are introduced. However,
accounting & booking can be treated identically for all
products. Therefore, one vertical domain candidate is
being introduced. The split of the execution of
payments along the value chain is motivated by the
business strategy to outsource the payment transaction
banking to a partner corporation. For similar reasons
the value chains for loans and securities are each split
into two domains.
during the iterations. Figure 12 shows the final domain
model.
Branch
Applications
Customer-facing
domains
In this step, new domain candidates are being
introduced for business objects that are written (i.e.,
generated, modified, or deleted) in more than one of
the existing domains. For example, business partners
are being written in branch applications, e-banking
and in call centre applications. So, the new domain
candidates business partner management, contract
management, and account management are introduced.
See Figure 9.
Order
Management
(handling order
business objects)
Account
Management
(handling account
business objects)
Figure 9. New domain candidates for business
objects
The business object product is being read in most
domain candidates, including branch applications, self
service, e-banking, and call centre. However, it is
written in the domain candidate product development
only. Therefore, both aspects – the business service
product development and the management of the
business object product – are assigned to the same
domain candidate, which is simply named product. See
Figure 10.
Product
(product
development and
handling product
business objects)
Figure 10. Domain candidate product
Step 4: Management & support services
The management and support services become domain
candidates. See Figure 11.
Compliance
Call Centre
Retail Banking
Core
business
ERP
E-Banking
Core Banking
Step 3: Business objects
Business Partner
Contract
Management
Management
(handling business (handling contract
partner objects)
business objects)
Self Service
Treasury
Risk
Management
…
Figure 11. Domains for management & support
services
Step 5: Finalize
The domain candidates identified so far become the
final domains. Meaningful names have been found
Product
Management
& Support
Business Partner
Management
ERP
Credit
Administration
Securities
Trading
Securities
Custody
Payments Order
Management
Payment
Transaction
Marketing
Corporate
Banking
Enterprise
Resources
Credit Approval
Contract
Management
Compliance
Order
Management
Treasury
Accounting &
Booking
Account
Management
Risk Management
…
Figure 12. Final domain model
The final domain model shows customer-facing
domains at the top of the diagram. The centre shows
domains for the core business services, along the value
chain. Then, domains managing enterprise resources
are listed. At the bottom of the diagram, domains for
management & support services are shown.
6. Project experience
sd&m has analyzed and / or constructed over 20
application landscapes of large corporations of
different industry sectors. In some of those projects, the
method for constructing the domain model has been
applied explicitly, in others implicitly. We have
analyzed 18 of the resulting domain models according
to the usage of business services, business objects, and
business dimensions.
The analysis demonstrates convincingly that
business services, business objects, and business
dimensions play an important role and, hence, give
evidence of the validity of the method described.
Table 1 gives an overview of sample domain names
from nine application landscapes in the industry sectors
automotive,
banking,
insurance,
public,
telecommunication, and tourism.
Table 1. Selected domains from application
landscapes in different industry sectors
Industry
Business
Business Value chain Customers,
sector
functions
objects
markets
Automotive • Supply
• Order
• Order
Mgmt
• Production
• Logistics
Banking
• Advice
• Customer • Securities
outsrc.
• Sales
• Product
• Account
Banking
• Support
• Business • Payment • Retail
service
partner
TXN customers
central
• Operations
• Corporate
bank
customers
Banking
• Order
• Retail
• all are split • Partner
mgmt.
• Private
• Securities • Corporate
settlement
• Credit
approval
• Credit
admin.
Life
• Product
• Contract
Insurance
devel.
mgmt.
• Acquisition • Claims
& advice • Customer
• Conclusion mgmt.
• Payments
Insurance • Service
• Contract
• Analysis • Partner
Public
Telecommunication
Tourism
• Customer
care &
advice
• Cash
benefit
• Sales &
marketing
• Invoicing
• Product
mgmt &
design
• Booking
• File mgmt.
• Personal
data mgmt.
• Supplier &
partner
• Customer
• Contract &
resource
mgmt.
Products
• Passenger
cars
• Trucks
• Bus
Channels Management
& support
• Quality
mgmt
• Finance &
controlling
• Loans
• Customer
& bank
• Payments
frontends
• Investment • Branch
banking
mgmgt
• Financing • Customer
interaction
• Account
products
• Complex
credits
• Accounting
• Controlling
• Bank
mgmt.
• Regulatory
reporting
• Risk
controlling
• Market
data supply
• Life
insurance
• Financing
• Sales
mgmt.
• Life
insurance
• Property
insurance
• Monetary • Customer
service
channels
(face-to• Programs
face,
phone, …)
• Office
comm..
• Planning
• Personnel
• Administrative
services
• Business
• Multichannel
services
• Monitoring
& ERP
7. Related work
There is not much work known to the authors that
addresses concrete methods for domain modelling in
application landscapes.
Approaches to service oriented modelling of
architecture like [8] describe domain decomposition as
an important step for the identification of services, but
confine themselves to stating that a combination of topdown, bottom-up, and middle-out techniques must be
applied.
In [9], Ambler et al. describe an extension of the
Rational Unified Process for enterprise architecture
that treats Enterprise Domain Modelling as a subtask
of the discipline Enterprise Business Modelling
distinguished from the Enterprise Architecture
discipline. In [10], Ambler suggests that for some
organizations it might be fine to combine both
disciplines in “a domain engineering approach where
high-level domain concepts are implemented in a
reusable manner, perhaps as domain components or
collections of web services. This approach requires
significant sophistication within your organization,
including a strong approach to enterprise business
modelling as well as to enterprise architecture. Domain
engineering represents the pinnacle of strategic reuse.”
In his article “A methodology for service
architectures”, Jones comes close to the methodology
we describe [11]. He also starts out with business
services. Since his article focuses on the identification
of services, the succeeding refinement steps differ from
our method for identifying domains.
Fundamental works on the separation of concerns
and modularization like, e.g., [12] are, as a matter of
course, the basis of our method. Particularly the works
of Parnas (e.g., [13], [14]) have laid out the basics for
designing components in the small. Our method can be
seen as an application of Parnas’ principles in the large.
Our approach has similarities with different forms of
organizational structures of enterprises, e.g. matrix
organizations that combine functional and divisional
structures where divisions are defined by products,
markets or customer groups.
8. Conclusion
Application landscapes are extremely complex. One
important tool of enterprise architecture management is
structuring them into domains. Domains are being used
for strategic planning as well as for the operational
management of an enterprise’s IT project portfolio –
the driver for the evolution of the application
landscape. Because of this, a domain model of high
quality is crucial.
In this paper, we have presented a method for
constructing a domain model. The method takes into
account business services, business objects and
business dimensions like customer groups, product
groups / markets, customer access channels and the
length of the value chain. The main contribution of this
paper is a concise description of the method in five
steps which cannot be found in literature so far.
However, the method is based on well-known
architecture principles and has already been used
successfully in numerous large-scale industrial projects.
Although the method is relatively straight-forward, a
high degree of business expertise and modelling
experience is still required when constructing domain
models of high quality.
9. References
[1]
[2]
Anella, M., Strategy & Architecture, 2. Berner
Architekten Treffen (2005), http://www.bernerarchitekten-treffen.ch/archiv/2/CS_2005-11-11%20%20BAT-Vortrag.pdf
Deb M., Helbig J., Kroll M., Scherdin A., Bringing
SOA to Life: The Art and Science of Service Discovery
and
Design,
http://webservices.syscon.com/read/164560_p.htm,
also
[3]
[4]
[5]
[6]
[7]
[8]
[9]
[10]
[11]
[12]
[13]
[14]
http://www.oracle.com/events/architectforum/art-andscience-of-service-discovery_032206.pdf
J. Laartz, E. Monnoyer, A. Scherdin: Designing IT for
business,
The
McKinsey
Quarterly
3/2003,
http://www.mckinseyquarterly.com/links/13022
J. Laartz, E. Sonderegger, J. Winckler: The Paris guide
to IT architecture, The McKinsey Quarterly 3/2000,
http://www.mckinseyquarterly.com/links/4037
Keller W.: Managing Application Portfolios in Merger
Situations, in: Dadam P., Reichert, M. [eds.]:
INFORMATIK 2004 - Informatik verbindet, Band 1,
Beiträge der 34. Jahrestagung der Gesellschaft für
Informatik
e.V.
(GI),
http://www.objectarchitects.de/ObjectArchitects/papers
/Published/ZippedPapers/GIWK2004-06-13a.pdf
Lankes,
J.,
Matthes,
F.,
Wittenburg,
A.:
Softwarekartographie: Systematische Darstellung von
Anwendungslandschaften. In: Wirtschaftsinformatik
2005,
Bamberg,
2005,
http://wwwmatthes.in.tum.de/file/Publikationen/2005/L
MW05a/041005-LaMaWi-WI2005-Paper.pdf
Ernst, A., Lankes, J., Schweda, C., Wittenburg, A.:
Using Model Transformation for Generating
Visualizations from Repository Contents - An
Application to Software Cartography. Technische
Universität München, Institut für Informatik, Lehrstuhl
für Informatik 19, Technischer Bericht TB0601, 2006,
http://wwwmatthes.in.tum.de/file/Publikationen/2006/E
r06b/Er06b.pdf
Arsanjani, A.: Service-oriented modeling and
architecture, IBM DeveloperWorks, SOA and Web
Services,
http://www128.ibm.com/developerworks/webservices/library/wssoa-design1/
Ambler, S. W., Nalbone, J., Vizdos, M. J., The
Enterprise Unified Process: Extending the Rational
Unified Process, Pearson Education (2005)
Ambler, S. W.: Extending the RUP with the Enterprise
Business
Modeling
Discipline.
http://www.enterpriseunifiedprocess.com/essays/enterp
riseBusinessModeling.html
Jones, S.: A methodology for service architectures.
Capgemini
white
paper,
http://www.oasisopen.org/committees/download.php/15071/A%20meth
odology%20for%20Service%20Architectures%201%2
02%204%20-%20OASIS%20Contribution.pdf
Ghezzi, C., Jazayeri, M., Mandrioli, D.: Fundamentals
of Software Engineering. Prentice Hall (1991)
Parnas, D.L.: On the Criteria To Be Used in
Decomposing Systems into Modules, Communications
of the ACM 15(12), 1053–1058 (1972)
Parnas, D.L.: Designing software for ease of extension
and contraction, IEEE Transactions on Software
Engineering 5(2), 128–138 (1979)