Finding Frameworks Hot Spots in Pattern Languages
Rosana T. V. Braga and Paulo Cesar Masiero, Instituto
de Ciências Matemáticas e de Computação – Universidade
de São Paulo - Brazil
|
 |
REFEREED
ARTICLE

PDF Version |
Abstract
An important issue that contributes to the complexity of object-oriented
framework development is the identification of its hot spots, i.e.,
the framework parts that must be kept flexible, as they are specific
of individual systems. A process for identification of hot spots in
an analysis pattern language is proposed. Several types of hot spots
are identifiable from information presented in the elements of each
pattern of the pattern language, making possible to define a process
to sistematize this task.
An example illustrates the hot spots identification
based on a pattern language for business resource management.
1 INTRODUCTION
Software reuse is a goal that was set almost simultaneously with software
engineering. Structured programming, followed by object-oriented programming
and domain analysis were achievements obtained a long time ago to enhance
software reuse. Object-oriented software frameworks have emerged in
the same context. They allow the reuse of large structures in a particular
domain, which can be customized to specific applications in the domain.
Families of similar but non-identical applications can be derived from
a single framework [Johnson and Foote,
1988, Fayad and Schmidt, 1997].
The difficulty to build, understand,
and use frameworks has motivated the research around frameworks,
which includes methods for framework development and documentation.
In particular, a major complexity in framework development concerns
the identification of its hot spots, i.e., the parts that have to be
kept
flexible, as they are specific of individual systems. This involves
deep knowledge about the domain for which the framework is being built,
as hot spots are designed to be generic and further adapted according
to the requirements of each instantiated application. Hot spots are
usually discovered by domain analysis and then by successive framework
refinements. However, each new discovery may imply in the need to redesign
part of the framework, which makes development more complex. The best
approach is to know beforehand which are the framework hot spots, in
order to minimize the number of iterations needed for its construction.
Like
frameworks, software patterns and pattern languages have emerged
aiming at reuse, but in higher abstraction levels. While software patterns
try to capture the experience acquired during software development
and synthesize it in a problem/solution form [Gamma et al., 1995],
a pattern language is a structured collection of patterns that build
on each other to transform needs and constraints into an architecture
[Coplien, 1998]. Pattern languages represent
the temporal sequence of decisions that lead to the complete design
of an application, so it becomes a method to guide the development
process [Brugali et al., 2000].
Pattern languages and frameworks can
be used together to achieve even more reuse. Both are conceived for
a specific domain, solving most of the problems that are common to
applications in that domain [Brugali and Menga, 1999]. A pattern language
can be used for documenting the framework, as already shown in several
works [Aarsten et al., 2000, Johnson, 1992]; for supporting the framework
design and implementation [Brugali and Menga, 1999, Brugali et al.,
2000];
and as a method to guide the transformation of the framework in a concrete
application [Brugali and Menga, 1999]. As pattern languages contain
the main abstractions found in an application domain, they have built-in
information about the points that differ from one application to another.
So, they are a valuable source to identify the framework hot-spots.
In particular, this work considers analysis pattern languages, which
are composed of patterns to solve problems found during system analysis.
These patterns are placed in a higher abstraction level than design
patterns, as they are domain specific.
The work shown in this paper
depends on the existence of a pattern language for a specific domain.
Details about the construction of this pattern language is out of the
scope of this paper and can be found elsewhere [Braga and Masiero,
2003]. Basically, it involves domain analysis, the use of experience
acquired during software development in a specific domain, or the reverse
engineering of existing systems. After building a domain model to represent
applications in a specific domain, the problems found in the domain
are split into smaller problems, and an analysis pattern is created
to solve each of these problems. The interaction among the patterns
in documented, for example using a graph, and the patterns are written.
The pattern language is not constructed only with the purpose of helping
identifying the hot spots of a possible framework. Continuing the
work presented in this paper, we have defined two different processes:
the first to build frameworks based on pattern languages [Braga and
Masiero, 2002b] and the second for using a pattern language during
the instantiation of applications with a framework built based in
that
pattern language [Braga and Masiero, 2002c]. This second process
is supported by a wizard with a user interface that follows the same
concepts
of the pattern language [Braga and Masiero, 2002a], so that users
can apply the pattern language and have their systems semi-automatically
built.
This work focuses on analysis pattern languages as a source for framework
hot spots mining, pointing to the several types of hot spots that can
be found inside pattern languages and proposing guidelines of how to
find them. The purpose is to ease framework construction by minimizing
the iteration cycles needed to refine it.
The paper is organized as
follows. Section 2 presents the problem of hot spots elicitation
and shows the related work. Section 3 describes the types of hot spots
that are identifiable from pattern languages. Section 4 proposes guidelines
to identify hot spots in a pattern language. Section 5 establishes
the relationship between the hot spot type and the design of the framework.
Section 6 presents a case study, in which a pattern language for business
resource management is the source for identifying the hot spots of
its associated framework. Section 7 presents the concluding remarks.
2 HOT SPOTS ELICITATION
A framework is a powerful technique to improve reuse, as lots of different
applications can be obtained by instantiating it. However, the instantiation
process is usually very complex, requiring a deep understanding of
the framework design and implementation. To achieve the desired flexibility,
frameworks contain special constructions that difficult its understanding.
All frameworks have a fixed part, called
frozen spots [Pree, 1999], that reflect the common behavior of applications
in the
domain. On the other hand, frameworks have parts that need to be kept
flexible,
called hot spots, which have to be adapted according to the specific
requirements of
concrete applications derived from the framework.
In most existing techniques for framework development [Pree,
1995, Pree, 1999,
Schmid, 1997, Schmid, 1999, Roberts and Johnson, 1998], hot spots are
identified
throughout the process. They begin with a particular application model,
which is
used to define the first framework version, and then it is refined
through several iteration
cycles, including more and more hot spots. In other approaches, like
Bosch’s
[J. Bosch and Fayad, 1999], a domain analysis model is obtained at
the beginning,
which makes the framework hot spots more foreseeable.
Similar to identifying frameworks hot spots is identifying
the variability of a software product line [Griss et al., 1998, Svahnberg
et al., 2001]. In this
case, the variability is documented by the system features, which are
used to group related requirements concerning the system behavior.
Svahnberg et al. [Svahnberg et al., 2001] classify features in four
groups: External features, mandatory features, optional features, and
variant features. The approach presented in this paper also classifies
the several types of hot spots, some of which are similar to the features
classification.
If an analysis pattern language exists for a particular
domain, then it can be used as a source for hot spots elicitation,
minimizing iteration cycles needed for framework construction, like
in Bosch’s approach. Additionally,
the framework can be designed based on the pattern language, easing
its future instantiation, as the requirements of the the specific application
will be more easily mapped to hot spots that have to be adapted [Braga
and Masiero, 2002b, Braga and Masiero, 2002c].
3 TYPES OF HOT SPOTS IDENTIFIABLE FROM PATTERN LANGUAGES
There are several types of hot spots in a framework that must be adapted
to produce specific applications. Usually, this adaptation involves
adding new classes and overriding methods, with the purpose of characterizing
the specific application behavior.
For example, in white box frameworks
reuse is obtained through inheritance, i.e., the concrete application
classes inherit from framework abstract classes, whose hook methods
have to be overridden to provide the desired behavior. The existence
of a pattern language for a particular domain can greatly help in the
hot spots identification. Table 1 summarizes the types of hot spots
that can be identified from a pattern language. A code is assigned
to each of them to ease future reference. The adaptation type offers
insights of how to design and implement it in the framework and of
how do adapt it during instantiation. The following subsections describe
how to find these types of hot spots in a pattern language.
Table 1: Types of Hot spots identifiable from pattern languages
| IdCode |
Hot spot Description |
Adaptation type |
Main sources in the pattern language |
| PATTERN OPTION |
Optional pattern |
Several classes and relationships are disabled |
Language graph, Following patterns, Related patterns |
| PARTIC OPTION |
Optional participant |
One class and its relationships with other classes are disabled
or enabled |
Participants |
| PARTIC CHOICE |
Choice of participants |
One or more participants must be chosen according to the system
requirements |
Participants, Structure, Variants |
| RELATIONSHIP |
Change of Relationship |
One or more relationships must be changed according to the
system requirements |
Participants |
| BEHAVIOR |
Change of Behavior |
One or more algorithms must be changed according to the system
requirements |
Participants, Structure |
| PROPAGATION |
Propagation effect as a consequence of other pattern application |
Some participants may have changes in attributes or methods
according to other patterns already applied |
Participants, Structure |
Optional patterns
A hot spot belongs to the type PATTERN OPTION if
the whole pattern can be considered optional when instantiating
applications. It can be found by analyzing the general structure
of a pattern language, i.e., it is necessary to observe the several
inter-related patterns. The relationship among patterns is generally
shown by a graph that represents, rather than the interaction among
patterns, the sequence in which they are applied. A simple analysis
of which patterns are of mandatory use and which are of optional
use, indicates several framework hot spots. For example, both the
pattern language for improving the capacity of reactive systems [Meszaros,
1995] and the pattern language for business resource management,
named GRN [Braga et al., 1999] use a graph to illustrate their structure.
By analyzing this graph we can have an idea of which patterns are mandatory
or optional and, so, we can identify several hot spots of the framework
to be built. For example, in the GRN pattern language, the Reserve
the Resource pattern is optional. This indicates the need of a hot
spot in the framework to handle this feature. This can be confirmed
by analyzing the pattern context which presents the scenario for
the pattern usage.
If the pattern language has no corresponding graph,
the information necessary to know whether each pattern is optional
or not, can be found mainly in sections “Context”, “Following
patterns”, and “Related
patterns”. The context is important, as it gives indications
of the desirable features for the pattern usage. Adding to this the
knowledge about the application domain, we can identify applications
that do not fit in the context and that, consequently, do not use the
pattern.
Sections “Related patterns” and “Following patterns” show
other patterns related to the current pattern, helping to identify
other alternative patterns and, consequently,
indicate the pattern optionallity. The pattern language Accounts and
Transactions [Johnson, 1996] - although written in the Alexander form
and, consequently, without a “related patterns” section
- has a paragraph at the end of the “solution” section
pointing to the related patterns, where it is clear that the user is
directed
to
alternative patterns according to the application characteristics.
Optional participants
The PARTIC OPTION hot spot type denotes that a pattern participant
is optional when instantiating concrete applications, i.e., the pattern
can be applied without one
of its participants. This type of hot spot can be found at different
sections of a pattern
language. The main sources are the “participants” and “collaborations” sections,
which are present in patterns that follow the GoF format [Gamma et
al., 1995]. As they describe the participants of the pattern and their
collaboration, they provide
alternatives of using or not some of the participants. When a participant
is optional, there is a description of how the pattern works without
it. For example,
in the GRN pattern language, “Source-Party” is an optional
participant in the
Rent the Resource pattern, because small organizations do not have
branches
or departments to be managed.
The “variants” or “variations” section,
commonly found in the patterns of a
pattern language, is one of the richest sources of hot spots, mainly
of the PARTIC
OPTION type, because the variants often present solutions that differ
with
respect to the participants.
Choice among participants
When a pattern participant does not specify a particular class,
but gives alternatives of two or more classes that can be used, a
decision has to be made
during analysis
to define the participant class, according to the requirements. This
type of hot spot
(PARTIC CHOICE) can be detected in the “Structure” section
of the pattern language,
where a class diagram presents the solution, or in the “Participants” section,
where the classes that make the pattern are described. For example,
in the pattern
language for Object-RDBMS Integration [BROWN and WHITENACK, 1996]
there
is a section named “Discussion” in which variations of
the solution are presented to
discuss the participants and their collaborations.
Relationship and Behavior
The RELATIONSHIP and BEHAVIOR hot spot types can be
found in several sections of the pattern language. The RELATIONSHIP
type consists of changing
a relationship between classes to obtain the desired unctionality.
The BEHAVIOR
type consists of changing a method (or operation) to attend a specific
requirement. The “Implementation” section, present in
patterns that follow the GoF format, contains
suggestions of alternative implementations of the proposed solution,
so that according to the restrictions imposed by each particular
application, different implementations can be chosen. Thus, this
section is a
good source of these types
of hot spot. It must be observed that the framework developer often
makes implementation
choices that limit the possible implementations to one or two solutions.
So, it is common for the framework not to cover all the possibilities
presented in the“
Implementation” section.
Another source of these types of hot
spots is the “Structure” section,
which
contains a diagrammatic representation of the pattern classes and
their relationships. A detailed analysis of this section can help
to identify alternative behaviors that
may be desired for the system operations, often not described in
the “Participants” section. Thus, new hot spots can be
defined to allow, for example, new attributes
or methods for the classes and alternative algorithms for computing
attributes.
It is possible to misunderstand the hot spot types BEHAVIOR
and RELATIONSHIP. In fact, the RELATIONSHIP type is more specific
and can include the BEHAVIOR type, because when a class relationship
is changed there is a change of
behavior in the system. In this case, it is better to use the more
specific type. An example of the BEHAVIOR hot spot type is the payment
of commissions regarding
transactions performed by the executor in the “Identify the
Transaction Executor” pattern of the GRN pattern language.
The “variants” section
of this pattern suggests
two different ways of implementing the commission payment: the payment
can be done independently of the corresponding payment by the customer,
or it can
be done provided that the payment of each installment is done by
the customer. So, the classes and relationships are the same, but
the algorithm used to compute commissions can be different.
Propagation
The PROPAGATION hot spots are not very easy to find,
because they reflect decisions made in previously applied patterns.
This means that some patterns may have their participants or relationships
modified according to the pattern variants already applied. For example, in the GRN pattern language, the
choice done when applying the Quantify the Resource pattern implies in several additions
to the participants of patterns applied subsequently.
Like the BEHAVIOR and RELATIONSHIP types, the PROPAGATION type
is
also prone to be misunderstood. It is possible to categorize this
type of hot spot into one of the five other types, but it is
recommended to classify it as PROPAGATION
to ease its further design: there is a high probability that its
design will follow the design of the hot spots for which it is
a propagation of.
4 GUIDELINES FOR IDENTIFYING HOT SPOTS
Based on the types
of hot spots defined in Table 1 and on the information contained
in a pattern language, a generic process is proposed to help the
framework
developer to identify the hot spots using a pattern language. Figure
1 shows the steps involved
in this process.
In the first step, an analysis is done in the pattern
language graph if there is one.
Alternatively, the sections “Following Patterns”, “Related
Patterns”, or “Context” of each pattern are studied.
The main goal is to find paths that skip one or more
patterns, so that the optional patterns are determined. As explained
in Section 3, if a pattern can be optionally applied during the
pattern language usage, then
the corresponding framework needs to have means of working correctly
without this pattern. So, one or more hot spots are included in
the framework to cope with this
behavior. In this case, the hot spot type is PATTERN OPTION and
the framework user can enable or disable it, resulting in the inclusion
or omission of one or more
classes that compose this pattern.
In the second step, each pattern
of the pattern language is analyzed, by studying
its constituent sections, as they can indicate several framework
hot spots. The explanations supplied in sections 3 to 3 are useful
to identify hot spots in this step.
In the third step, a refinement
is done to each hot spot, aiming at supplying the information necessary
for its further design
and implementation. It is common to
discover new hot spots in this step, depending on the experience
of the framework designer, because to refine a hot spot it
may be necessary to split it into two or
more hot spots. The information about new hot spots can be used
as feedback to improve the pattern language in the subsequent
iteration cycle.

