Moving From One System To Many: Software Product Lines: Re-Using Architectural Assets
Moving From One System To Many: Software Product Lines: Re-Using Architectural Assets
focuses on the construction of multiple systems from that architecture, discussing, and
giving examples of system product lines. It does this from five perspectives: that of the
technology underlying a product line, that of a single company that built a product line of
naval vessel fire-control systems, that of an industry-wide architecture, that of a single
company producing products based on the industry-wide architecture, and that of an
organization building systems from commercial components.
• Requirements. Most of the requirements are common with those of earlier systems and
so can be re-used. Requirements analysis is saved.
www.jntumaterials.co.in
wrong, the system cannot be saved. For a new product, however, this most important
design step is already done and need not be repeated.
• Elements. Software elements are applicable across individual products. Far and above
mere code re-use, element re-use includes the (often difficult) initial design work.
Design successes are captured and re-used; design dead ends are avoided, not
repeated. This includes design of the element's interface, its documentation, its test
plans and procedures, and any models (such as performance models) used to predict or
measure its behavior. One re-usable set of elements is the system's user interface,
which represents an enormous and vital set of design decisions.
• Testing. Test plans, test processes, test cases, test data, test harnesses, and the
communication paths required to report and fix problems are already in place.
• Project planning. Budgeting and scheduling are more predictable because experience is
a high-fidelity indicator of future performance. Work breakdown structures need not be
invented each time. Teams, team size, and team composition are all easily determined.
www.jntumaterials.co.in
• Defect elimination. Product lines enhance quality because each new system takes
advantage of the defect elimination in its forebears. Developer and customer confidence
both rise with each new instantiation. The more complicated the system, the higher the
payoff for solving vexing performance, distribution, reliability, and other engineering
issues once for the entire family.
Scoping
The scope of a product line defines what systems are in it, and what systems are out. Put
less bluntly, a product line's scope is a statement about what systems an organization is
willing to build as part of its line and what systems it is not willing to build. Defining a
product line's scope is like drawing a doughnut in the space of all possible systems, as
shown in Figure 14.1. The doughnut's center represents the systems that the organization
could build, would build, because they fall within its product line capability. Systems outside
the doughnut are out of scope, ones that the product line is not well equipped to handle.
Systems on the doughnut itself could be handled, but with some effort, and require case-
by-case disposition as they arise. To illustrate, in a product line of office automation
systems a conference room scheduler would be in; a flight simulator would be out. A
specialized intranet search engine might be in if it could be produced in a reasonable time
and if there were strategic reasons for doing so (such as the likelihood that future
customers would want a similar product).
Figure 14.1. The space of all possible systems is divided into areas within scope
(white), areas outside of scope (speckled), and areas that require case-by-case
disposition (black).
The scope represents the organization's best prediction about what products it will be asked
to build in the foreseeable future. Input to the scoping process comes from the
organization's strategic planners, marketing staff, domain analysts who can catalog similar
systems (both existing and on the drawing board), and technology experts.
www.jntumaterials.co.in
Architectures for Product Lines
Of all of the assets in a core asset repository, the software architecture plays the most
central role. The essence of building a successful software product line is discriminating
between what is expected to remain constant across all family members and what is
expected to vary. Software architecture is ready-made for handling this duality, since all
architectures are abstractions that admit a plurality of instances; a great source of their
conceptual value is, after all, that they allow us to concentrate on design essentials within a
number of different implementations. By its very nature an architecture is a statement
about what we expect to remain constant and what we admit may vary. In a software
product line, the architecture is an expression of the nonvarying aspects.
But a product line architecture goes beyond this simple dichotomy, concerning itself with a
set of explicitly allowed variations, whereas with a conventional architecture almost any
instance will do as long as the (single) system's behavioral and quality goals are met. Thus,
identifying the allowable variations is part of the architecture's responsibility, as is providing
built-in mechanisms for achieving them. Those variations may be substantial. Products in a
software product line exist simultaneously and may vary in terms of their behavior, quality
attributes, platform, network, physical configuration, middleware, scale factors, and so
forth.
The Software Engineering Institute has identified twenty-nine issues or "practice areas" that
affect an organization's success in fielding a software product line. Most of these practice
areas are applied during single-system development as well, but take on a new dimension
in a product line context. Two examples are architecture definition and configuration
management.
www.jntumaterials.co.in
ADOPTION STRATEGIES
Internal sources
ORGANIZATIONAL STRUCTURE
Development department
Business units.
For systems built from off-the-shelf (OTS) components, component selection involves a
discovery process, which seeks to identify assemblies of compatible components,
understanding how they can achieve the desired quality attributes, and deciding whether
they can be integrated into the system being built.
www.jntumaterials.co.in
What impact does this decision have on your architecture? Either the whole system must be
written in Visual Basic with its built-in callback-centered style or the operator portion must
be isolated from the rest of the system in some fashion. This is a fundamental structural
decision, driven by the choice of a single component for a single portion of the system.
Architectural Mismatch
Architectural mismatch is a special case of interface mismatch, where the interface is as
Parnas defined it: the assumptions that components can make about each other. This
definition goes beyond what has, unfortunately, become the standard concept of interface in
current practice: a component's API (for example, a Java interface specification). An API
names the programs and their parameters and may say something about their behavior, but
this is only a small part of the information needed to correctly use a component. Side
effects, consumption of global resources, coordination requirements, and the like, are a
necessary part of an interface and are included in a complete interface specification.
Interface mismatch can appear at integration time, just like architectural mismatch, but it
can also precipitate the insidious runtime errors mentioned before.
These assumptions can take two forms. Provides assumptions describe the services a
component provides to
its users or clients. Requires assumptions detail the services or resources that a component
must have in order to correctly function. Mismatch between two components occurs when
their provides and requires assumptions do not match up.
What can you do about interface mismatch? Besides changing your requirements so that
yesterday's bug is today's feature (which is often a viable option), there are three things:
• Avoid it by carefully specifying and inspecting the components for your system.
• Detect those cases you have not avoided by careful qualification of the components.
The rest of this section will deal with techniques for avoiding, detecting, and repairing
mismatch. We begin with repair.
www.jntumaterials.co.in
TECHNIQUES FOR REPAIRING INTERFACE MISMATCH
To date, mismatch correction (or "component/interface repair") has received little
systematic attention. Terms such as "component glue" are evocative of the character of the
integration code and reflect the second-class status we assign to its development. Often
repairing interface mismatches is seen as a job for hackers (or sometimes junior
programmers) whose sense of aesthetics is not offended by the myriad "hacks" involved in
integrating off-the-shelf components. However, as is often the case, the weak link in a chain
defines the chain's strength. Thus, the quality of component repair may be directly
responsible for achieving?or failing to achieve?system-wide quality attributes such as
availability and modifiability.
The term component qualification has been used to describe the process of determining
whether a commercial component satisfies various "fitness for use" criteria. Some
component qualification processes include prototype integration of candidate components as
an essential step in qualifying a component. This integration step discovers subtle forms of
interface mismatch that are difficult to detect, such as resource contention. The need for
this step is a tacit acknowledgment of our poor understanding of component interfaces.
www.jntumaterials.co.in
Component-Based Design as Search
Since component capabilities and liabilities are a principle source of architectural constraint
in system development, and since systems use multiple components, component-based
system design becomes a search for compatible ensembles of off-the-shelf components that
come the closest to meeting system objectives. The architect must determine if it is feasible
to integrate the components in each ensemble and, in particular, to evaluate whether an
ensemble can live in the architecture and support system requirements.
An illustration of the model problem work flow is shown in Figure 18.1. The process consists
of the following six steps that can be executed in sequence:
1. The architect and the engineers identify a design question. The design question initiates
the model problem, referring to an unknown that is expressed as a hypothesis.
2. The architect and the engineers define the starting evaluation criteria. These criteria
describe how the model solution will support or contradict the hypothesis.
3. The architect and the engineers define the implementation constraints. The
implementation constraints specify the fixed (inflexible) part of the design context that
governs the implementation of the model solution. These constraints might include such
things as platform requirements, component versions, and business rules.
4. The engineers produce a model solution situated in the design context. The model
solution is a minimal application that uses only the features of a component (or
components) necessary to support or contradict the hypothesis.
5. The engineers identify ending evaluation criteria. Ending evaluation criteria include the
starting set plus criteria that are discovered as a by-product of implementing the model
solution.
6. The architect performs an evaluation of the model solution against the ending criteria.
The evaluation may result in the design solution being rejected or adopted, but often
leads to new design questions that must be resolved in similar fashion.
www.jntumaterials.co.in
Figure 18.1. Model problem work flow
ASEILM Example
Our example centers around a Web-based information system developed at the Software
Engineering Institute (SEI) for automating administrative interactions between SEI and its
transition partners. The Automated SEI Licensee Management (ASEILM) system was created
with the following objectives:
www.jntumaterials.co.in
• To collect administrative information for assessments
• To graphically present revenue, attendance, and other information about SEI licensed
materials
ASEILM must support the following multiple user types, each with varying authorization to
perform system functions:
• Course instructors can input course attendee lists, maintain contact information, and
download course materials.
• Lead assessors can set up assessments, input assessment information, and download
assessment kits.
• SEI administrators can maintain lists of authorized instructors and lead assessors, as
well as view or edit any information maintained by the system.
Quality
Requirement
Attribute
Compatibility Support older versions of Web browsers including Netscape 3.0 and
Internet Explorer 3.0
www.jntumaterials.co.in
Software Architecture in the Future
The history of programming can be viewed as a succession of ever-increasing facilities for
expressing complex functionality. In the beginning, assembly language offered the most
elementary of abstractions: exactly where in physical memory things resided (relative to the
address in some base register) and the machine code necessary to perform primitive
arithmetic and move operations. Even in this primitive environment programs exhibited
architectures: Elements were blocks of code connected by physical proximity to one another
or knitted together by branching statements or perhaps subroutines whose connectors were
of branch-and-return construction. Early programming languages institutionalized these
constructs with connectors being the semicolon, the goto statement, and the parameterized
function call. The 1960s was the decade of the subroutine.
• The simplest case, in which a single organization creates a single architecture for a
single system
• One in which a business creates not just a single system from an architecture but an
entire product line of systems that are related by a common architecture and a common
asset base
www.jntumaterials.co.in
• One in which the architecture becomes so pervasive that the developing organization
effectively becomes the world, as in the case of the World Wide Web
Creating an Architecture
we emphasized the quality requirements for the system being built, the tactics used by the
architect, and how these tactics were manifested in the architecture. Yet this process of
moving from quality requirements to architectural designs remains an area where much
fruitful research can be done. The design process remains an art, and introducing more
science into the process will yield large results.
www.jntumaterials.co.in
domains. As a result, architects will be concerned as much with constraints caused by the
chosen framework as by green-field design.
Not even the availability of components with extensive functionality will free the architect
from the problems of design, however. The first thing the architect must do is determine the
properties of the used components. Components reflect architectural assumptions, and it
becomes the job of the architect to identify them and assess their impact on the system
being designed. This requires either a rich collection of attribute models or extensive
laboratory work, or both. Consumers of components will want a trusted validation agency,
such as Underwriters Laboratories, to stand behind the predictions.
Finally, components and their associated frameworks must be produced and the production
must be designed to achieve desired qualities. Their designers must consider an industry-
wide set of stakeholders rather than those for a single company. Furthermore, the quality
attribute requirements that come from the many stakeholders in an industry will likely vary
more widely than the requirements that come from the stakeholders of a single company.
www.jntumaterials.co.in