The DirSA case study - Department of Computer Science • NJIT

advertisement
♦ The DirSA Case Study: An Introduction to
Software Architecture Technology
Vassilka D. Kirova and Howard G. Kradjel
This paper presents an introduction to the issues concerned with engineering and
representation of software architecture. It discusses research ideas and techniques
that facilitate architecture-based system construction and summarizes results from a
case study conducted in Lucent Technologies. In this study, we used the generic
architecture reference model (GARM) and the architecture specification technique
(ASPECT) as means of performing architecture engineering and representation in an
industrial project. The GARM-ASPECT method has provided a basis for analyses and a
technique for building rigorous architectural specifications that yield practical architectural solutions.
Software Architectures: An Introduction
The complexity of industrial-strength computerbased systems has compelled system engineers to use
higher levels of abstraction when addressing the issues
of system design. It has also made the overall system
organization—software architecture—an important
aspect of system development. This has implied a systematic approach to the engineering and application of
architectures and has led to the rapid development of
architecture technology.
B. Boar has observed that a technology typically
evolves from being a craft to an engineering discipline
over time with the infusion of scientific theory and the
need for broad application.1 As a young discipline, the
early architectural efforts were characteristic of the
craft stage, during which a system architecture is created from scratch, relying on the designer’s personal
experience, knowledge, and intuition. With the mass
market involved, the architecture discipline has now
reached the economics-driven commercial stage, characterized by the introduction of architectural standards,
reusable reference architectures, and domain-specific
software architectures. With more maturity and the
presence of increased system complexity, software
architecture is likely to assume the characteristics of a
professional engineering discipline, characterized by
underlying theory, architectural support tools, standardized practices, licensed professionals, and a community of shared expertise.
Software architecture is principally concerned
with the study of patterns of system organization,
large-grained software components, their relationships, and the models of interaction between them. It
addresses the overall system properties at high levels
of abstraction and from multiple perspectives, such as
structure, control, and data. Architectural designs also
address important system characteristics, including
scalability, overall performance, processing rates, and
allocation of functionality to design elements.2-4
For years, system engineers have used software
architectures to describe the top-level design of computer-based systems. Typically informal, these descriptions include box-and-line diagrams representing
system structure and often a free-form text clarifying
the meaning of the diagrams and capturing some
design rationale. Even being informal, such descriptions provide a critical first view of the solution and a
starting point for determining whether a system can
meet its essential requirements. They help developers
construct the system; they also help management
organize the entire project. Unfortunately, such archi-
Bell Labs Technical Journal ◆ July–September 1998
125
tectural designs cannot be analyzed for consistency or
completeness and often they are poorly interpreted
throughout the lower levels of the development cycle.
Furthermore, as the system evolves, architectural constraints become difficult to preserve and enforce.
Recently, software architectures have also been
employed for codifying and reusing design knowledge.
These types of software architecture—referred to as
reference architectures—are bodies of high-level
domain-specific design knowledge, references, and
standards that provide generalized solutions for classes
of problems. 4-6 Reference architectures—which
include architectural styles, domain architectures,
product-line architectures, and architectural frameworks—are designed to be widely reused, to serve for
long periods of time, and to support a number of
development and integration efforts. They are
expected to serve as bases for reuse, maintenance,
planning, and evolution support. The broad scope of
reference architectures, however, and the lack of suitable methodologies and tools have created problems
with their description, verification, and application.
To address these problems in today’s software
architecture technology, researchers and practitioners
are working to transform the practical experience of
designing (complex) software systems into a comprehensive, well-founded design discipline. The objectives
of this work are to:
• Establish a common conceptual basis for
describing software architectures;
• Provide formal semantics of architectural
representations;
• Develop rigorous techniques and tools to support the definition, representation, analyses, and
application of software architectures;4,7 and
• Codify design experience so it can be successfully reused.
This paper summarizes the results of a case study
in which a newly developed method for software
architecture engineering and representation, GARMASPECT, was applied in an industrial environment.
This method is based on the generic architecture reference model (GARM) and the architecture description
language (ASPECT) derived from it. The case study
had two main objectives: (1) to define an architec-
126
Bell Labs Technical Journal ◆ July–September 1998
Panel 1. Abbreviations, Acronyms, and Terms
AS—algorithmic simplicity
ASPECT—architecture specification technique
ASPF—avoidance of single point of failure
CDI—consistent directory information
DAP—directory access protocol
DI—data integrity
DirSA—Directory System Architecture
DISP—directory information shadowing protocol
DNS—Domain Naming Service
DOP—directory operational binding
management
DSA—directory service agent
DSP—directory system protocol
DSQLI—Directory Structured Query Language
interface
DUA—directory user agent
DUAL—directory user agent library component
DUI—directory user interface
ECS—enterprise communication systems
ES—extended services
GARM—generic architecture reference model
IP—Internet protocol
ISO—International Organization for
Standardization
LCAD—low cost of additional development
efforts
LCLPM—low cost of legacy product
management
LDAP—lightweight directory access protocol
OSI— Open System Interconnection
PF—performance/real-time communication
protocol
RPC—remote procedure call
SPA—single point of administration
SQL—Structured Query Language
TCP—transmission control protocol
ture—the Directory System Architecture (DirSA)—
that meets the needs of unified directory services for
an overall enterprise solution of integrated business
communication systems, and (2) to represent the
architecture using the ASPECT architecture description
language.
Figure 1 illustrates how the remainder of this
paper is organized. The section immediately below
introduces the GARM-ASPECT method, and the subsequent section presents an overview of the directory
Enterprise
Communications Systems
Problem domain
Directory
Method
GARM-ASPECT
GARM
guides the process
References
Guidelines
Patterns
Tools
ASPECT provides a notation to
represent the architectural solution
Standards
X.500, LDAP
Architecture
DirSA
Solution
DirSA – Directory System Architecture
GARM – Generic architecture reference model
LDAP – Lightweight directory access protocol
Figure 1.
A diagram of the problem, method, and solution.
problem domain. Directory-related standards are discussed next, followed by the architectural solution.
The last section summarizes the results and presents
the future outlook.
The Method: An Introduction to GARM-ASPECT
This section introduces the GARM-ASPECT
method and explains how it addresses a number of
important attributes of software architectures.
Fundamental to the method is GARM, which guides
the process of software architecture engineering.4 It
identifies a number of architectural views and
addresses their relationships. It also clarifies the distinction between reference architectures on one side
and specific system architectures on the other and
enables the reuse of architectural knowledge. As the
underlying conceptual basis of the ASPECT language,
GARM defines a set of modeling concepts, their relationships, respective semantics, and general rules for
how to combine them into specifications for software
architecture.
ASPECT is an architecture description language. It
provides a normalized vocabulary for expressing archi-
tectural structures8 and establishes a framework for
expressing architectural constraints as architectural
rules. In addition, ASPECT supports mechanisms for
extending the structural view with auxiliary nonstructural information, such as behavior or quality specifications, expressed in other languages. In this respect,
ASPECT provides facilities to establish relationships
between different specifications and to pull them
together into an overall architectural description.
This approach allows the methodology to be flexible and easily adaptable to the specifics of a domain or a
family of systems.9 The common structural properties
are described in ASPECT, while the set of auxiliary specifications and the corresponding representation languages can be selected to fit the purpose of the
architecture, the class of systems being addressed, or the
domain traditions. Together, all the specifications contribute to a comprehensive architectural description.
The auxiliary, nonstructural specifications are
processed by external tools, which can be integrated
with an ASPECT editor. For example, the ArchE editor
was integrated with the uBET tool set to evaluate
behavioral specifications captured in message
Bell Labs Technical Journal ◆ July–September 1998
127
Architecture
Name, Rules, ...
Scenario
Name ...
Component
Name ...
Header
Body
Representation
Interface
Name ...
Composition
Name ...
Port
Name ...
FA,DA,BA,QA…
Role
Name ...
Plays
CtBody
Protocol
IPort
Cluster
Name ...
Liaison
Header
EPort
Building Block
Name ...
Contract
Name ...
PAssociation
RAssociation
Composite
Name ...
Primitive
Name ...
Coad and Yourdon object-oriented
analysis and design notation
Class and object
Aggregation/decompsition
Association
Generalization/specialization
Figure 2.
Overview of architectural elements.
sequence charts.10,11 (ArchE is a Web-based architecture engineering tool, developed by the Cross-Product
Architecture Department of Lucent Technologies.)
ASPECT is built on a set of constructive concepts,
or architectural elements, that form its core ontology.
The architectural elements8 include components, contracts, interfaces, ports, roles, scenarios, and architecture. ASPECT provides representations for all these
elements. Figure 2 illustrates the element types and
their relationships.
Components represent the computational entities
and data of a system.6,8 Typical examples include such
components as clients and servers, objects, data capsules, and filters. From a structural point of view,
ASPECT distinguishes between building blocks, which
are atomic units in the context of an architecture, and
clusters, which are composed of building blocks and/or
other clusters and contracts.
128
Bell Labs Technical Journal ◆ July–September 1998
From an operational perspective, components are
characterized by functions, data, observable behavior,
type, and quality attributes, all defined in the component’s interfaces. Multiple interfaces can be associated
with a component to reflect different possible functional aspects, where each provides a partial external
view of a component. Interfaces comprise ports—
access points at which interactions between a component and its environment take place. The
component’s body, which “implements” the interfaces, provides the functionality and behavior
observed at the component’s interfaces. In the case of
a building block, the body is an external representation,
outside the domain of ASPECT. For instance, any
text, graphics, or source code representing the algorithms and data structures behind the building block’s
interfaces are considered external representations. In
relation to ASPECT, these representations are auxil-
iary specifications and are treated as annotations. In
the cluster case, the body is a composition represented
by an internal structure—de facto, an architecture—
and a set of associations between internal and external ports. The ports of the cluster, resulting from the
composition, are referred to as external ports, while
the ports of the components participating in the composition are considered internal ports.
Contracts represent interactions among components.8,12 They correspond to the lines in the box-andline diagrams used to informally represent software
architectures. Examples of contracts include procedure
calls, pipes, Structured Query Language (SQL) links,
and communication protocols. Contracts can be primitive or composite (aggregations of components and
contracts). The external view of a contract is represented by a number of roles, which prescribe the behavior of the interaction points participating in a
“contract.” These roles serve as placeholders, which are
later replaced by matching ports when a system is constructed. The interaction channel established between
the roles is represented by the contract’s liaison, which
bundles together two views: an operational view and a
structural view. The operational view captures the
interaction protocol, whereas the structural view reflects
the internal structure of composite contracts.
In ASPECT, a scenario template is used to represent
static and dynamic configurations of components and
contracts. Static scenarios are configuration patterns
that represent system topology, whereas dynamic scenarios typically represent use cases.13
To support the description of architecture types,
ASPECT provides an architecture template that incorporates all architecture-specific elements and their constraints into an overall specification.
The Problem Domain: An Introduction to the
Directory Project
The Directory Project focused on developing a
coherent enterprise directory system architecture to
support common directory services across multiple
communication products and also to remedy problems
with a number of existing directory implementations.
The architecture had to introduce a standards-based
directory and prescribe ways to integrate it with com-
munication servers and applications from the domain.
Directories essentially act as repositories of network user and resource information. Consider, for
instance, the Domain Naming Service (DNS), a wellknown, hierarchical, replicated naming service on
which the Internet is built. Although DNS is the backbone directory system of the largest data network in
the world, it is not flexible enough to act as an enterprise directory. DNS is largely a service for mapping
machine names to Internet protocol (IP) addresses. A
fully functional directory service provided by an enterprise-capable directory system must be able to map
names of arbitrary objects (such as users, machines,
applications, systems, and services) to any kind of
information about those objects.14 It must also allow
for locating diverse types of entities, from users to systems and services.
Today’s enterprise communication systems (ECS)
comprise different products, such as switches, messaging systems, multimedia communication support systems, and Internet applications (for example, voice and
fax over the Internet). Most of these products use some
type of directory, each supporting a different subset of
directory-related functionality. There are, however,
numerous problems with the existing solutions.
First, these directories cover different populations; they also have different attributes and constraints, as well as different, sometimes inconsistent,
user and administration interfaces. They do not meet
customer requests for unified and possibly singleentry administration across multiple products operating on their premises. This situation is further
aggravated by the need to integrate “closed” products
from different vendors, as well as by the increasingly
quick introduction of new products that add yet
another directory of their own.
Second, directories are currently perceived as just
a means of recovering phone numbers, addresses,
and—possibly—account information. This is a serious
understatement of the potential utility and power of
directories. When properly designed and implemented, a directory becomes an information storage
and retrieval system, outfitted with a powerful querybased interface. As such, a directory can process all
sorts of information pertinent to an organization and
Bell Labs Technical Journal ◆ July–September 1998
129
its business operations. As multimedia and collaborative communications solutions become more sophisticated, directories must be able to support extended
functionality, such as address conversions or replication and synchronization of directory information
across networks.
Third, implementation problems also constrain the
use of current directories. These problems include rigid
database systems, complex query languages, and lack
of integration with communication tasks.
The DirSA had to address all of these problems, as
well as meet the primary requirements of:
• Providing consistent directory information
across multiple communication products;
• Supporting consistent mechanisms for
interoperation;
• Helping applications complete “all” types of
communication tasks;
• Promoting a unified and uniform user administration; and
• Allowing easy integration of the directory
with the rest of the customers’ computerbased systems.
In addition to these requirements, the architectural
solution also had to meet extra-functional requirements for increased overall performance, reliability,
and scalability; lower development costs; and simplified
serviceability, manageability, and maintainability.
The References: Directory Standards
In the future, more of the power of software
development is expected to come from the reuse of
design knowledge codified in the form of patterns,
guidelines, and architectural standards. A number of
established international standards, emerging standards, and implemented services are available for
directories, creating a solid basis for developing an
open interoperable directory system that meets the
objectives described above. Two standards have played
an important role in the solution addressed in our case
study: the International Organization for
Standardization (ISO) Directory Standard/X.500
Recommendation15 and the lightweight directory
access protocol (LDAP).16
The X.500 Directory Standard defines a number of
130
Bell Labs Technical Journal ◆ July–September 1998
models, operations, and protocols. The models include
an information model, a name space, a functional
model, a security model, and a distribution model.
Operations are defined in three main areas, namely,
search and read, modify, and authenticate. The protocol that prescribes the use of these operations is called
the directory access protocol (DAP). Interactions
between distributed directory servers are prescribed by
three additional protocols: directory system protocol
(DSP), directory operational binding management protocol (DOP), and directory information shadowing
protocol (DISP).
LDAP is an emerging standard, widely supported
by the Internet community. Instead of requiring the
“heavy” ISO Open System Interconnection (OSI) protocol stack, LDAP uses transmission control
protocol/Internet protocol (TCP/IP). Otherwise, it
adopts the information model and name space from
the X.500 Recommendation. The LDAP functional
model is a subset of the one defined by ISO X.500.
Initially, the Directory project focused on an
X.500-compliant solution. Because this project began
before the wide acceptance of LDAP, the examples we
use in this paper are X.500/DAP-based and reflect the
first version of the solution. Later in our work we also
addressed an LDAP-based solution.
The Solution: An Architectural View
This section describes the solution to our problem, which involved developing an architectural
framework, identifying and examining architectural
alternatives, selecting a solution, and applying
GARM-ASPECT to describe it.
The Architectural Framework of Enterprise Communication
Systems (ECS)
The first step toward determining the solution was
to define the context of the directory system architecture and its influences on the current and future product development and integration efforts. To do this, we
identified an initial architectural framework for the
domain of ECS, whose three primary roles are to:
• Foster common understanding and, hence,
treatment of architectural issues across ECS;
• Facilitate reuse and component-based development; and
• Create a basis for interoperation and sharing
of services.
This framework is an evolving collection of architectural standards, specifications, rules, and agreements under the guidance and terms of which the
domain-specific collection of systems and components
are developed, integrated into flexible “customer
offers,” and maintained.
The architectural specifications, as well as the
components implemented in conformance to them,
constitute the core of a company’s reusable assets.10
When reused, architectural descriptions provide verified solutions of design elements, patterns, and practices, to shorten the product development cycle and
keep the target product in line with the intellectual
integrity of prior efforts.
The reuse of architectural designs also leads to the
reuse of implementations. The architecture serves as a
blueprint for component implementation and acquisition. By defining standard interfaces, constraints, and
common interaction and information models, the
architecture promotes the simplified, fast, and costeffective construction of products from commercial
and proprietary reusable components. This creates a
basis for a “plug-and-play” approach to software construction, which should result in systems with higher
quality and lower cost. It also promises more evolvable
systems—a result of being able to easily replace constituent components.17
The ECS framework identifies two major types
of architectures:
• Product line architectures, which are parameterized architectural solutions for families of products, such as a messaging system architecture
or a switching system architecture; and
• Cross-product architectures, which introduce
integration platforms and define shared or
reusable components that offer common services, such as security, transaction management, and directory.
As we discussed in earlier sections, the directory is
a repository of consistent (directory) information that
can be used by multiple communication servers,
clients, and end users. In the context of the ECS architectural framework, it is a server component that pro-
vides common (directory) services to multiple software
components, systems, and users.
Architectural Alternatives
Based on the requirements discussed earlier and
considering the issue of legacy systems, cost, and performance, we identified and examined three alternative architectural solutions:
• Alternative 1: Local legacy directory—global
united directory,
• Alternative 2: No local directory—global standard directory, and
• Alternative 3: New local directory (a replica)—
global standard directory.
Alternative 1: Local legacy directory—global
united directory. The first architectural alternative pro-
vides a common directory, while it simultaneously protects customers’ investments and promotes a smooth
transition from an environment of loosely related
(legacy) products to one of integrated solutions. This
alternative was considered a near-term solution that
can be implemented quickly to improve the current situation and then expanded and evolved over time.
The near-term solution architecture allows legacy
communication servers to remain unchanged and
their administration to be handled independently.
Along with the directory server, this architecture
introduces a new “synchronizer” component, which
plays an important role in the integration strategy. It
provides access to the directory and, as its name suggests, the synchronizer is responsible for keeping the
overall directory-related information in a consistent
state across multiple communication servers. It acts as
a gateway between legacy products and the directory
server, communicating with communication servers in
their native protocols and with the directory by using
the standard DAP, or in the new version, LDAP.
Alternative 2: No local directory—global standard directory. In this alternative, the directory server
is the only entity that can manage directory information, as well as the only point of system administration. The communication servers and applications
interact with the directory server in real time to finish
their tasks. The solution we describe in this paper uses
the X.500 DAP to relay clients’ requests to the directory server.
Bell Labs Technical Journal ◆ July–September 1998
131
Table I. Comparison of architectural alternatives.
Customer
requirement goals
Alternative
Design
goals
Business
goals
SPA: –
ASPF: +
LCLSM: +
CDI: +
PF: +
LCADE: –
ES: –
DI: –
CR: +
Conclusions
Alternative 1
Local legacy directory <—>
Global united directory
Legacy communications products
Directory server
Synchronizer
Near-term
legacy products,
small scale
AS: – –
Constraints: Data synchronization
Alternative 2
No local directory <—>
Global standard directory
Communications product/directory service
Directory server
SPA: + +
ASPF: –
LCLSM: –
CDI: +
PF: – –
LCADE: +
ES: + +
DI: +
CR: –
AS: + +
Constraints:
Real-time communications
Product = Communications service + directory server
Alternative 3
New local directory (a replica) <—>
Global standard directory
Like Alternative 3,
but for
low volume,
low risk
SPA: +
ASPF: +
LCLSM: – –
CDI: +
PF: +
LCADE: +
ES: +
DI: +
CR: –
New communications product
Directory server
Long-term
new products,
large scale
AS: –
Constraints:
Synchronization of directory replicas
AS – Algorithmic simplicity
ES – Extended services
(+) A goal met by the architecture
ASPF – Avoidance of single point of failure
LCADE – Low cost of additional development efforts
(–) A goal not (fully) met by the architecture
CDI – Consistent directory information
LCLSM – Low cost of legacy system management
CR – Cost ratio
PF – Performance
DI – Data integrity
SPA – Single point of administration
Alternative 3: New local directory (a replica)—
global standard directory. The directory server in
this third alternative is the only point of directory
information management and administration.
Communication servers contain local copies (partial
customized replicas, or views) of the directory content.
They interact with the directory server to refresh the
local copy and to provide extended services such as
communications with users from different domains.
We compared the three alternatives according to
three groups of goals:
• Customer requirement goals:
– Single point of administration (SPA),
– Consistent directory information (CDI), and
– Extended services (ES).
132
Bell Labs Technical Journal ◆ July–September 1998
• Design goals:
– Avoidance of single point of failure (ASPF),
– Performance/real-time communication
(PF),
– Data integrity (DI), and
– Algorithmic simplicity (AS).
• Business goals:
– Low cost of legacy product management
(LCLPM),
– Low cost of additional development efforts
(LCAD), and
– Cost ratio percent (of change).
Table I shows a brief overview of the comparison,
the pros and cons of the three alternatives, and a summary of our conclusions. We see alternative 1 as a
OSSI,
IMAPI,
SNMP,
ASCII
Communications
server
(legacy)
Administrator
Directory clients
WWW server
Communications
server
(new product)
Personal directory
Bulk
import
Bulk
export
Gateway
Directory administrator
(global, local)
Dedicated
directory UI
Synchronizer
Security Server
XDS
DUAL
DAP
DOP, DSP, DISP
DirSOFT
(DSA)
Contracts
Association
DirSOFT
(DSA)
Protocols
SQL
Directory data server
Function call
RPC
Note: Different interface types are marked by different patterns and colors.
ASCII – American Standard Code for Information Interchange
IMAPI – Internet mail access protocol interface
DAP – Directory access protocol
OSSI – Operations support services interface
DirSOFT – Directory software
RPC – Remote procedure call
DISP – Directory information shadowing protocol
SNMP – Simple network management protocol
DOP – Directory operational binding management protocol
SQL – Structured Query Language
DSA – Directory service agent
UI – User interface
DSP – Directory system protocol
XDS – Directory services application
DUAL – Directory user agent library component
programming interface specification
Figure 3.
Implementation view of the Directory System Architecture.
near-term solution, favorable to legacy products and
applicable to small-scale integration efforts. Alternative
3 is recommended as a long-term solution for largescale integrated offers built from new products.
Alternative 2 is similar to 3, because it assumes that
the communication servers and applications will interact with the directory server by using standard DAP
(or LDAP). This interaction, however, is required for
every directory-related operation, which makes the
architecture more suitable for low-volume, low-risk
offers. The global directory server does not imply a
monolithic component. The directory can be a cluster,
built of multiple directory service agents (DSAs),15 distributed over multiple machines.
DirSA: The Selected Solution
Considering current customer needs and business
goals, we have selected the near-term solution, alternative 1, as the basis for the initial architectural work.
In addition, we have taken into account the evolution
of legacy products, as well as new development efforts.
As a result we have specified a general architecture for
integrating multiple legacy, modified, and new communication servers and clients with an open real-time
directory server. In this solution, the directory server is
an autonomous component, compliant with the ISO
X.500 directory standard. It provides common directory services in the overall architecture, characterized
as a component-based, modular design.
Figure 3, a box-and-line diagram, provides an
overview of the structure of the directory system. It is
an informal illustration of the suggested architectural
solution and serves as the basis for our discussion. The
Bell Labs Technical Journal ◆ July–September 1998
133
DirClient
AdminDirClient
DAP
DAP
RPC
SecurityServer
SQL
DirDataServer
DAP – Directory access protocol
RPC – Remote procedure call
SQL – Structured Query Language
Figure 4.
A generic view of the Directory System Architecture.
directory system is decomposed into a collection of
components, each of which is allocated a particular
responsibility in the system. The components, drawn
as boxes in the architectural diagram, are combined
into a configuration via contracts, drawn as doubleheaded arrows.
The core of our system is the directory data server,
which provides support to a number of clients—
administrators, browser-based applications, new or
modified communication systems (for example, call
control engines, messaging servers, and clients), and
auxiliary products such as the synchronizer.
The interactions among the components represent
a separate view of the solution. As shown in Figure 3,
the system contains different interaction types—such as
“SQL,” “remote procedure call (RPC),” and “DAP”—
which imply design and implementation constraints.
We viewed system scalability and extensibility as
specific architectural challenges. Ideally, the architecture should remain stable despite a significant increase
in scale. For example, an important early consideration is the point at which such a system would have to
evolve from a single directory data server (DirSOFT) to
a cluster of such servers, as shown in Figure 3. It was
equally important to make an early determination of
the cost of building in the cluster flexibility and of the
long-term benefits of such an architectural solution.
The architecture described in the next section defines
134
Bell Labs Technical Journal ◆ July–September 1998
the directory as a cluster component that can be
implemented as a single or a distributed directory.
Based on analysis and evaluation of commercial directory products, our initial decision was to focus on a
single directory server implementation.
Applying GARM-ASPECT
We used both GARM and ASPECT to engineer
and represent the architectural solution. GARM provided guidelines for the process of abstracting architectural properties and identifying architectural
components and contracts. We used ASPECT to write
the DirSA specification, part of which is included later
in this paper.
The process of engineering the software architecture, as implied by the model, is one of refinement, in which more general architectural
definitions are specialized and instantiated into specific system architectures. Figure 4 presents the
most general view of DirSA architecture. The elements at the first level of refinement are specializations from the generic element types of the
language; therefore, the parent type attribute in
their headers is defined as “generic” in Figure 5.
The directory data server—DirDataServer—is specified as a cluster component. It can be implemented as a
configuration of possibly distributed data servers,
DirSOFT, compliant with the DSA specification of the
ISO X.500 standard. The body of the directory server is
DirSA : Architecture{
Header{Type: {Generic}
{Generic }
POF:{ } /* OCRA — BCS Cross Product RA */
Implements: { }
}
Components: {DirDataServer, DirClient, AdminDirClient, SecurityServer}
Contracts: {DAP, SQL, RPC }
{DirSAConfig }
Scenarios: {DirSAConfig}
{DirSARules.tex }
Rules: {DirSARules.tex}
Description:{http://www.arch.lucent.com/Directory/DirSA-guidelines.html}
}
DirDataServer : Cluster{
Header{ Type: {Generic}
{Generic }
{DirSA }
POF: {DirSA}
Implements:{ }
}
Interface: {DUI,
{DUI, DSQLI}
DSQLI }
Body: {DirCluster}
{DirCluster }
}
DirClient : Cluster {
DUI : Interface{
Type: {Generic}
{Generic }
Data_Model: {DInfoModel.txt}
{DInfoModel.txt }
Data_Description: {ASN.1}
{ASN.1 }
Port: {DS_AP}
{DS_AP }
}
DUI_SRI : Interface{
DS_AP : Port {
{Generic }
Type: {Generic}
DUA_PR : Port {
Port_attr {
FA–&-DA: {DAPServiceProvide }
BA: {ServerDAP.wright }
QA: {SQualityControls.txt }
}
}
{Generic }
Type: {Generic}
{DirSA }
POF: {DirSA}
Implements:{ }
}
Interface: {DUA_SRI }
Body: {DirClientCluster }
}
Header{
Type: {Generic}
{Generic }
Data_Model: { }
Data_Description: {ASN.1 }
Port: {DUA_PR }
}
Type: {Generic}
{Generic }
Port_attr {
FA–&-DA: {DAPServiceRequest }
BA: {ClientDAP.wright }
QA: {ClQualityControls.txt }
}
}
SecurityServer: BuildingBlock {
Header { Type: {Generic}
{Generic }
{DirSA }
POF: {DirSA}
Implements: { }
}
Interface: {AdminRPCI }
Body: { }
}
AdminDirClient : Cluster {
Header { Type: {DirClient}
{DirSA}}
POF: {DirSA
Implements: { }
}
Interface: {CSQLI, ClientRPCI }
Body: {AdminDirClientCluster }
}
AdminRPCI : Interface {Type: {Generic}
{Generic }
Data_Model: { }
Data_Description: { }
Port: {RPC }
}
CSQLI : Interface {
RPC : Port {
{Generic }
Type: {Generic}
SQLP : Port {
Port_attr {
FA-&-DA: {RPCServiceProvide }
BA: {RPC.wright }
QA: {RPC.txt }
}
}
Type: {Generic}
{Generic }
Data_Model: { }
Data_Description: { }
Port: {SQLP }
}
Type: {Generic}
{Generic }
Port_attr {
FA-&-DA: {SQLQuery }
BA: { }
QA: { }
}
}
DAP : PContract {
Header {Type: {Generic
{Generic }}
{DirSA }}
POF: {DirSA
Implements: { }
}
Data_Model: { }
Data_Description: {ASN.1 }
Role: {DAPRequest, DAPProvide }
Liaison {Protocol:{DAP.wright }
CtBody:{ }
}
}
DirCluster : Composition {
IntStructure: {ScalDirArch }
Associations: {*}
}
DirClientCluster : Composition {
IntStructure: {ClientImplArch }
Associations: {*}
}
ScalDirServerArchitecture : Architecture {*}
ClientImplArch : Architecture {*}
DirSAConfig : Scenario { Type: {Static }
Description: {((DirDataServer.DUI.DS_AP, DAP.DAPProvide)
(DirClient.DUA_SRI.DUA_PR, DAP.DAPRequest))
((DirDataServer.DUI.DS_AP, DAP.DAPProvide)
(AdminDirClient.DUA_SRI.DUA_PR, DAP.DAPRequest))
((DirDataServer.DSQLI.SQL_AP, SQL.SQLProvide)
(AdminDirClient.CSQLI.SQLP, SQL.SQLQuery))
((SecurityServer.AdminRPCI.RPC, RPC.RPCDeliver)
(AdminDirClient.ClientRPCI.RPCRequest, RPC.RPCTransferReq)) }
}
Figure 5.
Elements of an architectural description of DirSA (top part).
Bell Labs Technical Journal ◆ July–September 1998
135
a composition—DirCluster. Its internal structure is an
architecture—ScalDirArch (see Figure 5). This architecture is composed of encapsulated data servers—
DirSOFT building blocks—interoperating according to
the rules of three protocols: DOP, DISP, and DSP.15 The
information tree and the replication-shadowing mechanisms are allocated to these encapsulated data servers
according to the rules of the X.500 standard. Directory
services are provided at the directory data server’s
ports, comprising its interfaces: a DAP-based directory
user interface (DUI) and an SQL interface (DSQLI).
As illustrated in Figure 3, the directory data server
provides services to a set of directory clients. These
clients interoperate with the directory data server
using the DAP. A specialized class of clients also has
an SQL-based interface to the directory data. The
DirClient component is a description of a generic
client. The AdminDirClient component is a specialization that stems from the DirClient component.
Although it is not shown in our example, each specific directory client is derived from these component
types. In theory a DirClient could be represented as a
refinement of an abstract directory user agent
(DUA).15 However, we have taken a more practical
approach and have represented the implementation
view, that is, a cluster of a domain-specific component
(such as a personal DIR or a messaging server) and a
DUA library component (DUAL). This decision was
influenced most by the availability and popularity of
off-the-shelf DUA libraries.
The contracts introduced in Figures 4 and 5 represent the three types of interaction defined in the
architecture:
• The DAP contract, which represents the directory access protocol;
• The SQL contract, which defines an SQL-based
interaction with the directory data; and
• The RPC contract, which defines an RPC-based
interaction.
The “ownership of data” and the mechanisms for
“change propagation” were significant issues in the
data aspect of the system. We used the rules and scenarios8 of ASPECT to reflect not only these two issues,
but also the global control structures in the architectural specification. For performance reasons, we have
136
Bell Labs Technical Journal ◆ July–September 1998
provided SQL-based (non-DAP) interfaces to the directory data, which comply to the general security rules
defined in the architecture.
We used the ASPECT templates to represent the
types of components, interactions, and common structural patterns of the target architecture. They defined
element types that can be refined and extended to produce new definitions (see Figure 5). They can also be
instantiated into specific elements and system architectures. As we discussed above, DirClient is a component
type. From it, we derived multiple clients (see Figure 3)
and extended them with additional interfaces, strictly
observing the subtyping discipline of ASPECT. For
instance, the administrative directory client,
AdminDirClient, was derived from the DirClient element type and extended with an SQL-based interface.
Summary and Outlook
A “good” architecture is a product of both
methodology and good architectural design.
Methodology defines the units of architectural abstraction and the system of specification. A good methodology provides for important architectural properties like
modularity and consistency, but it does not guarantee
them. Good use of the methodology—that is, good
design and process—is required as well.
We have used this case study and the example of
the DirSA prototype architecture to show that the
GARM-ASPECT approach can be used to guide the
process of software architecture engineering and to
provide rigorous architectural specifications of practical
architectural solutions.
Following the steps of the process implied by the
methodology,4,18 we have defined the scope of the
architecture and the levels of abstraction at which
architectural issues are to be addressed. We have also
identified several alternative solutions to the “directory
problem.” We then evaluated the alternatives and
specified the selected solution. (This paper does not
describe all steps of the process in detail.)
Applying GARM-ASPECT, we have underlined a
number of important methodological aspects of
abstract description of software architectures. We have
separated interaction from computation as component
and contract types, described different interaction
types as different contracts, specified all component
interfaces, and defined patterns of control and ownership of data.
The methodology enabled us to take a systematic approach to architecture definition and specification that helped us to gain a better insight into the
problem. It also helped us to identify and evaluate
several alternative architectural solutions and to produce precise architectural specifications, and, hence,
better documentation.
The formalization of component, interface, and
contract types has permitted us to define a more general solution and to analyze its properties. The constraints and alternatives we have identified and
described have laid the groundwork for developing a
more successful solution.
Acknowledgments
We gratefully acknowledge Don Stewart and
David Sokoler of Lucent Technologies, who lent their
confident leadership and support to the directory
architecture engineering and specification effort. The
technical contributions of Saswata Bhattacharya,
Piyush Lumba, Rahim Choudhary, and Ninad Mehta,
also of Lucent, were valuable in specifying the directory architecture. To the many colleagues who helped
us with their insights and comments, we extend our
thanks. Special appreciation goes to Thomas Marlowe,
affiliated with the Department of Mathematics and
Computer Science of Seton Hall University, in South
Orange, New Jersey, for his creative suggestions. The
authors also recognize the significant contributions
made to this work by Wilhelm Rossak, currently affiliated with Institut für Informatik of Friedrich Schiller
University in Jena, Germany.
References
1. B. Boar, Implementing Client/Server Computing,
McGraw-Hill, New York City, 1993.
2. D. Perry and A. Wolf, “Foundations for Study of
Software Architecture,” Software Eng. Notes,
Vol. 17, No. 4, Oct. 1992, pp. 40–52.
3. D. Garlan, “ICSE-17 Software Architecture
Workshop Summary,” Software Eng. Notes,
Vol. 20, No. 3, July 1995, pp. 84–89.
4. W. Rossak, V. Kirova, L. Jololian, H. Lawson,
and T. Zemel, “A generic model for software
architectures,” IEEE Software, Vol. 14, No. 4,
July/Aug. 1997, pp. 84–92.
5. Proc. of the Workshop on Domain-Specific Software
Architectures, Software Engineering Institute,
Hidden Valley, Pa., July 1990.
6. G. Abowd, R. Allen, and D. Garlan, “Using Style
to Understand Descriptions of Software
Architectures,” Software Eng. Notes, Vol. 18,
No. 5, Dec. 1993, pp. 9–20.
7. M. Shaw and D. Garlan, Software Architecture:
Perspectives on an Emerging Discipline, PrenticeHall, Englewood Cliffs, N. J., 1996.
8. V. Kirova and W. Rossak, “ASPECT—An
Architecture SPECification Technique: A Report
on Work in Progress,” Proc. of IEEE Symp. and
Workshop on Eng. of Computer-Based Sys.,
Mar. 11–15, 1996, Friedrichshafen, Germany,
pp. 220–227.
9. V. Kirova and W. Rossak, “ASPECT: The
Generic Architecture Description Language and
Its Customization Facilities,” Proc. of IEEE Conf.
on Eng. of Computer-Based Sys., Mar. 30–Apr. 3,
1998, Jerusalem, Israel, pp. 192–200.
10. H. Kradjel, V. Kirova, and R. Choudhary,
“Leveraging Architecture and Process to
Achieve Software Asset Reuse,” Proc. of IEEE
Conf. on Eng. of Computer-Based Sys., Mar. 30–Apr. 3,
1998, Jerusalem, Israel, pp. 343–347.
11. G. J. Holzmann, D. A. Peled, and
M. H. Redberg, “Design Tools for Requirements
Engineering,” Bell Labs Tech. J., Vol. 2, No. 1,
Winter 1997, pp. 86–95.
12. R. Allen and D. Garlan, Formal Connectors,
Report No. CMU-CS-94-115, Carnegie Mellon
University, Pittsburgh, Pa., Mar. 1994.
13. I. Jacobson, Object-Oriented Software Engineering:
A Use Case Driven Approach, ACM Press,
Reading, Mass., 1995.
14. D. Chappell, “Nt 5.0 in the Enterprise,” BYTE,
Vol. 22, No. 5, May 1997, pp. 66–72.
15. D. Chadwick, Understanding X.500 The Directory,
Chapman & Hall, New York City, 1994.
16. M. Wahl, T. Howes, and S. Kille, Lightweight
directory access protocol (LDAP), (v3) Technical
Report REC 2251, IETF, Dec. 1997.
http://ds.internic.net/rfc/rfc2251.txt
17. F. Bronsard, D. Bryan, W. Kozaczynski,
E. Liongnsari, J. Ning, A. Olafsson, and
J. Wetterstrand, “Toward software plug and
play,” ACM Software Eng. Notes, Vol. 22,
May 1997, pp. 19–29.
18. W. Rossak, T. Zemel, and H. Lawson, “A metaprocess model for the planned development of
integrated systems,” J. of Sys. Integration, Vol. 1,
No. 3, 1993, pp. 225–249.
(Manuscript approved September 1998)
Bell Labs Technical Journal ◆ July–September 1998
137
VASSILKA D. KIROVA is a member of technical staff in
the Cross-Product Architecture and Systems
Engineering Department in the Business
Communications Systems Group at Lucent’s
Middletown, New Jersey, location. Her
interests include software architectures,
architecture representation, requirements specification, software process, and systems integration.
Ms. Kirova received B.S. and M.S. degrees from the
Technical University of Sofia in Bulgaria and Saint
Petersburg Electrotechnical University in Russia, both in
computer science and engineering. In addition, she is a
visiting professor in the Department of Computer and
Information Science at the New Jersey Institute of
Technology in Newark, where she is also a Ph.D. candidate in computer science.
HOWARD G. KRADJEL works as a systems engineer in
the Computer Telephony Integration (CTI)
Platforms and Applications Department in
the Business Communications Systems
Group at Lucent’s Middletown, New Jersey,
location. His interests include software
development methodology, system architecture specification, code generation, and automated system construction. Mr. Kradjel holds a B.S. from the Pennsylvania
State University in University Park and an M.S. from
Lehigh University in Bethlehem, Pennsylvania, both in
industrial engineering. ◆
138
Bell Labs Technical Journal ◆ July–September 1998
Download