Figure 1: Process for hot spots identification based on a pattern
language
To better organize the hot spots list, it is recommended
to build a table with information about hot spots. For each hot
spot identified in steps 1 to 3 do the following:
- Include it in
the hot spots table, assigning it a number, a name and a brief
description of the desired flexibility.
- Inform the hot spot type,
according to what is needed to adapt the framework for a specific
application (Table 1).
- Associate the hot spot with its source in
the pattern language and the pattern number.
In the fourth step,
a cross reference among the hot spots is done to identify possible
inconsistencies in the whole list. New hot spots can be found in
this step, for example due to the incorrect propagation of previously
applied patterns. Domain knowledge is essential to perform this activity
and, like in the previous step, new hot spots can be used to enhance
the pattern language.
In the last step, other non-functional aspects
of the application with potential to originate new hot spots are
considered, which include portability, usability, security and reliability.
Design and implementation issues that could bring more flexibility
to the framework are also treated in this step. Some pattern languages
contain patterns in several abstraction levels like architectural
and design patterns. Thus it is possible that the non-functional
aspects of the domain may have already been
covered by the patterns. As our approach is preferably used with
analysis pattern
languages, this step was added to reinforce the need of analyzing
these issues.
It is necessary to balance performance versus flexibility
when considering nonfunctional
requirements and design or implementation issues, because including
several
alternatives in the framework would make it more flexible but degrade
system
performance. For example, if we consider database portability,
the choice of using a
relational database or an object-oriented one may derive a hot
spot to be set by the
framework user. Another example is the graphical user interface,
which could have
two or more implementations (one for traditional applications,
another for virtual
applications, etc.) so that the framework user could choose one
of them. Notice that
this type of flexibility could be achieved by implementing several
versions of the framework,
which would cause less impact on system performance. An example
of a
design/implementation issue that could generate a hot spot is a
web-based education
framework, where the course selection mechanism can vary [Fontoura
et al., 2001].
For example, the entire list of available courses or just the ones
related to the student
major could be shown.
Depending on the framework developer knowledge
and on human decisions made
at this point, other hot spots that are not explicit in the pattern
language can be
added. Knowledge about the domain is essential to succeed, but some
guidelines can
give the framework developer indications of other sources of hot
spots. For example,
looking at class attributes in the patterns of the pattern language,
some questions
should be answered, like: “is this a computed attribute?” If
so, “is it possible to have
several types of algorithms to compute it?” If the answer is
affirmative, a new hot
spot has been found. Looking at class relationships, another source
of hot spots is to
argue the cardinality of the relationships. If it is possible to
find applications where
the cardinality would be different from the cardinality proposed
in the pattern, then
a variant of the pattern exists and, consequently, a new hot spot.
It is also desirable
to look for similar hot spots in the table, because sometimes new
hot spots can be
derived by analogy.
Applying this process results in a list of the
framework hot spots, each of which
composed of an identifier code, a description, a type, the section(s)
in the pattern
where this hot spot was found and the pattern number (these two
last items are optional). The hot spot type allows the framework
developer to know what should
be done to obtain an application from the framework. For example,
if the type is
PARTIC CHOICE then there will be a choice among participants; if
the type is
PATTERN OPTION, then the pattern is optional in particular applications;
and if
the type is PARTIC OPTION, then a pattern participant can be omitted
in particular
instantiations.
5 DESIGN OF THE FRAMEWORK HOT SPOTS
According to the hot spot type
(Table 1) it is possible to have some indications of how to implement
it in the framework. For example, when a choice has to be made among
participants (PARTIC CHOICE type), the Strategy design pattern [Gamma
et al., 1995] can be used. A Strategy class can be created with concrete
subclasses representing each possible choice. This strategy class
is referenced
by one of the pattern mandatory participants, whose operations are
delegated to the strategy object.
Another example of how the hot
spot type can influence its design is for optional patterns (PATTERN
OPTION), in which the design has to allow the omission of its constituent
classes during instantiation, when that pattern is not selected.
It is preferable to design the classes using only inheritance, as
the simple fact of inheriting by one of the subclasses is enough
to know that the pattern was used. However, this is not always possible.
For example, when the application of a pattern opens the possibility
of using another dependent pattern, then it may be necessary for
a class of the first pattern to know if the dependent pattern was
also applied. A possible solution to solve this problem is to include
a special class variable in the first pattern class that indicates
if the dependent pattern was applied.
Similarly, for optional participants
(PARTIC OPTION), there must be a way of hiding them during instantiation.
This can also be done by including a special class variable in a
mandatory class of the pattern to indicate if an optional participant
was used in a specific instantiation.
The other three types of hot
spots, namely BEHAVIOR, RELATIONSHIP, and PROPAGATION usually do
not map easily to a common design, as they are more general. So,
each specific case has to be treated separately. 6 CASE STUDY
A case study was conducted to evaluate the proposed
process. The GRN pattern language [Braga et al., 1999] was used
to develop a framework for the same domain,
called GREN [Braga and Masiero, 2002b].
Pattern Language features
The Pattern Language for Business Resource
Management (Gestao de Recursos de Negocios, or GRN, in Portuguese)
is composed of fifteen analysis patterns (see Figure 2), some of
which are specific usages or extensions of more generic patterns
proposed in the literature [Coad et al., 1997, Boyd, 1998, Johnson
and Woolf,
1998, Fowler, 1997]. It was conceived to help software engineers
in the development of applications concerned with business
resource management. This includes applications where it is necessary
to log transactions of business resource rental, trade or maintenance.
By transaction we mean the same as Coad et al.: “a
significant event
to be remembered, i.e., an event that the system must remember through
time” [Fowler, 1997].

