25.07.2013 Views

"UMM Variablity and Automation of Variant ... - UniFrame - IUPUI

"UMM Variablity and Automation of Variant ... - UniFrame - IUPUI

"UMM Variablity and Automation of Variant ... - UniFrame - IUPUI

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

UML VARIABILITY AND AUTOMATION OF VARIANT MODELS<br />

A Thesis<br />

Submitted to the Faculty<br />

<strong>of</strong><br />

Purdue University<br />

by<br />

Padmavathi Kambhampati<br />

In Partial Fulfillment <strong>of</strong> the<br />

Requirements for the Degree<br />

<strong>of</strong><br />

Master <strong>of</strong> Science<br />

December 2004


To Amma, Nannagaru, Tammudu, Sarma <strong>and</strong> Anish<br />

ii


ACKNOWLEDGEMENTS<br />

I would like to express my sincere gratitude to Dr. Rajeev R. Raje, my advisor,<br />

for his extensive encouragement <strong>and</strong> support through the course <strong>of</strong> my project. He gave<br />

me great flexibility, underst<strong>and</strong>ing my family needs <strong>and</strong> helped me a lot until the<br />

completion <strong>of</strong> the project.<br />

I would like to express my sincere <strong>and</strong> special thanks to Dr. Andrew Olson <strong>and</strong><br />

Dr. Xukai Zou for being on my advisory committee.<br />

I would like to thank my beloved brother, Kamesh who helped me extensively in<br />

model selection <strong>and</strong> development. His invaluable support at every stage <strong>of</strong> my thesis is<br />

never forgetful.<br />

I would like to thank my husb<strong>and</strong> Sarma <strong>and</strong> my beloved son Anish for<br />

supporting me during my stay at <strong>IUPUI</strong>.<br />

This project was supported by the U.S. Department <strong>of</strong> Defense <strong>and</strong> the U.S.<br />

Office <strong>of</strong> Naval Research under award number N00014-01-1-0746.<br />

iii


TABLE OF CONTENTS<br />

Page<br />

LIST OF FIGURES ........................................................................................................... vi<br />

ABSTRACT.....................................................................................................................viii<br />

1. INTRODUCTION .......................................................................................................... 1<br />

1.1. Problem Definition <strong>and</strong> Motivation......................................................................... 1<br />

1.2 Objectives ................................................................................................................. 2<br />

1.3 Contributions <strong>of</strong> the Thesis....................................................................................... 3<br />

1.4 Thesis Organization .................................................................................................. 4<br />

2. BACKGROUND AND RELATED WORK .................................................................. 5<br />

2.1 Feature Model Extensions in UML........................................................................... 5<br />

2.2 Variation Points <strong>and</strong> <strong>Variant</strong>s ................................................................................... 7<br />

2.3 Generic Modeling using UML Variability ............................................................... 9<br />

2.4 Extending UML for Modeling Variability.............................................................. 12<br />

2.5 UML Variability – Archetype Patterns................................................................... 15<br />

2.6 How Archetype Patterns suit UML Variability ...................................................... 20<br />

3. DESIGN TOOLS.......................................................................................................... 22<br />

3.1 Generic Modeling Environment 4 (GME 4)........................................................... 22<br />

3.2 Poseidon for UML .................................................................................................. 30<br />

3.2.1 Poseidon for UML - St<strong>and</strong>ard Edition 2.6 (E.Version) ................................... 36<br />

3.3. ArcStyler <strong>and</strong> MDA............................................................................................... 41<br />

3.3.1 Model Driven Architecture.............................................................................. 41<br />

3.3.2 ArcStyler.......................................................................................................... 45<br />

3.3.3 ArcStyler Community Architect Edition 4.0 ................................................... 46<br />

4. EXPERIMENTAL VERIFICATION OF THE TOOLS FOR UML VARIABILITY.60<br />

4.1 Case Study Introduction - Loan Origination System (LOS)................................... 60<br />

4.2 Case Study Part I - Generic Modeling Environment (GME 4)............................... 64<br />

4.3 Case Study Part II - Poseidon St<strong>and</strong>ard Edition 2.6 ............................................... 65<br />

4.4 Case Study Part III - ArcStyler Architect Edition 4.0 ............................................ 70<br />

iv


Page<br />

4.5 Case Study Part IV - Archetypal Model <strong>of</strong> LOS in ArcStyler................................ 74<br />

5. FEASIBLE APPROACHES OF AUTOMATING VARIANTS ................................. 98<br />

5.1 Algorithm Approach ............................................................................................... 98<br />

5.2 Application Model for Developing <strong>Variant</strong> Models............................................. 103<br />

6. CONCLUSIONS AND FUTURE WORK ................................................................. 116<br />

6.1 Conclusions........................................................................................................... 116<br />

6.2. Future Work......................................................................................................... 118<br />

APPENDICES<br />

A.1. GME 4 Features .................................................................................................. 120<br />

A.2. Poseidon for UML Features................................................................................ 126<br />

A.3. ArcStyler Features............................................................................................... 133<br />

A.4. Source Code <strong>of</strong> the Interface for the Figure 5.1.................................................. 140<br />

A.5. Source Code <strong>of</strong> the Generated XML File for the Figure 5.1 .............................. 155<br />

A.6. XML File <strong>of</strong> the <strong>Variant</strong> Model-1 for the Figure 5.6.......................................... 160<br />

A.7. XML File <strong>of</strong> the <strong>Variant</strong> Model-2 for the Figure 5.7.......................................... 162<br />

A.8. XML File <strong>of</strong> the <strong>Variant</strong> Model-3 for the Figure 5.8.......................................... 164<br />

A.9. Complete Listing <strong>of</strong> the XMI File for the Figure 4.1.......................................... 166<br />

LIST OF REFERENCES……………………………………………………………….169<br />

v


LIST OF FIGURES<br />

Figure Page<br />

Figure 2.1 Sample feature model using UML from Clauss [2] .......................................... 6<br />

Figure 2.2 Sample usage <strong>of</strong> variation point <strong>and</strong> optional elements from Clauss [2].......... 8<br />

Figure 2.3 Example <strong>of</strong> multiple variation points from Clauss [2] .................................... 10<br />

Figure 2.4 Sample data model in UML with variability from Clauss [4]......................... 11<br />

Figure 2.5 Developing system families with Domain Engineering [5] ............................ 13<br />

Figure 2.6 Extensibility mechanisms in UML metamodel (OMG, 1999, pp. 2-67) [5] ... 14<br />

Figure 2.7 Archetype pattern library <strong>and</strong> its archetype patterns....................................... 16<br />

Figure 2.8 Archetype Variation ........................................................................................ 17<br />

Figure 2.9 Archetype pattern variation ............................................................................. 18<br />

Figure 2.10 Product <strong>and</strong> its pleomorphs ........................................................................... 19<br />

Figure 3.1 GME feature metamodel ................................................................................. 26<br />

Figure 3.2 GME 4 feature model with multiplicities using connections-1....................... 27<br />

Figure 3.3 GME 4 feature model with multiplicities using connections-2....................... 27<br />

Figure 3.4 Poseidon for UML in Community Edition 2.6 [11] ........................................ 30<br />

Figure 3.5 Pr<strong>of</strong>essional Edition 2.6 Class diagram in Poseidon for UML [12]................ 32<br />

Figure 3.6 Pr<strong>of</strong>essional Edition 2.6 Class properties in Poseidon for UML [12]............. 33<br />

Figure 3.7 Pr<strong>of</strong>essional Edition 2.6 Java code generation in Poseidon for UML [12]..... 34<br />

Figure 3.8 St<strong>and</strong>ard Panes in Poseidon for UML [13]...................................................... 37<br />

Figure 3.9 Rapid buttons around a class in Poseidon for UML [13] ................................ 39<br />

Figure 3.10 Autocritiquing in Poseidon for UML [13]..................................................... 39<br />

Figure 3.11 Import mechanism in Poseidon for UML [13].............................................. 40<br />

Figure 3.12 Model Driven Architecture Framework [14] ................................................ 43<br />

Figure 3.13 Transformations in MDA [14]....................................................................... 44<br />

Figure 3.14 ArcStyler Overview [16] ............................................................................... 48<br />

Figure 3.15 Full Life Cycle support <strong>of</strong> Unified Process in ArcStyler [16]....................... 49<br />

Figure 3.16 ArcStyler Architecture in detail [16]............................................................. 50<br />

Figure 3.17 Sequence diagram in ArcStyler [18] ............................................................. 52<br />

Figure 3.18 Modeling Operation Exceptions [18] ............................................................ 53<br />

Figure 3.19 OCL Specification in ArcStyler [18]............................................................. 55<br />

Figure 3.20 ArcStyler 4.0 Community Architect Edition................................................. 56<br />

Figure 3.21 ArcStyler package specification dialog box.................................................. 57<br />

Figure 3.22 ArcStyler package diagram using Class diagram toolbar.............................. 58<br />

Figure 3.23 ArcStyler Class diagram................................................................................ 59<br />

Figure 4.1 Incomplete top level diagram <strong>of</strong> LOS from Poseidon (with watermark)........ 68<br />

Figure 4.2 Use-case Diagram <strong>of</strong> Loan Applicant ............................................................. 76<br />

Figure 4.3 Use-case Diagram <strong>of</strong> Loan Originator ............................................................ 77<br />

vi


Page<br />

Figure 4.4 Activity Diagram <strong>of</strong> Loan Origination System ............................................... 78<br />

Figure 4.5 Main package <strong>of</strong> Loan Origination System (LOS) from ArcStyler ................ 79<br />

Figure 4.6 Top-level diagram <strong>of</strong> Loan Origination System.............................................. 80<br />

Figure 4.7 Party, Loan Applicant, Loan originator <strong>and</strong> Company Archetype Patterns.... 81<br />

Figure 4.8 Party Relationship Archetype Pattern ............................................................. 82<br />

Figure 4.9 Party Relationship-Product Relationship Archetype Pattern .......................... 83<br />

Figure 4.10 Product Archetype Pattern............................................................................. 84<br />

Figure 4.11 Product:Loans <strong>and</strong> its Pleomorphs Archetype Patterns................................. 85<br />

Figure 4.12 Order Archetype Pattern <strong>of</strong> LOS................................................................... 86<br />

Figure 4.13 Customer Relationship Management (CRM) Archetype Pattern <strong>of</strong> LOS..... 87<br />

Figure 4.14 CRM Archetype Pattern for a specific case <strong>of</strong> Auto Loan............................ 88<br />

Figure 4.15 CRM Archetype Pattern for a specific case <strong>of</strong> Credit card Loan.................. 89<br />

Figure 4.16 Instantiation <strong>of</strong> Archetype Patterns through parameterized collaboration.... 90<br />

Figure 4.17 Instantiation <strong>of</strong> Archetype Patterns through parameterized collaboration.... 91<br />

Figure 5.1 Custom Application Model for Developing <strong>Variant</strong>s ................................... 108<br />

Figure 5.2 Action <strong>of</strong> the CLEAR push button ................................................................ 109<br />

Figure 5.3 PAGE RELOAD push button action............................................................. 110<br />

Figure 5.5 Error Message display in the model .............................................................. 112<br />

Figure 5.6 A variant model-1 <strong>of</strong> the application............................................................. 113<br />

Figure 5.7 A variant model-2 <strong>of</strong> the application............................................................. 114<br />

Figure 5.8 A variant model-3 <strong>of</strong> the application............................................................. 115<br />

vii


ABSTRACT<br />

Kambhampati, Padmavathi, M.S., Purdue University, December 2004. UML Variability<br />

<strong>and</strong> <strong>Automation</strong> <strong>of</strong> <strong>Variant</strong> Models. Major Pr<strong>of</strong>essor: Rajeev Raje.<br />

Unified Modeling Language TM (UML TM ) [1] is the well-known language for designing<br />

s<strong>of</strong>tware systems. Although, UML has the capability <strong>of</strong> developing large scale product<br />

domains, it lacks notation <strong>and</strong> semantics for the development <strong>of</strong> s<strong>of</strong>tware families <strong>of</strong><br />

related product domains. In other words, describing variability in UML is very important<br />

in developing product domains <strong>of</strong> related families but it is not well supported. It also<br />

reduces time <strong>and</strong> cost <strong>of</strong> application development, <strong>and</strong> supports reusability. The current<br />

Thesis deals with the concepts <strong>of</strong> variability in UML, followed by the comparison <strong>of</strong> the<br />

modeling tools Generic Modeling Environment 4 (GME 4), Poseidon, <strong>and</strong> ArcStyler in<br />

developing an archetypal model with variabilities <strong>and</strong> extracting variants. A case study<br />

was done using ArcStyler, <strong>and</strong> a metamodel with variabilities is developed using<br />

archetype patterns. The results indicate that, so far, no tools experimented with here<br />

provide automation <strong>of</strong> variant models from the archetypal metamodel. So feasible<br />

approaches were proposed to produce variants automatically from the variability model.<br />

viii


1. INTRODUCTION<br />

1.1. Problem Definition <strong>and</strong> Motivation<br />

UML is the Object Management Group TM (OMG TM ) [1] st<strong>and</strong>ardized<br />

specification language for the design <strong>of</strong> s<strong>of</strong>tware systems. UML can be used for business<br />

modeling to develop use-case diagrams, activity diagrams, <strong>and</strong> in the area <strong>of</strong> application<br />

modeling to develop class diagrams, component diagrams, object diagrams <strong>and</strong><br />

deployment diagrams. UML helps us to specify, model, visualize, <strong>and</strong> develop problem<br />

domains <strong>and</strong> provides documentation <strong>of</strong> the system.<br />

Although it can be used to design s<strong>of</strong>tware systems, the basic UML lacks proper<br />

notation <strong>and</strong> semantics for developing families <strong>of</strong> related s<strong>of</strong>tware systems. That point<br />

motivated searching for concepts for expressing variability in UML. Variability is<br />

essential in s<strong>of</strong>tware design to develop large scale systems <strong>of</strong> the similar domains. As a<br />

next step, automatically extracting variant models out <strong>of</strong> the domain model with<br />

variations is also studied. So tools like GME 4, Poseidon for UML <strong>and</strong> ArcStyler are<br />

experimented with to obtain a feasible solution to these two problems. None <strong>of</strong> these<br />

tools is successful in giving the needed output for the second step. So, this Thesis<br />

provides possible options <strong>of</strong> producing variants from the variability model automatically.<br />

In the first place, building a model with variabilities is a difficult issue because<br />

variability design is doing the design for related systems <strong>of</strong> the same family in a single<br />

1


generic system. Although many approaches have been proposed, so far no approach was<br />

suitable to fit into typical UML modeling. Since UML is st<strong>and</strong>ardized as the basic<br />

language to be employed in design, expressing variability in UML design is important. A<br />

UML variability model would include many models within itself, which can be used<br />

according to the need <strong>and</strong> requirements. A variability model represents a generic model<br />

from which other models <strong>of</strong> a similar kind can be derived. For example, if a variable<br />

domain model <strong>of</strong> a loan system is built, it may contain loan models for credit cards,<br />

mortgages, auto financing, student loans, etc. So, from the generic loan model, we could<br />

at least derive four types <strong>of</strong> variant models. UML variability also has certain other<br />

advantages. The design, development <strong>and</strong> implementation costs can be reduced, each<br />

time the chance <strong>of</strong> producing an effective design increase, automatic updating <strong>of</strong> the<br />

domain models, saves time <strong>and</strong> money, <strong>and</strong> variable domain model serves as a prototype<br />

for building much more complex models with variability. What is also needed in tool<br />

support is the ability to select variant models from the generic model.<br />

In summary, the formal definition <strong>of</strong> the problem statement that this Thesis<br />

considers is as follows: to find a notation mechanism to represent variability in UML <strong>and</strong><br />

tools for creating variable models <strong>and</strong> extracting variant models out <strong>of</strong> them.<br />

The main objectives <strong>of</strong> this thesis are:<br />

1.2 Objectives<br />

Determine notation consistent with UML for representing variabilities.<br />

Find <strong>and</strong> experiment with tools for constructing UML models with variabilities.<br />

2


Find <strong>and</strong> experiment with tools for extracting variant models from models with<br />

variabilities.<br />

Decide which tool is effective enough from all aspects to develop a variable model.<br />

Aspects checked in tools are:<br />

• Feature availability<br />

• GUI <strong>of</strong> the tool<br />

• Tool speed<br />

• Other advantages<br />

Compare features <strong>of</strong> the tools experimented with <strong>and</strong> produce the results in tabular<br />

format.<br />

Finally, decide on the tools that successfully create a variation point model <strong>and</strong><br />

generate automatically its variant models.<br />

If no tool is successful, then propose an approach to select a variant, given a set <strong>of</strong><br />

requirements, from the variation point model.<br />

The contributions achieved in this thesis are:<br />

1.3 Contributions <strong>of</strong> the Thesis<br />

Discovered that archetype patterns are an effective way to represent variability in<br />

UML <strong>and</strong> that they have tool support.<br />

Worked with the tools GME 4, Poseidon for UML, <strong>and</strong> ArcStyler, <strong>and</strong> developed a<br />

metamodel with variabilities using archetype patterns for a specific domain system<br />

using ArcStyler.<br />

3


Decided that the ArcStyler tool is effective enough from all aspects to develop a<br />

variable model.<br />

Aspects mentioned in the objectives are checked in the tools experimented with.<br />

The results <strong>of</strong> the tools compared are produced in tabular format.<br />

So, no tool considered provides the feature <strong>of</strong> automating variants from the variable<br />

model. Finally, suggested possible approaches to select a variant, given a set <strong>of</strong><br />

requirements, from the archetypal model.<br />

1.4 Thesis Organization<br />

The current thesis report is organized into 6 chapters. The first chapter<br />

introduction explains basically the problem definition <strong>and</strong> motivation, why the specified<br />

problem is important, the Thesis objectives <strong>and</strong> the contributions <strong>of</strong> the thesis. Chapter 2<br />

talks about the background <strong>and</strong> related work <strong>of</strong> the problem. Chapter 3 includes details<br />

about the various tools compared. Chapter 4 discusses the application <strong>of</strong> the tools for a<br />

case study. Chapter 5 describes the approaches for extracting variants from a variability<br />

model. Finally Chapter 6 briefly talks about the conclusions <strong>and</strong> future work related to<br />

the problem <strong>of</strong> the Thesis.<br />

4


2. BACKGROUND AND RELATED WORK<br />

In this chapter, background <strong>and</strong> related work with respect to the problem <strong>of</strong> UML<br />

variability <strong>and</strong> developing models with variabilities is discussed.<br />

2.1 Feature Model Extensions in UML<br />

Variability in UML can be expressed by incorporating feature model extensions<br />

in s<strong>of</strong>tware design. According to Matthias Clauss [2], feature model extensions are a way<br />

to include feature diagrams into UML. Four types <strong>of</strong> features with stereotypes<br />

«m<strong>and</strong>atory», «optional», «alternative» <strong>and</strong> «external» are proposed. Relationships like<br />

composition, generalization <strong>and</strong> dependency are included.<br />

Exclusive <strong>and</strong> non-exclusive features are distinguished by the constraint {xor}.<br />

Other constraints «requires», «mutex», <strong>and</strong> «extends» stereotypes are specified for<br />

dependencies. However, a transformation mechanism from the feature model to build the<br />

architecture <strong>of</strong> the system is not specified.<br />

5


Figure 2.1 Sample feature model using UML from Clauss [2]<br />

Figure 2.1 shows an example <strong>of</strong> an internet e-commerce domain <strong>and</strong> includes all<br />

basic <strong>and</strong> primary feature model extensions like «m<strong>and</strong>atory», «optional», «alternative»<br />

along with constraints imposed with dependencies like «requires», <strong>and</strong> «mutex». The<br />

relationships composition, generalization <strong>and</strong> dependency with the {xor} tagged<br />

constraint applied to non-exclusive features are shown.<br />

These feature model extension concepts can be applied to small feature models,<br />

but are not suitable for building complex feature metamodels [2]. There is no clear<br />

notation <strong>and</strong> semantics for the specification <strong>of</strong> attributes <strong>and</strong> operations. There is no<br />

proper straight UML tool that supports feature model extensions to show variability in<br />

6


UML (if the representation <strong>of</strong> a feature is by a special UML feature icon). However, if we<br />

want to enforce these feature extensions for small projects, it can be implemented with<br />

UML Class diagrams, which allows us to create characteristic feature classes with class<br />

objects as shown in Figure 2.1.<br />

2.2 Variation Points <strong>and</strong> <strong>Variant</strong>s<br />

Another approach proposed by [2] to represent feature models includes the<br />

concept <strong>of</strong> variation points <strong>and</strong> variants. Each variation point can have any number <strong>of</strong><br />

variants <strong>and</strong> the selection <strong>of</strong> the variant is determined by the parameters like binding time<br />

(development, installation <strong>and</strong> runtime) <strong>and</strong> multiplicity. Variation points are created by<br />

the stereotype «variationpoint» <strong>and</strong> its corresponding variants are created by the<br />

stereotype «variant». Variation points <strong>and</strong> variants are necessary in developing s<strong>of</strong>tware<br />

systems because they distinguish one system from the other in a family <strong>of</strong> related<br />

s<strong>of</strong>tware domains. A variation point is connected to its variants by the dependency<br />

constraints like «requires», «mutex», «evolution» replaces <strong>and</strong> «uses». Specification <strong>of</strong><br />

OCL constraints is not supported.<br />

7


Figure 2.2 Sample usage <strong>of</strong> variation point <strong>and</strong> optional elements from Clauss [2]<br />

Figure 2.2 shows how variation points <strong>and</strong> their corresponding variants are<br />

connected. It also depicts the usage <strong>of</strong> optional elements along with «requires», «mutex»,<br />

«evolution» replaces, <strong>and</strong> «uses» constraints among feature elements.<br />

Clauss provides no explicit notation to represent other features in the feature<br />

diagram. According to [2], the variation points <strong>and</strong> variants can be implemented by a<br />

UML class diagram with out attributes <strong>and</strong> operations. He allows the representations:<br />

generalization, composition or dependency to connect a variation point <strong>and</strong> a variant. An<br />

«optional» stereotype is present to declare optional model elements in the feature<br />

diagram.<br />

The weakness <strong>of</strong> this notation includes the fact that the only possible constraints<br />

that can be applied to variation points <strong>and</strong> variants are with the stereotypes «requires»,<br />

«mutex», «evolution» replaces, <strong>and</strong> «uses» in the form <strong>of</strong> dependencies. There is no<br />

8


support to specify constraints in OCL. There is no clear documentation available to<br />

establish a relationship between a feature node <strong>and</strong> a variation point (if the relationship is<br />

other than generalization, composition or dependency). If the relationship is not a<br />

generalization or composition, then for everything, dependency should be used. This<br />

concept causes confusion during the implementation <strong>of</strong> feature models. According to [2],<br />

these concepts are not sufficient to support large feature models.<br />

2.3 Generic Modeling using UML Variability<br />

Generic models are similar to normal UML models except they exhibit the feature<br />

<strong>of</strong> variability explicitly. Basically, generic models are used in the domain engineering<br />

area to develop system families [3]. The concept <strong>of</strong> variation points has its roots in the<br />

field <strong>of</strong> product family engineering [4].<br />

Every variation point can have any number <strong>of</strong> variants, but every variant should<br />

be connected to only one variation point. Variation point <strong>and</strong> variant are constructed<br />

with the stereotypes «variationPoint» <strong>and</strong> «variant». Because <strong>of</strong> UML limitations,<br />

«variationPoint» is applied to the model element that shows variability. Variation points<br />

can be applied on classes, components, packages, collaborations <strong>and</strong> associations. The<br />

«variationPoint» stereotype contains tagged values that determine binding time <strong>of</strong> the<br />

variants <strong>and</strong> the multiplicity <strong>of</strong> its variants. The question <strong>of</strong> which «variant» should be<br />

used is determined by the condition values specified in the variants.<br />

Interactions between variants <strong>and</strong> other model elements are represented by<br />

dependency constraints like «mutex» <strong>and</strong> «requires». Variation points <strong>and</strong> variants are<br />

connected by either generalization or dependency. Generic models may contain more<br />

9


than one variation point in their models. To distinguish one variation point from the<br />

other, a unique name is assigned to each variation point. Usage <strong>of</strong> multiple variation<br />

points <strong>and</strong> their variants are shown in the Figure 2.3.<br />

Figure 2.3 Example <strong>of</strong> multiple variation points from Clauss [2]<br />

In the Figure 2.3, sort is a template-based variation point with two variation<br />

points. VariationPoint 0 deals with different types <strong>of</strong> sorting techniques, like bubble_sort,<br />

quick_sort, <strong>and</strong> insert_sort, while the other variation point, variationPoint 1, deals with<br />

different data type sorting techniques like IntegerSort <strong>and</strong> StringSort. All variants are<br />

bound to the respective variation points through template bindings.<br />

