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