Figure 2: GRN: a Pattern Language for Business Resource Management
Resource
rental focuses primarily on the satisfaction of a certain temporary
need of a product or service like a videotape or a physician time.
Resource trade focuses on the transference of property of a product,
as for example a product sale or auction. Resource maintenance focuses
on the maintenance of a certain product, using labor and parts
to perform it, as in an electric appliance repair shop. Figure 2
shows
the dependencies among the patterns and the order in which they
are generally applied. These dependencies are also presented,
and eventually complemented, inside each specific pattern. The main
patterns in the language are Rent the Resource, Trade the Resource,
and Maintain the Resource, indicated by a thicker line. Their use
is not mutually exclusive and, in fact, there are applications in
which they can fit together. Maintain the Resource may use Rent the
Resource and Trade the Resource, as in a car repair
shop system, in which parts are traded and labor is rented.
The
patterns are grouped according to their purpose, as illustrated in
Figure 2: group 1 patterns are basically concerned with the identification,
quantification and storage of the business resources; group 2
patterns deal with the business transactions performed by the system;
and group 3 patterns that take care of details associated to most
business transactions. The GREN framework construction based on the
GRN pattern language was done in two phases. In the first phase a
white box version of the framework was built [Braga and Masiero,
2002b].
Its hot spots were identified in the GRN pattern language and were
implemented using Smalltalk VisualWorks. This framework can be manually
instantiated using a well defined process [Braga and Masiero, 2002c].
In the second phase, a wizard was built [Braga and Masiero, 2002a],
also based on the GRN pattern language, to automatically instantiate
the framework to specific applications.
Application of the hot spots
identification process
The process outlined in section 4 was applied
to identify 36 hot spots of the GREN framework (some of them are
listed in Table 2). Most of them (88,9%) were found based in the
GRN pattern language (steps 1 and 2 of the process) and only 11,1%
were identified by other ways (step 4 of the process, in this case).
Table 2: Partial List of Hot Spots for the GREN Framework
| # |
Name |
Description |
Type |
Source in the pattern language |
Pattern
# |
| 2 |
Resource Quantification
|
A resource can be unique, can have multiple instances, can
be managed in quantities or in lots.
|
PARTIC_CHOICE |
Participants, Structure, Variants (subpatterns) |
2 |
| 8 |
Instance number generation |
The instance number of the resource to be rented can be supplied
by the user or automatically generated by the system |
BEHAVIOR |
- |
4 |
| 9 |
Resource reservation |
The application may or may not need to deal with resource reservation |
PATTERN_OPTION |
Language
Graph +
Context |
5 |
| 12 |
Reserved quantity entry |
It is necessary to read the quantity of reserved resources
when the reservation refers to a measurable resource (propagation
of pattern 2 usage) |
PROPAGATION |
- |
5 |
| 13 |
Resource trade |
The application may or may not concern the trade of resources |
PATTERN_OPTION |
Language
Graph +
Context |
6 |
| 14 |
Existence of Source-party in the trade |
In sale systems, the organization may be small and not have
branches or departments. |
PARTIC_OPTION |
Participants |
6 |
| 15 |
Existence of Destinationparty in the trade |
In purchase systems, the organization may be small and not
have branches or departments. |
PARTIC_OPTION |
Participants |
6 |
| 16 |
Traded quantity entry |
It is necessary to read the quantity of traded resources when
the trade refers to a measurable resource (propagation of pattern
2 usage) |
PROPAGATION |
Participants |
6 |
| 35 |
Charge of rentals |
The application may have no charge for rentals, as in some
libraries |
BEHAVIOR |
- |
4 |
| 36 |
Fine computing |
The computing of fines due to delayed payment may vary from
application to application |
BEHAVIOR |
- |
12 |
Table 3 summarizes the types of hot spots found. We observe that
most of them are of type PATTERN OPTION, since the pattern language
has many optional patterns and this results directly in hot spots,
as explained in section 3.
Table 3: Summary of the types of hot spots identified
| Type of hot spot |
Quantity found |
Percentage |
Step 1 |
Step 2 |
Step 3 |
Step 4 |
Step 5 |
| PATTERN_OPTION |
14 |
|
|
|
|
38,9 % |
| PARTIC_OPTION |
|
7 |
|
|
|
19,4 % |
| PARTIC_CHOICE |
|
3 |
|
|
|
8,3 % |
| RELATIONSHIP |
|
1 |
|
|
|
2,7 % |
| BEHAVIOUR |
|
2 |
|
3 |
|
13,9 % |
| PROPAGATION |
|
5 |
|
1 |
|
16,7 % |
| Total |
36 |
|
To illustrate the hot spots identification
based on the pattern language, we will use one pattern of the GRN
pattern language, shown in Figure 3. It refers to the Trade the Resource
pattern. The four hot spots identified from this pattern correspond
to hot spots 13 to 16 of Table 2. Hot spot 13, called “Trade
the Resource”, provides the flexibility to make optional
the application of this pattern, because the pattern language
can also be used for rental or maintenance applications, and
so it may be desired not to apply this pattern. This is a PATTERN
OPTION hot spot, as the whole pattern is optional. It was identified
during step 1 of the process of Figure 1. Analyzing the pattern
language graph (see Figure 2), we notice that there are paths
that do not include the Trade the Resource pattern, which implies
that this pattern is optional. Also, observing the pattern context
(see item 6.1 of Figure 3), we notice that applications that
do not deal with resource trade do not fit in the proper context
for the pattern usage and, thus, should not use it.
Hot spots
14 to 16 were found during step 2 of the process shown in section
4. Hot spot 14, called “Source-party existence”, gives
small organizations the possibility of having a simpler system,
in which branches or departments are not considered. This hot spot
was identified observing the “participants” section
of the pattern (see item 6.5 of Figure 3: notice that “Source-party” is
an optional participant of this pattern). It is a PARTIC OPTION hot
spot, as its purpose is to make the sourceparty
participant optional. Hot spot 15 (“Destination-party existence”)
is similar to number 14 and was identified in the same section.

