paper

advertisement
Supporting Component-Based Development
through Customised Architectural Views
Rudi Vernik and Matthew Phillips
Software Systems Engineering Group
Information Technology Division
DSTO
Abstract
Architecture is often seen as an important aspect of software development; however, there
is considerable confusion as to what software architecture is and how architecture plays a
part in the overall development process. This paper argues that architecture should be
thought of as a customised set of developmental views based on key underlying domain,
design, and resource information/knowledge. We believe that architecture should not be
thought of in isolation: it should be considered it terms of the processes and approaches
used in a project (i.e. there is no standard concept of architecture, just a set of
characteristics that an architecture should provide in a particular context). This perspective
of architecture is discussed in terms of our component-based development experiences.
1. What is a software architecture?
A study of the literature suggests that there is no consensus as to the term “software
architecture”. It is often referred to in terms of the high-level structural characteristics of the
software (a type of high level design). For example, Boasson (1995) defines architecture as
being a system structure that consists of active modules, a mechanism to allow interaction
among these modules, and a set of rules that govern interaction. Buschmann, Meunier et al.
(1996) define software architecture as a description of the subsystems and components of a
software system and the relationships between them. They suggest that software
architecture of a system is an artifact - it is the result of the software design activity. The
relationship between architecture and component-based development features in many
definitions of software architecture. For example, the Second International Software
Architecture Workshop (ISAW-2) (Wolf 1997) suggested that software architecture “is
concerned with the principled study of large-grained software components, including their
properties, relationships and patterns of combination. Brown and Wallnau (1996) suggest
that software architecture is the “blueprint for component integration”.
To add to the confusion, there have been many schemes which define how a software
architecture should be represented. For example, Clements and Northrop (1996) suggest that
an architecture should be defined in terms of a specific set of views and representations:
conceptual, module, process, and physical. Meekel, Horton et al. (1997) define architecture
in terms of an Object View, Layered View, Task View, and Scenarios (all expressed using
the OMT notation). Soni, Nord et al. (1995) propose the following four views of software
architecture: Conceptual Architecture (components, connectors etc), Module Architecture
(subsystems, modules, exports, imports etc), Code Architecture (files, directories, libraries),
Execution Architecture (tasks, threads, processes).
The proposal that architecture is a specific developmental artifact resulting from an
“architecture” process raises a number of questions such as: What is the distinction between
architecture and design?
What is the relationship between the domain
knowledge/information and architecture? How does architecture fit into the overall
development process? How do we iterate between domain models, architectures, design and
implementation while maintaining consistency and traceability? What approach do we use
to describe the architecture and will it map with development approaches/tools? How will
the architecture be used? Will it result in a document focused approach where architecture
definition becomes an end in itself and where the resulting artifacts become shelf-ware
because they are difficult to update, contain superfluous information etc.
2. A Broader Perspective of Architecture
A number of authors have looked at the broader perspective of architecture. For example,
Kerth and Cunningham (1997) argue that a software architecture is a set of architectural
views that is based on a particular architectural philosophy and a set of requirements. This
philosophy is seen as a deep conviction as to how the system should be developed. They
suggest that it is important that this philosophy be communicated when dealing with large
projects and that effective pattern systems, much as Alexander (1979) has done for more
traditional architecture, will provide a basis for this communication.
Although architecture is often defined in terms of being a set of viewpoints, the nature of
these viewpoints in relation to user needs has had little mention. The draft IEEE standard on
“Recommended Practice for Architectural Description” highlights the importance of
selecting architectural viewpoints based on the interests of stakeholders (IEEE_Std_1471
1998).
3. Our Perspective
We argue that software architecture is an evolving set of core concepts, principles1, patterns,
guidelines and interfaces. It is that information and knowledge that is required to guide the
development and evolution of a software system. It can comprise high-level design
information which describes core structural principles but may also include contextual
information (including external interfaces), key concepts, frameworks, and components. We
believe that architecture should not be thought of in terms of a set of standard descriptions
that need to be produced. It should be thought of as a customised set of developmental
views based on key underlying domain, design, and resource information/knowledge.
Architecture should not be thought of in isolation: it should be considered it terms of the
processes and approaches used in a project (i.e. there is no standard concept of architecture,
just a set of characteristics that an architecture should provide in particular context). We
argue that architectures need to be tailored to the needs and approaches of a project.
Principles include Kerth and Cunningham’s concept of architectural philosophy. They can also include key
structural and dynamic characteristics including global control structures, distribution approach, protocols, and
concept/feature assignment.
1
4. An Example – Component Based Development
The following example will help illustrate our position. We are currently developing an
experimental infrastructure to support our research into the visualisation and description of
large complex systems (e.g. enterprise networks, heterogeneous software systems). As part
of this work, we are using a component-based software engineering approach to support the
development of a family of experimental domain-specific Integrated Visualisation
Environments (or IVEs). Domain engineering processes have developed a variety of
information/knowledge products including a set of concepts and features, use cases, highlevel design information expressed in the Unified Modelling Language (UML 1997) 2, a
database of component resources, functional and storyboard prototypes, etc.
Architecture
Domain
Knowledge
Infrastructure
Design
Implementation
Resources
Figure 1. Architecture within the project context
Figure 1 shows how this project information forms part of a continuum which ranges from
domain knowledge through to an implementation. This information is produced and used by
a range of developmental processes. For example, domain analysis processes produce
domain information and knowledge. The design process produces design-level information.
The construction process generates implementation artifacts, including the development of
core assets such as frameworks and components, as well as the assembly of these assets into
integrated artifacts and product releases.
In addition to the information and artifacts produced by the project, the Component-Based
Software Engineering processes draw from an underlying resource base. Resources could
include a range of reusable artifacts and information including Commercial-Off-The-Shelf
(COTS) components and frameworks, patterns, and standards.
Figure 1 shows two overlapping regions. These regions provide core information for the
component-based development process and are critical to the success of the approach. The
first is labeled as architecture. Since architecture is the focus of this paper, this aspect will
be discussed in detail in the next section. The second region is labeled as Infrastructure.
Infrastructure is shown as the intersection of design and implementation. It includes both
2
The use of UML for component-based development is itself an experiment, the results of which will be
reported separately.
software artifacts and design information used to support the assembly of software solutions.
Infrastructure comprises both custom-developed, Off-The-Shelf, and adapted frameworks
and components. It also includes design-level details and guidelines which are required as
part of the construction process.
5. Architecture in Context
In Figure1, Architecture is shown as the intersection of domain knowledge, design, and
resources. In the case of the IVE development, a Component Systems Architecture (CSA)
((Szyperski 1997), (Szyperski and Vernik 1998) ) is defined in terms of a set of Rational
Rose (1997) diagrams which provide abstract views of the underlying UML design. These
views show the various architectural principles inherent in the design. For example, IVE
products are developed using a layered set of “plugable” component frameworks and
components. CSA views show key relationships between these elements including the major
interfaces between frameworks and components. The views also show the use of those
elements of COTS software which have been defined as foundational elements (eg a
decision was made to use Java Swing as the framework for user interface development).
Key architectural principles are also described such as the approach for managing and
monitoring commands (i.e. aspects of system dynamics).
Rational Rose was used to provide tool support for the project. In addition to capturing the
design-level information, domain information was also stored in Rose to provide a mapping
between concepts and features to the underlying design. This then allows important domain
knowledge to be presented as part of of the CSA. The CSA is defined as abstraction of this
domain and design level information presented as a specific set of Rose diagrams.
Although our experiences show that Rose is not the ideal environment for integrated
component-based development, the approach we used does highlight a number of important
considerations. For example, by considering architecture as a set of views of underlying
domain, design, and resource information, there is a direct and consistent mapping between
domain information, architecture, and design. Updates to the architecture are directly
mapped to the design thereby addressing many of the problems inherent with the
“architecture is an artifact” approach. In fact, in the case of Rose, the “round trip
engineering” features allow a direct mapping through to implementation. Moreover, the
architecture is defined in terms of consistent project representations which may aid use and
understanding. Another important consideration is support for architecture validation.
Although the early design process focused primarily on defining the architectural concepts,
we found that in some cases we needed to undertake more detailed design in order to ensure
that the higher-level concepts were valid. Indeed, there may be a requirement to progress to
implementation (eg by way of a prototype) to effectively validate some architectural
principles.
6. Research Issues and Directions
The preceding discussion argues the benefit of considering architecture as being a set of
views of underlying project information rather than an artifact in its own right. However, this
approach raises a number of important issues that need to be considered such as:

What architectural characteristics do we need to describe for particular project domains
(eg a Component Systems Architecture)?

Do we need to customise architectural representations for individuals, roles, and project
contexts?

What supporting information is needed to aid architectural understanding?

How can underlying project information be filtered and customised into a set of
architectural views, particularly for large projects which may have diverse and
geographically distributed information sources?

How do software architectures evolve?
described?

What constitutes effective tool support in this area?
How can this evolution be captured and
Many of these issues will be investigated as part of our systems visualisation and description
research. This research aims at providing integrated computer-based visualisations which
can be customised and adapted to user needs. The approach focuses on a total domain
context which addresses issues related to the access, modelling and integration of
information as well as visual representation and presentation. The research provides an
interesting duality where the development of a family of experimental integrated
visualisation environments provides the focus of the component-based software engineering
investigations (including software architecture) and support for component-based
development itself features as one of the areas being investigated as part of the systems
visualisation research.
7. References
Alexander, C. (1979). The Timeless Way of Building, Oxford University Press.
Boasson, M. (1995). The Artistry of Software Architecture. IEEE Software November 1995:
13-16.
Brown, A. W. and K. C. Wallnau (1996). Engineering of Component-Based Systems. 2nd
International Conference on Engineering of Complex Computer Systems, IEEE Computer
Society Press.
Buschmann, F., R. Meunier, H. Rohnert, P. Sommerlad and M. Stal (1996). PatternOriented Software Architecture: A system of patterns. Chichester, John Wiley & Sons.
Clements, P. C. and L. N. Northrop (1996). Software Architecture: An Executive Overview.
Component-Based Software Engineering. A. W. Brown. Los Alamitos, CA, IEEE Computer
Society Press: 55-68.
IEEE_Std_1471 (1998). Recommended Practice for Architectural Description, Institute of
Electrical and Electronics Engineers, 345 East 45th Street, New York, NY 10017-2394.
Kerth, N. L. and W. Cunningham (1997). Using Patterns to Improve Our Architectural
Vision. IEEE Software January 1997: 53-59.
Meekel, J., T. B. Horton, R. B. France, C. Mellone and S. Dalvi (1997). From Domain
Models to Architecture Frameworks. Symosium of Software Reusability (SSR'97), Boston,
ACM.
Rose, R. (1997). Visual Modelling With Rational Rose.
http://www.rational.com/products/rose/.
Soni, D., R. Nord and C. Hofmeister (1995). Software Architecture in Industrial
Applications. 17 th International Conference on Software Engineering, Seattle, Washington,
ACM Press.
Szyperski, C. and R. J. Vernik (1998). Establishing System-Wide Properties of ComponentBased Systems: A Case for Tiered Component Frameworks. OMG/DARPA workshop on
Compositional Software Architecture, Monterey CA,
http://www.objs.com/workshops/ws9801/index.html.
Szyperski, C. A. (1997). Component Software: Beyond Object-Oriented Programming,
Addison-Wesley.
UML (1997). UML Resource Center. http://www.rational.com/uml/.
Wolf, A. L. (1997). Succeedings of the Second International Software Architecture
Workshop. ACM Software Engineering Notes 22(1): 42-56.
8. About the authors:
Dr Rudi Vernik is employed as a Principal Research Scientist at the Defence Science and
Technology Organisation (DSTO). In his position as Head of Software Systems Engineering
Group, he provides leadership to research teams which are focusing on defining, developing, and
applying new systems and software engineering approaches to support Defence in its development
of knowledge and information-based warfare capabilities. His group is currently undertaking
research in the areas of systems visualisation, component-based software engineering, systems
characterisation and modelling, systems dynamics, and evolutionary capability development
processes. Rudi has a Ph.D. in Computer and Information Science (Software Engineering) from the
University of South Australia. He also has a Bachelor of Electronics Engineering (with Distinction)
and a Diploma of Communications Engineering from the Royal Melbourne Institute of Technology.
Matthew Phillips is a researcher employed in Software Systems Engineering Group, Information
Technology Division. His research interests include distributed systems, programming language
design, software visualisation and object-oriented software engineering. Matthew has a Bachelor of
Computer Science (with Honours) from The University of Adelaide.
Download