A real world UML example shown in Figure 2.4 implementing the concepts <strong>of</strong><br />

variation points, variants, optional elements <strong>and</strong> other model elements is taken from [5].<br />

But these extension mechanisms need to be verified <strong>and</strong> some more research is to be<br />

done according to [3]. The example is shown below.<br />

10


Figure 2.4 Sample data model in UML with variability from Clauss [4]<br />

In Figure 2.4, PaymentInfo class is declared with the stereotype «variationPoint»,<br />

<strong>and</strong> its variants Billing_Data, CreditCard_Data <strong>and</strong> Delivery_Data are connected by<br />

generalization. Optional element Contract has a «requires» dependency relationship from<br />

PriceMethod «enumeration» class.<br />

The explained variation points <strong>and</strong> variants in developing generic models in UML<br />

concepts are supposed to integrate feature modeling with UML in practice from [3].<br />

11


2.4 Extending UML for Modeling Variability<br />

An approach was proposed in [6] to use light weight extension mechanisms in<br />

UML metamodeling that essentially would not violate actual UML semantics.<br />

Development <strong>of</strong> s<strong>of</strong>tware system families involves two principal aspects <strong>of</strong><br />

engineering, Domain Engineering <strong>and</strong> Application Engineering. Domain Engineering<br />

comprises domain analysis, domain design <strong>and</strong> domain implementation phases.<br />

Application Engineering can be treated as the implementation <strong>of</strong> the first principal aspect,<br />

Domain Engineering.<br />

Domain Engineering deals with the development <strong>of</strong> system families for<br />

reusability. Application Engineering basically makes use <strong>of</strong> the assets <strong>and</strong> results<br />

obtained from Domain Engineering that enable one to produce systems with reusability.<br />

Variability can be achieved in domain engineering during the domain analysis phase, in<br />

which feature analysis methods like FODA [7] can be applied to target on the variable<br />

<strong>and</strong> common features <strong>of</strong> the domain. The two aspects’ interconnections are shown in the<br />

Figure 2.5.<br />

12


Figure 2.5 Developing system families with Domain Engineering [5]<br />

UML metamodeling extensions are proposed in [6] to exhibit variability in UML.<br />

Lightweight extension mechanisms such as stereotypes, constraints <strong>and</strong> tagged values are<br />

represented in the UML metamodel as the metamodel’s classes named Stereotype,<br />

13


Constraint <strong>and</strong> TaggedValue. These extension mechanisms are given diagrammatically in<br />

the Figure 2.6, taken from [6].<br />

The Stereotype class applies to a variable <strong>and</strong> the TaggedValue class applies to a<br />

feature. Every stereotype «variable» is associated with a TaggedValue «feature». This<br />

approach leads to much complexity in model building, is quite difficult to underst<strong>and</strong>,<br />

<strong>and</strong> is hard to construct without sophisticated tool support [6].<br />

Figure 2.6 Extensibility mechanisms in UML metamodel (OMG, 1999, pp. 2-67) [5]<br />

14


Integration <strong>of</strong> feature modeling constructs into UML <strong>and</strong> introduction <strong>of</strong> a<br />

separate UML pr<strong>of</strong>ile to build system families is the next possible step in this area [6].<br />

2.5 UML Variability – Archetype Patterns<br />

According to [8], Archetype comes from the Greek word “archetypo”, which<br />

means “original pattern”. The definition <strong>of</strong> archetype is as follows, “An archetype is a<br />

primordial thing that occurs consistently <strong>and</strong> is thought to be a universal concept or<br />

situation”. An archetype pattern is a collaboration between archetypes that occurs<br />

consistently in business environments <strong>and</strong> s<strong>of</strong>tware systems.<br />

Archetype patterns are supported by a specific UML pr<strong>of</strong>ile [8]. The most<br />

interesting feature <strong>of</strong> archetype patterns is they explicitly address the problem <strong>of</strong><br />

variability. Class is modeled by a stereotype called «archetype», package is modeled by<br />

the «archetype pattern» stereotype, «archetype pattern library» models collaboration<br />

package, «o» is for modeling optional elements <strong>and</strong> relationships, <strong>and</strong> the «pleomorph»<br />

stereotype for marking explicitly variation in the model.<br />

15


Figure 2.7 Archetype pattern library <strong>and</strong> its archetype patterns<br />

Archetypal concepts can be successfully implemented with the latest Model<br />

Driven Architecture tools like ArcStyler [8]. Existing UML pr<strong>of</strong>iles for archetype pattern<br />

modeling can be extended using ArcStyler. Likewise, archetype patterns can be<br />

incorporated directly or can be varied to suit problem domains. An example <strong>of</strong> an<br />

archetype pattern library <strong>and</strong> archetype patterns is given in Figure 2.7.<br />

In the Figure 2.7, money-management-systems is an archetype pattern library that<br />

is a collection <strong>of</strong> several archetype patterns, Banking, Education, Transport <strong>and</strong><br />

International aid (Intl.aid). Each <strong>of</strong> the archetype patterns possesses its own archetypes<br />

inside it. Some <strong>of</strong> the archetypes are Insurance, Schools, Rail, Road, <strong>and</strong> Loans &<br />

Investments. Archetype patterns exhibit three types <strong>of</strong> pattern variation. They are:<br />

Archetype variation: Archetypes exhibit different features, like different attributes,<br />

operations <strong>and</strong> constraints to fit themselves into different environments.<br />

16


Archetype pattern variation: Optional features in archetype patterns can be omitted to<br />

suit different business domains.<br />

Pleomorphism: This is a special type <strong>of</strong> archetype pattern variation in which an<br />

archetype pattern may take different structures to adapt itself in s<strong>of</strong>tware<br />

environments. The archetype pattern variation can be addition <strong>of</strong> new archetypes,<br />

features, <strong>and</strong> relationships in the existing pattern.<br />

Archetype variation deals with two issues: new features may be added in the<br />

archetypes, optional features may be deleted. An example <strong>of</strong> archetype variation is given<br />

in Figure 2.8.<br />

Figure 2.8 Archetype Variation<br />

In Figure 2.8, Ticket class is modeled with the stereotype called «archetype».<br />

Issue-date, Name, Party-signature, Transferable, Price are all attributes, in which<br />

Transferable <strong>and</strong> Price are optional attributes. Getdetails() <strong>and</strong> Getsignature() are<br />

operations, <strong>and</strong> Getsignature() is an optional operation. So the user has the flexibility <strong>of</strong><br />

deleting optional features like optional attributes <strong>and</strong> optional methods when creating an<br />

17


archetype <strong>of</strong> the same name in different business domains. We can also add new features<br />

in the archetypes. Archetype variation can be implemented by the tools like ArcStyler.<br />

A second type <strong>of</strong> variation exhibited by archetypes is archetype pattern variation.<br />

Archetype pattern variation deals with variations in archetype patterns, like optional<br />

features may be deleted from the pattern if not needed. Example: optional relationships.<br />

An example <strong>of</strong> archetype pattern variation at the archetype pattern library level is<br />

given in the Figure 2.9.<br />

Figure 2.9 Archetype pattern variation<br />

18


In the Figure 2.9 Management systems is an archetype pattern library <strong>and</strong><br />

Managemnentsystems-I, Managementsystems-II, Managementsystems-III, <strong>and</strong><br />

Managementsystems-IIII are variants <strong>of</strong> the archetype pattern library, Management<br />

systems. In the archetype pattern library, a stereotype called «o» is included to explicitly<br />

say that a particular archetype pattern is optional. So, they can be included or omitted<br />

depending upon need.<br />

In the example <strong>of</strong> Figure 2.9, different variants <strong>of</strong> the archetype pattern library,<br />

Managementsystems are shown. insurance_mgt <strong>and</strong> transport_mgt are optional archetype<br />

patterns while the others are m<strong>and</strong>atory by default.<br />

Pleomorphism is a kind <strong>of</strong> archetype pattern variation in which archetype patterns<br />

may change entirely according to the particular business context. <strong>Variant</strong>s <strong>of</strong> the variation<br />

point are connected by the UML realization relationship symbol with the stereotype<br />

«pleomorph». Pleomorphism can be applied only to an archetype pattern, which is a<br />

combination <strong>of</strong> archetypes.<br />

Figure 2.10 Product <strong>and</strong> its pleomorphs<br />

In the Figure 2.10, Product is an archetype pattern which is a variation point, <strong>and</strong><br />

its variants are Unique product <strong>and</strong> Identical product. Each variant is described by the<br />

stereotype «pleomorph» <strong>and</strong> is connected by the arrow pointing towards its variation<br />

19


point. Each variation point can possess any number <strong>of</strong> pleomorphs, i.e., any number <strong>of</strong><br />

child variants. In this example, Product’s pleomorphs, Identical product <strong>and</strong> Unique<br />

product, are types <strong>of</strong> Product <strong>and</strong> may additionally possess new archetypes <strong>and</strong> features,<br />

<strong>and</strong> optional features present in the original Product may not be present in its<br />

pleomorphs, while m<strong>and</strong>atory ones exist anyway.<br />

2.6 How Archetype Patterns suit UML Variability<br />

Archetype patterns directly address the problem <strong>of</strong> UML variability through the<br />

concept <strong>of</strong> pleomorphism. The variability is shown at the package level with the<br />

«archetype pattern» stereotype applied to the package. Expressing variability through<br />

archetype patterns is one <strong>of</strong> the possible ways <strong>of</strong> solving the Thesis problem. This<br />

approach is adopted here, because the concept is extended with the appropriate tool<br />

support. As the variability is expressed at a high level <strong>of</strong> abstraction, the user is not<br />

thrown into unnecessary confusion. Since the meaning <strong>of</strong> archetype means generic, so the<br />

generic model possesses variability from which several models <strong>of</strong> the same kind can be<br />

derived. Advantages <strong>of</strong> archetypes for UML variability are as follows:<br />

Archetypes are simple to use in the application models.<br />

Archetype patterns directly address the problem <strong>of</strong> variability through pleomorphism.<br />

The UML pr<strong>of</strong>ile for archetypal models is easy to underst<strong>and</strong>.<br />

Archetypes are optional by default with in the archetype pattern context, which gives<br />

the user much more flexibility in constructing variable models from the generic<br />

model.<br />

Archetype patterns for use in different domain applications are available.<br />

20


UML variability is expressed at the package level <strong>of</strong> the model, unlike at class level,<br />

which introduces much complexity.<br />

Archetype models are generic models, from which other models can be derived<br />

easily.<br />

Disadvantages <strong>of</strong> the other suggested approaches, Feature model extensions, Variation<br />

points <strong>and</strong> Generic Modeling include:<br />

Feature model extensions notation is incomplete for developing domain models,<br />

because it does not provide transformation mechanism to the system architecture.<br />

Although variation point mechanism explains variability at the class level, the<br />

constraint notation is not consistent with UML, for implementation.<br />

Concepts are hard to underst<strong>and</strong> <strong>and</strong> implement.<br />

Integration <strong>of</strong> UML modeling <strong>and</strong> feature modeling for variability so far cannot be<br />

achieved practically.<br />

Other disadvantages <strong>of</strong> feature modeling are clearly explained in [20].<br />

21


3. DESIGN TOOLS<br />

This chapter gives a detailed description <strong>of</strong> the various design modeling tools like<br />

GME 4, Poseidon, ArcStyler. These tools were used in searching for an effective <strong>and</strong><br />

feasible solution for constructing an archetypal model with variabilities.<br />

3.1 Generic Modeling Environment 4 (GME 4)<br />

The Generic Modeling Environment 4 (GME 4) is a configurable toolkit for<br />

creating domain-specific modeling environments. The configuration is accomplished<br />

through metamodels specifying the modeling paradigm (modeling language) <strong>of</strong> the<br />

application domain. The modeling paradigm defines the family <strong>of</strong> models that can be<br />

created using the resultant modeling environment [9]. Two concepts lie in the<br />

background <strong>of</strong> GME 4, one is Model Integrated Computing (MIC) <strong>and</strong> the other is<br />

Metamodeling.<br />

Model Integrated Computing addresses the problem <strong>of</strong> designing, creating <strong>and</strong><br />

developing information systems by providing domain-specific environments including<br />

domain model analysis <strong>and</strong> model-based program synthesis tools [10].<br />

Model integrated computing (MIC) is an effective <strong>and</strong> efficient method for<br />

developing, maintaining, <strong>and</strong> evolving large-scale, domain-specific s<strong>of</strong>tware applications<br />

for Computer-based systems (CBS). On a higher level, it is possible to use MIC to<br />

22


develop, maintain, <strong>and</strong> evolve the meta-level tools (metamodeling environments)<br />

themselves, by modeling the metamodeling environment (meta-metamodeling). The key<br />

idea in the Model Integrated Computing (MIC) framework is the consistent application <strong>of</strong><br />

a meta-level architecture.<br />

A metamodel is a formalized description <strong>of</strong> a particular modeling language, <strong>and</strong> is<br />

used to synthesize the modeling environment itself. Metamodels are models <strong>of</strong> a<br />

particular modeling environment. Metamodels contain descriptions <strong>of</strong> the entities,<br />

attributes, <strong>and</strong> relationships that are available in the target modeling environment. A<br />

metamodel specifies a domain modeling language which, in turn, is used to specify<br />

models <strong>of</strong> artifacts in the particular domain. UML class diagrams do allow the<br />

specification <strong>of</strong> some basic rules, for example, the multiplicity <strong>of</strong> associations. For more<br />

complex semantic specifications, however, UML includes the Object Constraint<br />

Language (OCL), a textual predicate logic language. MIC adopts OCL as well;<br />

metamodels consist <strong>of</strong> UML class diagrams <strong>and</strong> OCL constraints.<br />

The Generic Modeling Environment, GME 4 is a Windows-based, configurable,<br />

domain-specific, model-integrated program synthesis tool. The GME is configurable,<br />

which means it can be “programmed” to work with vastly different domains. Another<br />

important feature is that GME’s are generated from formal modeling environment<br />

specifications. This allows a particular GME to be efficiently designed <strong>and</strong> implemented,<br />

<strong>and</strong> ensures that it can be quickly <strong>and</strong> safely evolved as modeling requirements change.<br />

The GME includes several other relevant features:<br />

23


It is used primarily for model-building. The models take the form <strong>of</strong> graphical, multi-<br />

aspect, attributed entity-relationship diagrams. The semantics <strong>of</strong> a model is not the<br />

concern <strong>of</strong> GME – that is determined later during the model interpretation process.<br />

It supports various techniques for building large-scale, complex models including the<br />

techniques like hierarchy, multiple aspects, sets, references, <strong>and</strong> explicit constraints.<br />

It contains integrated model interpreters that perform translation <strong>and</strong> analysis <strong>of</strong><br />

models currently under development.<br />

GME is an environment where model-integrated computing (MIC) is achieved<br />

through model-integrated program synthesis (MIPS). A MIPS environment operates<br />

according to a domain-specific set <strong>of</strong> requirements that describe how any system in the<br />

domain can be modeled. A MIPS environment consists <strong>of</strong> three main components:<br />

(1) A domain-aware model builder used to create <strong>and</strong> modify models <strong>of</strong> domain-specific<br />

systems,<br />

(2) The models themselves, <strong>and</strong><br />

(3) One or more model interpreters used to extract <strong>and</strong> translate semantic knowledge<br />

from the models. GME implements Multigraph Architecture (MGA), a toolset for<br />

creating domain-specific modeling environments like MIPS.<br />

The process begins by formulating the domain’s modeling paradigm. The<br />

modeling paradigm contains all the syntactic, semantic, <strong>and</strong> presentation information<br />

regarding the domain - concepts used to construct models, what relationships may exist<br />

among those concepts, how the concepts may be organized <strong>and</strong> viewed by the modeler,<br />

<strong>and</strong> rules governing the construction <strong>of</strong> models. The modeling paradigm defines the<br />

family <strong>of</strong> models that can be created using the resultant MIPS environment. Metamodels<br />

24


are models <strong>of</strong> a particular modeling environment. Metamodels contain descriptions <strong>of</strong> the<br />

entities, attributes, relationships that are available in the target modeling environment.<br />

Once GME is associated with a particular application domain, the modeling<br />

paradigm is determined <strong>and</strong> the tool environment is configured accordingly. Once a<br />

metamodel has been created, it is used to automatically generate a domain-specific GME.<br />

The GME is then made available to the users who use it to build domain-specific models.<br />

Once the modeling paradigm is established, the GME allows consistent valid models to<br />

be built, <strong>and</strong> then interpreter writing begins. Interpreters are model translators designed to<br />

work with all models created using the domain-specific GME for which they were<br />

designed. The purpose <strong>of</strong> the GME is to create <strong>and</strong> manipulate these models. GME<br />

provides an interface (BON) for the users in writing interpreters.<br />

The working environment <strong>of</strong> GME with metamodel <strong>and</strong> its model are given in the<br />

form <strong>of</strong> snapshots below.<br />

25


Figure 3.1 GME feature metamodel<br />

26


Figure 3.2 GME 4 feature model with multiplicities using connections-1<br />

Figure 3.3 GME 4 feature model with multiplicities using connections-2<br />

27


A GME model typically has parts - other objects contained within the model.<br />

Parts come in these varieties:<br />

Atoms (or atomic parts) - do not have internal structure.<br />

Other models- model containing other models, atoms, connections.<br />

References (which can be thought <strong>of</strong> as pointers to other objects).<br />

Sets (which can contain other parts like atoms, connections).<br />

Connections (connecting any two parts in a model).<br />

The GME interaction is through two user interfaces: Model Browser, <strong>and</strong><br />

Graphical Editor. Models are stored in a database <strong>and</strong> are organized into projects. A<br />

project is a group <strong>of</strong> models created using a particular modeling paradigm. A project is<br />

further organized into folders. GME also possess Part Browser, where user can drag <strong>and</strong><br />

place objects in the model browser <strong>and</strong> make changes to it, <strong>and</strong> Attribute Browser, the<br />

user can specify the attributes <strong>and</strong> preferences for the objects placed in the model<br />

browser.<br />

In GME, annotations are created by clicking an empty area in the model editor<br />

window. User-developed metamodel paradigms can be registered in the windows registry<br />

without much difficulty. Projects can be loaded from any local database, or from an XML<br />

DTD document into the model browser. The graphical editor has normal, add connection,<br />

<strong>and</strong> delete connection, set, zoom <strong>and</strong> visualization modes.<br />

GME 4 includes an integrated Constraint Manager (CM) component. The task <strong>of</strong><br />

the CM is to enforce the constraints that the given paradigm contains. All the constraints<br />

are checked when the user initiates constraint checking through the File menu or the<br />

toolbar. The Check item <strong>and</strong> the checkmark looking toolbar button checks all the<br />

28


constraints that correspond to the current model. The Check All item makes the CM<br />

check all the constraints for all the objects in the project. Each constraint has a priority<br />

that controls the order <strong>of</strong> constraint evaluation. Higher priority constraints are checked<br />

first. The constraint specification contains the constraint equation written in MCL, a<br />

language based on the Object Constraint Language (OCL).<br />

GME supports model libraries, an important mechanism for reusing design<br />

artifacts. The metamodel is actually a diagram in GME, which contains atoms, models,<br />

connections, sets, references etc. The above mentioned objects are collectively known as<br />

first class objects (FCO) in GME. Aspect mapping is for the purpose <strong>of</strong> visualization in<br />

GME, where the user can make hide/open the objects in a particular view <strong>of</strong> the model.<br />

GME supports COM interfaces for enabling the users to write interpreters in any<br />

language they prefer that support COM, like visual basic, java, c++, etc. The component<br />

interface is implemented on the top <strong>of</strong> the COM interface. When the user initiates model<br />

interpretation, the component interface creates the so-called Builder Object Network<br />

(BON). The builder object network mirrors the structure <strong>of</strong> the models: each model,<br />

atom, reference, connection, etc. has a corresponding builder object.<br />

GME 4 is free s<strong>of</strong>tware available for the users to develop metamodeling <strong>of</strong> large<br />

computed-based systems. It is a research effort <strong>of</strong> the Institute for S<strong>of</strong>tware Integrated<br />

Systems, V<strong>and</strong>erbilt University. The latest version <strong>of</strong> this tool is GME version 4.0.<br />

GME 4 provides no complete tool support for UML modeling. Detailed<br />

discussion <strong>of</strong> its features is presented in the Chapter 4.<br />

29


3.2 Poseidon for UML<br />

Poseidon for UML is a full-fledged, platform-independent, easy to learn UML<br />

CASE tool from Gentleware AG. Poseidon for UML, which has its roots from the open<br />

source project called ArgoUML, evolved as one <strong>of</strong> the best feasible tools for feature-rich<br />

large-scale UML modeling. Poseidon is available in multiple editions to suit the<br />

requirements <strong>of</strong> wide range <strong>of</strong> s<strong>of</strong>tware designers. Gentleware AG is one among the first<br />

UML CASE tool suppliers to integrate UML 2.0 technology into the product line <strong>of</strong><br />

Poseidon for UML.<br />

Figure 3.4 Poseidon for UML in Community Edition 2.6 [11]<br />

30


The Community Edition 2.6, which is the base version, contains all UML<br />

diagrams <strong>and</strong> all implemented diagram elements. The user can create, save, <strong>and</strong> load<br />

projects <strong>and</strong> browse existing models. Java code generation <strong>and</strong> diagram export to various<br />

formats is supported [11]. It is free to download, install <strong>and</strong> work for designing projects.<br />

The Figure 3.4 reflects the environment <strong>of</strong> the Community Edition in Poseidon for UML.<br />

The St<strong>and</strong>ard Edition 2.6 is an extendable base version, relative to the Community<br />

Edition. The features that are not available in the Community Edition are present in this<br />

edition. Those features include zooming, printing, drag-<strong>and</strong>-drop, code preview <strong>and</strong><br />

editing, documentation generation, <strong>and</strong> diagram export [11]. It <strong>of</strong>fers forward <strong>and</strong> reverse<br />

engineering for Java, automatic documentation generation, <strong>and</strong> full undo/redo. The<br />

export for the HTML documentation allows users to share the documentation with others<br />

over the web or intranet. The export outcome includes all the information <strong>of</strong> a UML<br />

model including the diagrams. Modularity through the plug-in mechanism <strong>and</strong> integration<br />

interface allows plug-in selection <strong>and</strong> development [11]. The St<strong>and</strong>ard Edition has two<br />

versions: an evaluation version for which the user can get a temporary key to work with<br />

the tool for a specific period <strong>of</strong> time, <strong>and</strong> a commercial version, which has the full<br />

capabilities mentioned above. The Evaluation version is free but some options might not<br />

work unless purchased.<br />

The Pr<strong>of</strong>essional Edition 2.6 is the high-end version <strong>of</strong> Poseidon for UML.<br />

Designed pr<strong>of</strong>essionally for s<strong>of</strong>tware developers, it includes roundtrip engineering, JAR<br />

<strong>and</strong> MDL import, <strong>and</strong> provides code generation for Java, C++, Delphi, C#, VB.Net,<br />

CORBA, SQL, C#, <strong>and</strong> helps in template programming. Figures 3.5, 3.6 <strong>and</strong> 3.7 are the<br />

snapshots <strong>of</strong> Pr<strong>of</strong>essional Edition in Poseidon for UML version 2.6 taken from [12].<br />

31


Figure 3.5 Pr<strong>of</strong>essional Edition 2.6 Class diagram in Poseidon for UML [12]<br />

32


Figure 3.6 Pr<strong>of</strong>essional Edition 2.6 Class properties in Poseidon for UML [12]<br />

33


Figure 3.7 Pr<strong>of</strong>essional Edition 2.6 Java code generation in Poseidon for UML [12]<br />

34


The Enterprise Edition extends the Pr<strong>of</strong>essional Edition for use in highly<br />

collaborative development environments, enables team support <strong>and</strong> real time<br />

synchronization. With its client-server architecture, the Enterprise Edition allows for<br />

collaborative modeling. The members <strong>of</strong> a development team can work on the same<br />

project concurrently. The project itself is managed <strong>and</strong> stored on the server <strong>and</strong> replicated<br />

on all clients. Modifications <strong>of</strong> the model on a client are deployed to all other clients<br />

immediately.<br />

In order to meet the needs for the development <strong>of</strong> embedded systems, the<br />

Embedded Edition combines the features <strong>of</strong> the Pr<strong>of</strong>essional Edition with optimized code<br />

generation in ANSI C <strong>and</strong> C++.<br />

Plug-ins can be added to Poseidon for developing complex <strong>and</strong> highly-customized<br />

applications. They add support for code generation for a specific programming language,<br />

add a new pr<strong>of</strong>ile, gear generation frameworks specialized for platforms like EJB or .Net,<br />

run automatic layouts for diagrams, simulate the execution <strong>of</strong> models, validity checking<br />

<strong>of</strong> the model etc [11]. The plug-ins includes diagram layouting, code generators for EJB<br />