Figure 3: Example of a pattern of the GRN pattern language
Hot spot 16 (“Traded quantity entry”) concerns the inclusion
of a new attribute in the trade due to the previous use of another
pattern of the language and, so, is a PROPAGATION hot spot. The knowledge
about the propagation caused by the application of certain patterns
is embedded in the pattern language, as exemplified by the participant “Resource
Trade” (see section 6.5 of
Figure 3). The pattern language states that an attribute quantity
is included in this class when the Measurable Resource sub-pattern
has been applied earlier.
Another interesting result of the case study
was the identification of four new hot spots during step 4 of the
process proposed in section 4. For example, hot spot 12 of Table
2 was not identified from the pattern language, but found through
inspection of similar hot spots in the table. An analysis of the
table was done to check the propagation effect of applying the Quantify
the Resource pattern.
This pattern has four alternative solutions, presented as sub-patterns.
One of them, the Measurable Resource sub-pattern, is used when the
resource is dealt with in
quantities, so the quantity attribute needs to be entered in all
resource transactions. Thus, as we have seven possible transactions
in the pattern language, we expected
to have seven hot spots concerning this feature. However, we found
only four. The missing ones were for patterns 5, 9 and 10. Making
a deeper domain analysis, we concluded that this feature is not desired
for maintenance systems
(patterns 9 and 10), because it is very rare to have resources to
be maintained in quantities (they
are usually unique). So only one new hot spot was added (number 12),
as it makes sense to reserve more than one copy of a resource. It
had been forgotten during the
pattern language writing and, afterwards, the pattern language was
fixed to include this requirement.
Hot spot 36 of Table 2 is another example of a hot spot
found during step 4 by
analyzing class attributes that need to be computed. There are several
different ways
of computing the fine that customers need to pay when a transaction
is paid after
its due date. Examples are fixed, daily, weekly or monthly fees,
or a percentage of
the total due value. Besides the fine, interests may optionally be
charged. Hot spots
8 and 35 were also found during the fourth step of the process. It
was not possible
to identify hot spots during step 5 using the GRN pattern language
because GRN
refers to analysis patterns and is not concerned with design and
implementation
issues. We have decided not to include hot spots of this category
in a first version
of the framework, but will consider this possibility in its future
versions.
Design of the GREN hot spots
The GREN framework hot spot 2 – Resource Quantification (see
Table 2) was implemented using the Strategy design pattern [Gamma
et al., 1995]. Figure 4 shows part of the GREN class hierarchy, where
it can be observed the use of a strategy object (QuantificationStrategy
of Figure 4). This strategy object is responsible for the resource
quantification issues, allowing the framework to implement the four
different solutions required by the pattern. So, for example, when
the method isAvailable is invoked by a Resource object (this method
returns a boolean to denote if the
resource is available for the transaction), it is delegated to the
corresponding strategy
object, which knows exactly how to determine the resource availability.
For
example, if the quantification strategy is an InstantiableResource,
then it has to find
at least one available instance, but if it is a MeasurableResource,
then its quantity
in stock needs to be checked.
Another example of a GREN hot spot design
and implementation is hot spot 9 – Reserve the Resource, now
illustrating the PATTERN OPTION type. It uses the
class variable hasReservation in the ResourceRental class to indicate
whether or not the Reserve the Resource pattern was used. As can be
in seen in Figure 3, this
pattern is optional, as there are arrows indicating that other patterns
can be applied
after pattern 4, so skipping it. This class variable is set to a
boolean value during
GREN instantiation for a specific application. If it is set to true,
then pattern 5
was applied. As there is a relationship between a class of pattern
4 to a class of
pattern 5, it is necessary to override some methods that deal with
this relationship.
Otherwise, pattern 5 was not applied, so nothing else has to be done.

