Faculty of Information Technology Department of Software Engineering Bachelors thesis Applying OntoUML for structural denitions of Normalized Systems Expanders Vincenc Kolark Supervisor: Ing. Robert Pergl, Ph.D. 13th May 2014 Acknowledgements Greatest thanks go to Ing. Robert Pergl, Ph.D. for introducing me to these interesting topics, as well as his encouraging consultations and inspirational guidance. Another great deal of gratitude belongs to ir. Paul Adriaenssens for prompt responses to my ddly questions about NSE and for the time spent performing my case study, even on Sunday nights. Thanks to my family and my friends, for staying my family and my friends. And nally, thanks to my cat Sarah, for keeping me company during sleepless nights. Declaration I hereby declare that the presented thesis is my own work and that I have cited all sources of information in accordance with the Guideline for adhering to ethical principles when elaborating an academic nal thesis. I acknowledge that my thesis is subject to the rights and obligations stip- ulated by the Act No. 121/2000 Coll., the Copyright Act, as amended, in particular that the Czech Technical University in Prague has the right to con- clude a license agreement on the utilization of this thesis as school work under the provisions of Article 60(1) of the Act. In Prague on 13th May 2014 . . . . . . . . . . . . . . . . . . . . . Czech Technical University in Prague Faculty of Information Technology c 2014 Vincenc Kolark. All rights reserved. This thesis is school work as dened by Copyright Act of the Czech Republic. It has been submitted at Czech Technical University in Prague, Faculty of Information Technology. The thesis is protected by the Copyright Act and its usage without authors permission is prohibited (with exceptions dened by the Copyright Act). Citation of this thesis Kolark, Vincenc. Applying OntoUML for structural denitions of Normalized Systems Expanders. Bachelors thesis. Czech Technical University in Prague, Faculty of Information Technology, 2014. Abstrakt Prace se zab yva moznostmi vyuzit OntoUML pro strukturaln denice Ex- panderu Normalizovan ych systemu. Analyzuje v yrazove schopnosti obou kon- ceptu a porovnava je. Jejm klcov ym prnosem je navrh metody pro transfor- maci OntoUML modelu do souboru pro popis datov ych elementu Expanderu Normalizovan ych sytemu. Implementacn cast prace je prototyp nastroje re- alizujc tento prevod. Navrzena metoda a vytvoren y nastroj jsou predvedeny na prpadove studii. Klcova slova Expander Nomalizovan ych systemu, generovan kodu, in- formacn system, Normalizovane systemy, OLED, ontologick y model, On- toUML ix Abstract Thesis is engaged in possibilities of utilizing OntoUML for structural deni- tion of Normalized Systems Expanders. It analyses the expressive capabilities of both concepts and compares them with each other. A key contribution of this work is to design a method for transformation OntoUML model into the element descriptor les of Normalized Systems Expanders. Work includes a prototype tool implementing this transformation. The designed method and tool functionality are also demonstrated in a case study. Keywords code generation, information system, Normalized Systems, Nor- malized Systems Exapnder, OLED, ontologic model, OntoUML x Contents Introduction 1 1 Goals and Approach 3 1.1 Goals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.2 Approach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.3 Thesis Structure and Tasks . . . . . . . . . . . . . . . . . . . . 4 2 Theoretical Background 7 2.1 Unied Foundation Ontology . . . . . . . . . . . . . . . . . . . 7 2.2 OntoUML Overview . . . . . . . . . . . . . . . . . . . . . . . . 8 2.3 Normalized Systems Theory . . . . . . . . . . . . . . . . . . . . 13 2.4 Overview of Utilized Software Technologies . . . . . . . . . . . 17 3 Analysis and Design 19 3.1 Comparison of OntoUML and NSE Concepts . . . . . . . . . . 19 3.2 Input and Output Files Analysis . . . . . . . . . . . . . . . . . 21 3.3 Conversion of OntoUML to NSE . . . . . . . . . . . . . . . . . 25 3.4 Summary of the Proposed Method . . . . . . . . . . . . . . . . 30 4 Prototype Implementation 33 4.1 Basic Concept . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.2 Internal Structure . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.3 Conguration File . . . . . . . . . . . . . . . . . . . . . . . . . 35 4.4 Formal Grammars of Generated Files . . . . . . . . . . . . . . . 36 4.5 Application Usage . . . . . . . . . . . . . . . . . . . . . . . . . 39 5 Case Study 41 5.1 Case Study Description . . . . . . . . . . . . . . . . . . . . . . 41 5.2 Execution Environment . . . . . . . . . . . . . . . . . . . . . . 41 5.3 Processing Case Study . . . . . . . . . . . . . . . . . . . . . . . 41 xi Conclusion 43 Evaluation of Goals . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Thoughts on Method Utilisation . . . . . . . . . . . . . . . . . . . . 43 Future Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Bibliography 45 A Acronyms 49 B OntoUmlDistiller User Guide 51 B.1 Model Design Guidelines . . . . . . . . . . . . . . . . . . . . . . 51 B.2 Conguration File . . . . . . . . . . . . . . . . . . . . . . . . . 52 B.3 Launching the Application . . . . . . . . . . . . . . . . . . . . . 53 C Case Study Model Diagrams 55 C.1 Component Music . . . . . . . . . . . . . . . . . . . . . . . . . 56 C.2 Component Object . . . . . . . . . . . . . . . . . . . . . . . . . 57 C.3 Component Organization . . . . . . . . . . . . . . . . . . . . . 58 C.4 Component Person . . . . . . . . . . . . . . . . . . . . . . . . . 59 D NSE Descriptor File Examples 61 D.1 Application Descriptor . . . . . . . . . . . . . . . . . . . . . . . 61 D.2 Component Descriptor . . . . . . . . . . . . . . . . . . . . . . . 61 D.3 Data Descriptor . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 E Contents of enclosed CD 63 xii List of Figures 2.1 Typology of Substantials . . . . . . . . . . . . . . . . . . . . . . . . 10 2.2 Combinatorial eects explained [1] . . . . . . . . . . . . . . . . . . 14 3.1 Ambiguous relationship in conceptual model . . . . . . . . . . . . 25 3.2 Examples of relationship interpretation . . . . . . . . . . . . . . . 25 3.3 Possible implementations of generalization set . . . . . . . . . . . . 30 4.1 Direct descendants of DataModelEntity class . . . . . . . . . . . . 34 4.2 Hierarchy of element classes . . . . . . . . . . . . . . . . . . . . . . 35 4.3 Hierarchy of relationship classes . . . . . . . . . . . . . . . . . . . . 35 C.1 Component Music OntoUML diagram . . . . . . . . . . . . . . . . 56 C.2 Component Music ER diagram after expansion . . . . . . . . . . . 56 C.3 Component Object OntoUML diagram . . . . . . . . . . . . . . . . 57 C.4 Component Object ER diagram after expansion . . . . . . . . . . . 57 C.5 Component Organization OntoUML diagram . . . . . . . . . . . . 58 C.6 Component Organization ER diagram after expansion . . . . . . . 58 C.7 Component Person OntoUML diagram . . . . . . . . . . . . . . . . 59 C.8 Component Person ER diagram after expansion . . . . . . . . . . . 59 xiii List of Tables 2.1 Cardinalities in OntoUML . . . . . . . . . . . . . . . . . . . . . . . 9 3.1 Conversion of many-to-many associations . . . . . . . . . . . . . . 27 3.2 Conversion of one-to-many associations . . . . . . . . . . . . . . . 27 3.3 Conversion of one-to-one associations . . . . . . . . . . . . . . . . . 28 xv Introduction Information systems have overcome a major milestone in their development. Software engineers conquered the problem of creating new information system (IS) in all its extent. Sophisticated software development methodologies and modular programming paradigms allow to design, implement and deploy IS of unprecedented size. With the increasing systems complexity and ageing, new batch of issues arise. Since the beginning of implementation IT to business, companies become more and more dependent on information and communication technology (ICT) infrastructure. With insignicant eort, IS serves the company as a re- liable workhorse. When there is no need to change, the current system runs smooth. But the company needs to adapt to the ever changing market and the system requires modication to suit new functionality. Using current soft- ware development methodologies, every change in the IS increases its overall complexity. That leads to increasing costs for every subsequent change, there- fore economic gain provided by the system decreases. Such problem cannot be solved by current approaches, resulting in a demand for new principles. Problem of increasing software complexity is theoretically solved by the Nor- malized Systems (NS). This theory addresses issues related to software evolv- ability and denes laws to maintain complexity unchanged during system in- novation. It outlines a solution by re-creating the entire software develop- ment life-cycle (SDLC), from prescribing mandatory software design patterns to re-dening responsibilities of participants, extending to business processes automation and modelling. NS is currently being developed at the University of Antwerp. Its theoretical foundations are based on formal proofs as well as statistical data. Normalized Systems is primarily IT oriented and does not specify how to describe the problem domain for which is the IS built. Unied Modelling Language (UML) is a common graphical language used for this purpose, how- ever in its pure form is intended for depicting code hierarchy, not real-world entities and relations. To suit ontological needs, Dr. Giancarlo Guizzardi cre- 1 Introduction ated UML prole for ontological modelling (OntoUML). Its strong expression power and solid theoretical background makes it a potent tool for ontological modelling. This work aims to broach the ambitious task to connect these two theories and thus make a contribution to next generation of software development. 2 Chapter 1 Goals and Approach 1.1 Goals In accordance to thesis assignment the following goals were set: Design a theoretical method transforming OntoUML diagrams (in extent of UFO-A) to NSE element descriptors. Create a prototype tool implementing designed method. Demonstrate method and tool functionality on OntoUML domain model. 1.2 Approach 1.2.1 General Rules In an eort to make this work conceptually coherent, there were dened es- sential principles with which this thesis is created: Energy will be devoted to be theoretically correct, complete and com- pliant with both instruments. The method has been designed without direct access to NSE, so the user experience cannot be simulated. Therefore its considered as secondary aspect. Flexibility will be the major requirement for both theoretical and prac- tical parts. Implemented prototyped should serve as proof of concept, not a produc- tion grade tool. Theoretical method as well as prototype tool will presume working with valid data models and will posses minimal or none validation mecha- nisms. 3 1. Goals and Approach Transformation method will endeavour to avoid any changes in design of the model. So the model, created without any intention of using this tool, can be transformed as-is or with minimal modications. Model design guidelines will be created to cover those inevitable design rules (e.g. using only data types supported by the NSE). 1.2.2 Relation to the Development Versions Since both, OntoUML and NSE are quite new technologies and are developed at a rapid pace, it was necessary to settle down to particular versions. For the ontological part, Giancarlo Guizzardis PhD thesis [2] was chosen, as it is the most comprehensive work about this topic. It exhaustively denes UFO module for structural aspects (UFO-A) with UML prole for ontological modelling (OntoUML). The graphic notation has been signicantly extended for other Unied Foundation Ontology (UFO) varieties [3], but the core was not changed. Normalized Systems Expander are xed to version 2.3. It is the most current stable release and has the most documentation available. Some new features and changes of the next version are already known. They are taken into account, but do not directly aect any of the set goals. 1.3 Thesis Structure and Tasks To reasonably cover topic of this thesis, following tasks were set. The nal structure of this work is derived from this task list. 1. Provide an overview of utilized theories and technologies (Chapter 2) Introduce key concepts of Normalized Systems and Unied Foun- dation Ontology Describe essentials features of Normalized Systems Expander and UML prole for ontological modelling (OntoUML) 2. Analyze OntoUML and Normalized Systems Expander (NSE) (Chap- ter 3) Explore expressive power of both instruments Compare instruments with each other Theoretically design a transformation method from OntoUML di- agram to NSE element descriptors 3. Create a prototype tool for converting OntoUML diagram to NSE tem- plate (Chapter 4) Parse OntoUML models created in one of OntoUML designers 4 1.3. Thesis Structure and Tasks Generate syntactically correct code according to NSE specications 4. Prove the method design on a case study (Chapter 5) Demonstrate tools functionality on example domain model Comment dierences between theoretical and implemented method 5. Summarize successes and failures (Chapter Conclusion) 5 Chapter 2 Theoretical Background 2.1 Unied Foundation Ontology 2.1.1 Brief Introduction to Ontologies Ontology (in the computer-related meaning) is an instrument to formally de- scribe the structure of a system. By observing the given real-world system, an ontology engineer extracts its key characteristics relevant to desired pur- poses. Characteristics are transformed into structure of entities and relations. The foundation of an ontology consists of a generalization/specialization hi- erarchy of entities, so called taxonomy [4]. Some ontologies were developed just for narrow scope of use (e.g. Gene ontology for representation of gene and gene product attributes across all species [5]). On the other side are ontologies able to describe very general concepts shared across all domains. Those are called top-level ontologies (also known as upper ontologies or foundation ontologies). The Unied Foundation Ontology (UFO) is a representative of top-level ontologies. 2.1.2 UFO and OntoUML Synopsis The Unied Foundation Ontology (UFO) is developed by Giancarlo Guiz- zardi and associates from Ontology and Conceptual Modelling Research Group (NEMO). Authors also collaborate with Laboratory for Applied Ontology (LOA) and Gerd Wagner from the Brandenburg University of Technology. UFO assimilates and discusses knowledge from many related concepts: General Formal Ontology (GFO), Descriptive Ontology for Linguistic and Cognitive Engineering (DOLCE) and OntoClean [2]. The UFO module for structural aspects (UFO-A) have been formalized and dened in Giancarlo Guizzardis Ph.D. thesis [2]. It features conceptual mod- elling constructs for structural denitions. Since it is in primary focus of this thesis, it will be closely presented in section 2.2. Unied Foundation Ontol- ogy has been already extended to incorporate an extension for event-related 7 2. Theoretical Background concepts (UFO-B) and for social and intentional aspects (UFO-C). Currently is being developed an extension for service-related concepts (UFO-S) [3]. The Unied Modelling Language (UML) is used for graphical representa- tion of UFO. Its prole mechanism [6] allows to extend the UML metamodel for various purposes. The prole created for ontological modelling (OntoUML) is originally dened in [2]. It was later rened in [7] while creating a OntoUML computer modelling infrastructure. 2.2 OntoUML Overview This section provides very simplied overview of OntoUML notation, within extend of UFO-A. Its purpose is to extract key concepts necessary for under- standing further analysis. All information is based on various Guizzardis publications, especially [2, 8, 9, 10]. The text consider UML as fully assimilated base of OntoUML. Concepts from bare UML are explained alongside those from OntoUML prole without explicit dierentiations. 2.2.1 Classes and Entities Class describes the common features (e.g. intrinsic and relational properties) shared by entities. Individual entity is instance of appropriate class. These terms common in conceptual modelling are equivalent to universal (class) and individual (instance) used in UFO terminology. Attribute of a class represent property shared by members of a class. All instances must contain values for each attribute that is dened for that class, in accordance with the characteristics of the attribute (e.g. data type and multiplicity). Each class can be assigned to an object type depending on its ontologi- cal characteristics. This categorization is described in greater detail further in sections 2.2.4 and 2.2.5. 2.2.2 Specializations Specialization relation is used to organize classes into a taxonomic structure. All properties of a class are inherited by its subclasses through a specialization chain. The specialization relation is anti-symmetric (if A specializes B then B cannot specialize A) and transitive (if A specializes B and B specializes C, then A specializes C). 8 2.2. OntoUML Overview 2.2.2.1 Specialization Sets Specializations directing to one common superclass can be grouped into a gen- eralization set. Such set can provide stronger semantics, because it can bear two meta-attributes: disjoint and complete. If a generalization set is disjoint if all the subclasses participating in the generalization are mutually exclusive. [2] In other words: All instances of superclass can be instances of maximum of one subclass. If a generalization set is complete then the subclasses exhaust the instances of the common direct superclass. [2] In other words: Every instance of superclass also have to be an instance of one of the subclasses participating in the generalization (or it cannot exist). If a generalization set is disjoint and complete then the sub- classes participating in this generalization set form a partition. [2] In other words: Every instance of the common superclass is an instance of ex- actly one of the subclasses. This fact also implies that the common superclass is an abstract class. 2.2.3 Associations An association indicates possible links between instances of respective classes. Every link has two ends. Every end has specied how many instances of its class can hold (cardinality). For possible cardinality notations see 2.1. Type-reexive associations are associations with both ends connected to the same type. Multiplicity Alt. Notation Cardinality 0..0 0 Empty collection 0..1 No instances or one instance 1..1 1 Exactly one instance 0..* * Zero or more instances 1..* At least one instance 4..4 4 Exactly 4 instances m..n At least m but no more than n instances Table 2.1: Cardinalities in OntoUML Every end can bear several meta-attributes, that are interesting form the implementation point of view: 9 2. Theoretical Background derived value can be computed from other information ordered elements are sequentially ordered unique each value in the collection must be unique read only once the instance is assigned, it cannot be changed 2.2.4 Substantials Substantials are entities that persist in time while keeping their identity (as opposed to events). It is similar to term object intuitively used in colloquial speech [2]. President, stone, river or Vincent van Gogh are possible examples. {disjoint, complete} Substantial Universal Subkind Quantity Anti-Rigid Sortal Mixin RoleMixin {disjoint, complete} {disjoint} Category {disjoint} {disjoint, complete} Phase Role {disjoint, complete} Kind Collective Anti-Rigid Mixin Non-Rigid Mixin Rigid Mixin Rigid Sortal {disjoint} Sortal Universal Mixin Universal Substantial Universal Figure 2.1: Typology of Substantials 2.2.4.1 Sortal vs. Mixin Types At the top level (see g. 2.1), types are categorized according to whether they are endowed with object identity. The object identity enables to distinguish if two class instances are identical. Objects endowed with identity are called Sortal types. The object types Person, Chair or Teacher are examples of Sortal types. All subtypes of Sortal inherit its identity via specialization chain. Other types, that are not Sortal, are called Mixin types. Good example of Mixin types is RedObject when two red objects are perceived at dierent time, it is not possible to distinguish whether those two objects are identical or not. Another examples may be SeatableItem or InsurableItem. There are two postulates about Mixin types [8]: 10 2.2. OntoUML Overview A Mixin type cannot have direct instances. This means that a Mixin type M must have Sortal subtypes, which are directly instantiated by the instances of M. A Mixin type cannot be a subtype of a Sortal type. This is a consequence of the fact that all subtypes of a Sortal type are again Sortal types since they inherit its object identity condition. 2.2.4.2 Sortal Types The meta-property rigidity is used to distinguish dierent categories of Sortals. Rigidity: A type T is rigid if for every instance x of T, x is necessarily (in the modal sense) an instance of T. In other words, if x instantiates T in a given world w, then x must instantiate T in every world w. [2] Anti-Rigidity: A type T is anti-rigid if for every instance x of T, x is possibly (in the modal sense) not an instance of T. In other words, if x instantiates T in a given world w, then there is a possible world w in which x does not instantiate T. [2] 2.2.4.3 Rigid Sortal Types A Rigid Sortal can be a Substance Sortal or a SubKind. Substance Sortals: Kind is the only type that can provide an identity principle to its in- stances (e.g. Person, Sand or Forest). Quantity is a nominalization of amount of matter (e.g. water, sand, sugar). Collective is representation of collection in general (e.g. forest, deck of cards, pile of bricks or pack of wolves). Substance Sortals can be specialized SubKinds (e.g. Woman and Man are specializations of Kind Person and inherit its identity principle). 2.2.4.4 Anti-Rigid Sortal Types Anti-Rigid Sortal can be specialized to a Phase or a Role. Phase constitutes possible stages in the history of a Substance Sortal (e.g. Alive and Deceased are possible stages of a Person, Town and Metropolis development stadiums of a City). Phases imply disjoint and complete meta-attributes to their specialization set. 11 2. Theoretical Background Role depends on extrinsic (relational) properties of specialized Substance Sortal. As intuitively perceived, an entity plays its role in specic con- text dened by interacting entities (e.g. Person is a Student in relation to some School and the same person could be a Customer in relation to some Shop). 2.2.4.5 Mixin Types Mixin Universal can be specialized to a Category, a RoleMixin or a Mixin. Mixins are always dened as an abstract class. Category is mixin of Rigid types (e.g. Category LivingCreature may generalize Kind Person and Kind Cat). RoleMixin is Mixin of Roles (e.g. RoleMixin Customer, generalizing the Role PersonalCustomer (which specializes a Person) and the Role CorporateCustomer (which specializes an Organization)). Mixin bear a meta-property is called non-rigidity (that is weaker con- straint than anti-rigidity). It allows to group rigid and non-rigid types to one entity (e.g. Mixin Seatable generalize Kind Chair and IceThrone which is a Phase of Water). 2.2.5 Moments Moments are entities that they can only exist in other individuals they are existentially dependent on their bearers. For example, electrical charge can exist only in some conductor. Moments can be divided into Intrinsic Moments and Relational Moments. 2.2.5.1 Intrinsic Moments Quality is a single- or multi-dimensional representation of a measurable property (e.g. weight, RGB color) Mode is a representation of a non-measurable property, often used to de- ne state of a entity (e.g. issue of a book, translation of a document) 2.2.5.2 Relational Moments Relational moment, called Relator is a artefact attached to material relation- ship (e.g. a covalent bond, purchase order, business contract or ight between two airports). Relators are connected to both end entities of the material relationship (via mediation) and to the material relationship itself (via derivation). 12 2.3. Normalized Systems Theory 2.2.6 Parts and Wholes The theory of parts and wholes is considered as a signicant part of the foun- dational ontology. To maintain brevity of this section, this topic is consid- erably simplied. There exist many implications among parthood relations and related meta-attributes, that are dened in UFO. Focus of this work is to deal with only eect of these implications, so the implications itself are not mentioned. UFO denes multiple parthood relations forming dierent types of aggre- gates: SubQuantityOf for Quantities (e.g. alcohol wine) MemberOf for Collectives (e.g. aSpecicTree theBlackForest) SubCollectiveOf for Collectives (e.g. theNorthPartOfTheBlackForest theBlackForest) ComponentOf for Functional Entities (e.g. heart circulatorySystem) Nuances among the part-whole relationship can be hardly utilized, there- fore are not further explained. More interesting are again the meronymic meta-attributes present at the relationship: essential part cannot be changed without aecting the identity of the whole (e.g. human after brain transplant would not be considered the same human before the transplant) inseparable part is existentially dependent on its whole (e.g. human brain cannot be separated from the body without losing its essence) immutable part/whole is part/whole with de-dicto necessity (e.g. boxer necessarily has at least one hand to be a boxer, therefore hand is im- mutable part) shareable entity can be part of several wholes (e.g. one person can be member in several families; versus one engine can be part of only single car at time) 2.3 Normalized Systems Theory Normalized Systems (NS) is a theoretical framework applicable to design and engineer information system exhibiting proven evolvability. It aims at re- creating information technology based on dened laws for software evolvability in innite time. The theory originates from University of Antwerp, the department Man- agement Information Systems of the faculty Applied Economics. Later, the uni- versity has established the Normalized Systems Institute for further research 13 2. Theoretical Background on this theory. NS is based on previous research on software architectures by Herwig Mannaert and research on evolvability of conceptual and design models of information systems by Jan Verelst. [11] NS currently covers and redenes whole software development process and has extends even to business process modelling. Because it highly exceeds scope of this thesis, following section will present only key features necessary for this work, i.e. features related software development. 2.3.1 Essential Principles Normalized Systems state that contemporary IT problems are manifestations of fundamental aws in currently used methodologies. The greatest vulnera- bility lies in the evolvability of the IS. Adding functionality to existing system generates combinatorial eects, that lead to increase of system complexity (see g. 2.2). Such eects cause increase of costs for future changes and decrease overall software quality [12]. This idea was rst stated by Manny Lehman in 1980: As an evolving program is continually changed, its complexity, reecting deteriorating structure, increases unless work is done to maintain or reduce it. [13] In spite of that, Normalized Systems try to realize vision uttered by Dou- glas McIlroy in 1968: Expect families of routines to be constructed on rational principles so that families t together as building blocks. In short, [the user] should be able safely to regard components as black boxes. [14] NS assume the change of the system to be natural and unavoidable phe- nomenon, therefore all principles and methodological elements are designed Figure 2.2: Combinatorial eects explained [1] 14 2.3. Normalized Systems Theory to respect that fact. The theory denes set of rules how to engineer the IS ar- chitecture as structure of independent modules, which can be added, removed or changed. Suciently granular architecture will eliminate any combinatorial eects during modication of the system. The normalized design theorems prescribe strict separation of data and ac- tions manipulating such data. This segregation contradicts the essence of OO programming, which beliefs that data and respective actions should be con- solidated into one entity. 2.3.2 Rules of Evolvability This section introduces four rules of software evolvability, that are the building blocks of NS. A procient software developer will be familiar with these rules, because they are based on heuristic design knowledge. Value added by NS are theoretical proofs, that elevate these empirical experiences to defensible theorems. At the beginning, it is necessary to clarify several terms used in later denitions: A data entity refers to a software entity that contains various at- tributes or elds, including links to other data entities. Therefore, a data entity only contains data (as in a structure or record) and does not have an interface. [1] An action entity refers to a software entity that represents an op- eration at a given modular level in a hierarchy. [1] A task is part of an action entity and is a set of instructions that performs a certain functionality. A task is located at the submod- ular level. [1] 2.3.2.1 Separation of Concerns An action entity can only contain a single task in normalized sys- tems. [12] This theorem implies identication and separation of every single task. Correct separation of tasks will induce separation of concerns in the big pic- ture. This is a well known good practice among software architects, but it is also very general in its formulation. Current manifestations in software develop- ment include for example multi-tier architectures (MVC, MVVM, etc.) or use of integration bus for inter-application communication. 15 2. Theoretical Background 2.3.2.2 Data Version Transparency Data entities that are received as input or produced as output by action entities, need to exhibit version transparency in normalized systems. [12] Version transparency is instrument to cope with addition or removal a data eld in entity. It implies encapsulation of the data elds. Wrapping the data entity allows co-existence of various versions of such entity. This can be easily implemented by using get & set methods and 0-parameter constructor in OO programming. 2.3.2.3 Action Version Transparency Action entities need to exhibit version transparency in normalized systems. [12] Analogously to previous theorem, various versions of data entities need to co-exist in single system. This can be achieved by using wrapper functions/methods or polymor- phism. 2.3.2.4 Separation of states The calling of an action entity by another action entity needs to ex- hibit state keeping in normalized systems. [12] It is a formalization of instinctive avoiding the transition (undened) state. When a state is kept for every call or instance of an action entity, the whole system behaves as a deterministic state machine. This eliminates the need for complicated recovery from undened error states. An example of manifestation of this design theorem is database transac- tion mechanism. The commit (rollback) action guarantees atomic transition from one dened state to another. Another common example is asynchronous communication between systems. 2.3.3 Impacts on Software Development In order NS principles to be eective, the rules of evolvability must be strictly obeyed. The system must be free of combinatorial eects at compile time, deployment time and run time. This requires the code to be absolutely er- ror free, which is not an easy task to achieve. The data and action version transparency rules also imply a lot of ballast (non-logic) code (e.g. wrapper classes, accessor methods). For a human programmer writing code complying with NS is boring and frustrating. 16 2.4. Overview of Utilized Software Technologies On the other hand, NS presents a set of software design patterns, that are solution to these challenges. The design patterns (called elements) are de- ned comprehensively enough, that are suitable for code generation. The core of created is is composed only from following elements: a data element for storing data an action element for the execution of a calculation or algorithm a workow element for the execution of sequences of action elements a connector element for input and output functionality a trigger element for time-based or status-based execution of action el- ements These patterns are proven to exhibit high cohesion and loose coupling, therefore the generated application will be be free of combinatorial eects. Element Composition Class inheritance may violate NS theorems, be- cause of following reasons: Where member variables lead to an implicit and to some extent hidden coupling with data attributes, the mechanism of inheri- tance introduces an implicit coupling with entire methods. Such inherited methods become an integrated part of the class or object- oriented module, and may introduce dependencies on severalpossibly largeexternal libraries or frameworks. Invoking an inherited method results in execution of apossibly largeset of instructions, having access to a common set of member variables, and may result in a possibly largeset of initializations and allocations. [12] For the purposes of ontological renement, the principle of element com- position is preferred. The the superelement is specialized by another element with simple connection of other element, instead of any dependence between each other. 2.4 Overview of Utilized Software Technologies 2.4.1 OLED OntoUML Lightweight Editor (OLED) [15] is an open source editor developed under the supervision of Ontology and Conceptual Modelling Research Group (NEMO). OLED was chosen for this work for several reasons. First, it has the richest OntoUML and Object Constraint Language (OCL) editing capabilities among 17 2. Theoretical Background other editors. Second, it uses the reference metamodel dened by Roberto Car- rareto in [7]. It is based on Eclipse Modeling Framework metamodel (ECORE) and is currently the most advanced OntoUML infrastructure [16]. This meta- model can be exported to XML les (with .refontouml extension) and easily manipulated. OLED also features model syntax verication, anti-pattern management, instances simulation via Alloy and model tranformation to OWL/SWRL and SBVR. The editor is still in development and its use is quite experimental. With respect to production grade tools, OLED capable of importing models from Sparx System Enterprise Architect (EA). Developers also provide OntoUML prole for modelling directly in EA. 2.4.1.1 Using NSE The software development life-cycle (SDLC) has been re-designed in the NS and is applied to development using the expanders technology. Whole devel- opment process puts emphasis on intensive communication between the de- veloper and the responsible end user (stakeholder). The main phases of the development are [17]: 1. Identify Data-elements The goal of this activity is to dene the data- elements and the corresponding database model. This version should be a direct result of the expansion of the descriptors without any customi- sation. At this phase the application is minimally congured. 2. Implement Business-rules The goal is to guarantee the data-quality re- quested by the end-user in the system. 3. Introduce user-friendliness Introduce the necessary user-friendliness. The generated system gives the end-user the possibility to work with the ap- plication. The application provided after the previous phase requires from the end-user a good understanding of the system (both function- ally as structurally). Data model, as well as workow denitions, are provided by descriptor les. Descriptor le is simple XML or plain text document dening single NS element (see 2.3.3). The expanders generate skeleton source code from these les, together with all deployment and conguration les required to construct a working application on selected technology stack. [17] Alongside creating the application from users input, NSE provides pre- pared modules for common functionality used in IS (e.g. user accounts, input elds validation). 18 Chapter 3 Analysis and Design 3.1 Comparison of OntoUML and NSE Concepts This section provides and overview of OntoUML and NSE features from the methodological point of view. Then are both concepts compared to each other. 3.1.1 OntoUML OntoUML provides means to depict conceptualization of a real-world domain. Due to its ontological focus, it is implementation independent and conceptual models does not bear any implementation details. Its crucial features were summarized in section 2.2. UFO-A provides information related only to structural denitions. Poten- tial utilizing OntoUML for workow denition could be possible with UFO module for event-related concepts (UFO-B). But investigation of this inter- connection is out of scope this work. 3.1.2 Normalized System Expander Normalized Systems Expander (NSE) is a technological framework realizing NS elements expansion developed by NSE bvba, Belgium. Although the theory of element expansion in platform independent, the NSE is currently being developed for Java Enterprise Edition (JEE). Generated ap- plications are able to use all major databases. The framework is able to run on Linux, Windows and MacOS. The generated application uses a web frontend, which is can be created using Knockout or Cocoon & Struts2 frameworks. Supported deployment application servers are JOnAS, TomEE and Websphere. 19 3. Analysis and Design 3.1.2.1 Customizations The generated application may need some modications before deploying in production. As the Normalized Systems theory assumes IS to be changed, such change requires the whole source code to be regenerated. To preserve code modications between regeneration of code, the harvesting mechanism is introduced. While editing the generated source les, the modied code is put between special anchor marks. Before regenerating the application, the code embraced by those anchors is saved to special harvest les. After the new source code is generated, the harvested modications are injected back to its original lo- cation. Developer performing the customizations must be aware of the NS design theorems, to avoid creating combinatorial eects by his intervention. 3.1.2.2 Descriptors Normalized Systems Expander currently recognizes several types of descriptor les, serving various purposes. Data descriptor les of the Normalized Systems Expander describe pat- terns dened by Normalized Systems, alongside with many implementation details (e.g. database schema for persisting specic element, visualization options, etc.) The following types could be used for dening data model are analysed in detail in section 3.2.2: application descriptor (.ad) for denition of basic application skeleton component descriptor (.cd) for declaring application component data descriptor (.dd) for describing individual data elements The list is not complete, other descriptor les are used to dene workow (ow and task descriptor) or validating use input (value type descriptor). 3.1.2.3 Linking Mechanisms NSE provides following linking mechanism: many-to-one in two variants, diering in implementations. May be used at single side bidirectional. many-to-many only one variant. Also may be used as single side or bidi- rectional. Those links has always optional ends unable to achieve mandatory rela- tionship. 20 3.2. Input and Output Files Analysis 3.1.2.4 Indirect Fields Indirect eld is an instrument to visualise contents of one element inside an- other. It is dened as a data eld in the data descriptor. It is stated by the developers, that the Indirect eld mechanism will be replaced in further versions of NSE with similar functionality. This is consid- ered as implementation related. Since the functionality will be maintained, the implementation syntax can be easily replaced with a new one. 3.1.3 Comparison Combining OntoUML and Normalized Systems Expander is a clash of two ap- proaches. The implementation oriented NSE are pragmatic and tends to be as simple as possible. The conceptual oriented OntoUML stands on the opposite side. It endeavours to be as descriptive as possible. Instruments oered out-of-the-box by are not able to cover the whole ex- pressive power of NSE. Much valuable information will be lost primarily in as- sociation and part-whole relationship transformation (see 3.3.2). On the other hand, OntoUML in the extent of UFO-A can cover only the rst step of the NSE development process (see 2.4.1.1), since diagrams in UFO-A only is capable of structural denitions. Description of workows may be possible with OntoUML in extent of UFO-B. But researching this issue is denitely out of scope of this work. 3.2 Input and Output Files Analysis The following section describe OLED and NSE le formats. 3.2.1 RefOntoUML le format As it is a XML standart format, it is not necessary to analyse the structure verbosely. This section contains only noteworthy insights. This le format contains all information about the whole model. Hence, it does not contain any information about graphical representation of the di- agrams. Therefore graphical denition of generalization sets[2] cannot be derived from this le format. The sets must be dened (also) as generalization set data structure in the OLED, otherwise they will not be recognized. 3.2.2 NS Expander le formats Descriptor les related to data model denitions were closely analysed for the purposes of generation. Information provided is based on NSE user guides [18, 17] and claried by communication with Paul Adriaenssens from NSE bvba, Belgium. 21 3. Analysis and Design Note that the analysis includes only those syntax constructs, that was considered useful for further work. 3.2.2.1 Application Descriptor <shortApplicationName> <fullApplicationName> style=<style1> (...) style=<styleN> component-<component1> (...) component-<componentN> optionDataBaseSchema-<dbSchema1> (...) optionDataBaseSchema-<dbSchemaN> <shortApplicationName> (testApp) Short name of the application, which will correspond to the name of the ex- panded directory tree in the expansions applications folder. <fullApplicationName> (TestApplicatie) Full name of the application. style=<style> Styles of the presentation layer that will be generated. component-<component> Enumeration of the dierent components that are used inside the application, both base and user-dened. optionDataBaseSchema-<componentName> <SCHEMANAME> Optional database schema setting. <SCHEMANAME> is also optional in the line itself; must be inserted in uppercase. 3.2.2.2 Component Descriptor <componentName> <componentURL> depends-<baseComponent1> (...) depends-<baseComponentN> MTM-<targetComponent1> (...) MTM-<targetComponentN> <componentName> (testComp) Name of the component, which will correspond to the name of the expanded directory tree in the expansions components folder. [18] 22 3.2. Input and Output Files Analysis <componentURL> (testElement1-view) Species the default URL that will be invoked when clicking on the compo- nents menu in GUI. [18] depends-<baseComponent> (depends-account) Indicates a dependency on some other underlying component. MTM-<targetComponent> (MTM-basisComp) Indicates, that some elements from current component has many-to-many relationship with some elements in <targetComponent>. 3.2.2.3 Data Element Descriptor <componentName> <javaPackage> <elementName> <dataType1> <dataAttributeName1> <b11><b21><b31> (...) <dataTypeN> <dataAttributeNameN> <b1N><b2N><b3N><enumListN> Ln[0-6]<interComp>#<dataTypeO> <dataAttributeNameO> <b1O><b2O><b3O> (...) Ln[0-6]<interComp>#<dataTypeP> <dataAttributeNameP> <b1P><b2P><b3P> findBy<attributeName1><findModifier1>_<attributeName1><findModifier1> (...) findBy<attributeNameN><findModifierN>_<attributeNameN><findModifierN> optionIndirect<fieldName1>_<elementName1> (...) optionIndirect<fieldNameN>_<elementNameN> <componentName> <javaPackage> <elementName> (sitenet net.palver.uams Purchase) Line dening data element name and location. <componentName> (sitenet) The name of elements component. <javaPackage> (net.palver.uams) Elements Java package name. <elementName> (Purchase) Name of the element. <dataType> <dataAttributeName> <b1><b2><b3><enumList> (productCode yny10 20 30 40 50) Line dening a data attribute or eld. <dataType> (String) Name of used data type. Special NSE datatypes must be used [17] ofr all data types. It also includes the Indirect for indirect elds mechanism. 23 3. Analysis and Design <dataAttributeName> Name of the attribute. Ln[0-6]<interComp><entityName><b1><b2><b3> (Ln01site.jar#net.palver.site.Site ynn) Element link. <interComp> (site.jar) Optional Java package name, if the linked element is located in another com- ponent. <entityName> (net.palver.site.Site) Full java name of the linked entity. <b1> Boolean value specifying attribute visibility in overview screen. n: the attribute will be visible only in detail screen of data element <b2> Depracted in current version of NSE. Value will be neglected, but y ot n must be present. <b3><enumList> Boolean value specifying whether attribute has enumerated values. y: list of possible values follow; Values are separated by (underscore) symbol. findBy<attributeName><findModifier> <attributeName><findModifier> (findByNameEq YearGt) Species which nder (search) methods will be generated. Name has to have prex ndBy followed by name of searched attribute and modier. Modier can currently assume values: Eq: equal to Gt: greater than Lt: less than Multiargument search methods are possible by chaining several pairs (at- tribute and modier) separated by (underscore) symbol. optionIndirect<fieldName> <elementName> (optionIndirectperson net.palver.person.Person) <fieldName> (person) Name of the Indirect data eld. <elementName> (net.palver.person.Person) Full Java name of the inserted element. 24 3.3. Conversion of OntoUML to NSE 3.3 Conversion of OntoUML to NSE 3.3.1 General Issues of Converting Conceptual Model to Implementation Conversion from conceptual to implementation models is not dened at all. Therefore no existing methodology can be used as example. The success of the conversion of the conceptual model of the implementation depends entirely on the experience of implementer. 0..* 0..* parks at ParkingPlace Car Figure 3.1: Ambiguous relationship in conceptual model Information necessary for implementation can be dierent from the infor- mation provided by conceptual model. This can be illustrated with following example: Figure 3.1 represents a relationship in a conceptual model: unspec- ied number of cars park at unspecied number of parking places. The gure 3.2 shows possible implementations of this relationship: when creating a book of rides for cars, it necessary to keep information where the car parked. But when an IS for parking house is created, its necessary to know which cars parked at the given place. In some cases, both records should be kept. ParkingPlace Car ParkingPlace Car ParkingPlace Car Figure 3.2: Examples of relationship interpretation Transformation method in this thesis is designed to cover the majority of possible cases. When a ambiguous situation appears, it is preferred to have excess rather than lacking. If necessary, the generated code could be sim- ply modied. And deleting line of code is easier operation than generating a proper one. 25 3. Analysis and Design 3.3.2 Proposed Transformation of OntoUML Phenomena This method is the key concept and contribution of this work. It covers all OntoUML phenomena and proposes possible transformation principle(s) of every phenomenon. 3.3.2.1 Substantials and Moments All Substantials and Moments are converted to individual data descriptors. There is nothing to discuss since NSE does not oer any other object-like element. Object inheritance (generalizaitonspecialization relationship) is covered in section 3.3.3.2. 3.3.2.2 Associations Associations are transformed to NSE link mechanism. Some special cases were identied and are mentioned further. As the OntoUML considers relationships to be mutual between entities, its impossible to identify necessary linking directions. Therefore are all rela- tionships realized as bidirectional. Association are distinguished only by cardinalities, the conversion is de- scribed in tables 3.3, 3.2, 3.1 and respective paragraphs. The name of the OntoUML relationship is used as the name of NSE link eld. This guarantees that naming collisions among the links will be avoided. Because, by denition in [2], all model elements must have unique names. By default, NSE links does not require any element to be connected. To ac- complish mandatory connection end (mandatory element), code customization is necessary. Implementer will by notied about these necessary customiza- tions by comments in descriptor les. In general, it is not recommended to enforce creating link at instantiation of the element. This may cause unsolvable situations if this mechanism is used on both sides. Safe solution is to verify presence of the connected element at the moment of using the link. many-to-many (Table 3.1) NSE provides many-to-many linking mecha- nism. Conversion is straightforward, although it has some specic rules: 1. In case the many to many link is between two components, link to the other component (e.g. MTM-targetComponent) must be mentioned in component descriptor. 2. There is a eld name restriction at the Ln03 side: 26 3.3. Conversion of OntoUML to NSE the name of the Ln03 eld needs to be identical to the name of the element where the corresponding Ln06 link is specied fol- lowed by the character s (e.g. Ln03be.provant.basis.Materie materies nyn) [18] one-to-many (Table 3.2) NSE provides two one-to-many/man-to-one link- ing mechanisms out-of-the-box. From the users point of view, they act equally. Bu they dier in implmentation: 1. Ln02-Ln04 pair is container managed relationship. Because of this, it is not able to connect entities from dierent components. 2. Ln01-Ln05 pair is managed by NSE itself. Therefore, it is able to make inter-component links and is generally more versatile. This pair was chosen to be implemented. one-to-one (Table 3.3) Two possible conversions were designed, both with pros and cons: 1. (column NS Expander) Using two ends of many-to-one mechanism. When used used separately, the link is able to connect to only one ele- ment. This approach guarantee connection to single element on both OntoUML NS Expander end A end B end A end B 0..* 0..* Ln06 Ln03 s 1..* 0..* Ln06 p Ln03 s 1..* 1..* Ln06 p Ln03 p, s p mandatory element s restricted eld name Table 3.1: Conversion of many-to-many associations OntoUML NS Expander alternative end A end B end A end B end A end B 0..1 0..* Ln01 Ln05 Ln02 Ln04 1..1 0..* Ln01 p Ln05 Ln02 p Ln04 0..1 1..* Ln01 Ln05 p Ln02 Ln04 p 1..1 1..* Ln01 p Ln05 p Ln02 p Ln04 p p mandatory element Table 3.2: Conversion of one-to-many associations 27 3. Analysis and Design OntoUML NS Expander alternative end A end B end A end B end A end B 0..1 0..1 Ln01 Ln01 Ln01 Ln05 o 1..1 0..1 Ln01 p Ln01 Ln01 p Ln05 o 1..1 1..1 Ln01 p Ln01 p Ln01 p Ln05 p, o p mandatory element o maximum of one element Table 3.3: Conversion of one-to-one associations sides. Nevertheless customization on both sides would be necessary to enforce mutual linking. Although, this approach is considered most elegant and will be implemented. 2. (column alternative) May be used when mutual linking (managed by NSE) is preferred. This uses many-to-one relationship, where mutuality is assured by NSE. Customization is necessary on single side (maximum of one element), to allow maximum of one element. Metaatribudes of association ends: derived is considered as irrelevant to implementation. ordered, unique, read only could not be utilized by any means provided by NSE framework. To utilize this metadata, customization of the gen- erated code must be performed. Implementer may be notied about presence of this metadata by comments in descriptors. 3.3.2.3 Part-whole Relationships Since there is no other suitable linking mechanism available, the part-whole relationships are considered as plain associations and transformed in same manner decribed in 3.3.2.2. Meronymic metaatributes essential, inseparable, immutable, shareable could not be utilized by any means provided by NSE framework. 3.3.2.4 Data Attribute Fields Single value data attributes eld are simply transcribed to the syntax of data descriptors. Multiple values attribute elds are, in common programming languages, solved by a containing data structure (e.g. an array). Since theres no such thing in NSE, the proposed solutions is to create a separate data descriptor containing a single value data attribute and link the via one-to-may links. As the multiple values attribute is equal 28 3.3. Conversion of OntoUML to NSE 3.3.3 Abstract Class Instantiation of abstract elements must be forbidden by customisation of the ex- panded code, not by any mean provided by the NSE. 3.3.3.1 Qualities Qualities are, because of its dependence on the bearer, transformed in dierent mode. In case the quality is connected by one-to-one relationship, the instance can be accessible directly using the indirect elds mechanism. Otherwise its linked by one-to-many mechanism described in section 3.3.2.2. 3.3.3.2 Generalization and Specialization Generalizations and specializations are transformed to the Indirect Fields. This allows one element to be visualized in another. It is realization of element composition principle described in section 2.3.3. One level of generalizationspecialization relationship is a simple situation. Both elements could be directly visualized in each other. Problem is a multiple level generalizationspecialization chain, since in- direct elds do not visualize indirect elds of other elements. The following solutions are proposed: 1. Recursively scan the generalization chain and the specialization chain form the current element and visualize all found generalized / specialized elements directly in the current element. 2. Allow parametric denition (at application level) how many levels can be scanned and visualised. 3. Visualize only the directly generalized / specialized elements. The st two solutions would require a lot of runtime constraints, to assure that no element in the chain is skipped. For example in chain sparrow bird animal creation of sparrow animal without instantiation of the bird must be forbidden. Also the st solution can cause entities grow to enormous dimensions, therefore it is not considered optimal. The one level solution will be implemented, to prove this concept. 3.3.3.3 Generalization Sets One indirect eld can contain only single instance of element. But can be congured to t several dierent element types. This feature can be utilized in realization of the generalization set metaattributes. 29 3. Analysis and Design indirect indirect element Sub Element indirect indirect element Super Element element Sub Element indirect indirect element Sub Element indirect element Super Element element Sub Element subkind Sub Element kind Super Element subkind Sub Element Figure 3.3: Possible implementations of generalization set {no attributes } When no metaattributes are present, mechanism on the left side of gure 3.3 is used. It will allow both specialization to be instan- tiated. {complete} The left mechanism is used, but implementer must be no- tied about disabling instantiation of the bare superelement. {disjoint} The right mechanism is used. This solution is more or less satisfactory. The superelement may connect to both subelements, but only one at the time. Both subelements have link to superelement. This is the weak spot of this mechanism, as several subelements may be connected to one superelement. {disjoint, complete} Combination of the right mechanism and the code customization note. 3.4 Summary of the Proposed Method 3.4.1 Method Capabilities Essence of the conceptual model can be transformed to the structural deni- tion of NSE, even though much auxiliary information will be lost. It was possible to design the method to be executed without any human intervention during the process, therefore it will be suitable for iterative de- velopment. 3.4.2 Limitations Operations on elements will be ignored, since they are unrelated to structural denitions. Their possible utilization for workow is questionable and out of scope of this work. Conceptual model could provide integrity constraints exceeding the UML, that are not utilized right now. OLED allows dening rules via Object Con- straint Language (OCL) [19]. After examining the expression power of NSE, such rules would have to be realized via code customizations. 30 3.4. Summary of the Proposed Method Descriptors currently must be completed with information that conceptual models do not provide (e.g. database schemas and visual styles). Although conceptual models (by their nature) will never provide this information, it can be blended in during the transformation process form another source. Customization note is a workaround mechanism, informing the imple- menter about crucial code customizations. Those customization notes will be written to descriptors as comments. A le summarizing all the proposed customization will be created for comfortable overview of necessary changes. 31 Chapter 4 Prototype Implementation 4.1 Basic Concept Program simply transforms input text les to output text les, without any user intervention during the process. Therefore it is realized as a command line tool. Application is designed using the object-oriented paradigm. Although the- matic focus of this work is Normalized Systems theory, it serves only as a loose inspiration for the implementation part. The theory implies excessive gran- ularity of code [12], which is very challenging to achieve by human imple- mentation. Also, since this work is the rst authors encounter with NS, it would be a very bold to state that the program complies with all the desired requirements. Java was chosen as implementation language, because of rich string ma- nipulation capabilities, overall ease of use and multi-platform support. It is also the programming language of OLED and some components of NSE, thus potential integration into those present tools would be straightforward. 4.2 Internal Structure Application is composed of the main data model skeleton and supporting classes. The data model skeleton is a hierarchy of classes imitating the OntoUML entities. It is able to read information from given XML document and print itself to NSE les. The other packages contain supporting classes, that are responsible for service tasks (e.g. run control, logging, parsing application conguration le, writing les to le system). 33 4. Prototype Implementation 4.2.1 Data Model Specication Class hierarchy is based on taxonomy of ontological entities described in [2]. Model used in the application is adapted from graduation thesis of Roberto Carraretto [7]. Carrarettos model is used for dening the RefOntoUML. Because OntoUmlDistiller use the model in slightly dierent way, its structure had to be changed. Most signicant dierences are mentioned in this text, but many minor changes (e.g. renaming data properties) are omitted. Java package cz.cvut.fit.bp.ontoumldistiller.model and its subpack- ages contain the code of whole data model. Top level of this package contains three classes: DataModel is the main standalone model class; registers all components, entities and application settings (via AppSettings class) DataModelComponent registers all data model entities for particular com- ponent DataModelEntity is an abstract superclass for all data model entities (both element and relationship) The DataModelEntity class is root for spreading tree of data model en- tities. At the top level, it forks to four building blocks (see gure 4.2.1). (Carrarettos model [7] does not dene such super-entity.) GeneralizationEntity ElementEntity RelationshipEntity DataTypeEntity DataModelEntity Figure 4.1: Direct descendants of DataModelEntity class This abstract root entity implements two interfaces: RefOntoUmlParsing (for parsing RefOntoUML XML documents) and Nse23Writing (for writing NSE v2.3 descriptor les). Implementation of interface methods can be found at descendants. Utilising polymorphism, method implementation is simply overridden where is more specialization necessary. Interfaces also improves overall structure of code. Prospective functionality can be added as another interface, while keeping the code tidy. DataTypeElement and GeneralizationElement are concrete class and are not further specialized. The ElementEntity and RelationshipEntity ramify 34 4.3. Conguration File Moment Mode Relator Mixin RoleMixin SemiRigidMixin AntiRigidMixin Category RigidMixin NonRigidMixin MixinUniversal Role Phase SubKind Collective Quantity Kind SubstanceSortal AntiRigidSortal RigidSortal SortalUniversal ElementEntity Figure 4.2: Hierarchy of element classes to large trees depicted in gures 4.2.1 and 4.2.1. Abstract classes are plotted with white background, concrete classes with gray. Association Derivation Formal Material Mediation Characterization ComponentOf MemberOf SubCollectionOf SubQuantityOf DependencyRelationship Meronymic DirectedBinaryAssociation RelationshipEntity Figure 4.3: Hierarchy of relationship classes In Carrarettos model [7], moments (from gure 4.2.1) are independent group. In this model are placed under the ElementEntity, because they exhibit object characteristics and are treated as objects in further processing. 4.3 Conguration File Along the RefOntoUML les, it is necessary to provide XML conguration le to the application. The settings can be divided into two groups. 35 4. Prototype Implementation 4.3.1 Application Control Settings Several settings control the behaviour of OntoUmlDistiller itself and does not aect the content of generated descriptor les. These settings include: log location, logging level and location of the destination folder for generated les. In the root folder is created the data descriptor and another folders, bear- ing the name of each component. Into these component folders are generated the respective component descriptors and data descriptors. There is also option to write summary of all customization notes to one le, for comfortable overview of necessary changes. 4.3.2 Model Complementary Information Another group of settings contains supplementary information for the gen- erated data structures, that cannot be captured in the model les, but are required for proper generation of the descriptor les. This data include: sup- ported data types, generated applications Java package, short application name and full application name. 4.3.3 Data Types Denition Data types could be dened in two ways: basic data types and enumerated data types. The basic ones are dened only by their names. These should correspond to those supported by the underlying framework used by the NSE. The enumerated data type is dened by its name, representation and enu- meration values. Representation value must be one from the basic data types list (ergo one of the types supported by NSE framework). During the parsing process are data elements attributes compared to names of supported data types. When no match is found, the application reports an error and exits. Representation values of the enumerated types are tested in the same manner. 4.4 Formal Grammars of Generated Files All output les are generated by their respective grammars presented in this section. Notation uses Extended BackusNaur Form (EBNF) syntax dened in [20]. The special sequence symbols (?...?) are used for describing data extracted from the applications model. EOL is a terminal symbol representing end-of-line. 36 4.4. Formal Grammars of Generated Files 4.4.1 Application Descriptor ad file = header line, style def note, {component def}, component def, db schema def note; header line = short app name, " ", full app name, EOL; component def = "component-", component name, EOL; db schema def note = "# ADJUSTMENT OPTIONAL", EOL, "# optionDataBaseSchema-", EOL; short app name = ? short name of the application ?; full app name = ? full name of the applicaiton ?; component name = ? name of used user/base component ?; 4.4.2 Component Descriptor cd file = header line, {comp dependency}, {mtm links}; header line = component name, " ", component name, "-view", EOL; comp dependency = "depends-", base dependency, EOL; mtm links = "MTM-", mtm component name, EOL; component name = ? name of data model component ?; base dependency = ? name of base component used in application ?; mtm component name = ? name of component which has many-to-many relations with current one" ?; 37 4. Prototype Implementation 4.4.3 Element Descriptor dd file = header line, {customization note}, EOL, {attribute}, EOL, {indirect field}, EOL, {relationship link}, EOL, {option}; header line = component name, " ", java package name, " ", data element name, EOL; customization note = "# CUSTOMIZATION NECCESSARY: ", note message, EOL; attribute = data type, " ", atrribute name, " yn", values enumeration, EOL; indirect field = "Indirect ", indirect prefix, element name, " ynn", EOL; relationship link = {customizaton note}, link prefix, java package name, ".", counter element name, " ", counter element name, " ynn", EOL; option = find method | indirect option ; find method = "findBy", attribute name, comparator suffix, EOL; indirect option = "optionIndirect", indirect prefix, element name, "_", java package name, ".", element name; values enumeration = "n" | "y", {(enum value, "_")}, enum value; link prefix = "Ln", ("1" | "2" | "3" | "4" | "5" | "6"); comparator suffix = "Eq" | "Lt" | "Gt"; indirect prefix = "gen" | "spe" | "gs" | ""; atrribute name = ? name of some of elements attribute?; component name = ? name of elements component ?; indirect field = ? name of the defined indirect field ?; java package name = ? name of elements Java package ?; enum value = ? possible value of the enumerated type ?; element name = ? name of element inserted by indirect field?; counter element name = ? name of the element on the opposite side of the relationship ?; note message = ? instruction to customization to comply with OntoUML model ?; 38 4.5. Application Usage 4.5 Application Usage This section roughly describes how the OntoUmlDistiller is used. Complete user guide is located in appendix B. Converting OntoUML models consists of the following steps: 1. Data models prepared in OLED must be saved as RefOntoUML. One diagram le will be transcribed into one NSE component. The name of le without the .refontouml extension will be used as component name. 2. Conguration le has to be adjusted. Attention should be given espe- cially to the denition of the data types. As mentioned in section 4.3.3, data types must match those used by NSE framework. 3. Application is launched from terminal with following command: java -jar OntoUmlDistiller.jar <app.distillerConfig> <c1.refontouml> ... <cN.refontouml> Linking among diagrams is possible using the :: operator; for example component1::SomeElement will be resolved to element named SomeElement from le component1.refontouml. Using this mechanism, it is possible to cre- ate large scale domain models while maintaining clarity. This mechanism is used in [21]. Model entities are identies by their names, hence creating two components with same name will result to a fatal error. This unique names rule comply with essential OntoUML principles [2]. Nevertheless, the OLED does not verify this rule, so uniqueness is not guaranteed even inside single component model. 39 Chapter 5 Case Study 5.1 Case Study Description Case study was intended to verify designed method and implemented proto- type. It was not intended to imitate the development of a true information system, but to comprehensively verify the proposed method on a suciently complex example. Problem domain model was adapted from [2] and contains all UFO-A phenomena. It was divided to four components. For specic testing purposes, several many-to-many inter-component relations were added. Model was also enhanced with a sucient number of data elds to test data elds conversion. Adapted component diagrams are included in Appendix C. 5.2 Execution Environment Conversion of RefOntoUML les (included on attached CD) was accomplished according to user guide (Appendix B). Java Runtime Environment version 1.7 was used. Expansion of the generated descriptors was executed by Paul Adriaenssens at the NSE bvba in Belgium. The Normalized Systems Expander version 2.3 was used. 5.3 Processing Case Study The expansion was performed in several iterations: First expansion revealed errors in the implementation as well as insucien- cies in prototype features. Provided feedback was incorporated into the pro- totype tool. Errors were xed, necessary functionality implemented. There was also a change in transforming the one-to-one links: The Ln01-Ln01 mech- 41 5. Case Study anism was reconsidered as more elegant and therefore preferred (see 3.3.2.2). Next expansions helped to iteratively x all errors. The last run of expansion was syntax error free. By this, the nal goal of this thesis was reached. 5.3.1 Expansion Artefacts During the expansion, basic ER diagrams for each component were created. The are included in Appendix C for comparison with the OntoUML diagrams. Note that the indirect link mechanism is not shown in the diagrams. Expansion logs provided by the developers are included on the attached CD (see section E). 42 Conclusion Evaluation of Goals Design a theoretical method transforming OntoUML diagrams to NSE element descriptors. Accomplished transformation method has been proposed for all On- toUML phenomena. The proposed transformation were discussed. When several transformation methods were available, the chosen solution was argued. Create a prototype tool implementing designed method. Accomplished the prototype tool was implemented in quality sucient to perform a case study test. And hence prove proposed theoretical method. Demonstrate method and tool functionality on OntoUML domain model. Accomplished as the last expansion was error free, the case study can be considered as successful. It also proves, that the previous two goals were formally correct. Thoughts on Method Utilisation Presented conversion method is denitely not bulletproof. Case on larger real-world cases could reveal weak spots from the users point of view. Without direct access to the Normalized Systems Expander (NSE), eval- uation of the user experience is impossible. I would be also impossible to achieve this in the time frame of this the bachelors thesis. Therefore is the formal correctness satisfactory goal and a solid base for further development Obstacles, that were experienced during creation of this thesis, may serve as input for improvements of the Normalized Systems Expander (NSE). The 43 Conclusion ontological theory behind proposed method implies validity and necessity of mentioned problems. Future Work There is a lot of space for improvements in the presented method itself but not in the dry theory. Now, the method must be used, discussed, evaluated and improved again and again. It should keep pace with the two bleeding-edge technologies, between which is stretched. Hopefully, after enough evolution, it would form into a solid bridge. During the development, even specic objectives were daydreamed. For example, if the NSE development will head to ontological completeness, Object Constraint Language (OCL) constraints should be supported. Implementation to a drawing tool (e.g. OLED), would not just introduce user-friendliness, but it also enable new features. Major benet would be that user can convert conceptual to implementation model in the GUI. He could see the visualized implementation draft and even customize it to suit his needs. Then, with a click of a button, the application would write well prepared data descriptors. Another undoubtedly useful feature is iteration modelling. It would al- low user to preserve changes made to the generated descriptor les while re-generating the model by the application. Similar problem is solved by har- vesting + injection in the NSE framework. This mechanism may serve as a good example. 44 Bibliography [1] Mannaert, H.; Verelst, J.; Ven, K. Towards evolvable software architec- tures based on systems theoretic stability. Software: Practice and Experi- ence, volume 42, no. 1, 2012: pp. 89116, ISSN 1097-024X, doi:10.1002/ spe.1051. Available from: http://dx.doi.org/10.1002/spe.1051 [2] Guizzardi, G. Ontological Foundations for Structural Conceptual Mod- els. Dissertation thesis, University of Twente, Netherlands, 2005, [ac- cessed: 10. 12. 2013]. Available from: http://doc.utwente.nl/50826/1/ thesis Guizzardi.pdf [3] Nardi, J.; De Almeida Falbo, R.; Almeida, J.; et al. Towards a Commitment-Based Reference Ontology for Services. In Enterprise Dis- tributed Object Computing Conference (EDOC), 2013 17th IEEE In- ternational, Sept 2013, ISSN 1541-7719, pp. 175184, doi:10.1109/ EDOC.2013.28. [4] Guarino, N.; Oberle, D.; Staab, S. What Is an Ontology? In Handbook on Ontologies, edited by S. Staab; R. Studer, International Handbooks on Information Systems, Springer Berlin Heidelberg, 2009, ISBN 978-3- 540-70999-2, pp. 117, doi:10.1007/978-3-540-92673-3 0. Available from: http://dx.doi.org/10.1007/978-3-540-92673-3 0 [5] The Gene Ontology Consortium. The Gene Ontology project in 2008. Nucleic Acids Research, volume 36, no. suppl 1, 2008: pp. D440 D444, doi:10.1093/nar/gkm883, http://nar.oxfordjournals.org/ content/36/suppl 1/D440.full.pdf+html. Available from: http: //nar.oxfordjournals.org/content/36/suppl 1/D440.abstract [6] Object Management Group (OMG). OMG Unied Modeling Language (OMG UML), Superstructure. Object Management Group, Inc., Need- ham, MA, USA, 2011. Available from: http://www.omg.org/spec/UML/ 2.4.1/Superstructure/PDF/ 45 Bibliography [7] Carraretto, R. A Modelling Infrastructure for OntoUML. Bachelors the- sis, Federal University of Esprito Santo (UFES), Brazil, 2010, [accessed: 10. 1. 2014]. Available from: http://rcarraretto.googlecode.com/ files/aModelingInfrastructureForOntoUML.pdf [8] Guizzardi, G.; Wagner, G. Tutorial: Conceptual simulation model- ing with Onto-UML. In Simulation Conference (WSC), Proceedings of the 2012 Winter, Dec 2012, ISSN 0891-7736, pp. 115, doi:10.1109/ WSC.2012.6465328. [9] Guizzardi, G.; Wagner, G.; Sinderen, M. A formal theory of conceptual modeling universals. Technical report, Deutsches Forchungszentrum fur Kunstliche Intelligenz, 2004. [10] Guizzardi, G.; Wagner, G. Using the unied foundational ontology (UFO) as a foundation for general conceptual modeling languages. In Theory and Applications of Ontology: Computer Applications, Springer, 2010, pp. 175196. [11] Wikipedia. Normalized Systems. [ONLINE], 2014, [accessed: 1. 3. 2014]. Available from: http://en.wikipedia.org/wiki/Normalized Systems [12] Verelst, J.; Mannaert, H. Normalized Systems: Re-creating Information Technology Based on Laws for Software Evolvability. Antwerp, Belgium: Koppa, 2009, ISBN 978-90-77160-00-8. [13] Lehman, M. M. Programs, life cycles, and laws of software evolution. Proceedings of the IEEE, volume 68, no. 9, 1980: pp. 10601076. [14] McIlroy, M. D.; Buxton, J.; Naur, P.; et al. Mass-produced software com- ponents. In Proceedings of the 1st International Conference on Software Engineering, Garmisch Pattenkirchen, Germany, sn, 1968, pp. 8898. [15] Ontology and Conceptual Modelling Research Group (NEMO). On- toUML Lightweight Editor (OLED). [APPLICATION], 2014, [accessed: 12. 5. 2014]. Available from: https://code.google.com/p/ontouml- lightweight-editor/ [16] Ontology and Conceptual Modelling Research Group (NEMO). On- toUML Support. [ONLINE], 2014, [accessed: 1. 3. 2014]. Available from: http://nemo.inf.ufes.br/en/ontoumlsupport [17] Adriaenssens, P.; Mannaert, H. Normalized Systems Expanders v2.3 De- velopment Guide. 2013, working copy provided by NSX bvba. [18] Adriaenssens, P.; Mannaert, H. NS Expanders v2.3 Element Expanders Reference Guide. 2013, working copy provided by NSX bvba. 46 Bibliography [19] ISO/IEC 19507. Information technology Object Management Group Object Constraint Language (OCL). International Organization for Stan- dardization, Geneva, Switzerland, 2012. [20] ISO/IEC 14977. Information technology Syntactic metalanguage Ex- tended BNF. International Organization for Standardization, Geneva, Switzerland, 1996. [21] Goncalves, B.; Guizzardi, G.; Pereira Filho, J. G. An electrocardiogram (ECG) domain ontology. In Workshop on Ontologies and Metamodels for Software and Data Engineering, 2nd, Joao Pessoa, Brazil, 2007, pp. 68 81. [22] Leahy, P. Java Naming Conventions. [ONLINE], 2014, [accessed: 25. 3. 2014]. Available from: http://java.about.com/od/javasyntax/a/ nameconventions.htm [23] Oracle corp. Java Language Keywords. [ONLINE], 2014, [accessed: 25. 3. 2014]. Available from: http://docs.oracle.com/javase/tutorial/ java/nutsandbolts/ keywords.html [24] World Wide Web Consortium (W3C). Extensible Markup Language (XML) 1.0 (Fifth Edition). International Organization for Standardiza- tion, Geneva, Switzerland, 2008. Available from: http://www.w3.org/ TR/2008/REC-xml-20081126/ 47 Appendix A Acronyms UFO-A UFO module for structural aspects UFO-B UFO module for event-related concepts UFO-C UFO module for social and intentional aspects UFO-S UFO module for service-related concepts ASCII American Standard Code for Information Interchange DOLCE Descriptive Ontology for Linguistic and Cognitive Engineering EA Enterprise Architect EBNF Extended BackusNaur Form GFO General Formal Ontology ICT information and communication technology IS information system IT information technology LOA Laboratory for Applied Ontology MVC Model-View-Controller architecture MVVM Model-View-ViewModel architecture NEMO Ontology and Conceptual Modelling Research Group NS Normalized Systems 49 Glossary NSE Normalized Systems Expander OCL Object Constraint Language OLED OntoUML Lightweight Editor OntoUML UML prole for ontological modelling OO object oriented RefOntoUML XML representation of OntoUML data model SDLC software development life-cycle UFO Unied Foundation Ontology UML Unied Modelling Language XML Extensible Markup Language 50 Appendix B OntoUmlDistiller User Guide OntoUML Distiller is able to process les in XML representation of OntoUML data model (RefOntoUML) format. This fomat can be exported from On- toUML Lightweight Editor (OLED). Models created in Sparx Systems En- terprise Architect can be converted OLED to RefOntoUML as well. System requrements: Java version 1.7 or later. B.1 Model Design Guidelines OntoUmlDistiller is designed to inuence conceptual modelling as little as possible. Nevertheless, there are some design limitations and principles have to be followed. B.1.1 Diagrams and Entities Structure The diagram is meant one RefOntoUML le. Each of these les will be tran- formed into one NSE application component. The component name is derived from the diagram le by removing the .refontotuml extension. Entities can be shared among diagrams. Each entity has its base diagram. It can be linked to other diagrams by using the :: operator. Linked entity name consist of component name, the dot operator and name of the entity in base diagram (e.g. baseDiagramName::linkedEntityName). Attributes of this entity must be dened in its base component, otherwise they will be ignored. B.1.2 Data Type Denitions Attribute data types are identied in the model by their names. By their nature, they can be divided into two groups: 51 B. OntoUmlDistiller User Guide Simple data types are dened only with its name. This name must by one of the list of data types supported by the NSE. Every attribute data type is checked by the OntoUmlDistiller. When the attribute is not present on the list, error message is logged. Enumerated data types are data types with dened list of possible val- ues. It can be dened with custom name, representation data type (that has to be one of the simple) and a list of possible values. Unlike enumerations in common programming languages, this enumerated value is not encoded. Therefore the chosen representation data type must accommodate all submit- ted values. B.1.3 Naming Regulations Generally, only ASCII alphanumeric characters and a - (minus) are safe to use for naming purposes. Characters that will cause error or unpredicted behaviour are: (space), # (hash), (underscore) and ; (semicolon). Those character have to be replaced, if used anywhere in the model. Attribute elds must comply with the Java naming conventions [22]. The most critical rule: rst letter of the attribute name must be in lower case. Reserved Java keywords [23] should be avoided, as they can cause errors during the expansion process by NSE. B.2 Conguration File Sample conguration (example.distillerConfig) le is provided in the ap- plication release pack. Data are organized in simple XML structure. Customized values must not violate the naming regulations and the XML standard [24]. Following section explains used nodes and their attributes: node output attr folderLocation path to the generation output folder. If the folder or whole path does not exist, it is created. attr customizationSummary is boolean value describing whether all customization notes should written into one summarizing le. node logging attr level describes the desired login level. Possible values: ERROR, WARN, INFO, DEBUG, TRACE. attr outputFile path to the log le. 52 B.3. Launching the Application node application attr fullName is the full name of the generated application shown in the in- terface. Further information can be found in [17]. attr shortName is the name of the folder in expansion folder. Further information can be found in [18]. node baseComponents node value contains text value representing base component dependency. node dataTypes is enclosing tag for data type denitions. node dataType contains single data type denition. attr name is mandatory attribute dening the data type name, used as an identier in model. attr representation is optional attribute. When it is present, the data type is considered as enumerated data type, otherwise simple data type. node value contains text value representing one of possible enu- meration values. B.3 Launching the Application Application is launched from command line with following command: java -jar OntoUmlDistiller.jar <app.distillerConfig> <c1.refontouml> ... <cN.refontouml> <app.distillerConfig> path to the conguration le. It has to be the rst argument. <c1.refontouml> ... <cN.refontouml> are paths to RefOntoUML les to be processed. Their order does not matter. 53 Appendix C Case Study Model Diagrams 55 C. Case Study Model Diagrams C.1 Component Music Figure C.1: Component Music OntoUML diagram Band BandMember bandMembers Authorship PerformerArtist mediationM1 Album mediationM2 mediationM1 Recording mediation4 Track tracks performerArtists mediation3 componentOf1 IndividualArtist mediationM2 AlbumTrack albumTrack album records mediation3 Figure C.2: Component Music ER diagram after expansion 56 C.2. Component Object C.2 Component Object Figure C.3: Component Object OntoUML diagram HumanOrgan Coordinates SpatialThing thingLocation PhysicalObject physicalObject BiologicalEntity Person person coordinatess locatedIn Gallery coordinates locatedIn MaterialEntity constitutedBy HumanHeart person GeographicalSpace geographicalSpaces spatiallySubSumes Museum InanimateEntity constitutedBy Statue SurgeryRoom persons Figure C.4: Component Object ER diagram after expansion 57 C. Case Study Model Diagrams C.3 Component Organization Figure C.5: Component Organization OntoUML diagram Belief ActiveOrganization Group Organization organization Agent agents ActiveAgent MentalState mentalState PriorityLevel priorityLevelshigherThan Intention intention ExtinctOrganization Desire activeAgent priorityLevel intentionsmoreImportantThan group agent memberOf31 organization Figure C.6: Component Organization ER diagram after expansion 58 C.4. Component Person C.4 Component Person Figure C.7: Component Person OntoUML diagram Female BirthCerticate Ospring material2 Parent parent Father Person HumanHeart humanHeart SurgeryRoom isOccupiedBy BiologicalEntity biologicalEntity material2 parent LivingPerson DeceasedPerson DateObject issueDate dateOfBirth Male birthCerticate ospring Mother Figure C.8: Component Person ER diagram after expansion 59 Appendix D NSE Descriptor File Examples D.1 Application Descriptor ontoDistApp OntoUmlDistillerTestApplication #ADJUSTMENT NECESSARY: set styles # style= style=nsx style=nsxbootstrap component-account component-utils component-music component-organization component-person component-object #ADJUSTMENT OPTIONAL: set database schemas # optionDataBaseSchema- D.2 Component Descriptor object object-view depends-account depends-utils MTM-person 61 D. NSE Descriptor File Examples D.3 Data Descriptor person cz.cvut.fit.bp.ontodistapp.person Person Integer ssn ynn String name ynn Indirect speParent ynn Indirect speSetGsSex ynn Indirect speSetGsLifePhases ynn Indirect speIndividualArtist ynn Indirect speOffspring ynn Indirect dateOfBirth ynn Ln06cz.cvut.fit.bp.ontodistapp.object.SurgeryRoom isOccupiedBy ynn Ln05cz.cvut.fit.bp.ontodistapp.object.HumanHeart humanHeart ynn Ln05cz.cvut.fit.bp.ontodistapp.object.BiologicalEntity biologicalEntity ynn optionIndirectspeParent_cz.cvut.fit.bp.ontodistapp.person.Parent optionIndirectspeSetGsSex_cz.cvut.fit.bp.ontodistapp.person.Female optionIndirectspeSetGsSex_cz.cvut.fit.bp.ontodistapp.person.Male optionIndirectspeSetGsLifePhases_cz.cvut.fit.bp.ontodistapp.person.LivingPerson optionIndirectspeIndividualArtist_cz.cvut.fit.bp.ontodistapp.music.IndividualArtist optionIndirectspeOffspring_cz.cvut.fit.bp.ontodistapp.person.Offspring optionIndirectspeSetGsLifePhases_cz.cvut.fit.bp.ontodistapp.person.DeceasedPerson optionIndirectdateOfBirth_cz.cvut.fit.bp.ontodistapp.person.DateObject 62 Appendix E Contents of enclosed CD readme.txt....................................CD contents description Case Study..............................case study related documents Data Descriptors............................generated descriptors Expansion ....................... descriptors expansion artefact les Model...................................case study model diagrams Implementation...........................implementation related les OntoUmlDistiller.jar.........................application JAR le src.....................................implementation source code Text.......................................................thesis text BP Kolarik Vincenc.pdf..................PDF version of the thesis src.................................L A T E X source codes of the thesis 63