Towards a Common Metamodel for the Development of Web Applications Nora Koch and Andreas Kraus Ludwig-Maximilians-Universität Munich, Germany
Motivation Overwhelming diversity of Web methodologies Goal: Different views (models) and modeling elements Different notations Unification at high level of abstraction metamodel for Web methodologies Common metamodel Better comparison and integration Fundamental for tool support and code generation Allows different development processes Allows use of subsetsof modeling elements (like UML) Allows different notations (concrete syntax) Andreas Kraus Towards a Common Metamodel for the Development of Web Applications 2
Overview About UWE A Step Towards the Common Metamodel: UWE Metamodel Mapping to the Notation Conclusions and Future Work Andreas Kraus Towards a Common Metamodel for the Development of Web Applications 3
About UWE UML-based Web Engineering (UWE) is an object-oriented approach based on UML and the Unified Process Main focus of UWE is the systematic design followed by a semiautomatic generation of Web applications Systematic design supported by CASEtool ArgoUWE an extension of ArgoUML Semi-automatic generation supported by UWEXML a model-driven Code Generator for deployment to an XML publishing framework OpenUWE development environment UWE metamodel Andreas Kraus Towards a Common Metamodel for the Development of Web Applications 4
UWE Metamodel Definition of concepts and relationships among concepts Compatibility with the OMG metamodeling architecture MOF meta-metamodel XMI interchange format tool compatibility Conservative extension of the UML metamodel Static semantics given by OCL constraints (Well-formedness rules) Basis for the open tool suite OpenUWE MOF UML UWE ApplicationModel M3 M2 M1 Andreas Kraus Towards a Common Metamodel for the Development of Web Applications 5
Conservative Extension UML modeling elements are not modified, e.g. by adding additional features are extended by inheritance Valid UML model valid UWE model Class Class ConceptualClass NavigationClass NavigationClass Not allowed for conservative extensions! Andreas Kraus Towards a Common Metamodel for the Development of Web Applications 6
Package Structure UWE Behavioral Elements Behavioral Behavioral Elements Elements Model Management Model Management Model Management Foundation Foundation Foundation = UML Metamodel = UWE Metamodel Andreas Kraus Towards a Common Metamodel for the Development of Web Applications 7
Package Structure (cont.) Foundation Core Behavioral Elements Conceptual Navigation Presentation Adaptation Task User Context Environment Model Management Separation of Concerns Andreas Kraus Towards a Common Metamodel for the Development of Web Applications 8
Conceptual Package Feature +feature {ordered} 0..1 +owner Classifier 1 +participant AssociationEnd +association 2.. +connection BehavioralFeature StructuralFeature {ordered} 1 Operation Attribute Class Association ConceptualOperation ConceptualAttribute ConceptualClass ConceptualAssociation = UML Metamodel = UWE Metamodel Andreas Kraus Towards a Common Metamodel for the Development of Web Applications 9
Navigation Package Class Association NavigationNode islandmark : Boolean +source 1 {derived} +outlinks Link isautomatic : Boolean +target 1.. {derived} +inlinks 1.. NavigationClass Menu ExternalNode url : String ExternalLink NavigationLink TaskLink 0..1 Andreas Kraus Towards a Common Metamodel for the Development of Web Applications 10
Navigation Package (cont.) NavigationNode ConceptualClass (UWE.Foundation.Core.Conceptual) +derivedfrom 1 NavigationClass <<implicit>> ConceptualAttribute (UWE.Foundation.Core.Conceptual) +derivedfromattributes NavigationAttribute Attribute Example Same example of a well-formedness constraint in OCL: rule: context inv: Navigation NavigationClass attributes are derived from from conceptual attributes. These navigation attributes have to be reachable by navigation forall( f self.derivedfrom.transitiveclosure->exists( feature = f ) ) through the model self.feature->select( ocliskindof(navigationattribute) ).derivedfromattributes-> Andreas Kraus Towards a Common Metamodel for the Development of Web Applications 11
Mapping to the Notation Mapping to extended UML syntax in a non-standard way i.e. not using extension mechanisms of the UML Standard UML CASE tools can not be used Good documentation required Example: islandmark NavigationNode islandmark : Boolean MyNavigationClass NavigationClass abstract syntax notation Andreas Kraus Towards a Common Metamodel for the Development of Web Applications 12
Mapping to the Notation (cont.) Mapping to a UML Profile Mapping uses standard extension mechanisms like stereotypes, tagged values and OCL constraints Standard UML CASE tools can be used Compatibility with the UML XMI interchange format Profile support Active: by plug-ins, tool extensions Passive: by an external tool Andreas Kraus Towards a Common Metamodel for the Development of Web Applications 13
Mapping Rules Systematic rules for mapping a metamodel to a UML profile: Classes Elements with stereotype Attributes Tagged values Inheritance Inheritance among stereotypes Repeated mapping of attributes and associations Associations Tagged values or associations (for Classifiers) NavigationNode islandmark : Boolean NavigationClass abstract syntax <<navigation class>> <<navigation class>> <<navigation MyNavigationClass class>> MyNavigationClass MyNavigationClass {islandmark, derivedfrom=mycclass} {islandmark} notation «navigation node» «navigation class» Andreas Kraus Towards a Common Metamodel for the Development of Web Applications 14
Example UWE Model <<navigation class>> Conference {islandmark, derivedfrom=conference} reviewdeadline : Date{derivedFromAttributes=reviewDeadline} submissiondeadline : Date{derivedFromAttributes=submissionDeadline} title : String{derivedFromAttributes=title} <<navigation link>> <<navigation class>> Paper {derivedfrom=paper} keywords[] : String{derivedFromAttributes=keyword.key} title : String{derivedFromAttributes=title} <<navigation link>> 1.. <<navigation class>> {derivedfrom=author} {derivedfrom=author} <<navigation link>> affilation : String{derivedFromAttributes=affilation} name : String{derivedFromAttributes=name} 1.. SubmittedPapers <<navigation link>> <<navigation class>> Author affilation i : String{derivedFromAttributes=affilation} name : String{derivedFromAttributes=name} Andreas Kraus Towards a Common Metamodel for the Development of Web Applications 15
Conclusions / Future Work Definition of the UWE metamodel a first step towards a common metamodel for Web applications Systematic mapping to the UWE notation (UML profile) Future Work Refinement of the UWE metamodel and unification with other methodologies, especially concerning dynamic aspects Meta tool suite OpenUWE CASE tool ArgoUWE Code generators Model checking Andreas Kraus Towards a Common Metamodel for the Development of Web Applications 16
Thank you for your attention Further questions? Nora Koch kochn@informatik.uni-muenchen.de Andreas Kraus krausa@informatik.uni-muenchen.de