Figure 4: Example of some GREN classes
7 CONCLUDING REMARKS
It is rather intuitive that splitting the application
domain in several patterns implies
in the elicitation of many hot spots. This makes the system composed
of smaller parts, which need to be joined to make up the specific
application. This fact was confirmed during the case study, where
we have observed
many
hot spots identified from the pattern language graph, which means
that optional parts of the system are
encapsulated in patterns.
The pattern language example used in
this paper had only analysis patterns,
so the hot spots found using it were basically concerned with
the analysis phase
of the software development. Pattern languages that comprise
patterns in several
abstraction levels, for example, architectural, analysis, and
design patterns, can lead to the identification
of other types of hot spots.
The pattern language construction involves an analysis of
the application domain
and having practical experience in the development of applications
for this domain.
In our case the first author had more than ten years of practice
that allowed the development
of the pattern language. During the framework usage in the
development
of specific applications and because of the application domain
evolution, new hot
spots may be necessary. In this case, the pattern language
must also be updated,
including new patterns or changing existing ones.
The strategy proposed in this paper offers a new alternative
to find framework
hot spots. The pattern language embodies the domain knowledge
and lends itself
to hot spots elicitation. As already mentioned in the introduction,
our approach
is directed to the ultimate goal of easing framework reuse
and continues using the
pattern language in the framework design, implementation
and instantiation.
REFERENCES
[Aarsten et al., 2000] Aarsten, A., Brugali,
D., and Menga, G. (2000). "A CIM Framework and Pattern Language",
pages 21–42. Domain-Specific
Application Frameworks:
Frameworks Experience by Industry, M. Fayad, R. Johnson.
John Willey and Sons.
[Boyd, 1998] Boyd, L. (1998). Business Patterns
of Association Objects, pages 395– 408. Addison-Wesley.
[Braga
et al., 1999] Braga, R. T. V., Germano, F. S. R., and Masiero,
P. C. (1999).
"A pattern language for business resource management". In
6th Pattern Languages of Programs Conference (PLoP’99),
Monticello – IL,
USA.
[Braga and Masiero, 2002a] Braga,
R. T. V. and Masiero, P. C. (2002a). "GRENWizard:
a tool to instantiate the GREN framework". In Proceedings
of the Tools
Session of the 16th Simposio Brasileiro de Engenharia de
Software (SBES 2002),
pages 408–413, Gramado-RS.
[Braga and Masiero, 2002b] Braga, R. T. V. and Masiero,
P. C. (2002b). "A process
for framework construction based on a pattern language".
In Proceedings of
the 26th Annual International Computer Software and Applications
Conference(COMPSAC), pages 615–620, IEEE Computer Society, Oxford-England.
[Braga and Masiero, 2002c] Braga, R. T. V. and Masiero,
P. C. (2002c). "The role
of pattern languages in the instantiation of object-oriented
frameworks". Lecture
Notes on Computer Science, 2426-Advances in Object-Oriented
Information
Systems pages 122–131.
[Braga and Masiero, 2003] Braga, R. T. V. and Masiero, P. C. (2003).
"Building a wizard for framework instantiation based on a pattern language".
Lecture Notes on Computer Science - 2817-Object-Oriented Information Systems, 2003, pages 95-106.
[Brown and Whitenack, 1996] Brown, K. and Whitenack,
B. G. (1996). "Crossing Chasms: A Pattern language for Object-RDBMS
Integration",
The Static Patterns, pages 227–238. Addison-Wesley. in J. Vlissides
and J. Coplien
and N. Kerth (eds.), Pattern Languages of Program Design 2.
[Brugali and Menga, 1999] Brugali, D. and Menga, G.
(1999). "Frameworks and
pattern languages: an intriguing relationship". ACM Computing
Surveys,
32(1):2– 7.
[Brugali et al., 2000] Brugali, D., Menga, G., and Aarsten, A. (2000).
A Case Study
for Flexible Manufacuring Systems, pages 85–99. Domain-Specific
Application
Frameworks: Frameworks Experience by Industry, M. Fayad, R.
Johnson .John Willey and Sons.
[Coad et al., 1997] Coad, P., North, D., and Mayfield,
M. (1997). "Object Models:
Strategies, Patterns and Applications". Yourdon Press, 2nd edition.
[Coplien,
1998] Coplien, J. O. (1998). "Software Design Patterns: Common Questions
and Answers", pages 311–320. Cambridge University Press.
in L. Rising - The
Patterns Handbook: Techniques, Strategies, and Applications.
[Fayad
and Schmidt, 1997] Fayad, M. and Schmidt, D. C. (1997). "Object-oriented
application frameworks". Communications of the ACM, 40(10).
[Fontoura
et al., 2001] Fontoura, M., Pree, W., and Rumpe, B. (2001). The
UML Profile for Framework Architectures. Addison-Wesley.
[Fowler, 1997]
Fowler, M. (1997). Analysis Patterns. Addison-Wesley.
[Gamma et al.,
1995] Gamma, E., Helm, R., Johnson, R., and Vlissides, J. (1995).
Design Patterns: Elements of Reusable Object-Oriented Software.
Addison Wesley.
[Griss et al., 1998] Griss, M. L., Favaro, J., and d’Alessandro,
M. (1998). "Integrating
feature modeling with the RSEB". In Fifth International Conference
on Software
Reuse, pages 78–85, IEEE Computer Society, Los Alamitos, CA,
USA.
[J. Bosch and Fayad, 1999] J. Bosch, P. Molin, M. M. P. B. and
Fayad, M. (1999).
"Framework problem and experiences", pages 55–82. Building
Application Frameworks:
Object-Oriented Foundations of Framework Design, M. Fayad, R.
Johnson, D. Schmidt. John Willey and Sons.
[Johnson and Foote, 1988]
Johnson, R. and Foote, B. (1988). "Designing reusable
classes". Journal of Object Oriented Programming, 1(2):22–35.
[Johnson, 1992] Johnson, R. E. (1992). "Documenting frameworks using
patterns".
In OOPSLA ’92, pages 63–76.
[Johnson, 1996] Johnson, R. E. (1996). "Transactions and Accounts",
pages 239–249.
Addison-Wesley. in VLISSIDES, J.; COPLIEN, J.; KERTH, N. (eds.) Pattern
Languages of Program Design 2.
[Johnson and Woolf, 1998] Johnson, R. E. and Woolf, B. (1998). "Type
Object", pages 47–65. Addison-Wesley. in Martin, R.C.;
Riehle, D.; Buschmann, F. Pattern Languages of Program Design
3.
[Meszaros, 1995] Meszaros,
G. (1995). "A Pattern Language for Improving the Capacity
of Reactive Systems", pages 575–591. Addison-Wesley. in
J. Coplien and D. Schmidt (eds.) - Pattern Languages of Program
Design.
[Pree,
1995] Pree, W. (1995). Design Patterns for Object-Oriented Software
Development.
Addison-Wesley.
[Pree, 1999] Pree, W. (1999). "Hot-spot-driven Development",
pages 379–393. Building
Application Frameworks: Object-Oriented Foundations of Framework
Design, M. Fayad, R. Johnson, D. Schmidt. John Willey and
Sons.
[Roberts and Johnson, 1998] Roberts, D. and Johnson, R. (1998).
"Evolving Frameworks: A Pattern Language for Developing Object-Oriented
Frameworks", pages 471–486. Pattern Languages of Program
Design 3, Martin, R.C., Riehle, D. , Buschmann, F. – Addison-Wesley.
[Schmid, 1997] Schmid, H. A. (1997). "Systematic framework design
by generalization". Communications of the ACM, 40(10):48–51.
[Schmid, 1999] Schmid, H. A. (1999). "Framework Design by Systematic
Generalization", pages 353–378. Building Application
Frameworks: Object-Oriented Foundations of Framework Design, M. Fayad, R. Johnson,
D. Schmidt, –John
Willey and Sons.
[Svahnberg et al., 2001] Svahnberg, M., Gurp, J. V., and Bosch,
J. (2001). "On the notion of variability in software product lines".
In Proceedings
of the Working IEEE/IFIP Conference on Software Architecture (WICSA’01),
pages 45–54, Amsterdam, The Netherlands.
About the authors

|
 |
Rosana T. Vaccare Braga is
a professor at ICMC – University of São Paulo – Brazil,
where she had also had her Master’s degree in 1998. She has
been working with business systems development for the last fifteen
years. Her research activity is in Software Engineering (Frameworks,
Pattern Languages, Reengineering, and Reverse Engineering) and
Information Systems. Her financial support for this paper is from
FAPESP Process n. 98/13588-4. She can be reached at rtvb@icmc.usp.br. |

|
|
Paulo C. Masiero received
his D.Sc. degree from the University of São Paulo, São
Paulo. He is currently a Full-Professor in the Computer Science
Departament of the Institute of Mathematics and Computing Sciences/USP,
in São Carlos, Brazil, where he has been the Dean. His research
activities are in Software Engineering (software reuse, object
oriented design, frameworks, and reverser engineering) and applications
of Information Technology. He can be reached at masiero@icmc.usp.br. |
Cite this article as follows: Rosana T. Vaccare Braga, Paulo C. Masiero:
"Finding Frameworks Hot Spots in Pattern Languages", in Journal
of Object Technology,
vol. 3, no. 1, January-February 2004, pp. 123-142. http://www.jot.fm/issues/issue_2004_01/article2
|