<strong>and</strong> MDA, <strong>and</strong> pr<strong>of</strong>iles for Requirements Engineering [11]. The users can build plug-ins<br />

using the open Application Programming Interfaces (API) in Pr<strong>of</strong>essional Edition.<br />

AndroMDA 2.0 plug-in provides integration <strong>of</strong> Poseidon <strong>and</strong> AndroMDA code<br />

generation framework. The b+m EJB 1.0 plug-in provide code generation from the<br />

current UML model by defining several pr<strong>of</strong>iles <strong>and</strong> settings in the UML model. The<br />

GoVisual Autolayout 1.4 plug-in provides high quality layout <strong>of</strong> the diagrams in<br />

Poseidon for UML. With Requirements Engineering 1.2 plug-in, additional requirements<br />

can be added to the use-case diagrams <strong>and</strong> are stored in the UML model. Documentation<br />

35


can be generated by UML-doc plug-in available in the tool. The Yworks Autolayout 1.3<br />

plug-in enables automatic layouting <strong>of</strong> class diagrams in Poseidon for UML. Autolayout<br />

<strong>and</strong> UML-doc plug-ins are obtained in St<strong>and</strong>ard Edition Evaluation version.<br />

3.2.1 Poseidon for UML - St<strong>and</strong>ard Edition 2.6 (E.Version)<br />

The work in this thesis regarding Poseidon for UML tool is implemented in the<br />

St<strong>and</strong>ard Edition 2.6 Evaluation Version <strong>of</strong> Poseidon for UML.<br />

Poseidon for UML has its birth from ArgoUML, an open source UML CASE<br />

tool. Initially Poseidon was developed using the source code <strong>of</strong> ArgoUML. Poseidon is<br />

more mature, with additional features, <strong>and</strong> is more stable. The difference between<br />

ArgoUML <strong>and</strong> Poseidon is, the former is intended much towards research, open source,<br />

<strong>and</strong> extensibility while the latter is used in commercial <strong>and</strong> pr<strong>of</strong>essional environments.<br />

The St<strong>and</strong>ard Edition is the extendable base tool for the pr<strong>of</strong>essional Edition. This<br />

edition comes with all features <strong>of</strong> the Community Edition plus other features like<br />

printing, drag-<strong>and</strong>-drop to the Windows clipboard (copy diagrams to Word or<br />

PowerPoint, not functional in evaluation version), <strong>and</strong> full zoom. Through a plug-in<br />

mechanism you can pick <strong>and</strong> choose from a growing set <strong>of</strong> plug-ins that allows you to<br />

further extend its functionality (not in evaluation version). In addition, e-mail support for<br />

this edition from the vendor [13].<br />

UMLdoc, the HTML documentation generator, enables users to export models to<br />

HTML format <strong>and</strong> share it with others over the web or intranet. The documentation<br />

includes all the information <strong>of</strong> a UML model including the diagrams. The St<strong>and</strong>ard<br />

Edition allows you to load (<strong>and</strong> unload) plug-ins at runtime (not in evaluation version).<br />

36


Figure 3.8 St<strong>and</strong>ard Panes in Poseidon for UML [13]<br />

Poseidon for UML is written completely in Java <strong>and</strong> is platform-independent,<br />

runs almost on any computer. Poseidon main working window has four panes, diagram<br />

37


pane, navigation pane, overview pane, <strong>and</strong> display pane. Diagram pane displays the<br />

various UML diagrams, <strong>and</strong> is the largest pane. Diagram pane has the grid by default.<br />

The user can adjust the settings <strong>of</strong> the grid, or can entirely hide the grid layout.<br />

Navigation pane displays models <strong>and</strong> model elements based on the selected view, <strong>and</strong><br />

also provide easy movement between its pane <strong>and</strong> diagram pane. Overview pane provides<br />

another means <strong>of</strong> navigation <strong>and</strong> display control. It is the smallest pane; critiques<br />

displayed here allow the user to build accurate models that produce code that can be<br />

compiled. Details pane displays details <strong>of</strong> all the model elements as selected. The user<br />

can add or modify properties <strong>of</strong> the models from this pane. A diagrammatic view <strong>of</strong> the<br />

panes in Poseidon is shown in Figure 3.8.<br />

All types <strong>of</strong> UML diagrams are supported by Poseidon. Inline text editing is<br />

possible here; that is, users can rename the model element by double clicking on it in the<br />

diagram pane. A search mechanism helps users to find an element given by its name,<br />

which may be a class, an attribute or an operation.<br />

Rapid buttons enable the user to quickly develop the design model without much<br />

pain. When the user clicks on the package or any model element, several buttons appear<br />

around the edges <strong>of</strong> the model element. With the help <strong>of</strong> one click <strong>and</strong> mouse release<br />

action, an association, dependency, generalization etc can be created from the<br />

corresponding element to the required element. Rapid buttons is a toggle switch. The<br />

Figure 3.9 shows rapid buttons around a class.<br />

38


Figure 3.9 Rapid buttons around a class in Poseidon for UML [13]<br />

Project files are exported to xmi format, printing, page setup are not available in<br />

this evaluation version. Zooming feature enable users to view the diagram more clearly<br />

according to the selection part. Critiques helps to produce correct <strong>and</strong> efficient models by<br />

walking through design issues, design goals according to the priority set by the system.<br />

The user can also set his design goals <strong>and</strong> specify his design issues (not present in<br />

evaluation version). Autocritiquing is a toggle switch, provides critiquing automatically.<br />

Autocritiquing option in settings dialog box from view menu shown in Figure 3.10.<br />

Figure 3.10 Autocritiquing in Poseidon for UML [13]<br />

39


Code generation is only in Java in St<strong>and</strong>ard Edition evaluation version.<br />

Documentation is generated by UMLdoc tool in HTML format. Plug-ins cannot be added<br />

<strong>and</strong> be worked in this version. Constraints can be done in plain English or any language<br />

<strong>of</strong> user’s choice apart from OCL. All types <strong>of</strong> relationships can be drawn <strong>and</strong> comments<br />

can be added for extra documentation about the model elements.<br />

Import <strong>of</strong> java files can be done with the import option in St<strong>and</strong>ard Edition.<br />

Specify the class path <strong>of</strong> the java files <strong>and</strong> clicking on the Apply button will open<br />

Poseidon working screen with the model in diagram pane <strong>and</strong> corresponding source code<br />

in details pane. The Import window is shown in Figure 3.11. Poseidon commercial<br />

version supports import <strong>of</strong> JAR files <strong>and</strong> model files developed using Rational Rose with<br />

.MDL extension.<br />

Figure 3.11 Import mechanism in Poseidon for UML [13]<br />

40


Poseidon creates a project file with the extension .zuml, a .zip file containing a<br />

.proj file having the project information <strong>and</strong> an .xmi file with model <strong>and</strong> diagram layout<br />

information (adopts Diagram Interchange St<strong>and</strong>ard 2.0). The Diagram interchange<br />

St<strong>and</strong>ard is still in the final phase <strong>of</strong> acceptance according to [19]. A diagram can be<br />

exported in jpeg, gif, svg, wmf formats, whereas the project can be exported in XMI<br />

format. The evaluation version <strong>of</strong> the tool can be obtained from the <strong>of</strong>ficial website [12]<br />

<strong>of</strong> Poseidon for UML.<br />

3.3. ArcStyler <strong>and</strong> MDA<br />

ArcStyler from Interactive Objects is a comprehensive, architecture-driven,<br />

model-centric, platform-independent, Model Driven Architecture (MDA-compliant) tool.<br />

ArcStyler transforms platform-independent models (UML models independent <strong>of</strong><br />

any platform) to platform-specific models like EJB, CORBA, C#, .NET, <strong>and</strong> generates<br />

optimized code for all business processes <strong>and</strong> business applications. ArcStyler is<br />

available in two editions, one is Architect Edition <strong>and</strong> the other is Enterprise Edition.<br />

Detailed description <strong>of</strong> ArcStyler is continued after the explanation <strong>of</strong> Model Driven<br />

Architecture (MDA), the underlying concept behind ArcStyler construction. In order to<br />

underst<strong>and</strong> ArcStyler thoroughly, the user has to have a basic knowledge about Model<br />

Driven Architecture.<br />

3.3.1 Model Driven Architecture<br />

Model Driven Architecture TM (MDA TM ) [1] is a framework st<strong>and</strong>ardized by the<br />

Object Management Group (OMG) to design <strong>and</strong> develop platform-independent models<br />

for different types <strong>of</strong> applications.<br />

41


Executable code is not a safe measure <strong>of</strong> saving the application for long periods <strong>of</strong><br />

time. One issue is, it is hard to underst<strong>and</strong> the code as we make changes in the application<br />

in course <strong>of</strong> time, <strong>and</strong> the other issues like loss <strong>of</strong> existing data, corruption to the source<br />

code can occur because <strong>of</strong> mish<strong>and</strong>ling <strong>and</strong> misinterpretation. So, there is a need to store<br />

applications in some design format. An answer turned out to be as Unified Modeling<br />

Language (UML). Model-driven approach is developing the application from the model<br />

<strong>of</strong> the application. A necessity was brought up to produce code generation out <strong>of</strong> the<br />

project model directly from the modeling tool in order to integrate model <strong>and</strong> code. This<br />

model-to-code driven approach reduces cost <strong>of</strong> the application development, also makes<br />

manual intervention less in writing the code for the entire application. Any changes in the<br />

model are automatically updated in the corresponding code without complexity. Even<br />

though the code was generated at platform-independent level, there is a need for the<br />

developer to produce the platform-specific code (in Java, C++, VB.NET, C#, etc.). Then<br />

a transformation was introduced in modeling tools to generate language-dependent code<br />

like Java, C#, apart from the platform-independent formats like XMI/XML, a st<strong>and</strong>ard<br />

incorporated by OMG.<br />

In order to reduce the gap between the model development <strong>and</strong> the application<br />

implementation, that is producing a platform-specific model from the platform-<br />

independent model, <strong>and</strong> to achieve interoperability among different environments, the<br />

OMG has introduced a framework called Model Driven Architecture in 2002. Ever since,<br />

design technology is leaning towards MDA. Some <strong>of</strong> the examples <strong>of</strong> MDA-based tools<br />

are ArcStyler from Interactive Objects, OptimalJ from Compuware, <strong>and</strong> EMF from IBM.<br />

42


MDA framework is a combination <strong>of</strong> UML, XMI, Common Warehouse Model<br />

(CWM), a st<strong>and</strong>ard adopted in developing warehouse models, <strong>and</strong> Meta Object Facility<br />

(MOF). The MOF is a repository-based st<strong>and</strong>ard <strong>of</strong> specifying metamodels, models <strong>and</strong><br />

transformation rules for converting the platform-independent models (PIMs) to the<br />

platform-specific models (PSMs), <strong>and</strong> PSMs to code. But most <strong>of</strong> the times,<br />

transformation <strong>of</strong> the PIM to the PSM is not seen explicitly.<br />

Figure 3.12 Model Driven Architecture Framework [14]<br />

MDA is only st<strong>and</strong>ards-based (UML, XMI, CWM), repository-based (MOF) <strong>and</strong><br />

includes model transformation patterns [14]. MDA framework is shown in Figure 3.12.<br />

43


MDA development consists <strong>of</strong> three steps. First step <strong>of</strong> the MDA process is the<br />

construction <strong>of</strong> PIM-expressed in UML (please note, sometimes UML models are also<br />

platform-dependent), with constraints independent <strong>of</strong> implementation technology,<br />

possess high level <strong>of</strong> abstraction, mostly business-oriented. Second step is automatic<br />

transformation <strong>of</strong> PIM to PSM. This step is achieved through the usage <strong>of</strong> transformation<br />

rules <strong>and</strong> patterns, aim at one or two implementation platforms (like EJB, web-based,<br />

.Net), intermediate to PIM <strong>and</strong> executable code. Final step is automatic transformation <strong>of</strong><br />

PSM to code, which is accomplished through the usage <strong>of</strong> transformation rules <strong>and</strong><br />

patterns. Code generation can be in Java, SQL scripts for DBMS, VB.NET for .Net<br />

platforms etc. In the second step, PIM <strong>and</strong> PSM are synchronized <strong>and</strong> in the third step,<br />

both PSM <strong>and</strong> code are always synchronized. Transformations in models are shown<br />

diagrammatically in Figure 3.13.<br />

Figure 3.13 Transformations in MDA [14]<br />

44


Ultimately, MDA’s greatness lies in platform-independency, interoperability, <strong>and</strong><br />

formal mapping rules to many platform infrastructures like J2EE, .Net, SOAP, XMI <strong>and</strong><br />

CORBA.<br />

There are also some drawbacks for MDA. The entire framework <strong>of</strong> MDA (UML,<br />

CWM, XML, MOF) is only st<strong>and</strong>ards-based, no proper solution for implementing the<br />

goals <strong>of</strong> MDA (interoperability, platform-independency), much <strong>of</strong> the APIs are yet to be<br />

developed (through which interoperability is facilitated) <strong>and</strong> one <strong>of</strong> the core ideas <strong>of</strong><br />

MDA, interoperability is not realized in practice, example., platform-independent models<br />

generated by ArcStyler <strong>and</strong> EMF are not interoperable among themselves.<br />

3.3.2 ArcStyler<br />

ArcStyler, the tool from Interactive Objects, is a full-fledged, model-centric,<br />

platform-independent (works on any version <strong>of</strong> windows platform), MDA-based UML<br />

modeling tool. It supports complete development <strong>of</strong> the project from design stage to code<br />

generation for different infrastructures like .Net, J2EE, <strong>and</strong> CORBA. ArcStyler has all<br />

MDA-cartridges for J2EE application servers, BEA WebLogic server, EJB, CORBA,<br />

.NET, <strong>and</strong> C#. ArcStyler fully implemented in Java enables design, modeling, code<br />

generation, deployment for any size <strong>of</strong> applications <strong>and</strong> infrastructures. ArcStyler is<br />

available in multiple editions. Latest version <strong>of</strong> ArcStyler is 4.0. The ArcStyler Enterprise<br />

Edition has MDA-Cartridges for the development <strong>of</strong> four-tier applications like J2EE<br />

application servers, .NET, C# <strong>and</strong> BEA WebLogic Server [15].<br />

The ArcStyler Architect Edition is the high-end version <strong>of</strong> ArcStyler. It enhances<br />

the Enterprise Edition with powerful extensibility tools enabling flexible extension,<br />

45


customization <strong>and</strong> exchange <strong>of</strong> MDA support within a well-defined, comprehensive<br />

Architectural IDE. With the ArcStyler Architect Edition <strong>and</strong> its MDA-Cartridge IDE, an<br />

organization can visually develop, test, <strong>and</strong> deploy MDA support to meet its specific<br />

requirements, whether these are extensions to existing MDA support or for completely<br />

new types <strong>of</strong> infrastructures <strong>and</strong> architectures. Appropriately, the MDA extensibility<br />

features <strong>of</strong> the ArcStyler also leverage the powerful benefits <strong>of</strong> MDA themselves [15].<br />

ArcStyler Architect Edition includes three types <strong>of</strong> variant editions. Community<br />

Architect Edition, which is available free for trial, Personal Architect Edition, <strong>and</strong> full<br />

Architect Edition. Users can download ArcStyler Community Architect Edition for their<br />

own specific platform from ArcStyler’s <strong>of</strong>ficial website [15]. The related work regarding<br />

ArcStyler in this thesis report is implemented by Community Architect Edition<br />

Evaluation version 4.0. ArcStyler Web Edition is also available for WebServices.<br />

3.3.3 ArcStyler Community Architect Edition 4.0<br />

ArcStyler is way beyond a typical programming Integrated Development<br />

Environment (IDE) which maintains architectural integrity. ArcStyler can be viewed as a<br />

platform for st<strong>and</strong>ard design, development <strong>and</strong> deployment <strong>of</strong> applications through<br />

MDA-cartridges IDE provided by Interactive Objects <strong>and</strong> its business partners.<br />

Advantages <strong>of</strong> architecture-centric over code-centric platforms are:<br />

Quality <strong>and</strong> effectiveness <strong>of</strong> the application can be improved because the tool<br />

produces optimized code that can be tested with less coding. Effectiveness is<br />

achieved as the developer feels that all requirements are precise.<br />

46


Cost <strong>of</strong> application development <strong>and</strong> time can be reduced because most <strong>of</strong> the work is<br />

done by the modeling tool itself, from design to code.<br />

Reduced risk as per the model changes, because code is automatically updated, results<br />

are predictable with designs, the skill set requirement for the design models remains<br />

more or less constant, not requiring relearning each time.<br />

More flexibility can be achieved in the project. The developer can include as many<br />

requirements as possible, which ever way he wants.<br />

Performance <strong>of</strong> the application is improved as the tool generates optimized code<br />

automatically, <strong>and</strong> the final output is much less prone to errors.<br />

Models can be saved as assets for the future to reuse <strong>and</strong> produce much more<br />

complex models because they are separate from implementation platforms. Making<br />

them interoperable will not be a major problem. Also models unlike code are less<br />

subject to corruption, loss <strong>of</strong> data <strong>and</strong> unexpected errors.<br />

An overview <strong>of</strong> ArcStyler is given in Figure 3.14. The MDA-cartridges which are<br />

present in the Community Architect version are called MDA Horizontal cartridges. Some<br />

<strong>of</strong> them are J2EE, .Net, <strong>and</strong> C#, etc. MDA-cartridges like eGovt <strong>and</strong> Telecom are called<br />

Vertical MDA-cartridges. MDA-cartridges for COBOL, CORBA, Mainframe, <strong>and</strong><br />

Database are called custom cartridges. The underlying architecture <strong>of</strong> ArcStyler is<br />

Cartridge Architecture, shortly abbreviated as CARAT. ArcStyler fully automates the<br />

complete life cycle <strong>of</strong> the s<strong>of</strong>tware development process, which is System Analysis,<br />

Design, Development <strong>and</strong> Implementation-Verification, Test <strong>and</strong> Deployment as defined<br />

by the Unified Process by default [16]. A diagrammatic view <strong>of</strong> the above point is shown<br />

in Figure 3.15. The complete architecture <strong>of</strong> ArcStyler is given in Figure 3.16.<br />

47


Figure 3.14 ArcStyler Overview [16]<br />

48


Figure 3.15 Full Life Cycle support <strong>of</strong> Unified Process in ArcStyler [16]<br />

49


Figure 3.16 ArcStyler Architecture in detail [16]<br />

50


MDA-cartridge contains *.tpr files-Technical Projection Configuration File which<br />

takes care <strong>of</strong> template directory, reference to contents etc, *.cap files-Technical<br />

Capabilities File which cares about the issues like inheritance, associations, other<br />

primitives <strong>and</strong> transaction modes etc, *.tpl-Interpreted Template File, *.inc-Include Files,<br />

*.py-Python Script Files, <strong>and</strong> Verifier rules are written in Java/JPython. In each cartridge,<br />

ArcStyler possess C-GEN, a configurable MDA-Transform Engine that does automation<br />

<strong>of</strong> the model to code, also each MDA-cartridge consists <strong>of</strong> ~1700 classes with multiple<br />

rules <strong>and</strong> ~6700 rule connections according to [17]. The system infrastructure, including<br />

the pr<strong>of</strong>iles is generated automatically using the configured ArcStyler MDA-Cartridge.<br />

Each pluggable MDA-Cartridge provides an optimized MDA transformation pr<strong>of</strong>ile <strong>and</strong><br />

automated model quality verifiers. Based on the UML model, an MDA-Cartridge<br />

generates the system, test <strong>and</strong> build infrastructure for a particular environment (e.g.<br />

J2EE/EJB container, .NET system or Java runtime environment) [18].<br />

Packages are created just like a UML package in ArcStyler. The user can restrict<br />

the model elements to be ignored in the code generation process. The following are the<br />

MDA-Cartridges that are provided by default in ArcStyler: Java2, Ejb11, Ejb20, WLS8,<br />

CSharp, Accessors (presentation layer), WebAccessors (Web front ends) <strong>and</strong> CARAT<br />

(CARtridge ArchiTecture Cartridge). Customized MDA-Cartridges may be generated<br />

using the ArcStyler’s CARAT Cartridge IDE.<br />

All types <strong>of</strong> UML diagrams are fully supported by ArcStyler. Declarative tags can<br />

be pre-defined or user-defined <strong>and</strong> can be applied to model elements like packages,<br />

classes, attributes, operations, interfaces etc. The Figure 3.17 is a snapshot <strong>of</strong> a sequence<br />

diagram that shows flow <strong>of</strong> messages in ArcStyler.<br />

51


Figure 3.17 Sequence diagram in ArcStyler [18]<br />

Exceptions can be created by declaring a class with the stereotype «exception».<br />

We can model exceptions thrown by the operation. To indicate that an operation may<br />

throw a certain exception, draw a dependency with the stereotype from<br />

the operation to the exception. The exception must be a regular exception type <strong>of</strong> the<br />

user’s UML model. This setting will be disregarded by the CSharp MDA-Cartridge,<br />

because the CSharp programming language does not support declaration <strong>of</strong> exceptions in<br />

operation signatures [18]. The modeling <strong>of</strong> operation exception is shown<br />

diagrammatically in the Figure 3.18.<br />

52


Attributes can be manipulated or not as controlled by the property called<br />

changeability. Getter <strong>and</strong> Setter methods are automatically generated for classes by<br />

ArcStyler tool itself.<br />

Figure 3.18 Modeling Operation Exceptions [18]<br />

Operations can be declared as synchronized, native or sequential in ArcStyler.<br />

Finite state machines can be modeled <strong>and</strong> implemented using MDA-Cartridges Java2 or<br />

CSharp. UML extensions for finite state machines like fork, join, composite state, synch<br />

state, junction, choice, initial, shallow history, deep history, <strong>and</strong> final states are<br />

incorporated in ArcStyler UML State diagrams <strong>and</strong> activity diagrams. Finite state<br />

machines are constructed basing on the four modeling elements package, class, usecase<br />

<strong>and</strong> operation.<br />

Dependencies are generated in the code depending upon the cartridge used. In<br />

Java, it is with the “import” syntax, <strong>and</strong> in C#, it is with the “using” syntax. Associations<br />

could not be seen in generated code. Web services can be developed in ArcStyler with<br />

Java/EJB or C#/.Net MDA-Cartridges. A web service is a service which is implemented<br />

by SOAP (Simple Object Access Protocol). For a Java implementation, the main artifacts<br />

that are generated are a WSDL document (WebService Description Language) describing<br />

the service, an Apache SOAP-specific deployment descriptor, a client-side wrapper class<br />

for calling the service from a client application <strong>and</strong> a server-side wrapper class that<br />

53


accepts the SOAP call from the client wrapper <strong>and</strong> delegates it to the real service <strong>of</strong> the<br />

Java class or the EJB. For a .NET implementation, the generated artifacts are the Web<br />

service directive (.asmx), a configuration file, <strong>and</strong> a client-side wrapper class for calling<br />

the service from a client application [18]. ArcStyler provides EJB modeling with its EJB<br />

1.0 <strong>and</strong> EJB 2.0 MDA-Cartridge. ArcStyler supports modeling <strong>of</strong> deployable components<br />

like J2EE Enterprise Archive (EAR) files, J2EE/EJB JAR files, Java JAR files or Web<br />

Application WAR files. The goal in modeling deployable components is to provide<br />

implementation-independent deployment structure [18]. J2EE application development is<br />

provided through EJB MDA-Cartridge in ArcStyler.<br />

ArcStyler fully supports Object Constraint Language (OCL) [1], a language to<br />

formally express constraints [18]. OCL supports three types <strong>of</strong> constraint stereotypes,<br />

Invariants which are applied to classifiers only, holds good for all instances <strong>of</strong> it,<br />

Preconditions <strong>and</strong> Postconditions are applied to operations only. ArcStyler Constraint<br />

specification is shown in Figure 3.19.<br />

54


Figure 3.19 OCL Specification in ArcStyler [18]<br />

OCL code generation can be controlled manually by disabling OCL support<br />

during runtime with unselecting “NO” option in enable OCL++ support parameter in<br />

MDA-Configuration dialog. Build support is provided by ArcStyler ANT tool.<br />

Harvesting is the technique employed in ArcStyler to import Java files <strong>and</strong> EJB files <strong>and</strong><br />

transform into their UML models. Some snapshots <strong>of</strong> the work environment <strong>of</strong> ArcStyler<br />

are presented from Figure 3.20 through Figure 3.23. The Figure 3.20 shows the opening<br />

screen <strong>of</strong> ArcStyler Community Architect Edition with default MDA-Cartridges.<br />

55


Figure 3.20 ArcStyler 4.0 Community Architect Edition<br />

56


Figure 3.21 ArcStyler package specification dialog box<br />

From the Figure 3.21, it can be seen that the package specification dialog box<br />

contains some tabs with in it. One is the General tab, which lists package name, whether<br />

it is a root element, leaf element, or an abstract type. The Inner Elements tab contains the<br />

list <strong>of</strong> objects in the package like classes, <strong>and</strong> packages. The Relations include<br />

dependencies, realizations, compositions, associations, notes <strong>and</strong> generalizations etc. The<br />

Stereotypes lists package stereotype, if it has to be created, this tab enables one to create a<br />

57


customized stereotype. Tagged values are just to add a little more documentation to the<br />

package. The Constraints tab is for specifying constraints in OCL. The MDA-marks tab<br />

is for specifying some properties like not to include the package in code generation<br />

process etc.<br />

Figure 3.22 ArcStyler package diagram using Class diagram toolbar<br />

58


From the Figure 3.22, archetype patterns Party, Company, <strong>and</strong> Loan Applicant,<br />

are shown at the package level. Pleomorphs (variants) are connected by realizations to<br />

their variation points. For example, from the Figure 3.22, Loan Applicant is a variant <strong>of</strong><br />

variation point Party. A Zoom bar is also seen on the left side <strong>of</strong> the diagram pane. The<br />

Figure 3.23 shows a typical ArcStyler class diagram with relationships.<br />

Figure 3.23 ArcStyler Class diagram<br />

59


4. EXPERIMENTAL VERIFICATION OF THE TOOLS FOR UML VARIABILITY<br />

This chapter discusses various tools like GME 4, Poseidon for UML <strong>and</strong><br />

ArcStyler in developing an archetypal model applying variabilities. It also explains the<br />

features present in each tool. The chapter also specifies whether the tool is successful in<br />

achieving the problem specified in this Thesis, after experimenting with the tools<br />

practically. An archetypal model for one case study is presented <strong>and</strong> finally comparison<br />

<strong>of</strong> three tools is tabulated for complete <strong>and</strong> clear listing <strong>of</strong> features. However, some<br />

features which are observed as nonworking should not be applied to ArcStyler in general<br />

because the tool versions applied in the Thesis are evaluation versions.<br />

4.1 Case Study Introduction - Loan Origination System (LOS)<br />

A case study was conducted in developing an archetypal domain model with<br />

variabilities <strong>and</strong> suggesting possible approaches <strong>of</strong> automation <strong>of</strong> variants from the<br />

variation point model. Tools involved in this case study are GME 4, Poseidon for UML<br />

<strong>and</strong> ArcStyler. In this section, a brief explanation <strong>of</strong> the selected domain is presented.<br />

The name <strong>of</strong> the domain to be constructed is “Loan Origination System”.<br />

Loan Origination System (LOS) is a system involved in the business <strong>of</strong> issuing<br />

different types <strong>of</strong> loans to the people. Different types <strong>of</strong> loans include credit-card loan,<br />

home loan, auto loan, student loan, consumer products loan, etc. For this report, only first<br />

60


four loans are considered. From the above, it can be understood that loan is a variation<br />

point <strong>and</strong> all other types <strong>of</strong> loans are its variants. Our main issue is to construct a model<br />

with variabilities using each tool <strong>and</strong> see how the tool provides automation <strong>of</strong> its variants<br />

from the variation point model.<br />

The Loan Origination System involves two parties, one is loan applicant, who<br />

requests a loan, <strong>and</strong> the other is loan originator, who issues the loan. In this case, the two<br />

parties are two persons. In some cases, a Company which is a variant <strong>of</strong> Party, can apply<br />

for a loan. This latter case involves two parties one <strong>of</strong> which is a Company. In the first<br />

case, it is a personal loan, <strong>and</strong> in the second case, it is a company loan. Ultimately, the<br />

transaction will be dealt only between two persons, either <strong>of</strong> them may be a person<br />

representing himself or representing a company. All types <strong>of</strong> these loans are special cases<br />

<strong>of</strong> the main product, called Loans.<br />

Loan Origination System actually is implemented by thorough communication<br />

between the two parties. So Party Relationship plays an important role in better<br />

underst<strong>and</strong>ing each other, thus facilitating smooth going <strong>of</strong> loan process. A major issue in<br />

maintaining a good Party Relationship is only through the channel <strong>of</strong> communication.<br />

Once the two parties agree on terms, they both sign an order making a deal. Finally the<br />

formal procedures take place, like saving documents, underwriting, agreement signing<br />

<strong>and</strong> the loan is sanctioned to the loan applicant from the loan originator. Product also<br />

possesses a relationship with the Party through Party-Product (Relationship) to decide<br />

whether the criteria are met in order to issue the Product for the loan applicant.<br />

In the background <strong>and</strong> related work chapter, previous work done by some<br />

researchers in the area <strong>of</strong> variability is explained. Their ideas are much restricted to<br />

61


theory, rather than proper implementation <strong>and</strong> tool support. The researchers’ idea <strong>of</strong><br />

integrating feature modeling in UML is not possible for implementation.<br />

Archetypes, known from their Greek meaning, as “general” came to explicitly<br />

show variability in UML. A collection <strong>of</strong> archetypes form an “archetype pattern”. A<br />

collaboration <strong>of</strong> archetype patterns forms an “archetype pattern library”. After OMG<br />

st<strong>and</strong>ardized MDA, one <strong>of</strong> the tools fully supporting the implementation <strong>of</strong> variability in<br />

UML with archetype patterns is ArcStyler. The unique feature <strong>of</strong> archetype patterns is<br />

direct representation <strong>of</strong> variability in UML modeling.<br />

ArcStyler is MDA-based <strong>and</strong> supports the core concepts <strong>of</strong> MDA. Poseidon for<br />

UML is a UML-based CASE tool <strong>and</strong> domain model with archetypes can also be built<br />

with this tool. However, because <strong>of</strong> the drawback <strong>of</strong> not allowing realizations among<br />

packages to show variability in Poseidon according to archetype patterns theory,<br />

ArcStyler is used in finishing the domain model. For comparison purposes, the top-level<br />

diagram <strong>of</strong> the model is constructed using both the tools. GME 4 is not feasible to use,<br />

because it lacks full UML Class diagram support. It is a good metamodeling tool, which<br />

can be used for research purposes, but fails commercially. The reason is its concepts like<br />

Model, Atom, <strong>and</strong> Aspect etc are not suitable to build the application models, which the<br />

user is habituated to in an industry type application with classes, interfaces <strong>and</strong><br />

components etc. So altogether all the features <strong>of</strong> the three tools are compared, complete<br />

archetypal model is developed with ArcStyler, <strong>and</strong> possible approaches <strong>of</strong> creating<br />

variants is proposed as no tool provided automatic extraction <strong>of</strong> variant models.<br />

Archetype Patterns Party, Party Relationship <strong>and</strong> Product used in this Thesis are<br />

instantiations <strong>of</strong> the original archetype patterns Party, Party Relationship <strong>and</strong> Product [8].<br />

62


To explain the party relationship with the product, Party-Product (Relationship), a custom<br />

archetype pattern is introduced. Customer Relationship Management (CRM) archetype<br />

pattern is instantiated to use in this model because loan process will be done only through<br />

communication. The customer relationship actually shows the flow <strong>of</strong> activity between<br />

loan applicant <strong>and</strong> loan originator. Once they come to an agreement, they sign a deal.<br />

There comes the Order archetype pattern, which formally goes through the formal<br />

procedure <strong>of</strong> loan process like signing a deal, making payment, talks about a purchase<br />

receipt, placing a sales receipt from the side <strong>of</strong> loan originator, underwriting process,<br />

verifying documents <strong>and</strong> enclosing all statements pertaining to the loan etc. Order<br />

archetype pattern applied in this Thesis is also specialized pattern. The CRM <strong>and</strong> Order<br />

patterns are also taken from [8]. Use-case <strong>and</strong> activity diagrams <strong>of</strong> the domain model are<br />

also shown in this report. The XML file generated for the model is not presented because<br />

<strong>of</strong> space constraints.<br />

Because GME 4 is unable to build an archetype model, as it lacks complete UML<br />

modeling support, Poseidon <strong>and</strong> ArcStyler are used. However, the Poseidon is also<br />

restricted to top level diagram because it hangs more, <strong>and</strong> the working environment is<br />

slower compared to ArcStyler. A complete model can be developed using ArcStyler,<br />

unlike Poseidon, because the latter does not support variability. ArcStyler has many<br />

features compared to Poseidon, it provides integration with major development platforms<br />

like .NET, CORBA, Web Services, EJB, etc, Test suites can be generated; <strong>and</strong> it supports<br />

variability in UML modeling. The tools used in this case study are GME 4, from<br />

V<strong>and</strong>erbilt University, Poseidon for UML St<strong>and</strong>ard Edition 2.6 Evaluation version from<br />

Gentleware Inc, <strong>and</strong> ArcStyler Community Architect Edition 4.0 Evaluation version from<br />

63


Interactive Objects S<strong>of</strong>tware. Because <strong>of</strong> the version problems, some <strong>of</strong> the features<br />

unlike full registered commercial version will not work properly.<br />

GME 4 is experimented to see its support for UML variability <strong>and</strong> extraction <strong>of</strong><br />

variants from the variability model in the next section, 4.2.<br />

4.2 Case Study Part I - Generic Modeling Environment (GME 4)<br />

Generic Modeling Environment (GME) 4 is an extensible <strong>and</strong> easily configurable<br />

toolkit for metamodeling purposes. Metamodel is a model that represents a model. This<br />

product is obtained from the research <strong>of</strong> Institute for S<strong>of</strong>tware Integrated Systems,<br />

V<strong>and</strong>erbilt University.<br />

GME 4 metamodeling is based on a modeling paradigm like MetaGME, UML<br />

etc. Metamodeling language is based on the UML class diagram <strong>and</strong> OCL. Once the<br />

metamodel is constructed, the paradigm is registered with the operating system registry<br />

<strong>and</strong> can be applied for developing models using that metamodel paradigm. The users can<br />

create their own customized paradigms in GME 4. However, UML paradigm does not<br />

provide complete UML class diagram tool support. Only supported features are class,<br />

inheritance, association class <strong>and</strong> composition. These tools are absolutely not sufficient to<br />

develop a full-fledged class diagram in UML. So for this reason, GME 4 is not used in<br />

developing archetypal model <strong>of</strong> LOS.<br />

GME 4 possesses modular architecture built with COM interfaces written in C++.<br />

It also supports customized interfaces written in Visual Basic, C#, Python etc. It also has<br />

a built-in OCL manager that checks automatically constraint violation. On the whole, it is<br />

not a commercial tool that can be used for model development. Very limited capabilities<br />

64


are present when compared to regular UML modeling tools. No code generation concept<br />

exists in GME 4. This tool helps for research-oriented aspects, not for the thorough<br />

modeling <strong>of</strong> domains. Detailed description <strong>of</strong> the tool is given in section 3.1. The concise<br />

feature listing is tabulated in Table 4.1. The comprehensive feature listing is presented in<br />

the section A.1.<br />

Apart from these, many fixes exist, like GME tool will not work if accidentally an<br />

empty xml file is imported, it simply crashes. OCL manager does not check incorrect<br />

OCL syntax specified in the model. Also the attribute dialog needs to be redesigned,<br />

since the features are sometimes wrongly assigned in the class diagram. Copy, paste to<br />

other applications as picture models in jpeg, gif formats is not supported, which causes<br />

extreme inconvenience if the user wants to look at the model on any machine. Sometimes<br />

the BON interpreter interface is not compatible with latest version <strong>of</strong> Visual C++ for use<br />

in writing a custom interpreter for the user-owned metamodels for interpreting models<br />

based on the metamodels. So after analyzing <strong>and</strong> experimentally verifying with GME 4, a<br />

conclusion was formed that developing a full-fledged UML domain model is not possible<br />

with the tool. The Thesis problem is not solved by the GME 4 tool.<br />

4.3 Case Study Part II - Poseidon St<strong>and</strong>ard Edition 2.6<br />

Poseidon for UML is a complete tool with support to all types <strong>of</strong> UML diagrams.<br />

There are multiple editions available for this tool from the <strong>of</strong>ficial website <strong>of</strong> Poseidon.<br />

The Community Edition is free for download, while St<strong>and</strong>ard Edition can be obtained as<br />

an evaluation version <strong>and</strong> can be worked with the environment for a specific period <strong>of</strong><br />

time. Poseidon is a pr<strong>of</strong>essional tool UML CASE tool that includes many features such as<br />

65


code generation, documentation generation, reverse engineering, <strong>and</strong> export models as<br />

XMI, import XMI models, <strong>and</strong> export diagrams as .jpg, .gif, .ps, <strong>and</strong> .svg formats. The<br />

tool version experimented in this Thesis is St<strong>and</strong>ard Edition 2.6 Evaluation Version. So<br />

the list <strong>of</strong> features described for this version may not be applicable for commercial or<br />

pr<strong>of</strong>essional versions <strong>of</strong> Poseidon.<br />

Poseidon has its roots taken from ArgoUML, an open source UML design project<br />

which is currently being developed by large open source international community, called<br />

Tigris. Later Hamburg-based Company Gentleware produced a re-worked version <strong>of</strong><br />

ArgoUML called Poseidon for UML Community Edition 1.0. In the course <strong>of</strong> time, the<br />

company introduced many features into Poseidon <strong>and</strong> developed various versions <strong>of</strong> the<br />

same tool to suit all kinds <strong>of</strong> business users.<br />

Poseidon is very platform-independent. It runs on major operating systems like<br />

Windows, LINUX, <strong>and</strong> Mac-OS etc. Poseidon can also be worked online without<br />

installing the s<strong>of</strong>tware on the user’s machine through JavaWebStart. The summarized<br />

feature listing <strong>of</strong> the tool is tabulated in Table 4.1. The comprehensive feature listing is<br />

presented in the section A.2.<br />

Poseidon tool itself has some bugs <strong>and</strong> needs to be fixed. Frequent hanging<br />

problems, restarting the tool for simple reasons like accidental issue <strong>of</strong> an wrong<br />

association relationship, incorrect use <strong>of</strong> rapid buttons etc, slowness in loading, saving<br />

the model even on a relatively faster computer, hanging while inline editing, copy, cut,<br />

paste not working within the tool environment, no auto-sizing feature for the model<br />

elements are some noticed problems.<br />

66


The development <strong>of</strong> the domain model <strong>of</strong> LOS with Poseidon is restricted to only<br />

a top level diagram because in the evaluation version: the number <strong>of</strong> classes should not<br />

exceed 20. If the user tries to exceed this, the model will not be saved. So, in this Thesis<br />

only a top level diagram is constructed <strong>and</strong> analyzed. Unfortunately, the top level<br />

diagram is only partially completed because the tool does not allow realizations among<br />

packages, which is the primary technique for exhibiting variability according to the<br />

archetype patterns concept. So UML variability applying archetype patterns could not be<br />

achieved using Poseidon, just like GME 4. However, the incomplete top level diagram is<br />

presented in Figure 4.1.<br />

67


Figure 4.1 Incomplete top level diagram <strong>of</strong> LOS from Poseidon (with watermark)<br />

68


Although complete LOS top level model with variabilities could not be constructed with<br />

Poseidon, the contents <strong>of</strong> its generated XMI file will be discussed. Some <strong>of</strong> the main<br />

features <strong>of</strong> the XMI file are as follows:<br />

The XMI file possesses information about the diagram in addition to the model<br />

information.<br />

The only difference between the models generated with diagram data <strong>and</strong> without<br />

diagram data is that by double clicking the XMI file, the tool will be started <strong>and</strong><br />

model can be seen in the model window in the former case, whereas the tool will be<br />

started but no model is seen in the model window in the latter case.<br />

XMI file generation even for a small diagram like Figure 4.1 is around 48 pages, with<br />

model information, which is quite large when compared to three pages <strong>of</strong> code<br />

without diagram information generated from the same tool for the same model.<br />

Although a DTD file is available, to underst<strong>and</strong> the contents <strong>of</strong> XMI file generated<br />

from Poseidon, it is about 104 pages <strong>of</strong> XML to walk through, which is hard for the<br />

user to go through the DTD file in the first h<strong>and</strong>.<br />

The project file <strong>of</strong> Poseidon top level diagram (with .zuml extension) is 6 KB, a<br />

backup file is with size 6 KB, the XMI file with diagram information is 126 KB <strong>and</strong><br />

XMI file without diagram information is 8 KB.<br />

The XMI file can be viewed in Internet Explorer, <strong>and</strong> in any text editor like Notepad,<br />

Word pad <strong>and</strong> Micros<strong>of</strong>t Word.<br />

The XMI file without diagram information is very simple <strong>and</strong> easy to underst<strong>and</strong> <strong>and</strong><br />

is very self-explanatory. So, the details <strong>of</strong> the contents are discussed shortly. First, it<br />

contains a creation timestamp. Then, it contains information about each model<br />

69


element, such as a unique identifier <strong>and</strong> other properties like abstract, root etc. After<br />

describing all model elements, it includes information about relationships, like<br />

dependencies, etc. <strong>and</strong> comments. It also assigns a unique identifier to each different<br />

stereotype. Here only «archetype pattern» stereotype is applied. The XMI file<br />

contains an identifier assigned to this stereotype, <strong>and</strong> this identifier is included in<br />

every model element description in this file because all elements have the same<br />

stereotype. The complete listing <strong>of</strong> the XMI file without diagram data for Figure 4.1<br />

is presented in the Appendix A.9 <strong>of</strong> this Thesis.<br />

The XMI file with diagram data contains information about the model along with<br />

its geometry, size <strong>and</strong> miscellaneous properties. This type <strong>of</strong> XMI file would be<br />

beneficial if we want to export to other users who have Poseidon on their systems.<br />

Otherwise, it is not advisable to export this file. The feature <strong>of</strong> exporting XMI file with<br />

diagram data or without diagram data is a good one, because the user can decide<br />

according to the need. On the whole, it was concluded that Poseidon is not a suitable tool<br />

to construct a variability model.<br />

4.4 Case Study Part III - ArcStyler Architect Edition 4.0<br />

ArcStyler is one <strong>of</strong> the pr<strong>of</strong>essional modeling tools available in the industry. Out<br />

<strong>of</strong> many editions available, the edition presented in this Thesis can be obtained as an<br />

evaluation version from the ArcStyler website. ArcStyler is an excellent tool in<br />

supporting UML variability through the implementation <strong>of</strong> archetype patterns. The<br />

complete listing <strong>of</strong> the features in ArcStyler is presented in the section A.3. The concise<br />

feature listing <strong>of</strong> the tool compared with the other two tools is presented in the Table 4.1.<br />

70


The version <strong>of</strong> ArcStyler with which Thesis experimented is the Community Architect<br />

Evaluation Edition. So, some <strong>of</strong> the observations mentioned here may not be true in the<br />

full Enterprise Edition. The latest version <strong>of</strong> ArcStyler is 4.0 for all editions. Because<br />

ArcStyler supports variability in its design, it is chosen to construct a variable model <strong>of</strong><br />

LOS. The table 4.1 summarizes features <strong>of</strong> the three tools briefly. The comprehensive<br />

listings <strong>of</strong> the features <strong>of</strong> the three tools are given in the Appendices A.1, A.2 <strong>and</strong> A.3<br />

respectively <strong>of</strong> this Thesis report.<br />

Feature GME Poseidon for UML ArcStyler<br />

Editions Single Multiple Multiple<br />

Edition name GME St<strong>and</strong>ard Community<br />

Architect<br />

Tool type Metamodeling UML CASE MDA-based<br />

Version worked Direct Evaluation Evaluation<br />

Version number 4.0 2.6 4.0<br />

Integrated Platform No No Yes<br />

Model-centric Yes Yes Yes<br />

Tool configurability No No No<br />

Tool extensibility Yes No No<br />

Working style Paradigm-based Plug-in based Cartridge-based<br />

Structural<br />

correctness<br />

No Yes Yes<br />

Rapid buttons No Yes No<br />

Code generation Not Applicable Yes Reported errors<br />

Report generation No No Reported errors<br />

Diagram assignment No No Yes<br />

Code generation<br />

during development<br />

Not Applicable Yes No<br />

Tool Speed Faster than the other Slower than the Relatively faster<br />

two tools other two tools than Poseidon<br />

Tool hanging Very rare Occurs on <strong>and</strong> <strong>of</strong>f Very rare<br />

Forward<br />

engineering in Java<br />

Not Applicable Yes Reported errors<br />

Reverse engineering<br />

in Java<br />

Not Applicable Partially yes Reported errors<br />

Test case generation No No Yes<br />

Model interpretation Yes No No<br />

Model execution No No Yes<br />

71


Feature GME Poseidon for UML ArcStyler<br />

Autocritiquing No Yes No<br />

Diagram export Only emf .gif, .ps, .wmf, .svg .gif,. jpg,. wmf<br />

Diagram export to<br />

pdf<br />

No Yes No<br />

Printing Yes No No<br />

Copy, cut, paste to<br />

various applications<br />

No No Yes<br />

External plug-in<br />

support<br />

Yes No No<br />

Association classes Yes Yes No<br />

Complete UML<br />

support<br />

No Yes Yes<br />

UML Variability No No Yes<br />

Integration with<br />

.Net<br />

No No* Yes<br />

Integration with<br />

CORBA<br />

No No* No*<br />

Integration with<br />

Web Services<br />

No No No*<br />

Integration with<br />

BEA WebLogic<br />

No No No*<br />

Integration with<br />

EJB<br />

No No No*<br />

Drawing tools No Yes No<br />

Project file export XME/XML XMI XMI<br />

Platformindependent<br />

file<br />

format<br />

XML XMI XML<br />

Unisys support No No Yes<br />

Backup file creation Yes Yes Yes<br />

Multiple stereotypes No Yes Yes<br />

Tool platform- Only Windows Windows, Linux, Windows, Linux,<br />

independency<br />

Mac-OS Solaris, Mac-OS<br />

Internationalization No Yes Yes<br />

Inline text editing No Yes Yes<br />

Zoom factor No Yes Yes<br />

Direct saving <strong>of</strong> the<br />

model in XML<br />

No No Yes<br />

OCL syntax autochecking<br />

Yes No Yes<br />

Import feature Own XME/XML Own XMI Own XML ZIP<br />

Directed<br />

Association<br />

Yes Yes No<br />

72


Feature GME Poseidon for UML ArcStyler<br />

Tool size 55 MB 43 MB 342 MB<br />

Self-associations Yes Yes No<br />

Search mechanism Yes Yes Yes<br />

DTD availability No Yes No<br />

Auto-save feature Yes No No<br />

Metamodel-tomodel<br />

transformation<br />

Yes No No<br />

Auto-sizing No No Yes<br />

Documentation No Yes (Comments) Yes (notes)<br />

Model-to-model<br />

No Yes (if code is also No*<br />

transformation<br />

thought as a model)<br />

Diagram<br />

interchange<br />

st<strong>and</strong>ard 2.0<br />

No Yes No<br />

XML file has<br />

diagram data<br />

Yes Optional Yes<br />

HTML<br />

Documentation<br />

No Yes No<br />

Tool MS-COM interfaces Java Java<br />

implementation written in C++<br />

Source code editing Not Applicable No* No<br />

Diagram code Not Applicable Class diagram with Same as Poseidon<br />

generation<br />

classes, classifier, <strong>and</strong> commercial<br />

packages, <strong>and</strong> version supports<br />

relationships in the activity diagram<br />

class diagram code generation<br />

Tool placement Research-oriented Commercial Commercial<br />

Cost effectiveness Free Expensive Very Expensive<br />

No* - This feature might be fully supported in the commercial version <strong>of</strong> the tool<br />

Table 4.1 Feature list comparison <strong>of</strong> GME 4, Poseidon for UML, <strong>and</strong> ArcStyler<br />

73


4.5 Case Study Part IV - Archetypal Model <strong>of</strong> LOS in ArcStyler<br />

The first part <strong>of</strong> the Thesis is to construct a domain model in UML with<br />

variabilities. The other two tools GME 4 <strong>and</strong> Poseidon did not provide complete support<br />

to achieve this task. ArcStyler enables the users to build variable models through the<br />

concept <strong>of</strong> archetype patterns. The definition <strong>of</strong> archetypal model is: A generic model<br />

from which every model <strong>of</strong> the similar kind is derived. An archetype pattern is a<br />

combination <strong>of</strong> archetypes, which are optional by default with in the archetype pattern<br />

context. An interesting feature <strong>of</strong> archetype patterns is they explicitly exhibit variability.<br />

So, an ArcStyler UML variable model with existing archetype patterns customized for<br />

the current domain <strong>of</strong> Loan Origination System (LOS) is implemented.<br />

LOS contains two parties, Loan Applicant <strong>and</strong> Loan Originator. Sometimes a<br />

Company can also play the role <strong>of</strong> a Party, instead <strong>of</strong> Loan Applicant, that is a Person. So<br />

variation is shown for the parties. Also, there can be different types <strong>of</strong> loan transactions<br />

that take place between the two parties. This shows a variation also exists for the loan. In<br />

this case, the primary focus is on Loan Applicant <strong>and</strong> Loan Originator. The relationship<br />

between Loan Applicant <strong>and</strong> Loan originator is explained by the Party Relationship<br />

Archetype Pattern. The party relationship with the Product, Loans, is described by a<br />

Party-Product (Relationship) Archetype Pattern, which has a pattern structure similar to<br />

Party Relationship. How the loan process flows, <strong>and</strong> the actions <strong>and</strong> outcomes <strong>of</strong> the two<br />

parties are explained by the Customer Relationship Archetype, <strong>and</strong> Order Archetype<br />

Patterns. Finally, the Product:Loans Archetype Pattern with its variations are depicted.<br />

74


All existing archetype patterns given in [8] are instantiated through parameterized<br />

collaborations to use in the domain model <strong>of</strong> LOS.<br />

Initially, the main domain model <strong>of</strong> the LOS application is created using st<strong>and</strong>ard<br />

requirements engineering practices. Use-cases are constructed, Figure 4.2, <strong>and</strong> Figure 4.3.<br />

Then behavioral diagrams, such as activity diagram are depicted in Figure 4.4. Next the<br />

high-level object models, such as package diagram is constructed in Figure 4.5. Then the<br />

details <strong>of</strong> the system model with variabilities are fleshed out, employing st<strong>and</strong>ard<br />

archetype patterns where possible. For example, the top level diagram <strong>of</strong> the domain with<br />

variabilities is built using the archetype patterns, Party (with its pleomorphs, Loan<br />

Applicant, Loan originator <strong>and</strong> Company), Party Relationship, Party-Product<br />

(Relationship), <strong>and</strong> finally Product:Loans (with its pleomorphs Credit card-Auto Loan,<br />

Student Loan, Home Loan etc.). The top level diagram is shown in the Figure 4.6. The<br />

next stage <strong>of</strong> development is the detail level <strong>of</strong> design for each archetype pattern shown<br />

in the top level diagram from Figure 4.7 to Figure 4.17. The final models Figure 4.16 <strong>and</strong><br />

Figure 4.17 are the collaboration models <strong>of</strong> the customized archetype patterns. The<br />

domain model development begins from Figure 4.2 <strong>and</strong> lasts through 4.17.<br />

75


Figure 4.2 Use-case Diagram <strong>of</strong> Loan Applicant<br />

76<br />

76


Figure 4.3 Use-case Diagram <strong>of</strong> Loan Originator<br />

77<br />

77


Figure 4.4 Activity Diagram <strong>of</strong> Loan Origination System<br />

78


Figure 4.5 Main package <strong>of</strong> Loan Origination System (LOS) from ArcStyler<br />

79


Figure 4.6 Top-level diagram <strong>of</strong> Loan Origination System<br />

80


Figure 4.7 Party, Loan Applicant, Loan originator <strong>and</strong> Company Archetype Patterns<br />

81


Figure 4.8 Party Relationship Archetype Pattern<br />

82


Figure 4.9 Party Relationship-Product Relationship Archetype Pattern<br />

83


Figure 4.10 Product Archetype Pattern<br />

84


Figure 4.11 Product:Loans <strong>and</strong> its Pleomorphs Archetype Patterns<br />

85


Figure 4.12 Order Archetype Pattern <strong>of</strong> LOS<br />

86


Figure 4.13 Customer Relationship Management (CRM) Archetype Pattern <strong>of</strong> LOS<br />

87


Figure 4.14 CRM Archetype Pattern for a specific case <strong>of</strong> Auto Loan<br />

88


Figure 4.15 CRM Archetype Pattern for a specific case <strong>of</strong> Credit card Loan 89


Figure 4.16 Instantiation <strong>of</strong> Archetype Patterns through parameterized collaboration<br />

90


Figure 4.17 Instantiation <strong>of</strong> Archetype Patterns through parameterized collaboration<br />

91


The Figure 4.2 <strong>and</strong> Figure 4.3 show the use-case diagrams <strong>of</strong> the two parties <strong>of</strong><br />

the loan origination system according to the requirements. Loan Applicant requirements<br />

are submitting loan application, providing asset <strong>and</strong> liability statements correctly, paying<br />

fees to the originator for credit checking, attorney fees, monthly payment with interest<br />

etc. Loan Originator requirements are to verify loan applicant application, do credit<br />

checking on the applicant, verify documents produced by the applicant, informing about<br />

payments etc. The Figure 4.4 depicts the entire loan process <strong>of</strong> the domain through<br />

activity diagram. The activity diagrams show the flow <strong>of</strong> activity from the stage <strong>of</strong><br />

application submission to final loan issue process briefly. The Figure 4.5 shows the main<br />

package <strong>of</strong> loan origination system with its sub-packages. So, the stereotype <strong>of</strong> the<br />

package is named as archetype pattern library. The «archetype pattern library» is a<br />

collaboration <strong>of</strong> archetype patterns, <strong>and</strong> they will appear as packages inside the library.<br />

The inner packages are declared with the stereotype «archetype pattern». Some <strong>of</strong> the<br />

inner packages are Party, Party Relationship, Product <strong>and</strong> Loan Applicant, etc.<br />

Figure 4.6 is the domain model <strong>of</strong> LOS shown at the very abstract level. That is<br />

the reason, the diagram is named as the top level diagram. Variation is expressed through<br />

«pleomorph» stereotype. From the Figure 4.6, it is clear that Product:Loans is a variation<br />

point <strong>and</strong> its variants are Credit card-Auto Loan, Auto Loan, Home Loan, etc. Also,<br />

another variation exists at Party, with Loan Applicant, Loan Originator <strong>and</strong> Company as<br />

its pleomorphs. The connection between a variation point <strong>and</strong> its variant is described by a<br />

UML realization relationship with the stereotype «pleomorph». Variability is expressed<br />

at the package level with archetypes.<br />

92


Figure 4.7 reflects the Party, Loan Applicant, Loan Originator <strong>and</strong> Company<br />

archetype patterns. The Party archetype pattern is instantiated <strong>and</strong> combined with the<br />

Loan Applicant archetype to form a Loan Applicant archetype pattern. Similarly, Loan<br />

Originator instantiates Party pattern <strong>and</strong> includes Loan Originator archetype to form a<br />

Loan Originator archetype pattern. In the same way, Company instantiates Party pattern<br />

<strong>and</strong> includes Company archetype to form Company archetype pattern. If the user wants to<br />

use an existing archetype pattern in his domain model, he has to instantiate the archetype<br />

pattern. The instantiation <strong>of</strong> archetype patterns is allowed through the process <strong>of</strong><br />

parameterized collaborations. So, the archetype pattern with its archetypes is enclosed in<br />

a dotted oval, a collaboration icon <strong>and</strong> the archetypes enclosed in the archetype pattern<br />

are specified as parameters on the collaboration circle. That means, the archetype pattern<br />

can be used again in the user’s new archetype pattern. The user can add more archetypes<br />

<strong>and</strong> more features to the instantiated archetypes in the new pattern, which is derived from<br />

the existing pattern. In this way, the users can instantiate existing archetype patterns to<br />

use them for their own domains.<br />

Figure 4.8 describes the Party Relationship archetype pattern <strong>of</strong> LOS. The pattern<br />

explains the party relationship between the two parties, loan applicant <strong>and</strong> loan originator<br />

with the relationship type, party role, constraints, responsibility archetypes. The domain<br />

developer supplies the two responsibility archetypes, the method definition that describes<br />

the nature <strong>of</strong> the roles <strong>of</strong> the two parties. Figure 4.9 is the description <strong>of</strong> Party-Product<br />

(Relationship) archetype pattern, which explains the relationship between the two parties<br />

<strong>and</strong> a product, a loan in this case. This archetype pattern is quite similar to the Figure 4.8<br />

in structure.<br />

93


Figure 4.10 is the Product Archetype Pattern from which a Product:Loans<br />

archetype pattern is derived with its related archetypes. Because <strong>of</strong> the space constraints,<br />

its pleomorph patterns, Credit card loan, Auto loan, etc. are constructed <strong>and</strong> shown in a<br />

separate diagram as Figure 4.11.<br />

Figure 4.12 Order Archetype Pattern depicts types <strong>of</strong> business process flow that<br />

take place after the deal is signed between the loan applicant <strong>and</strong> loan originator. This<br />

pattern exists in the Customer Relationship Management (CRM) Archetype Pattern as a<br />

sub-pattern. The Order pattern has many events that take place according to the situation<br />

<strong>and</strong> need. Different types <strong>of</strong> activities that occur in the loan process are pictured as events<br />

like Payment, Cancel, Open, Close events, etc. The next model shows how the actual<br />

process <strong>of</strong> communication, party actions <strong>and</strong> outcomes in the form <strong>of</strong> a CRM Pattern in<br />

Figure 4.13. This pattern is essential in the model <strong>of</strong> LOS because loan process works<br />

efficiently through the channel <strong>of</strong> communication, which means a good customer<br />

relationship should exist. Figure 4.14 <strong>and</strong> Figure 4.15 are the special cases <strong>of</strong> CRM<br />

pattern for the special cases <strong>of</strong> Product:Loans, like Credit card loan <strong>and</strong> Auto Loan,<br />

which are presented for the sake <strong>of</strong> describing variants <strong>of</strong> the main CRM pattern <strong>of</strong><br />

Figure 4.13. Figure 4.16 <strong>and</strong> Figure 4.17 are the instantiations <strong>of</strong> the original archetype<br />

patterns given in [8] modified to suit the domain model <strong>of</strong> LOS. The patterns are all<br />

placed in collaboration circles with the necessary archetypes mentioned as parameters for<br />

the other archetype patterns to use them in their pattern along with their own archetypes.<br />

Once the model is constructed, as a next step the tool generates an XML file,<br />

which is platform-independent. For the LOS example, the project file with .asprj<br />

extension is <strong>of</strong> 11 KB, the XML file <strong>and</strong> its backup file created with .bak extension are<br />

94


each 1.12 MB, the compressed UML model with the extension .xml.zip is 60 KB, the<br />

.xml.zip.bak is <strong>of</strong> 63 KB, the Unisys XMI file is <strong>of</strong> 1.88 MB, the .guifg (GUI<br />

configuration file) is <strong>of</strong> 20 KB. Because <strong>of</strong> the version, the project file could not include<br />

the CRM archetype pattern, Order archetype pattern, CRM-cases, Use-case diagrams <strong>and</strong><br />

Activity diagram. They are obtained from separate uses <strong>of</strong> ArcStyler. The XML file<br />

generated for the project is exactly 600 pages <strong>of</strong> code, or more if opened in any text<br />

editor. Hence it is clear that parsing through the XML file is not feasible. So, to analyze<br />

the XML file generated by ArcStyler, only the top level diagram <strong>of</strong> the same domain was<br />

constructed as another model. The project file (.asprj) came to be 20 KB, the .guifg is 20<br />

KB, <strong>and</strong> the UML model .xml.zip is 6 KB, .xml.zip.bak is 6 KB, XML version is 183<br />

KB, Unisys XMI file is 1.12 MB. The XML file for this model is around 96 pages <strong>of</strong><br />

code if opened in any text editor. So, it is still hard to walk through to underst<strong>and</strong> the<br />

contents <strong>of</strong> the file.<br />

given below:<br />

Some <strong>of</strong> the main points noted about the XML file generated by ArcStyler are<br />

The file is with an XML extension filled with XMI tags.<br />

The tool uses, built-in Magic Draw UML 7.0 facility to export in XML <strong>and</strong> XMI<br />

formats. It uses Magic Draw UML 7.0 tool XMI extensions in XML file.<br />

A unique identifier is assigned to each model object, such as package, class,<br />

relationship, stereotype <strong>and</strong> interface.<br />

It contains pr<strong>of</strong>ile loaded information, <strong>and</strong> expresses many properties <strong>of</strong> the model<br />

elements, many <strong>of</strong> which are not useful to the user in underst<strong>and</strong>ing the model.<br />

95


The XML file also possesses information about the diagram in addition to the model.<br />

Unfortunately, double clicking on the XML file, will not open ArcStyler.<br />

It describes information about the author, comments, created date <strong>and</strong> title <strong>of</strong> the<br />

project etc.<br />

It contains stereotypes; data types, extension mechanisms, like from which base class<br />

its features are extended, MDA pr<strong>of</strong>ile ID, <strong>and</strong> element ownership.<br />

Even though the user does not set the feature property, it displays the feature property<br />

as false for that feature in the XML file for every attribute, package, stereotype,<br />

dependency, <strong>and</strong> class, etc. That contributes to the unimaginably large XML<br />

documentation, even for very small models.<br />

The first part <strong>of</strong> the file is about model management, like pr<strong>of</strong>iles, extension<br />

mechanisms, <strong>and</strong> assigning identifiers to each item in the model.<br />

The second part tells us about the diagrammatic information, like what font <strong>and</strong> fill<br />

color is used for the objects, the reference id attached to that property, geometry<br />

coordinates at which these model elements are placed, <strong>and</strong> properties <strong>of</strong> the class<br />

objects, which are owned <strong>and</strong> set by the author.<br />

The last section is about optional features that are related to model elements (which<br />

are set <strong>and</strong> which are not set).<br />

So, to express the analysis <strong>of</strong> the XML file briefly, the user usually don’t need that<br />

extensive information in the first part, (it just gives an abstract information about the<br />

model view, its geometry, size, fill color properties, etc), the second part tells about<br />

the model elements in the diagrams, their stereotype, root, abstract, model element<br />

96


identifier, relationships involved with each model element, <strong>and</strong> any notes attached to<br />

the model elements. The third part or the last section is not required.<br />

The XML file <strong>of</strong> ArcStyler even for the top level diagram is not included in the<br />

Appendix <strong>of</strong> this report because <strong>of</strong> space problems. Also, code generation <strong>and</strong> report<br />

generation facility in ArcStyler are not successful because <strong>of</strong> the restricted version.<br />

The first part <strong>of</strong> constructing a model with UML variability is achieved by<br />

ArcStyler, which could not be done by either GME 4 or Poseidon. So, first part <strong>of</strong> the<br />

Thesis problem is solved. The next part is automating the creation <strong>of</strong> variants from the<br />

UML variability model. So far, none <strong>of</strong> the tools possess tool support for creating variant<br />

models with the help <strong>of</strong> a variation point model. So, feasible approaches are proposed in<br />

the next section 5.1.<br />

97


5. FEASIBLE APPROACHES OF AUTOMATING VARIANTS<br />

If there is variability in the domain model, the user should possess the ability to<br />

choose variant models according to his need <strong>and</strong> requirements. Since so far, no tool<br />

experimented with in this study provided support for the automatic extraction <strong>of</strong> variants,<br />

possible approaches are suggested in this section to accomplish the task. This is the<br />

second part <strong>of</strong> the Thesis problem.<br />

5.1 Algorithm Approach<br />

This approach suggests an algorithm to parse through the XMI/XML file <strong>of</strong> the<br />

variability model by preparing a requirements set document initially. The user is<br />

supposed to walk through the file according to the algorithm, <strong>and</strong> wherever requirements<br />

are met, move the block <strong>of</strong> XML code from the parsing XML file into a separate XML<br />

file that eventually becomes a variant model in XML format. However, the approach<br />

makes some assumptions, like the XMI/XML file generated for the variability model is<br />

not excessively large, (less than 10 pages <strong>of</strong> code), does not contain diagram data, <strong>and</strong><br />

does not possess optional features <strong>and</strong> properties that are set to false by the tool <strong>and</strong><br />

properties that do not provide important information about the model to the user.<br />

Although, in this case variant models are not automatically created, they are<br />

developed with partial automation. The main issue to be understood in this case, is that<br />

98


the user is trying to create a model that meets the requirements from the available<br />

metamodel with variabilities. The models for which variability is expressed at the<br />

package level are only considered, because the concept <strong>of</strong> variability implemented in this<br />

Thesis is through archetype patterns. Initially, the required archetype patterns from the<br />

metamodel which are selected by the user in order to extract a model variant are framed<br />

into a set called the requirements set. The requirements set is prepared from the graphical<br />

representation <strong>of</strong> the metamodel showing the variabilities. The reason is parsing through<br />

the XMI/XML file <strong>of</strong> the metamodel costs time <strong>and</strong> unnecessary confusion to the user to<br />

frame the requirements set. So, at the beginning the set is prepared by selecting package<br />

nodes from the variability model image. Secondly, the algorithm will be applied in<br />

creating the variant models out <strong>of</strong> it by using the XMI/XML file <strong>of</strong> the variability model<br />

as the input <strong>and</strong> requirements set as the parameters to build the model. Before the<br />

algorithm is presented, here are certain assumptions the algorithm makes.<br />

Each model package that is to be placed in the variant model is treated as a<br />

NodeString object.<br />

The package names from the requirements set are taken to construct a NodeString<br />

array.<br />

The requirement set has followed a preorder traversal pattern for framing the<br />

requirements from the graphical representation <strong>of</strong> the original model with<br />

variabilities. The NodeString array is constructed with the proper ordering <strong>of</strong> the<br />

NodeStrings taken from the above set.<br />

Now, repeat the procedure explained in this paragraph for all the blocks <strong>of</strong> code in the<br />

parsing XML file. Consider the first NodeString from the array <strong>and</strong> see if the first<br />

99


lock <strong>of</strong> code in the XML file matches, if it doesn’t, ignore the block <strong>of</strong> code ignored<br />

<strong>and</strong> proceed to the next block <strong>of</strong> code in the XML file. But if does match <strong>and</strong> there<br />

are no inner blocks, move the block <strong>of</strong> code from the parsing XML file into the new<br />

XML file, <strong>and</strong> proceed with the second NodeString taking from the requirements set,<br />

incrementing the counter <strong>of</strong> the NodeString array. If the block <strong>of</strong> code matches <strong>and</strong><br />

has any inner blocks, increment the counter <strong>of</strong> the NodeString array to check if the<br />

inner block matches with the current NodeString. If the NodeString matches with the<br />

inner block <strong>of</strong> code, move the block <strong>of</strong> code into the new XML file; otherwise delete<br />

that inner block <strong>of</strong> code from the parsing XML file <strong>and</strong> repeat the procedure for all<br />

inner blocks <strong>of</strong> the same level. Now move the outer block <strong>of</strong> code without losing its<br />

structural <strong>and</strong> semantic integrity. In this way, parse the XML file for all the<br />

NodeStrings in the requirements set. The user should take care in preparing the<br />

requirements set; otherwise it will lead to loss <strong>of</strong> data from the original XML file, <strong>and</strong><br />

he will not be getting the model correctly that he wanted from the variability model.<br />

The algorithm also follows preorder traversal, which is one <strong>of</strong> the reasons to prepare<br />

the variant model requirements set in the preorder traversal pattern. The reason for<br />

choosing the preorder traversal for building the requirements set <strong>of</strong> the variant model<br />

<strong>and</strong> parsing the XML file in the same way is that the XML/XMI file structure<br />

generated by typical UML modeling tools will be similar to preorder traversal pattern.<br />

Copy the original XML file <strong>of</strong> the variability model into a temporary file. Move the<br />

data from this file into the new XML file while applying the algorithm, so that the<br />

original file will not incur any loss <strong>of</strong> data because <strong>of</strong> this transfer mechanism.<br />

100


The block <strong>of</strong> code nesting level in the parsing XML file is not considered to be more<br />

than two to avoid complexity in the algorithm.<br />

The formal algorithm is described in two procedures for better clarity. In the<br />

algorithm, variable k acts as a counter for tracking the current NodeString array<br />

element. Variable keys contain the number <strong>of</strong> elements in NodeString array.<br />

Algorithm-part I:<br />

---------------------<br />

Algorithm develop-model ()<br />

// Here the node string array is constructed from the requirements set<br />

NodeString req-nodes [] = new NodeString [1...n]<br />

// req-nodes[1] = req1, req-nodes[2] = req2…..req-nodes[n] = reqn<br />

// Each NodeString is the package element taken from the image <strong>of</strong> the metamodel<br />

Int keys = n, k = 1 // k =1 is the current requirement<br />

File newXMLfile = new File []<br />

// newXMLfile is the new file <strong>of</strong> the model variant to be developed<br />

File tempfile // tempfile is the parsing XML file<br />

Open file (newXMLfile)<br />

Open file (tempfile) // tempfile is the temporary file <strong>of</strong> the original version<br />

While (k


Close (newXMLfile)<br />

Displayfile (newXMLfile)<br />

// newXMLfile consists <strong>of</strong> the blocks <strong>of</strong> code for the NodeString array elements<br />

// <strong>and</strong> it represents a variant model <strong>of</strong> the original XML file model.<br />

Algorithm develop-model End<br />

Algorithm-part II:<br />

---------------------<br />

Algorithm Process-model (NodeString req-nodes[k], k)<br />

For each block <strong>of</strong> code, i in the tempfile<br />

102<br />

If the i block <strong>of</strong> code with name req-nodes[k] matches req-nodes[k] but contains<br />

no inner blocks<br />

Move the i block <strong>of</strong> code from the tempfile into the newXMLfile<br />

k= k + 1<br />

Process-model (req-nodes[k], k)<br />

Elseif the i block <strong>of</strong> code with name req-nodes[k] matches req-nodes[k] <strong>and</strong> if<br />

there are inner blocks <strong>of</strong> i<br />

For each inner block <strong>of</strong> code, w <strong>of</strong> i<br />

If (req-nodes[k+1] matches w)<br />

Move the block <strong>of</strong> code w <strong>of</strong> i from the tempfile into<br />

the newXMLfile <strong>and</strong> let k = k+ 1<br />

Else delete the block <strong>of</strong> code w <strong>of</strong> i from the tempfile<br />

End if


End For<br />

End for<br />

Move the rest <strong>of</strong> the i block <strong>of</strong> code from the tempfile without losing<br />

structural <strong>and</strong> semantic integrity <strong>of</strong> i into the newXMLfile<br />

Process-model (req-nodes[k], k)<br />

Else Do Nothing<br />

End if<br />

Algorithm Process-model End<br />

103<br />

Limitations <strong>of</strong> the Algorithm:<br />

-----------------------------------<br />

This algorithm may be applied for the UML variability models expressed in terms <strong>of</strong><br />

packages.<br />

This algorithm can be used if the corresponding XMI/XML file does not possess any<br />

diagrammatic data <strong>and</strong> the file is not too long to process.<br />

This algorithm can be used where the XML file does not contain nesting level more<br />

than two. This feature is set to avoid complexity in the algorithm.<br />

5.2 Application Model for Developing <strong>Variant</strong> Models<br />

A customized application model was built using ASP.Net, VB.Net <strong>and</strong> Internet<br />

Information Server (IIS). In this approach, the model with variabilities is expressed in the<br />

form <strong>of</strong> built-in drop-down list boxes. All packages, classes <strong>and</strong> relationships for a<br />

typical archetype pattern are described in each list box. The application model shows<br />

only four list boxes for simplicity. The user can extend this model to suit his or her own


equirements. Each list box component possesses six text boxes that display the items<br />

selected from the list box. <strong>Variant</strong>s are declared by the package name pleomorph. The<br />

user can follow his or her own naming conventions. As this is a basic diagram to show<br />

generation <strong>of</strong> variants, no specific measures were taken in naming model objects.<br />

104<br />

The user interface is very simple in look <strong>and</strong> feel. Three push buttons are placed<br />

at the end <strong>of</strong> the model, for “Page Reload”, “Clear” <strong>and</strong> “Generate XML file”. The “Page<br />

Reload” button has the purpose <strong>of</strong> loading explicitly needed items into the model. The<br />

user can modify this feature in the source code <strong>of</strong> the interface to declare some<br />

m<strong>and</strong>atory items <strong>and</strong> see that they appear automatically when the user presses this button.<br />

The Clear button refreshes the screen with empty textboxes <strong>and</strong> with the first item in the<br />

list box selected. The button, Generate XML file, generates an XML file out <strong>of</strong> the user<br />

specified requirements displayed in the text boxes.<br />

After every list box, there are push buttons, called SELECT <strong>and</strong><br />

INFORMATION. The SELECT push button helps the user in selecting the items in the<br />

list box <strong>and</strong> displaying them in the text boxes. The INFORMATION push button helps<br />

the user to know what exactly the model element does <strong>and</strong> its importance in the text box<br />

placed beside it. The user’s own customized documentation can appear in the text box if<br />

the user modifies the code by writing his own documentation for each selected list box<br />

item <strong>of</strong> the INFORMATION button. Holding the CTRL key on the keyboard, the user<br />

can select multiple list box items <strong>and</strong> clicking on the SELECT button, the selected items<br />

in the list box are placed in the corresponding text boxes. The users are not allowed to<br />

enter their own text into the text boxes. This feature is restricted so that the application<br />

model stays consistent in all situations. For this application, most generic naming set


packagename, classname, relationshipname <strong>and</strong> pleomorph are used. The pleomorph is a<br />

variant <strong>of</strong> the packagename. This application is very simple, cannot be applied for large<br />

<strong>and</strong> complex models, <strong>and</strong> for simplicity everything is made optional in this archetypal<br />

model.<br />

105<br />

The visual interface was built using ASP.Net <strong>and</strong> code generation application for<br />

XML was written in VB.Net. The application model interface with the model elements is<br />

treated as the metamodel with variabilities <strong>and</strong> automatic selection <strong>of</strong> variants from the<br />

metamodel is facilitated. The number <strong>of</strong> items in the list boxes <strong>and</strong> text boxes is restricted<br />

to avoid complexity. Each list box reflects the elements <strong>of</strong> the model at package level.<br />

The number <strong>of</strong> list boxes is also limited to avoid complexity <strong>and</strong> space problems in the<br />

interface. Each list box possess a package name as the first item, with its typical<br />

contained elements such as classes, package pleomorphs are placed after the class names<br />

in the list box <strong>and</strong> the relationships among packages are included at the end <strong>of</strong> the list.<br />

The user has the flexibility to extend the code <strong>and</strong> customize it. This application helps the<br />

user in case <strong>of</strong> no tool support on his or her machine to generate a simple XML file with<br />

underst<strong>and</strong>able model information without diagram data <strong>and</strong> confusing tags. The XML<br />

file generated from this application can be viewed in any browser just like any normal<br />

XML file. This application model is also helpful in developing simple variants from the<br />

variability model interface with much ease. The following example is a generalized,<br />

(applicable to all kinds <strong>of</strong> simple domains) <strong>and</strong> customizable (the user can modify <strong>and</strong><br />

extend the application source code) version <strong>of</strong> the application.<br />

The Figure 5.1 shows the main page <strong>of</strong> the application model. Only three items in<br />

each list box are selected to be displayed. The picture also shows PAGE RELOAD,


Generate XML File, <strong>and</strong> CLEAR push buttons at the end. In this application, PAGE<br />

RELOAD button displays all items <strong>of</strong> each list box in the appropriate textboxes by<br />

default. The user can customize the functionality <strong>of</strong> the push buttons accordingly.<br />

106<br />

The Figure 5.2 shows the result <strong>of</strong> pressing the CLEAR button. The package<br />

name is selected by default. The Figure 5.3 shows the result <strong>of</strong> pressing the PAGE<br />

RELOAD button. It displays all the list boxes items in the available text boxes. Figure<br />

5.4 depicts the result <strong>of</strong> pressing the INFORMATION button. When the user selects an<br />

item in the list box <strong>and</strong> presses INFORMATION button, documentation <strong>of</strong> the selected<br />

item will be displayed in the text box placed after the INFORMATION button. The<br />

application model is built in the context <strong>of</strong> archetype patterns. That way, the user can<br />

build a variety <strong>of</strong> models from the same application. This is the most generalized form,<br />

but the user can customize the application to obtain specific variant models <strong>of</strong> the domain<br />

model by modifying the existing source code <strong>of</strong> the interface.<br />

The Figure 5.5 shows the error message obtained when third package elements<br />

are selected without second package elements. If the user does not select the previous<br />

package elements <strong>and</strong> proceeds to the next one, an error message is displayed for the<br />

user. The error message will not go <strong>of</strong>f until he selects some elements in the previous<br />

package. This picture is to show that error h<strong>and</strong>ling is included in the model. The user<br />

can modify the code <strong>and</strong> include his own error processing code in the application.<br />

Some special cases or the variant models <strong>of</strong> the application are shown as images<br />

from Figure 5.6 through Figure 5.8. The user can select different choices <strong>of</strong> elements<br />

from the packages, each time leading to a different model variant from the application.<br />

Variability is shown with the element name pleomorph. The pleomorphs are the variation


forms <strong>of</strong> the respective package placed in the same list box. The user can construct the<br />

specific domain model according to this concept. Relationships included are the various<br />

connections between packages, <strong>and</strong> are all optional by default. A relationship can be any<br />

type, so the user can place relationships depending on need. The complete source code <strong>of</strong><br />

the application interface <strong>and</strong> the code written for the Generate XML File push button to<br />

obtain XML file from the model are given in the sections A.4 <strong>and</strong> A.5. Also the XML file<br />

generated for each variant model shown in Figures 5.6 to 5.8 is also saved in the<br />

Appendices A.6 to A.8.<br />

107


Figure 5.1 Custom Application Model for Developing <strong>Variant</strong>s<br />

108


Figure 5.2 Action <strong>of</strong> the CLEAR push button<br />

109


Figure 5.3 PAGE RELOAD push button action<br />

110


Figure 5.4 INFORMATION button action<br />

111


Figure 5.5 Error Message display in the model<br />

112


Figure 5.6 A variant model-1 <strong>of</strong> the application<br />

113


Figure 5.7 A variant model-2 <strong>of</strong> the application<br />

114


Figure 5.8 A variant model-3 <strong>of</strong> the application<br />

115


6. CONCLUSIONS AND FUTURE WORK<br />

116<br />

The current Thesis explores different tools to pursue the problem <strong>of</strong> expressing<br />

variability using UML models <strong>and</strong> automating the creation <strong>of</strong> model variants out <strong>of</strong> the<br />

variation point model. Three tools were experimented with, <strong>and</strong> so far, no tool was<br />

successful in achieving the task <strong>of</strong> automatic generation <strong>of</strong> model variants, although<br />

variability models could be constructed by ArcStyler. So, feasible approaches are<br />

presented in the chapter 5 for creating variants through different techniques. Each <strong>of</strong> the<br />

approaches has its own advantages <strong>and</strong> disadvantages. The solution <strong>of</strong> the first problem<br />

<strong>of</strong> the Thesis is partially accomplished through the implementation <strong>of</strong> archetype patterns<br />

in this report.<br />

6.1 Conclusions<br />

The conclusions that are drawn from the experimental results presented from the chapter<br />

4 are as follows:<br />

GME 4 does not provide complete UML modeling support.<br />

GME 4 <strong>and</strong> Poseidon are not feasible in fulfilling the task <strong>of</strong> developing variable<br />

models because they lack UML support for the concept <strong>of</strong> pleomorphism.<br />

ArcStyler, an MDA-based tool, provides support for UML modeling with variability<br />

through archetype patterns.


None <strong>of</strong> the tools experimented with were useful in creating model variants from the<br />

main model with variability.<br />

Some <strong>of</strong> the features <strong>of</strong> the tools are not fully functional in the free versions.<br />

The possible approaches suggested for automatically generating model variants are<br />

very much restricted, <strong>and</strong> are not feasible for reasonably large-sized domain<br />

modeling.<br />

The contributions to this Thesis are:<br />

Experimental verification <strong>of</strong> tool features in developing a UML variability model.<br />

Complete listing <strong>of</strong> the features <strong>of</strong> tools provides adequate information for selecting<br />

the tool for later projects.<br />

Design <strong>of</strong> a complete archetypal model with UML variability for a specific domain<br />

called the Loan Origination System (LOS).<br />

Any further extensions <strong>of</strong> the LOS domain can be done easily with ArcStyler, such as<br />

including additional pleomorphs for the Product, Loans in this case, additional<br />

archetype features in the packages, etc.<br />

Checked whether any Document Type Definition File (DTD) file is available for any<br />

<strong>of</strong> these tools to underst<strong>and</strong> XMI/XML models <strong>and</strong> parse through them.<br />

Possible approaches for selecting model variants are proposed because no tool<br />

support exists for this feature yet.<br />

The proposed approaches could be useful in some areas where no tool support exists.<br />

With little manual intervention, model variants could be obtained by parsing through<br />

the XML file <strong>of</strong> the model with the algorithmic approach.<br />

117


6.2. Future Work<br />

118<br />

Possible future work includes extending the extraction <strong>of</strong> variants from their<br />

variation point models automatically. The developed customized application model<br />

discussed in section 5.2 could be extended with more functionality, such as describing<br />

optional elements <strong>and</strong> optional relationships explicitly, <strong>and</strong> including specification <strong>of</strong><br />

constraints <strong>and</strong> notes. Manual approaches are always limited to some extent, so with the<br />

help <strong>of</strong> tool support, much more complex variant models can be built. So a tool extension<br />

facility for ArcStyler is presented in this section.<br />

In the current Thesis, it is found that, so far, no tool supports automatic extraction<br />

<strong>of</strong> variant models from a domain model with variation points. However, ArcStyler does<br />

provide variability support. So, in the future, if ArcStyler is to possess the feature <strong>of</strong><br />

extracting variants from the variability model, there are two possible ways <strong>of</strong><br />

implementing it.<br />

Directly from the project file (.asprj file): The project file with package diagrams<br />

showing variabilities is loaded into the tool. There will need to be a plug-in that<br />

supports the specification <strong>of</strong> requirements that must be present in the variant model<br />

by selecting them from the generic model. The user then selects appropriate<br />

components <strong>and</strong> closes the plug-in interface. Then another package diagram with the<br />

user-specified requirements would be created as a separate model diagram <strong>and</strong> a<br />

XML file for that variant model should be generated.<br />

Import <strong>of</strong> UML models (.xml.zip file): ArcStyler supports saving created UML<br />

models in .xml.zip file format. It contains the UML model in the form <strong>of</strong> an XML<br />

compressed file. The tool supports importing .xml.zip files developed from other


versions <strong>of</strong> ArcStyler in addition to its current version. So, once the file is imported<br />

into the tool, the model can be seen in the diagram window. From there, the above<br />

described procedure <strong>of</strong> a plug-in to develop variants can be applied here.<br />

119<br />

The above suggested approaches are not planned to be implemented in the tool;<br />

however they can be taken as a possible measure for automatic selection <strong>of</strong> variants in<br />

ArcStyler.<br />

In conclusion, the present Thesis identifies the need for expressing UML<br />

variability by developing an archetypal model with variabilities, suggests which tools<br />

provide support in achieving the task, <strong>and</strong> studies the automation <strong>of</strong> model variants from<br />

the tools. Because no tool, so far, facilitates automatic variant generation from the main<br />

model, approaches are proposed that can be applied feasibly to smaller domains with<br />

restrictions. Finally the Thesis concludes that automatic extraction <strong>of</strong> variants from the<br />

variability model is also equally important as producing an archetype model with<br />

variabilities in the current environment <strong>of</strong> business modeling.


• Editions<br />

A.1. GME 4 Features<br />

Available edition is GME 4 version 4.0<br />

• GME 4 does not support UML 2.0 Diagram Interchange st<strong>and</strong>ard.<br />

Diagram Interchange St<strong>and</strong>ard detail is given in the A.2 section.<br />

• No rapid buttons in GME 4 to speed up development like in Poseidon.<br />

Rapid buttons are short-h<strong>and</strong> buttons in Poseidon that appear around an<br />

object like class, interface, package when the option is turned on. Rapid<br />

buttons are different types <strong>of</strong> tools with relationships like generalization,<br />

120<br />

association, dependency, comment, creating a class etc. There are no rapid<br />

buttons in GME 4.<br />

• Not an integrated platform, but model-centric with configurable paradigms.<br />

GME 4 does not provide integration with development platforms like<br />

.NET, CORBA, Visual Studio, Rational Rose etc directly. It is<br />

metamodel-centric rather than model-centric. Existing paradigms<br />

cannot be modified. GME 4 supports tool configurability.<br />

• No usage <strong>of</strong> multiple platform-specific model paradigms at a time for developing<br />

various applications.<br />

• Constraints specified in OCL can be checked with check comm<strong>and</strong>.<br />

Check comm<strong>and</strong> option in the File menu <strong>of</strong> GME 4 enables users to verify<br />

their OCL constraints for the constrained object, Check All comm<strong>and</strong><br />

checks constraints issued for all the model objects.


• No assignment <strong>of</strong> class diagrams or any other diagrams to packages.<br />

In ArcStyler, we can assign one diagram to package. Double clicking on<br />

that package will directly lead to assigned diagram. This option is absent<br />

in GME 4.<br />

• Generates no code during development <strong>of</strong> the model.<br />

There is no concept <strong>of</strong> code generation with this tool.<br />

• Working with the environment is relatively fast compared to other two tools.<br />

Because the features are limited in GME 4 unlike ArcStyler <strong>and</strong> Poseidon.<br />

• Loading, saving takes less time than the other two tools, <strong>and</strong> it hangs much less.<br />

• No documentation can be generated in this tool.<br />

• No concept <strong>of</strong> forward engineering, since there is no concept <strong>of</strong> code generation.<br />

• No test-cases can be generated for the model created in GME 4, unlike ArcStyler.<br />

• Created models are interpreted.<br />

121<br />

The metamodels <strong>and</strong> models are interpreted through interpreters present in<br />

the Builder Object Network module, a high-level C++ interpreter<br />

interface.<br />

• Copy, cut, paste work within tool, but not between applications.<br />

Copy, cut, paste comm<strong>and</strong>s are fine within the tool environment, but<br />

cannot be extended to other applications like Micros<strong>of</strong>t Word, Photo<br />

Editor Etc.<br />

• Diagrams can be exported only as emf format. (Enhanced metafile).<br />

• Printing is supported directly from the tool.


• External plug-ins (GMEclipse, Autolayout, Generative Modeling Framework,<br />

122<br />

MOF environment) <strong>and</strong> other utilities are free <strong>and</strong> can be installed in this version<br />

from [8].<br />

• Association classes between two atoms can be created using connector<br />

relationship.<br />

• General drawing tools like textbox, circle, polygon, <strong>and</strong> rectangle are not present.<br />

• The XML file contains diagram information along with model; double clicking<br />

will not open GME 4, but the XML file can be viewed in the browser.<br />

• Project files are saved with .mga extension; double clicking will open GME 4.<br />

• Project files can be exported as .XME, .XML (XML version 1.x).<br />

• A backup file with .bak extension is created for every project.<br />

• Undo <strong>and</strong> redo action works.<br />

• Multiple stereotypes cannot be applied to elements.<br />

• Fully implemented with COM interfaces written in C++, platform dependent.<br />

• GME 4 works only on Windows platforms, no version exists for others.<br />

• Internationalization (only English)-no other language support exists.<br />

• Inline text editing is not possible in GME 4.<br />

Double clicking on the name <strong>of</strong> the operation, class, attribute will allow<br />

the user to rename it. This is called inline text editing, which is not present<br />

in GME 4.<br />

• The Help menu worked in GME 4, <strong>of</strong>fline tool support is available.<br />

• A Zoom feature to see the model more clearly is not available.


• No ANT tool support included in GME 4.<br />

ANT is a Java-based build tool extended with Java classes, used to<br />

compile, assemble <strong>and</strong> run Java-based applications. Since it is written in<br />

Java, it can be applied cross-platform. Since code generation is not<br />

possible in GME 4, ANT concept cannot be applied here.<br />

• No direct saving <strong>of</strong> project file to XML format.<br />

• Constraints are specified only in OCL, <strong>and</strong> GME 4 checks OCL syntax.<br />

• Import feature works only for its own .XML, .XME files.<br />

• No support for importing XML/XMI files generated by other tools.<br />

• Directed association can be drawn in GME 4 using connectors.<br />

The user can make the connector relationship directed by giving<br />

appropriate source <strong>and</strong> destination model objects.<br />

• The GME 4 tool size is around 55MB, more than Poseidon <strong>and</strong> less than<br />

ArcStyler.<br />

• When mouse is moved over an object, no documentation is visible for that object.<br />

If we add any documentation to any object in Poseidon, it will appear<br />

when mouse is moved over the object. This feature is absent in GME 4.<br />

• Associations, self-associations can be drawn with connectors.<br />

• No dependencies, realizations, interfaces can be drawn, except inheritance <strong>and</strong><br />

compositions.<br />

• No other UML diagrams can be drawn except class diagrams in GME 4.<br />

• The Search mechanism in GME 4 allows searching for an object in the model.<br />

123


• No DTD file available to parse through the XML file created by GME 4.<br />

A Document Type Definition File to underst<strong>and</strong> the contents <strong>of</strong> XML file<br />

is not available.<br />

• Auto save feature is available for GME 4.<br />

• Metamodel-to-model transformation is possible in GME 4.<br />

Once the metamodel is constructed <strong>and</strong> registered by a new paradigm<br />

name in the registry, it can be used to build models basing on that<br />

paradigm. So metamodel paradigm is used to transform a metamodel to a<br />

model.<br />

• Auto sizing <strong>of</strong> the model elements is not present in GME 4.<br />

• Annotations can be added for the model element in GME 4 by clicking on a<br />

empty area in the model browser.<br />

• Reverse engineering concept cannot be applied to GME 4.<br />

• Interfaces cannot be constructed in GME 4.<br />

• No Autocritiquing or suggesting model improvements feature exists in GME 4.<br />

• GME 4 is model-centric but not UML CASE specific.<br />

GME 4 targets at developing the model <strong>and</strong> generating a platform-<br />

independent file, but does not support all UML diagrams, although there<br />

exists UML paradigm which contains very few icons for the UML Class<br />

diagram.<br />

• GME 4 tool working architectural style is Paradigm-based.<br />

124


In GME 4, every project starts with applying an existing paradigm or<br />

creating a new paradigm <strong>and</strong> registering in the registry to apply for later<br />

projects. Examples <strong>of</strong> existing paradigms are MetaGME, <strong>and</strong> UML.<br />

• No structural correctness feature for the model is provided in GME 4.<br />

125


• Editions<br />

A.2. Poseidon for UML Features<br />

Available editions are Community Edition, St<strong>and</strong>ard Edition, Pr<strong>of</strong>essional<br />

Edition, Enterprise Edition, Embedded Edition, <strong>and</strong> Embedded Enterprise<br />

Edition. All these editions are available for version 2.6.<br />

• Poseidon for UML supports UML 2.0 Diagram Interchange st<strong>and</strong>ard.<br />

Diagram Interchange St<strong>and</strong>ard, an adopted st<strong>and</strong>ard [17] suggests that the<br />

XMI/XML file generated by the UML modeling tool should also store<br />

diagram information. Poseidon supports this st<strong>and</strong>ard, so double clicking<br />

on the XMI file <strong>of</strong> Poseidon will open the model in Poseidon; also XMI<br />

file is browser-viewable.<br />

• Rapid buttons in Poseidon for UML exists to speed up development.<br />

A rapid buttons explanation is given the A.1 section. The picture <strong>of</strong><br />

rapid buttons is shown in the Figure 3.9.<br />

• Not an integrated platform, with configurable plug-ins (atleast this version).<br />

126<br />

St<strong>and</strong>ard Evaluation Edition <strong>of</strong> Poseidon does not provide integration with<br />

development platforms like .NET, CORBA, Visual Studio, Rational Rose<br />

etc. It is not possible to install plug-ins or write user-defined plug-ins.<br />

• No usage <strong>of</strong> multiple pr<strong>of</strong>iles at a time for developing various applications.<br />

(model-to-model transformations) in this version.<br />

In St<strong>and</strong>ard Edition, there won’t exist other pr<strong>of</strong>iles except for Java.<br />

• Structural correctness is checked with Autocritiquing.


Built-in auditor, called critique which critiques design issues, provides<br />

127<br />

suggestions to improve design. Autocritiquing is not selected by default; it<br />

tells the user how to improve the model, errors that might lead to<br />

uncompiled source code. The user can make that feature turned <strong>of</strong>f, by<br />

unchecking the checkbox “perform automatic critiquing”. Autocritiquing<br />

provides enough support to make the model structurally <strong>and</strong><br />

semantically correct. Autocritiquing is shown in the Figure 3.10.<br />

• No assignment <strong>of</strong> class diagrams or any other diagrams to package.<br />

• Generates Java code during development <strong>of</strong> the model.<br />

The source code generated can be seen in the Source Code tab which is<br />

present below the diagram pane.<br />

• Working with the environment is relatively very slow compared to ArcStyler.<br />

The user can feel slowness working with the model development in<br />

Poseidon. Sometimes, rapid buttons are the source <strong>of</strong> confusion. Even if<br />

the user switches <strong>of</strong>f rapid buttons, faster design could not be achieved.<br />

The reasons can be attributed to bugs in the tool development itself, like<br />

text editing makes the tool hang or needs restarting. Hanging problem is a<br />

bit frequent in Poseidon.<br />

• Loading, saving takes more time compared to ArcStyler.<br />

On a computer with relatively high specifications, the tool takes some<br />

what less time; otherwise sometimes the user needs to restart the machine.<br />

• HTML documentation is available in this tool.


UMLdoc, a built-in HTML documentation generator produces a report<br />

version <strong>of</strong> the model that can be viewed in any browser. Poseidon<br />

generates extensive documentation with the diagram along with the<br />

relations <strong>and</strong> stereotypes.<br />

• Forward engineering exists in all versions <strong>of</strong> Poseidon.<br />

Generation <strong>of</strong> source code in Java is available in this version.<br />

• No test suites can be created for the model in Poseidon, Unlike ArcStyler.<br />

• Created models can be neither interpreted nor executed but critiqued.<br />

• Copy, cut, paste did not work within the tool, which is a disappointing feature.<br />

• Diagrams can be exported as .jpg, .gif, .ps, .svg, <strong>and</strong> .pdf formats.<br />

• Printing is not supported in this version <strong>of</strong> Poseidon.<br />

• Association classes can be created in Poseidon using UML association class<br />

toolbar.<br />

• General drawing tools like textbox, circle, polygon, <strong>and</strong> rectangle are present in<br />

Poseidon.<br />

• Project files are saved with .zuml extension; they are zip files containing a .proj<br />

file with project information, .xmi file with the model <strong>and</strong> layout information.<br />

• Project files cannot be exported as Unisys XMI format.<br />

• A backup file with .bak extension is created for every project.<br />

• Undo <strong>and</strong> redo action works.<br />

• Multiple stereotypes can be applied to elements.<br />

Also custom stereotypes can be created <strong>and</strong> applied to all objects.<br />

128


• Fully implemented with Java classes <strong>and</strong> Poseidon is platform-independent. Zip<br />

file version <strong>of</strong> the installation is also available to install on any platform.<br />

• Internationalization, in addition to English, it supports German, Spanish, Chinese<br />

<strong>and</strong> French versions <strong>of</strong> Poseidon.<br />

• Inline text editing is possible in Poseidon, like ArcStyler.<br />

• The Help menu worked in Poseidon St<strong>and</strong>ard Evaluation Edition.<br />

• A Zoom feature to see the model more clearly is available.<br />

• Other documentation written for a specific object will appear in the source code<br />

<strong>of</strong> that object in this version.<br />

• ANT tool support is included in Poseidon.<br />

ANT tool description is given the section A.1. Code generation in<br />

Poseidon is only in Java in this version, so ANT tool helps in building the<br />

Java applications <strong>and</strong> ANT comes as a built-in in Poseidon.<br />

• No direct saving <strong>of</strong> project file to XMI format.<br />

Project cannot be saved in XMI format directly, only exporting to XMI is<br />

allowed (version 1.0 <strong>and</strong> 1.1). However, the project file <strong>of</strong> Poseidon<br />

consists <strong>of</strong> XMI file in zip format. The XMI file can be produced with or<br />

without diagram data.<br />

• Constraints can be specified in plain English, in addition to OCL, but Poseidon<br />

does not check OCL syntax.<br />

• Import feature works only for its own .XMI files, but this feature did not work<br />

here.<br />

129


• Poseidon for UML tool size is around 43 MB, less than the size <strong>of</strong> the other two<br />

tools.<br />

• When mouse is moved over an object, documentation <strong>of</strong> the object is seen.<br />

If the user adds any documentation to the object’s documentation tab in<br />

Poseidon, it will appear when mouse is moved over the object.<br />

• Directed associations, associations, self-associations can be drawn in Poseidon<br />

using the UML class diagram toolbar.<br />

• The relationships like dependencies, realizations, inheritance, composition <strong>and</strong><br />

aggregations can be drawn in Poseidon.<br />

• All nine types <strong>of</strong> UML diagrams are supported in Poseidon.<br />

• The Search mechanism in Poseidon allows user to search for an object in the<br />

model.<br />

• A DTD file is available to parse through the XMI file created by Poseidon.<br />

A Document Type Definition File to underst<strong>and</strong> the contents <strong>of</strong> XMI file<br />

generated by Poseidon is available from its <strong>of</strong>ficial website [10].<br />

• Auto save feature is not available in Poseidon, unlike GME 4.<br />

• Metamodel-to-model transformation is not present in Poseidon, unlike GME 4.<br />

• Comments are available to connect to a model element just like a note in<br />

ArcStyler.<br />

Comment is present in the Class diagram toolbar to specify user-defined<br />

extra documentation for the model element. The user can connect the<br />

130


Comment to its element through a link associated with the comment from<br />

the toolbar. But Comments cannot be written in multiple lines for better<br />

presentation.<br />

• Auto sizing <strong>of</strong> the elements is not available in Poseidon.<br />

• Reverse Engineering in Java is supported in this version <strong>of</strong> Poseidon.<br />

Reverse Engineering is the process <strong>of</strong> generating its UML model from the<br />

Java source code <strong>of</strong> the model. However associations might not be<br />

displayed.<br />

• Editing <strong>of</strong> the source code in the tool itself is not possible in this version <strong>of</strong><br />

Poseidon.<br />

• Code generation in Java is based on Velocity in Poseidon.<br />

Velocity is a Java-based template tool that provides velocity template<br />

engine with Java plug-in built in it.<br />

• Interfaces cannot be made remote in Poseidon unlike ArcStyler for creating RMI<br />

components <strong>and</strong> interfaces should not possess attributes.<br />

• The user cannot restrict the model element from appearing in the generated source<br />

code.<br />

• Declarative tags in .NET, EJB <strong>and</strong> CORBA, <strong>and</strong> C# to any model element is not<br />

supported in this version <strong>of</strong> Poseidon.<br />

• Attributes manipulation is controlled by the property called changeability.<br />

• Merging <strong>of</strong> current working project into existing project is possible in Poseidon.<br />

• No creation <strong>of</strong> realizations <strong>and</strong> associations among packages in Poseidon.<br />

131


• Source code generation in Poseidon is only for classes <strong>and</strong> classifiers.<br />

• Poseidon tool working architectural style is pr<strong>of</strong>ile <strong>and</strong> plug-ins based.<br />

Only Java registered pr<strong>of</strong>ile is available in this version <strong>of</strong> Poseidon. But<br />

full commercial version <strong>of</strong> the tool possess plug-ins for Autolayout,<br />

Requirements plug-in etc <strong>and</strong> more registered pr<strong>of</strong>iles for VB.Net, EJB,<br />

<strong>and</strong> C# etc. Users are also allowed to create their own plug-ins <strong>and</strong> extend<br />

existing ones in the commercial version <strong>of</strong> Poseidon.<br />

132


• Editions<br />

A.3. ArcStyler Features<br />

Available editions are Architect Edition, <strong>and</strong> Enterprise Editions. The<br />

Community Architect Edition is available for evaluation purposes. In<br />

some areas on the Internet, specification <strong>of</strong> the editions <strong>of</strong> ArcStyler<br />

shows the presence <strong>of</strong> another edition called the Web Edition.<br />

• ArcStyler does not support UML 2.0 Diagram Interchange st<strong>and</strong>ard.<br />

133<br />

A detail <strong>of</strong> the st<strong>and</strong>ard is given in the section A.2. The XML file contains<br />

diagram information along with model, but double clicking will not open<br />

ArcStyler, but it is opened in the browser.<br />

• Rapid buttons are not present in ArcStyler to speed up development.<br />

A Rapid buttons description is given in the section A.1.<br />

• A highly integrated platform, with no configurable cartridges.<br />

ArcStyler has many cartridges that are used to build very complex<br />

applications related to various platforms like .NET, CORBA, EJB, C#,<br />

Web Services, etc. Although this current version does not support some<br />

platforms like CORBA, <strong>and</strong> legacy platforms, it provides integration with<br />

other development platforms. The user can build his/her own customized<br />

cartridges in commercial version. No external cartridges are supported in<br />

this version.<br />

• Usage <strong>of</strong> multiple cartridges at a time for developing various applications.<br />

(model-to-model transformations) is possible.


The user can load multiple cartridges at a time to develop applications<br />

related to different infrastructures. If a user builds a model using the<br />

Java2 personal edition cartridge, he/she can add the C# cartridge to<br />

transform the existing model into a C# model, if the code is also<br />

considered as a model. This concept is known as model-to-model<br />

transformation <strong>and</strong> ArcStyler supports it.<br />

• No Autocritiquing feature exists in ArcStyler.<br />

Autocritiquing is explained in the Appendix: A2.<br />

• Structural correctness <strong>of</strong> the model can be verified by Verify comm<strong>and</strong>.<br />

In ArcStyler, structural correctness can be checked by a Cartridge verify<br />

comm<strong>and</strong> from the Tools menu <strong>of</strong> the tool. The Verify comm<strong>and</strong> checks<br />

whether the model is structurally correct according to the loaded pr<strong>of</strong>ile in<br />

order to generate code. Any errors will appear in the output window<br />

beside the Log tool.<br />

• User can assign any type <strong>of</strong> one UML diagram to a package.<br />

In ArcStyler, one can assign any one diagram to a package. Double<br />

clicking on that package will directly lead to the assigned diagram.<br />

Sometimes this feature helps in fast viewing <strong>of</strong> diagrams when several<br />

diagrams are in the model.<br />

• ArcStyler generates no Java code during development <strong>of</strong> the model.<br />

• Working with the environment is relatively fast compared to Poseidon.<br />

The user experiences working rapidly with the tool because <strong>of</strong> the simple<br />

134


easons: the environment looks very pleasant; cut, copy <strong>and</strong> paste work<br />

within the tool <strong>and</strong> between applications; auto sizing <strong>of</strong> the model<br />

element; no need to change each element property; once the user declares<br />

a pr<strong>of</strong>ile for a model element, it remains the same until the user changes it<br />

again. Hanging problems occur much less <strong>of</strong>ten than with Poseidon.<br />

• Loading takes a bit more time than in Poseidon, whereas saving takes less time.<br />

On a computer with relatively high specifications, the tool loads fast, but<br />

not faster than Poseidon because ArcStyler has to load many things at<br />

startup, like icons for diagrams like EJB Accessor diagram, Web<br />

Component diagram, etc. The saving time is less than 20 seconds in<br />

ArcStyler while Poseidon takes 25-35 seconds for the project shown in<br />

Figure 4.1.<br />

• Report generation facility did not work <strong>and</strong> reported errors in ArcStyler.<br />

No other form <strong>of</strong> documentation facility exists in the tool.<br />

• Forward engineering is possible in any language in ArcStyler, but reported errors<br />

with this version.<br />

• Test cases can be generated to test the model.<br />

• Created models are executed with the help <strong>of</strong> appropriate cartridge, any errors are<br />

135<br />

displayed in the output window, otherwise generates the code to the specified<br />

output directory <strong>and</strong> output directory path is specified in the output window.<br />

• Copy, cut, paste work within the tool, but not between applications; however<br />

models can be copied as images in .jpg format <strong>and</strong> pasted to windows applications


136<br />

like photo editor, Micros<strong>of</strong>t Word, <strong>and</strong> Word pad. Diagrams can be exported as<br />

.jpg, .wmf, .emf, .svg, <strong>and</strong> .png formats.<br />

• Printing is not supported in this version <strong>of</strong> ArcStyler.<br />

• External cartridges <strong>and</strong> plug-ins cannot be installed in this version <strong>of</strong> ArcStyler.<br />

Customized cartridges are also not allowed in this version.<br />

• Association classes cannot be created in ArcStyler, unlike Poseidon.<br />

• General drawing tools like circle, polygon, <strong>and</strong> rectangle are not present in<br />

ArcStyler.<br />

• Export format to Unisys XMI is supported in ArcStyler (XMI 1.0 <strong>and</strong> 1.1<br />

versions).<br />

• Project files are saved with .asprj extension, for each project, ArcStyler creates a<br />

.guifg file, a GUI configuration file. UML models are saved with .xml.zip, which<br />

are packed XML files. .guifg files are xml files <strong>and</strong> can be viewed in a browser.<br />

ArcStyler works only with the project file extension <strong>of</strong> .asprj or supports the<br />

import <strong>of</strong> .xml.zip files.<br />

• A backup file with .bak extension is created for every project.<br />

• Undo <strong>and</strong> redo action works.<br />

• Multiple stereotypes can be applied to elements.<br />

• Also custom stereotypes can be created <strong>and</strong> applied to all objects.<br />

• Fully implemented with Java <strong>and</strong> JPython classes. ArcStyler is platform-<br />

independent (works on all major platforms <strong>of</strong> Windows).<br />

• Internationalization, apart from English, it supports German <strong>and</strong> Spanish.


• Inline text editing is possible in ArcStyler, like Poseidon.<br />

• The Help menu worked in ArcStyler Community Architect Evaluation Edition.<br />

• A Zoom feature to see the model more clearly is available.<br />

• Other documentation written for a specific object will not appear in the source<br />

code <strong>of</strong> that object in this version.<br />

• ANT tool support is included in ArcStyler.<br />

137<br />

ANT tool description is given in the feature listing <strong>of</strong> GME 4. ANT comes<br />

as a built-in in ArcStyler.<br />

• Direct saving <strong>of</strong> UML model to .xml.zip, packed XML format.<br />

• Project UML model can be saved in XML (.xml.zip) format directly. There is no<br />

option for generating XML file without diagram information in ArcStyler.<br />

• Constraints can be specified in plain English, in addition to OCL, <strong>and</strong> ArcStyler<br />

checks OCL syntax with its built-in OCL syntax checking facility.<br />

• The Import feature works only for its .xml.zip files, but this feature did not work<br />

here.<br />

• The ArcStyler tool size is around 343 MB, more than six times the size <strong>of</strong> the<br />

other two tools, GME 4 <strong>and</strong> Poseidon. The reason is its architecture filled with<br />

cartridges.<br />

• When mouse is moved over an object, no documentation associated with the<br />

object is visible.<br />

• Directed associations, <strong>and</strong> self-associations cannot be drawn in ArcStyler.


• Relationships like dependencies, realizations, inheritance, composition <strong>and</strong><br />

aggregations including associations can be drawn in ArcStyler.<br />

• All nine types <strong>of</strong> UML diagrams are supported in ArcStyler.<br />

• The Search mechanism in ArcStyler allows user to search for an object in the<br />

model.<br />

• A DTD file is not available to parse through the XML file created by ArcStyler.<br />

• Auto save feature is not available in ArcStyler, unlike GME 4.<br />

• No concept <strong>of</strong> metamodel-to-model transformation in ArcStyler, unlike GME 4.<br />

• Notes are available to connect to model elements just like a Comment in<br />

Poseidon.<br />

Note is present in the Class diagram toolbar to specify some user-defined<br />

extra documentation for the model element. The user can connect the note<br />

to its element through a link associated with the note from the toolbar.<br />

Also notes can be written in multiple lines for better presentation.<br />

• Auto sizing <strong>of</strong> the elements is available in ArcStyler.<br />

• Reverse Engineering in Java is supported in this version <strong>of</strong> ArcStyler through a<br />

technique called harvesting.<br />

• Editing <strong>of</strong> the source code in the tool itself is not possible in ArcStyler.<br />

• Code generation is based on appropriate MDA-cartridges present in ArcStyler.<br />

• Interfaces can be made remote in ArcStyler for creating RMI components <strong>and</strong><br />

interfaces can possess attributes.<br />

138


• The user can restrict the model element from appearing in the generated source<br />

code by using the Ignore property <strong>of</strong> the model element.<br />

• Declarative tags in .NET, EJB <strong>and</strong> CORBA, <strong>and</strong> C# to any model element is<br />

supported in ArcStyler.<br />

• Attributes manipulation is controlled by the property called changeability.<br />

• Merging <strong>of</strong> current working project into existing project is not possible in<br />

ArcStyler.<br />

• Creation <strong>of</strong> realizations <strong>and</strong> associations are present among packages in<br />

ArcStyler.<br />

• Source code generation in ArcStyler is only for classes in this version.<br />

• ArcStyler tool working architectural style-plug-ins based through cartridges.<br />

But full commercial version <strong>of</strong> the tool supports creation <strong>of</strong> customized<br />

cartridges <strong>and</strong> integration with databases <strong>and</strong> development platforms like<br />

Rose.<br />

139


A.4. Source Code <strong>of</strong> the Interface for the Figure 5.1<br />

<br />

<br />

<br />

<br />

sub page_reload(sender as object, e as eventargs)<br />

' ****PAGE RELOAD PUSH BUTTON SUBROUTINE STARTS HERE****<br />

tbselect1.text=""<br />

tbpackage1.text="packagename1"<br />

tbpackage2.text="packagename2"<br />

tbpackage3.text="packagename3"<br />

tbpackage4.text="packagename4"<br />

tbselect2.text=""<br />

tbclass1.text="classname1"<br />

tbclass2.text="classname2"<br />

tbclass3.text="classname3"<br />

tbclass4.text="classname4"<br />

tbclass5.text="classname5"<br />

tbclass6.text="classname6"<br />

tbclass7.text="classname7"<br />

tbclass8.text="classname8"<br />

tbclass9.text="classname9"<br />

tbclass10.text="classname10"<br />

tbpleo1.text="pleomorph1"<br />

tbpleo2.text="pleomorph2"<br />

tbpleo3.text="pleomorph3"<br />

tbpleo4.text="pleomorph4"<br />

tbselect3.text=""<br />

tbrel1.text="relationname1"<br />

tbrel2.text="relationname2"<br />

tbrel3.text="relationname3"<br />

tbrel4.text="relationname4"<br />

tbrel5.text="relationname5"<br />

tbrel6.text="relationname6"<br />

tbrel7.text="relationname7"<br />

tbrel8.text="relationname8"<br />

tbrel9.text="relationname9"<br />

tbrel10.text="relationname10"<br />

tbselect4.text=""<br />

lbselect1.selectedindex=0<br />

lbselect2.selectedindex=0<br />

lbselect3.selectedindex=0<br />

lbselect4.selectedindex=0<br />

140


' ****PAGE RELOAD PUSH BUTTON SUBROUTINE ENDS****<br />

end sub<br />

sub clear(sender as object, e as eventargs)<br />

' ****CLEAR PUSH BUTTON SUBROUTINE STARTS HERE****<br />

tbselect1.text=""<br />

tbpackage1.text=""<br />

tbpackage2.text=""<br />

tbpackage3.text=""<br />

tbpackage4.text=""<br />

tbselect2.text=""<br />

tbclass1.text=""<br />

tbclass2.text=""<br />

tbclass3.text=""<br />

tbclass4.text=""<br />

tbclass5.text=""<br />

tbclass6.text=""<br />

tbclass7.text=""<br />

tbclass8.text=""<br />

tbclass9.text=""<br />

tbclass10.text=""<br />

tbpleo1.text=""<br />

tbpleo2.text=""<br />

tbpleo3.text=""<br />

tbpleo4.text=""<br />

tbselect3.text=""<br />

tbrel1.text=""<br />

tbrel2.text=""<br />

tbrel3.text=""<br />

tbrel4.text=""<br />

tbrel5.text=""<br />

tbrel6.text=""<br />

tbrel7.text=""<br />

tbrel8.text=""<br />

tbrel9.text=""<br />

tbrel10.text=""<br />

tbselect4.text=""<br />

lbselect1.selectedindex=0<br />

lbselect2.selectedindex=0<br />

lbselect3.selectedindex=0<br />

lbselect4.selectedindex=0<br />

' ****CLEAR PUSH BUTTON SUBROUTINE ENDS****<br />

end sub<br />

sub getselection1(sender as object, e as eventargs)<br />

141


' ****FIRST SELECT PUSH BUTTON SUBROUTINE STARTS HERE****<br />

dim item as listitem<br />

tbpackage1.text=""<br />

tbclass1.text=""<br />

tbclass2.text=""<br />

tbrel1.text=""<br />

tbrel2.text=""<br />

tbrel3.text=""<br />

for each item in lbselect1.items<br />

if item.selected=true then<br />

if item.text="packagename1" then<br />

tbpackage1.text = item.text<br />

elseif item.text="classname1" then<br />

tbclass1.text=item.text<br />

elseif item.text="classname2" then<br />

tbclass2.text=item.text<br />

elseif item.text="relationname1" then<br />

tbrel1.text=item.text<br />

elseif item.text="relationname2" then<br />

tbrel2.text=item.text<br />

elseif item.text="relationname3" then<br />

tbrel3.text=item.text<br />

else<br />

tbpackage1.text=""<br />

tbclass1.text=""<br />

tbclass2.text=""<br />

tbrel1.text=""<br />

tbrel2.text=""<br />

tbrel3.text=""<br />

end if<br />

end if<br />

next<br />

' ****FIRST SELECT PUSH BUTTON SUBROUTINE ENDS****<br />

end sub<br />

142


sub getinfo1(sender as object, e as eventargs)<br />

' ****FIRST INFORMATION PUSH BUTTON SUBROUTINE STARTS HERE****<br />

dim item as listitem<br />

tbselect1.text=""<br />

for each item in lbselect1.items<br />

if item.selected=true then<br />

if item.text="packagename1" then<br />

tbselect1.text = "A package component is needed for it contains all other components."<br />

elseif item.text="classname1" then<br />

tbselect1.text="A class is essential."<br />

elseif item.text="classname2" then<br />

tbselect1.text="A class is essential."<br />

elseif item.text="relationname1" then<br />

tbselect1.text="The relationship is required in the domain."<br />

elseif item.text="relationname2" then<br />

tbselect1.text="The relationship is required in the domain."<br />

elseif item.text="relationname3" then<br />

tbselect1.text="The relationship is required in the domain."<br />

else tbselect1.text=""<br />

end if<br />

end if<br />

next<br />

' ****FIRST INFORMATION PUSH BUTTON SUBROUTINE ENDS****<br />

end sub<br />

sub getselection2(sender as object, e as eventargs)<br />

' ****SECOND SELECT PUSH BUTTON SUBROUTINE STARTS HERE****<br />

dim item as listitem<br />

tbpackage2.text=""<br />

tbclass3.text=""<br />

tbclass4.text=""<br />

tbrel4.text=""<br />

143


tbrel5.text=""<br />

tbpleo1.text=""<br />

if (tbpackage1.text="" <strong>and</strong> tbclass1.text="" <strong>and</strong> tbclass2.text="") then<br />

lblerrmsg.text="ERROR MSG 101:Please select previous list box components to proceed further"<br />

tbpackage2.enabled=not(tbpackage2.enabled)<br />

tbrel4.enabled=not(tbrel4.enabled)<br />

tbrel5.enabled=not(tbrel5.enabled)<br />

tbclass3.enabled=not(tbclass3.enabled)<br />

tbclass4.enabled=not(tbclass4.enabled)<br />

tbpleo1.enabled=not(tbpleo1.enabled)<br />

else<br />

lblerrmsg.text=""<br />

for each item in lbselect2.items<br />

if item.selected=true then<br />

if item.text="packagename2" then<br />

tbpackage2.text = item.text<br />

elseif item.text="classname3" then<br />

tbclass3.text=item.text<br />

elseif item.text="classname4" then<br />

tbclass4.text=item.text<br />

elseif item.text="pleomorph1" then<br />

tbpleo1.text=item.text<br />

elseif item.text="relationname4" then<br />

tbrel4.text=item.text<br />

elseif item.text="relationname5" then<br />

tbrel5.text=item.text<br />

else<br />

tbpackage2.text=""<br />

tbclass3.text=""<br />

tbclass4.text=""<br />

tbrel4.text=""<br />

tbrel5.text=""<br />

tbpleo1.text=""<br />

end if<br />

end if<br />

144


next<br />

end if<br />

' ****SECOND SELECT PUSH BUTTON SUBROUTINE ENDS****<br />

end sub<br />

sub getinfo2(sender as object, e as eventargs)<br />

' ****SECOND INFORMATION PUSH BUTTON SUBROUTINE STARTS HERE****<br />

dim item as listitem<br />

tbselect2.text=""<br />

for each item in lbselect2.items<br />

if item.selected=true then<br />

if item.text="packagename2" then<br />

tbselect2.text = "A package component is needed for it contains all other components."<br />

elseif item.text="classname3" then<br />

tbselect2.text="A class is essential."<br />

elseif item.text="classname4" then<br />

tbselect2.text="A class is essential."<br />

elseif item.text="pleomorph1" then<br />

tbselect2.text="The pleomorph is required in the domain."<br />

elseif item.text="relationname4" then<br />

tbselect2.text="The relationship is required in the domain."<br />

elseif item.text="relationname5" then<br />

tbselect2.text="The relationship is required in the domain."<br />

else tbselect2.text=""<br />

end if<br />

end if<br />

next<br />

' ****SECOND INFORMATION PUSH BUTTON SUBROUTINE ENDS****<br />

end sub<br />

sub getselection3(sender as object, e as eventargs)<br />

145


' ****THRID SELECT PUSH BUTTON SUBROUTINE STARTS HERE****<br />

dim item as listitem<br />

tbpackage3.text=""<br />

tbclass5.text=""<br />

tbclass6.text=""<br />

tbpleo2.text=""<br />

tbrel6.text=""<br />

tbrel7.text=""<br />

tbrel8.text=""<br />

if (tbpackage2.text="" <strong>and</strong> tbclass3.text="" <strong>and</strong> tbclass4.text="") then<br />

lblerrmsg.text="ERROR MSG 102:Please select previous list box components to proceed further"<br />

tbpackage3.enabled=not(tbpackage3.enabled)<br />

tbrel6.enabled=not(tbrel6.enabled)<br />

tbrel7.enabled=not(tbrel7.enabled)<br />

tbrel8.enabled=not(tbrel8.enabled)<br />

tbclass5.enabled=not(tbclass5.enabled)<br />

tbclass6.enabled=not(tbclass6.enabled)<br />

tbpleo2.enabled=not(tbpleo2.enabled)<br />

else<br />

lblerrmsg.text=""<br />

for each item in lbselect3.items<br />

if item.selected=true then<br />

if item.text="packagename3" then<br />

tbpackage3.text = item.text<br />

elseif item.text="classname5" then<br />

tbclass5.text=item.text<br />

elseif item.text="classname6" then<br />

tbclass6.text=item.text<br />

elseif item.text="pleomorph2" then<br />

tbpleo2.text = item.text<br />

elseif item.text="relationname6" then<br />

tbrel6.text=item.text<br />

elseif item.text="relationname7" then<br />

tbrel7.text=item.text<br />

elseif item.text="relationname8" then<br />

tbrel8.text=item.text<br />

146


else<br />

tbpackage3.text=""<br />

tbclass5.text=""<br />

tbclass6.text=""<br />

tbrel6.text=""<br />

tbrel7.text=""<br />

tbrel8.text=""<br />

tbpleo2.text=""<br />

end if<br />

end if<br />

next<br />

end if<br />

' ****THIRD SELECT PUSH BUTTON SUBROUTINE ENDS****<br />

end sub<br />

sub getinfo3(sender as object, e as eventargs)<br />

' ****THIRD INFORMATION PUSH BUTTON SUBROUTINE STARTS HERE****<br />

dim item as listitem<br />

tbselect3.text=""<br />

for each item in lbselect3.items<br />

if item.selected=true then<br />

if item.text="packagename3" then<br />

tbselect3.text = "A package component is needed for it contains all other components."<br />

elseif item.text="classname5" then<br />

tbselect3.text="A class is essential."<br />

elseif item.text="classname6" then<br />

tbselect3.text="A class is essential."<br />

elseif item.text="pleomorph2" then<br />

tbselect3.text="The pleomorph is required in the domain."<br />

elseif item.text="relationname6" then<br />

tbselect3.text="The relationship is required in the domain."<br />

elseif item.text="relationname7" then<br />

tbselect3.text="The relationship is required in the domain."<br />

elseif item.text="relationname8" then<br />

147


tbselect3.text="The relationship is required in the domain."<br />

else tbselect3.text=""<br />

end if<br />

end if<br />

next<br />

' ****THIRD INFORMATION PUSH BUTTON SUBROUTINE ENDS****<br />

end sub<br />

sub getselection4(sender as object, e as eventargs)<br />

' ****FOURTH SELECT PUSH BUTTON SUBROUTINE STARTS HERE****<br />

dim item as listitem<br />

tbpackage4.text=""<br />

tbclass7.text=""<br />

tbclass8.text=""<br />

tbclass9.text=""<br />

tbclass10.text=""<br />

tbpleo3.text=""<br />

tbpleo4.text=""<br />

tbrel9.text=""<br />

tbrel10.text=""<br />

if (tbpackage3.text="" <strong>and</strong> tbclass5.text="" <strong>and</strong> tbclass6.text="") then<br />

lblerrmsg.text="ERROR MSG 103:Please select previous list box components to proceed further"<br />

tbpackage4.enabled=not(tbpackage4.enabled)<br />

tbrel9.enabled=not(tbrel9.enabled)<br />

tbrel10.enabled=not(tbrel10.enabled)<br />

tbclass7.enabled=not(tbclass7.enabled)<br />

tbclass8.enabled=not(tbclass8.enabled)<br />

tbclass9.enabled=not(tbclass9.enabled)<br />

tbclass10.enabled=not(tbclass10.enabled)<br />

tbpleo3.enabled=not(tbpleo3.enabled)<br />

tbpleo4.enabled=not(tbpleo4.enabled)<br />

else<br />

lblerrmsg.text=""<br />

for each item in lbselect4.items<br />

if item.selected=true then<br />

148


if item.text="packagename4" then<br />

tbpackage4.text = item.text<br />

elseif item.text="classname7" then<br />

tbclass7.text=item.text<br />

elseif item.text="classname8" then<br />

tbclass8.text = item.text<br />

elseif item.text="classname9" then<br />

tbclass9.text = item.text<br />

elseif item.text="classname10" then<br />

tbclass10.text = item.text<br />

elseif item.text="pleomorph3" then<br />

tbpleo3.text = item.text<br />

elseif item.text="pleomorph4" then<br />

tbpleo4.text = item.text<br />

elseif item.text="relationname9" then<br />

tbrel9.text = item.text<br />

elseif item.text="relationname10" then<br />

tbrel10.text = item.text<br />

else item.selected=false<br />

end if<br />

end if<br />

next<br />

end if<br />

' ****FOURTH SELECT PUSH BUTTON SUBROUTINE ENDS****<br />

end sub<br />

sub getinfo4(sender as object, e as eventargs)<br />

' ****FOURTH INFORMATION PUSH BUTTON SUBROUTINE STARTS<br />

HERE****<br />

dim item as listitem<br />

tbselect4.text=""<br />

for each item in lbselect4.items<br />

149


if item.selected=true then<br />

if item.text="packagename4" then<br />

tbselect4.text = "A package component is needed for it contains all other components."<br />

elseif item.text="classname7" then<br />

tbselect4.text="A class is essential."<br />

elseif item.text="classname8" then<br />

tbselect4.text="A class is essential."<br />

elseif item.text="classname9" then<br />

tbselect4.text="A class is essential."<br />

elseif item.text="classname10" then<br />

tbselect4.text="A class is essential."<br />

elseif item.text="pleomorph3" then<br />

tbselect4.text="The pleomorph is required in the domain."<br />

elseif item.text="pleomorph4" then<br />

tbselect4.text="The pleomorph is required in the domain."<br />

elseif item.text="relationname9" then<br />

tbselect4.text="The relationship is required in the domain."<br />

elseif item.text="relationname10" then<br />

tbselect4.text="The relationship is required in the domain."<br />

else tbselect4.text=""<br />

end if<br />

end if<br />

next<br />

' ****FOURTH INFORMATION PUSH BUTTON SUBROUTINE ENDS****<br />

end sub<br />

<br />

<br />

<br />

<br />

<br />


forecolor="white" font-bold="true" font-size="13pt"<br />

text="APPLICATION MODEL FOR DEVELOPING VARIANTS"><br />

<br />

<br />

<br />

151<br />

<br />

<br />

<br />

<br />

<br />

<br />

packagename1<br />

classname1<br />

classname2<br />

relationname1<br />

relationname2<br />

relationname3<br />

&nbsp;&nbsp;&nbsp;<br />

<br />

<br />

<br />

&nbsp;&nbsp;<br />

&nbsp;&nbsp;<br />

&nbsp;&nbsp;<br />

&nbsp;&nbsp;


&nbsp;&nbsp;<br />

<br />

152<br />

<br />

<br />

packagename2<br />

classname3<br />

classname4<br />

pleomorph1<br />

relationname4<br />

relationname5<br />

&nbsp;&nbsp;&nbsp;<br />

<br />

<br />

<br />

&nbsp;&nbsp;<br />

&nbsp;&nbsp;<br />

&nbsp;&nbsp;<br />

&nbsp;&nbsp;<br />

&nbsp;&nbsp;<br />

<br />

<br />

<br />

packagename3<br />

classname5<br />

classname6<br />

pleomorph2<br />

relationname6<br />

relationname7<br />

relationname8<br />

&nbsp;&nbsp;&nbsp;


153<br />

<br />

<br />

<br />

&nbsp;<br />

&nbsp;<br />

&nbsp;<br />

&nbsp;<br />

&nbsp;<br />

&nbsp;<br />

<br />

<br />

<br />

packagename4<br />

classname7<br />

classname8<br />

classname9<br />

classname10<br />

pleomorph3<br />


<br />

<br />

<br />

<br />

<br />

<br />

154


A.5. Source Code <strong>of</strong> the Generated XML File for the Figure 5.1<br />

Imports System<br />

Imports System.Xml<br />

Imports System.Web<br />

Imports System.Web.UI<br />

Imports System.Web.UI.WebControls<br />

Public Class sample<br />

Inherits System.Web.UI.Page<br />

' ****GENERATE XML FILE PUSH BUTTON SUBROUTINE STARTS HERE****<br />

public tbpackage1 as textbox<br />

public tbpackage2 as textbox<br />

public tbpackage3 as textbox<br />

public tbpackage4 as textbox<br />

public tbclass1 as textbox<br />

public tbclass2 as textbox<br />

public tbclass3 as textbox<br />

public tbclass4 as textbox<br />

public tbclass5 as textbox<br />

public tbclass6 as textbox<br />

public tbclass7 as textbox<br />

public tbclass8 as textbox<br />

public tbclass9 as textbox<br />

public tbclass10 as textbox<br />

public tbpleo1 as textbox<br />

public tbpleo2 as textbox<br />

public tbpleo3 as textbox<br />

public tbpleo4 as textbox<br />

public tbrel1 as textbox<br />

public tbrel2 as textbox<br />

public tbrel3 as textbox<br />

public tbrel4 as textbox<br />

public tbrel5 as textbox<br />

public tbrel6 as textbox<br />

public tbrel7 as textbox<br />

public tbrel8 as textbox<br />

public tbrel9 as textbox<br />

public tbrel10 as textbox<br />

public lbselect1 as list box<br />

public lbselect2 as list box<br />

public lbselect3 as list box<br />

public lbselect4 as list box<br />

public lblmsgerr as label<br />

dim str as string=" "<br />

155


sub createxmlfile(sender as object, e as eventargs)<br />

' ****CREATEXMLFILE SUBROUTINE STARTS HERE****<br />

dim currentContext As System.Web.HttpContext = System.Web.HttpContext.Current<br />

dim writer as XmlTextWriter<br />

if (tbpackage4.text="" <strong>and</strong> tbclass7.text="" <strong>and</strong> tbclass8.text="" <strong>and</strong> tbclass9.text="" <strong>and</strong><br />

tbclass10.text="" <strong>and</strong> tbpleo3.text="" <strong>and</strong> tbpleo4.text="" <strong>and</strong> tbrel9.text="" <strong>and</strong> tbrel10.text="")<br />

then<br />

currentContext.response.Redirect("error.xml")<br />

else<br />

try<br />

writer = new XmlTextWriter(currentContext.Server.MapPath("result.xml"), nothing)<br />

writer.writestartdocument<br />

writer.formatting = formatting.indented<br />

writer.indentation=3<br />

writer.writestartelement("packagelibrary")<br />

' ****FIRST PACKAGE CODE BEGINS****<br />

writer.writestartelement("package")<br />

if tbpackage1.text"" then<br />

writer.writeelementstring("archetype-pattern", tbpackage1.text)<br />

end if<br />

writer.writestartelement("class")<br />

if tbclass1.text"" then<br />

writer.writeelementstring("archetype", tbclass1.text)<br />

end if<br />

writer.writeendelement()<br />

writer.writestartelement("class")<br />

if tbclass2.text"" then<br />

writer.writeelementstring("archetype", tbclass2.text)<br />

end if<br />

writer.writeendelement()<br />

writer.writestartelement("Relationships")<br />

if tbrel1.text"" then<br />

writer.writeelementstring("relationshiptype", tbrel1.text)<br />

end if<br />

if tbrel2.text"" then<br />

writer.writeelementstring("relationshiptype", tbrel2.text)<br />

156


end if<br />

if tbrel3.text"" then<br />

writer.writeelementstring("relationshiptype", tbrel3.text)<br />

end if<br />

writer.writeendelement()<br />

writer.writeendelement()<br />

' ****END OF FIRST PACKAGE CODE****<br />

' ****SECOND PACKAGE CODE BEGINS****<br />

writer.writestartelement("package")<br />

if tbpackage2.text"" then<br />

writer.writeelementstring("archetype-pattern", tbpackage2.text)<br />

end if<br />

writer.writestartelement("class")<br />

if tbclass3.text"" then<br />

writer.writeelementstring("archetype", tbclass3.text)<br />

end if<br />

writer.writeendelement()<br />

writer.writestartelement("class")<br />

if tbclass4.text"" then<br />

writer.writeelementstring("archetype", tbclass4.text)<br />

end if<br />

writer.writestartelement("pleomorph")<br />

if tbpleo1.text"" then<br />

writer.writeelementstring("pleomorph", tbpleo1.text)<br />

end if<br />

writer.writeendelement()<br />

writer.writeendelement()<br />

writer.writestartelement("Relationships")<br />

if tbrel4.text"" then<br />

writer.writeelementstring("relationshiptype", tbrel4.text)<br />

end if<br />

if tbrel5.text"" then<br />

writer.writeelementstring("relationshiptype", tbrel5.text)<br />

end if<br />

writer.writeendelement()<br />

writer.writeendelement()<br />

' ****END OF SECOND PACKAGE CODE****<br />

' ****THIRD PACKAGE CODE BEGINS****<br />

writer.writestartelement("package")<br />

if tbpackage3.text"" then<br />

157


writer.writeelementstring("archetype-pattern", tbpackage3.text)<br />

end if<br />

writer.writestartelement("class")<br />

if tbclass5.text"" then<br />

writer.writeelementstring("archetype", tbclass5.text)<br />

end if<br />

writer.writeendelement()<br />

writer.writestartelement("class")<br />

if tbclass6.text"" then<br />

writer.writeelementstring("archetype", tbclass6.text)<br />

end if<br />

writer.writeendelement()<br />

writer.writestartelement("pleomorph")<br />

if tbpleo2.text"" then<br />

writer.writeelementstring("pleomorph", tbpleo2.text)<br />

end if<br />

writer.writeendelement()<br />

writer.writestartelement("Relationships")<br />

if tbrel6.text"" then<br />

writer.writeelementstring("relationshiptype", tbrel6.text)<br />

end if<br />

if tbrel7.text"" then<br />

writer.writeelementstring("relationshiptype", tbrel7.text)<br />

end if<br />

if tbrel8.text"" then<br />

writer.writeelementstring("relationshiptype", tbrel8.text)<br />

end if<br />

writer.writeendelement()<br />

writer.writeendelement()<br />

' ****END OF THIRD PACKAGE CODE****<br />

' ****FOURTH PACKAGE CODE BEGINS****<br />

writer.writestartelement("package")<br />

if tbpackage4.text"" then<br />

writer.writeelementstring("archetype-pattern", tbpackage4.text)<br />

end if<br />

writer.writestartelement("class")<br />

if tbclass7.text"" then<br />

writer.writeelementstring("archetype", tbclass7.text)<br />

end if<br />

writer.writeendelement()<br />

writer.writestartelement("class")<br />

if tbclass8.text"" then<br />

writer.writeelementstring("archetype", tbclass8.text)<br />

end if<br />

158


writer.writeendelement()<br />

writer.writestartelement("class")<br />

if tbclass9.text"" then<br />

writer.writeelementstring("archetype", tbclass9.text)<br />

end if<br />

writer.writeendelement()<br />

writer.writestartelement("class")<br />

if tbclass10.text"" then<br />

writer.writeelementstring("archetype", tbclass10.text)<br />

end if<br />

writer.writeendelement()<br />

writer.writestartelement("pleomorph")<br />

if tbpleo3.text"" then<br />

writer.writeelementstring("pleomorph", tbpleo3.text)<br />

end if<br />

writer.writeendelement()<br />

writer.writestartelement("pleomorph")<br />

if tbpleo4.text"" then<br />

writer.writeelementstring("pleomorph", tbpleo4.text)<br />

end if<br />

writer.writeendelement()<br />

writer.writestartelement("Relationships")<br />

if tbrel9.text"" then<br />

writer.writeelementstring("relationshiptype", tbrel9.text)<br />

end if<br />

if tbrel10.text"" then<br />

writer.writeelementstring("relationshiptype", tbrel10.text)<br />

end if<br />

writer.writeendelement()<br />

writer.writeendelement()<br />

' ****END OF FOURTH PACKAGE CODE****<br />

writer.writeendelement()<br />

catch ex as exception<br />

str="error accessing XML file"<br />

finally<br />

writer.close()<br />

currentContext.response.Redirect("result.xml")<br />

end try<br />

end if<br />

' ****CREATEXMLFILE SUBROUTINE ENDS****<br />

end sub<br />

' ****GENERATE XML FILE PUSH BUTTON SUBROUTINE ENDS****<br />

End Class<br />

159


A.6. XML File <strong>of</strong> the <strong>Variant</strong> Model-1 for the Figure 5.6<br />

<br />

- <br />

- <br />

packagename1<br />

- <br />

classname1<br />

<br />

<br />

- <br />

relationname2<br />

<br />

<br />

- <br />

packagename2<br />

- <br />

classname3<br />

<br />

- <br />

classname4<br />

- <br />

pleomorph1<br />

<br />

<br />

- <br />

relationname5<br />

<br />

<br />

- <br />

packagename3<br />

- <br />

classname5<br />

<br />

- <br />

classname6<br />

<br />

<br />

- <br />

relationname7<br />

relationname8<br />

<br />

<br />

- <br />

packagename4<br />

- <br />

classname7<br />

160


- <br />

classname8<br />

<br />

<br />

- <br />

classname10<br />

<br />

<br />

- <br />

pleomorph4<br />

<br />

- <br />

relationname10<br />

<br />

<br />

161


A.7. XML File <strong>of</strong> the <strong>Variant</strong> Model-2 for the Figure 5.7<br />

<br />

- <br />

- <br />

<br />

- <br />

classname2<br />

<br />

- <br />

relationname2<br />

relationname3<br />

<br />

<br />

- <br />

- <br />

classname3<br />

<br />

- <br />

classname4<br />

- <br />

pleomorph1<br />

<br />

<br />

- <br />

relationname5<br />

<br />

<br />

- <br />

packagename3<br />

<br />

<br />

<br />

- <br />

relationname6<br />

relationname8<br />

<br />

<br />

- <br />

- <br />

classname7<br />

<br />

- <br />

classname8<br />

<br />

<br />

<br />

- <br />

162


pleomorph3<br />

<br />

<br />

- <br />

relationname9<br />

relationname10<br />

<br />

<br />

<br />

163


A.8. XML File <strong>of</strong> the <strong>Variant</strong> Model-3 for the Figure 5.8<br />

<br />

- <br />

- <br />

packagename1<br />

- <br />

classname1<br />

<br />

- <br />

classname2<br />

<br />

- <br />

relationname3<br />

<br />

<br />

- <br />

packagename2<br />

<br />

- <br />

classname4<br />

<br />

<br />

- <br />

relationname4<br />

relationname5<br />

<br />

<br />

- <br />

- <br />

classname5<br />

<br />

<br />

- <br />

pleomorph2<br />

<br />

- <br />

relationname6<br />

relationname7<br />

relationname8<br />

<br />

<br />

- <br />

- <br />

classname7<br />

<br />

<br />

<br />

164


- <br />

classname10<br />

<br />

<br />

- <br />

pleomorph4<br />

<br />

- <br />

relationname9<br />

<br />

<br />

<br />

165


A.9. Complete Listing <strong>of</strong> the XMI File for the Figure 4.1<br />

166<br />

<br />

<br />

<br />

<br />

Netbeans XMI Writer<br />

1.0<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Package<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />


167<br />

visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'<br />

isAbstract = 'false'><br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />


168<br />

isAbstract = 'false'><br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />


LIST OF REFERENCES<br />

[1] “Object Management Group”. Last referenced: November 12, 2004.<br />

http://www.omg.org/<br />

[2] Clauss, M., “Modeling Variability with UML”, Intershop Research, S<strong>of</strong>tware<br />

Engineering Group, Dresden University <strong>of</strong> Technology, June 29, 2001.<br />

Last referenced: November 12, 2004.<br />

http://www.netobjectdays.org/pdf/01/papers/ws-gcse/matthias_clauss_gcse.pdf<br />

169<br />

[3] Clauss, M., “Generic Modeling using UML Extensions for Variability”, Intershop<br />

Research, S<strong>of</strong>tware Engineering Group, Dresden University <strong>of</strong> Technology, September<br />

14, 2001. Last referenced: November 12, 2004.<br />

http://www.isis.v<strong>and</strong>erbilt.edu/oopsla2k1/Papers/Clauss.pdf<br />

[4] Jacobson, I., Griss, M.L., <strong>and</strong> Jonnson, P., “S<strong>of</strong>tware Reuse - Architecture - Process<br />

<strong>and</strong> Organization for Business Success”, Addison-Wesley Longman, 1997.<br />

[5] Clauss, M., “Untersuchung der Modellierung von Variabilität in UML”, diploma<br />

thesis, August 2001. Last referenced: November 12, 2004.<br />

http://www-st.inf.tu-dresden.de/home/html/de/diplomarbeiten/DAClauss.pdf<br />

[6] Robak, S., Franczyk, B., <strong>and</strong> Politowicz, K., “Extending the UML for Modeling<br />

Variability in System Families”, Intl. Journal Appl. Math. Computer Science, 2002,<br />

Vol.12, No.2, pp. 285-298. Last referenced: November 12, 2004.<br />

http://matwbn.icm.edu.pl/ksiazki/amc/amc12/amc1227.pdf<br />

[7] Varghese, C., “Examining, Documenting <strong>and</strong> Modeling the Problem Space <strong>of</strong> a<br />

Variable Domain”. M.S. Project, TR-CIS-0612-02, Department <strong>of</strong> Computer &<br />

Information Science, Indiana University Purdue University Indianapolis, June 14, 2002.<br />

Last referenced: November 16, 2004.<br />

http://www.cs.iupui.edu/<strong>UniFrame</strong>/pubs-openaccess/tinaProjectFinal.pdf<br />

[8] Arlow, J., <strong>and</strong> Neustadt, I., “Enterprise Patterns And MDA, Building Better S<strong>of</strong>tware<br />

With Archetype Patterns And UML”, Addison-Wesley, 2003.<br />

[9] “The Generic Modeling Environment”. Last referenced: November 12, 2004.<br />

http://www.isis.v<strong>and</strong>erbilt.edu/Projects/gme/<br />

[10] “Model Integrated Computing”. Last referenced: November 12, 2004.<br />

http://www.isis.v<strong>and</strong>erbilt.edu/


[11] “Poseidon for UML”. Last referenced: November 12, 2004.<br />

http://www.gentleware.com/company/CompanyProductOverview.pdf<br />

[12] “Screenshots <strong>of</strong> Poseidon for UML”. Last referenced: November 12, 2004.<br />

http://www.gentleware.com/products/screenshots/<br />

[13] “Poseidon for UML User’s Guide”. Last referenced: November 12, 2004.<br />

http://www.gentleware.com/products/documentation/PoseidonUsersGuide.pdf<br />

170<br />

[14] Grotens, R., “MDA-based Development in Practice Uniting Model <strong>and</strong> Code So<br />

That They Can‘t Drift Apart”, Technical Overview, Compuware. Last referenced:<br />

November 12, 2004.<br />

http://www.java.no/web/moter/javazone03/presentations/RuudGrotens/Sc<strong>and</strong>inavia.pdf<br />

[15] “Leading the Way in Model Driven Architecture”.<br />

Last referenced: November 12, 2004.<br />

http://www.ArcStyler.com<br />

[16] “The Architecture IDE for MDA”. Last referenced: November 12, 2004.<br />

http://www.ArcStyler.com/as_support/factsheets/iO_ArcStyler_Overview.pdf<br />

[17] “ArcStyler®/MDA Details”. Last referenced: November 12, 2004.<br />

http://www.ArcStyler.com/as_support/factsheets/iO_ArcStyler_MDA_Details.pdf<br />

[18] “ArcStyler’s Modeling style <strong>and</strong> User’s Guide for ArcStyler 4.0”.<br />

Last referenced: November 12, 2004.<br />

http://www.ArcStyler.com/<br />

[19] “Poseidon Diagram Interchange St<strong>and</strong>ard 2.0”. Last referenced: November 12, 2004.<br />

http://www.gentleware.com/knowledge/dinterchange.php4<br />

[20] Sochos, P., Philippow, I., <strong>and</strong> Riebisch, M., “Feature-oriented Development <strong>of</strong><br />

S<strong>of</strong>tware Product Lines: Mapping Feature Models to the Architecture”, Technical<br />

University Ilmenau, Ilmenau, Germany. Last referenced: November 16, 2004.<br />

http://www.theoinf.tu-ilmenau.de/~pld


Other Bibliographic Material<br />

Booch, G., Rumbaugh, J., <strong>and</strong> Jacobson, I., “The Unified Modeling Language User’s<br />

Guide”, Addison-Wesley, 1999.<br />

Pashov, I., <strong>and</strong> Riebisch, M., “Using Feature Modeling for Program Comprehension <strong>and</strong><br />

S<strong>of</strong>tware Architecture Recovery”, Technical University, Ilmenau, Germany.<br />

Last referenced: November 12, 2004.<br />

http://www.theoinf.tu-ilmenau.de/~riebisch/publ/ecbs03-fosar.pdf<br />

Soley, R., <strong>and</strong> OMG Staff Strategy Group, “Model Driven Architecture”, Object<br />

Management Group, White Paper, Draft 3.2, November 27, 2000.<br />

Last referenced: November 12, 2004.<br />

http://www.catalysis.org/publications/papers/2001-mda-Overview-00-11-05.pdf<br />

“ArcStyler MDA-Business Transformer Tutorial for ArcStyler Version 3.x”.<br />

Last referenced: November 12, 2004.<br />

http://www.io-s<strong>of</strong>tware.com/as_support/docu/BTA_Modeling_Style_Guide.pdf<br />

Garcia, A.B., Mansell, J., <strong>and</strong> Sellier, D., “From Customer Requirements to PIM:<br />

Necessity <strong>and</strong> Reality”, European S<strong>of</strong>tware Institute, Bizkaia, Spain.<br />

Last referenced: November 12, 2004.<br />

http://www.metamodel.com/wisme-2002/papers/belenGarcia.pdf<br />

Riebisch, M., Bollert, K., Streitferdt, D., <strong>and</strong> Philippow, I., “Extending Feature Diagrams<br />

with UML Multiplicities”, Integrated Design <strong>and</strong> Process Technology, IDPT-2002.<br />

Last referenced: November 12, 2004.<br />

http://www.theoinf.tu-ilmenau.de/~streitdf/TheHome/own/data/IDPT2002-paper.pdf<br />

Neighbors, J., “Domain Analysis <strong>and</strong> Generative Implementation”, Bayfront<br />

Technologies, Newport Beach, CA. Last referenced: November 12, 2004.<br />

http://www.bayfronttechnologies.com/icsr5dp.pdf<br />

171<br />

Poole, J., “Model Driven Architecture: Vision, St<strong>and</strong>ards And Emerging Technologies”,<br />

Position Paper submitted to ECOOP 2001, Hyperion Solutions Corporation, April 2001.<br />

Last referenced: November 12, 2004<br />

http://www.omg.org/mda/mda_files/Model-Driven_Architecture.pdf<br />

Iyengar, S., “Model Driven Web Services Development using UML, XML, WSDL &<br />

BPEL4WS”, Object Management Group Architecture Board, SI-SE 2004.<br />

Last referenced: November 12, 2004.<br />

http://www.ifi.unizh.ch/si-se/sise2004/Tutorial_Iyengar.pdf


Guy, C., <strong>and</strong> Sourrouille, L., “Model Mapping in MDA”, INSA, France. Last referenced:<br />

November 12, 2004.<br />

http://www.metamodel.com/wisme-2002/papers/caplat.pdf<br />

172<br />

Sprinkle, J., Karsai, G., Ledeczi, A., Nordstrom, G., Bakay, A., Garrett, J., Thomason, C.,<br />

<strong>and</strong> Volgyesi, P., “The Generic Modeling Environment,” ISIS, V<strong>and</strong>erbilt University,<br />

Nashville, TN.<br />

Last referenced: November 12, 2004.<br />

http://www.isis.v<strong>and</strong>erbilt.edu/publications/archive/Ledeczi_A_5_17_2001_The_Generi.<br />

pdf<br />

Ziadi, T., Jezequel, J., <strong>and</strong> Fondement, F., “Product Line Derivation with UML”, IRISA,<br />

Campus Universitaire de Beaulieu, France. Last referenced: November 19, 2004.<br />

http://lgl.epfl.ch/members/fondement/docs/papers/Ziadi03b.pdf<br />

Dykman, N., “SAGE: Generating Applications with UML <strong>and</strong> Components”, M.S.<br />

Thesis, Department <strong>of</strong> Computer Science, University <strong>of</strong> Utah, August 1999.<br />

Last referenced: November 23, 2004.<br />

http://www.cs.utah.edu/~ndykman/Draft.pdf

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!