More Related Content Similar to Axel uhl sap@md-day2011 Similar to Axel uhl sap@md-day2011 (20) Axel uhl sap@md-day20111. Where Modeling Has Arrived
An Overview: Model-Driven Software Development at SAP
Dr. Axel Uhl, Chief Development Architect, Technology Strategy, SAP AG
November 24, 2011
2. Does Anyone Remember…?
MDA as thought of by the OMG
MOF-centric
Maybe using UML
Common Warehouse Metamodel?
Collection of implementation
technologies (Java, .net, CORBA,
Web Services)
XML-based model interchange
Typical set of services and concerns
(security, transactions)
Intended for business domains
Facilitated by model transformations
© 2011 SAP AG. All rights reserved. 2
3. Some of It Confused Many of Us
What’s optional? What’s mandatory?
Do domain-specific languages (DSL) fit in, or is it only UML?
What works, what doesn’t?
Can I really exchange my models (repeatedly) using XMI? Diagrams…?
What’s with CIM, PIM and PSM?
How much vendor support is there?
What’s my choice of enterprise-grade MOF repository implementations?
What if I already have other, non-MOF repositories?
Does XMI really help me to get from one vendor’s tool to the next?
If I design my MDA-compliant model transformations, will they survive?
© 2011 SAP AG. All rights reserved. 3
4. What’s Modeling Anyway (or: Is Modeling ≡ UML)?
There are many commonalities in what we call “programming language” and
“modeling language.” Both
have abstract and concrete syntax
can be of rather declarative or imperative nature
can use different types of representation
o (though we usually think of programming language artifacts as ASCII strings)
strive for adequate abstractions, concern separation and aspect localization
Many challenges of “programming” also exist for “modeling”
physical partitioning and management of artifacts, multi-level editing
dependencies, extensibility
teamwork aspects (change management, versioning, ...)
What’s the difference between
a code generator / model transformer and a compiler?
a piece of C++ code and a sequence chart?
© 2011 SAP AG. All rights reserved. 4
8. Abstraction Improves Portability
complete replace platform components 2&1 complete, deployed
specification migration effort with system
specification provided
at abstract, portable levels
amount of specification content
migration effort with
specification provided
in platform-specific
ways
Enabling / cost reduction for
architecture evolution
optimization across layers
sketches stack of abstractions and languages
(examples only)
process models component behavior runtime
(e.g., ARIS) models (UML) (e.g., ABAP) (e.g., C/C++)
© 2011 SAP AG. All rights reserved. 8
9. Abstraction Improves Development Efficiency
Take path of least effort
Detailing at low abstraction level causes extra effort and errors.
Example: write an object-oriented business application in assembler
© 2011 SAP AG. All rights reserved. 9
10. Abstract Properly!
This is what the art of software design is all about.
Focus on the application domain
Suppress unnecessary detail
Avoid unnecessary dependencies
Anticipate future change
Sounds familiar?
Those are (more or less) key characteristics of modeling
Represent some real thing homomorphically Prof. Dr. Herbert Stachowiak
Representation and real thing are linked by a projection
The projection is driven by the pragmatics
© 2011 SAP AG. All rights reserved. 10
16. ...and the Wiring Plan as another Partial View
© 2011 SAP AG. All rights reserved. 16
17. Modeling
How is a model trying to help?
More adequate domain abstractions
Less dependency on volatile underlying
platform(s)
No unnecessary details
The modeling language and its environment
introduce a “platform” of their own (PIM vs. PSM…)
This platform has its own fate and mission.
It may decay just the same way as other
platforms have disappeared.
Where’s your compiler that you wrote for your
DSL back in 2001…?
© 2011 SAP AG. All rights reserved. 17
18. Models as Documentation
Example: SAP’s Technical
Architecture Modeling (TAM)
Standard
UML enhancements for
architecture models
Required by SAP processes.
Accepted by architects.
© 2011 SAP AG. All rights reserved. 18
19. Models for Interoperability and Standardization
Example: Banking Industry Architecture Network (BIAN)
Standardizes a Service-Oriented Architecture (SOA) in the banking industry
Defines a BIAN meta model using MOF
Defines a UML profile allowing UML tools to edit BIAN models
Uses Object Constraint Language (OCL) to validate domain models
o Against UML profile
o Against domain rules
Generates HTML documentation from the models
Will be able to generate XML Schemas from message types defined in models
http://www.bian.org/content
© 2011 SAP AG. All rights reserved. 19
20. Structured Metadata / Models in Development at SAP
With SAP’s history, using repositories for structured metadata is very usual.
ABAP and R/3 largely work this way.
Many SAP tools followed this general paradigm.
Only two out of hundreds use a MOF-compliant repository
UML plays no role in “blueprint modeling” (models that impact the executable
software by transformation or interpretation)
© 2011 SAP AG. All rights reserved. 20
21. The Tool Ticker – Integration Builder: Data Types
Data Type Name & Namespace
Software Components
Versions
Data Type Structure /
XML Schema
© 2011 SAP AG. All rights reserved. 21
22. The Tool Ticker – Integration Builder: Business Objects
New Service Interface
New Data Type
New Business Object
© 2011 SAP AG. All rights reserved. 22
23. The Tool Ticker – Integration Builder: Business Objects
Business Object
aggregates BO Nodes
Key
Data Structure
(Re-)Use of Data Types
© 2011 SAP AG. All rights reserved. 23
24. The Tool Ticker – Integration Builder: Business Objects
Actions for
Business Logic Queries for retrieval of
BO Nodes
Associations between
BO Nodes
© 2011 SAP AG. All rights reserved. 24
25. The Tool Ticker – ABAP BO Proxy Generator
ES Repository Browser Name Mapping
Type Mapping
Corresponding ABAP Data Type to
in ES Builder modeled Data Type
© 2011 SAP AG. All rights reserved. 25
26. The Tool Ticker – ABAP BO Viewer
Key Data Structure
Business Object (Re-)Use of Data Types
aggregates BO Nodes
Name Mapping
© 2011 SAP AG. All rights reserved. 26
27. The Tool Ticker – Maestro State & Action Modeling
© 2011 SAP AG. All rights reserved. 27
28. The Tool Ticker – Visual Composer 05 (WD Pattern)
ES Browser connects
to ES Repository
Empty OIP Pattern
© 2011 SAP AG. All rights reserved. 28
29. The Tool Ticker – Visual Composer 05 (WD Pattern)
BO Query
Search View
Result
View
Data Source
Query
© 2011 SAP AG. All rights reserved. 29
30. The Tool Ticker – Visual Composer: UI Layout
© 2011 SAP AG. All rights reserved. 30
31. The Tool Ticker – Visual Composer: UI Layout
© 2011 SAP AG. All rights reserved. 31
32. The Tool Ticker – Visual Composer: UI Layout
A lot of input fields, but
only few are really needed
© 2011 SAP AG. All rights reserved. 32
33. The Tool Ticker – Visual Composer: Pattern Configuration
Disable most of the
optional input fields
Search View
© 2011 SAP AG. All rights reserved. 33
34. The Tool Ticker – Visual Composer: Analytical
Dashboards
© 2011 SAP AG. All rights reserved. 34
35. The Tool Ticker – Portal Content Studio
© 2011 SAP AG. All rights reserved. 35
36. The Tool Ticker – Portal Content Studio
© 2011 SAP AG. All rights reserved. 36
37. The Tool Ticker – WD Java: Data Modeler
© 2011 SAP AG. All rights reserved. 37
38. The Tool Ticker – WD Java: Navigation Modeler
© 2011 SAP AG. All rights reserved. 38
41. The Tool Ticker – Java Dictionary
© 2011 SAP AG. All rights reserved. 41
42. The Tool Ticker – Composite Application Framework
© 2011 SAP AG. All rights reserved. 42
43. The Tool Ticker – Guided Procedures
© 2011 SAP AG. All rights reserved. 43
44. The Tool Ticker – Guided Procedures
© 2011 SAP AG. All rights reserved. 44
45. The Tool Ticker – Guided Procedures
© 2011 SAP AG. All rights reserved. 45
46. The Tool Ticker – Guided Procedures
© 2011 SAP AG. All rights reserved. 46
47. The Tool Ticker – BEx Web Analyzer
Drag and
Drop
© 2011 SAP AG. All rights reserved. 47
48. The Tool Ticker – ESA Tool Overview
Interface Structure Model
Interface Structure Model (Business Document Object) XML - Schema
Level 1 2 3 4 5 1 2 3 4 5
<X1>
<A1>
<A2>
<A2>
<A3>
<A3>
A1 A2
<A1>
<X2>
A3 <X3>
<C2>
X1 X2 X3 C2 <C1>
C1
<C1>
X X4 B3 B4 <X3>
<C2>
<X2>
<X4>
<B3>
<B4>
<B4>
<B3>
<X4>
Directed relationships <X1>
ESA Scenario
Solution Map Configured Scenario Sales Order
Quotation
Processing
RFQ Processing
at Customer
Variant Details Supply Planning
Sales Order
Purchase Order
Processing at
Process Interaction Model
Processing
(XI Repository)
Customer
A
Inbound Delivery
Outbound Delivery
Processing at
Processing
Customer
A
Supplier Invoice
Customer Invoice
Processing at
Processing
Customer
A
A Due Item Processing
Object Data Type
A Payment Processing
Payment Processing
Model
at Business Partner
Accounting
Payment processing Bank statement
A Document
at house bank creation at bank
Processing
Process Step Documentation
Status Model
© 2011 SAP AG. All rights reserved. 48
49. The Tool Ticker – Solution Composer
© 2011 SAP AG. All rights reserved. 49
50. The Tool Ticker – ARIS: Process Components
© 2011 SAP AG. All rights reserved. 50
51. The Tool Ticker – Business Workflow
© 2011 SAP AG. All rights reserved. 51
52. The Tool Ticker – Business Workflow
© 2011 SAP AG. All rights reserved. 52
53. The Tool Ticker – Business Workflow
© 2011 SAP AG. All rights reserved. 53
54. The Tool Ticker – Business Workflow
© 2011 SAP AG. All rights reserved. 54
55. The Tool Ticker – Business Workflow
© 2011 SAP AG. All rights reserved. 55
56. The Tool Ticker – Enterprise Data Warehouse: Transform.
© 2011 SAP AG. All rights reserved. 56
57. The Tool Ticker – Enterprise Data Warehouse: Extraction
© 2011 SAP AG. All rights reserved. 57
58. The Tool Ticker – ABAP Class Builder
© 2011 SAP AG. All rights reserved. 58
59. The Tool Ticker – ABAP Web Dynpro
© 2011 SAP AG. All rights reserved. 59
60. The Tool Ticker – ABAP: Graphical Screenpainter
© 2011 SAP AG. All rights reserved. 60
61. The Tool Ticker – ABAP Data Modeler
© 2011 SAP AG. All rights reserved. 61
62. The Tool Ticker – ABAP Dictionary: Foreign Keys
© 2011 SAP AG. All rights reserved. 62
63. The Tool Ticker – Integration Builder: Business Scenarios
© 2011 SAP AG. All rights reserved. 63
64. The Tool Ticker – BI: Query Designer
© 2011 SAP AG. All rights reserved. 64
65. The Tool Ticker – BI: Report Designer
© 2011 SAP AG. All rights reserved. 65
66. The Tool Ticker – BI: Web Application Designer
© 2011 SAP AG. All rights reserved. 66
67. The Tool Ticker – Mobile Design Time
© 2011 SAP AG. All rights reserved. 67
68. The Tool Ticker – Mobile Design Time
© 2011 SAP AG. All rights reserved. 68
73. The Tool Ticker – Web Dynpro Authoring Tool ABAP
© 2011 SAP AG. All rights reserved. 73
74. The Tool Ticker – Web Dynpro Authoring Tool Java
© 2011 SAP AG. All rights reserved. 74
75. The Tool Ticker
This could go on for a long time…
...
MOM, SLD, FDT, KM, Shanghai Tool, Easy Enhancement Workbench, ...
Few of these tools
- integrate in the same workbench environment
- use compatible, integrated model repository technology
- support end-to-end consistency checks
- support methods for agile refactoring
© 2011 SAP AG. All rights reserved. 75
76. Or as Foote & Yoder Call It
Big Balls of Mud (Also Works for Spaghetti…)
“A BIG BALL OF MUD is haphazardly structured,
sprawling, sloppy, duct-tape and bailing wire,
spaghetti code jungle. We’ve all seen them. These
systems show unmistakable signs of unregulated
growth, and repeated, expedient repair. Information
is shared promiscuously among distant elements of
the system, often to the point where nearly all the
important information becomes global or
duplicated. The overall structure of the system may
never have been well defined. If it was, it may have
eroded beyond recognition. Programmers with a
shred of architectural sensibility shun these
quagmires. Only those who are unconcerned about
architecture, and, perhaps, are comfortable with the
inertia of the day-to-day chore of patching the holes
in these failing dikes, are content to work on such
systems.” [http://www.laputan.org/mud/]
© 2011 SAP AG. All rights reserved. 76
77. Textual Modeling – An Important Trend?
Martin Fowler wrote about it
http://www.martinfowler.com/articles/languageWorkbench.html
Several frameworks support it
e.g., EMFText, Xtext, FURCAS, TMF, TCS, MontiCore, (Oslo)
General concept
Consider the abstract syntax tree (AST) a model
Consider the textual representation a view of a part of the model
Frameworks vary greatly…
…in how they can deal with partial and/or overlapping views
…in how they preserve lexical information (whitespaces, line breaks, comments)
…in how they can store, retrieve and manage the models
…in what textual grammar classes they support
…in how powerful the mapping between meta model and textual syntax can be.
© 2011 SAP AG. All rights reserved. 77
78. Different Approaches towards Textual DSLs
Compilers, hand-written
File System
Parse into repository for
Compiler-Compilers, lex/yacc et al.
improved tool support; hand-written
.o smart editors with
Compiler .class
syntax and error highlighting;
File System see SNiFF, Eclipse JDT and others
Language workbench,
.o
Compiler .class deriving editor, parser
and index automatically
“Index”
from mapping
specification
resulting in different
Graphical
Textual qualities
Tools
Tools
geared towards different
boundary conditions
both make language
design with tool support a
lot easier
Textual tools, projectional editors, working
Graphical tools, working on structured object repository, database-like
on structured object repository,
database-like
© 2011 SAP AG. All rights reserved. 78
79. A Real Difference: Partial, Overlapping
Wheel is part of two diagrams; each diagram only shows part of the domain
vehicles vehicles
Vehicle +wheels Wheel
0..1 1..*
+doors Wheel
Car Door
0..1 0..*
0..1
1 +engine
Engine
The challenge: updates through one view may update another
© 2011 SAP AG. All rights reserved. 79
80. A Real Difference: Partial, Overlapping
Add attributes to Wheel
vehicles vehicles
Vehicle +wheels Wheel
0..1 1..*
Car +doors Door
0..1 0..*
0..1
1 +engine
Engine
© 2011 SAP AG. All rights reserved. 80
81. A Real Difference: Partial, Overlapping
They also show up here, distort the layout and go against the view’s purpose
vehicles vehicles
© 2011 SAP AG. All rights reserved. 81
82. A Real Difference: Partial, Overlapping
So we remove them from the other view, but not the underlying domain model
vehicles vehicles
Vehicle +wheels Wheel
0..1 1..*
Car +doors Door
0..1 0..*
0..1
1 +engine
Engine
© 2011 SAP AG. All rights reserved. 82
83. A Real Difference: Partial, Overlapping
Adding classes and associations, however, typically does not alter other views
vehicles vehicles
Vehicle +wheels Wheel
0..1 1..*
Car +doors Door
0..1 0..*
0..1
1 +engine
Engine
© 2011 SAP AG. All rights reserved. 83
84. A Real Difference: Partial, Overlapping
With partial, overlapping views, delete has to come in two flavors. Delete from view…
vehicles vehicles
Vehicle +wheels Wheel
0..1 1..*
Car +doors Door
0..1 0..*
0..1
1 +engine
Engine
© 2011 SAP AG. All rights reserved. 84
85. A Real Difference: Partial, Overlapping
…and delete from domain model
vehicles vehicles
Vehicle +wheels Wheel
0..1 1..*
Car +doors Door
AirPressureSensor
0..1 0..*
0..1
1 +engine
Engine
© 2011 SAP AG. All rights reserved. 85
86. Imagine the same for Text
Wheel class showing in two views of the vehicles package, one of them partial
package vehicles {
class Vehicle { package vehicles {
Wheel 1..* wheels; class Wheel {
} }
class Wheel {} }
class Car extends Vehicle {
Door 0..* doors;
Engine 1..1 engine;
}
class Engine {}
}
© 2011 SAP AG. All rights reserved. 86
87. Imagine the same for Text
Wheel class as partial view; Package vehicles with two partial views
package vehicles {
class Vehicle { package vehicles {
Wheel 1..* wheels; class Wheel {
} Double radius;
class Wheel {} Boolean tubeless;
class Car extends Vehicle { Double width;
Door 0..* doors; AirPressureSensor 0..1 airPressureSensor;
Engine 1..1 engine; }
} class AirPressureSensor {}
class Engine {} }
}
© 2011 SAP AG. All rights reserved. 87
88. Imagine the same for Text
Add attributes to Wheel class
package vehicles {
class Vehicle { package vehicles {
Wheel 1..* wheels; class Wheel {
} Double radius;
class Wheel {} Boolean tubeless;
class Car extends Vehicle { Double width;
Door 0..* doors; }
Engine 1..1 engine; }
}
class Engine {}
}
© 2011 SAP AG. All rights reserved. 88
89. Imagine the same for Text
Attributes also show up here
package vehicles {
class Vehicle {
Wheel 1..* wheels;
package vehicles {
}
class Wheel {
class Wheel {
Double radius;
Double radius;
Boolean tubeless;
Boolean tubeless;
Double width;
Double width;
}
}
}
class Car extends Vehicle {
Door 0..* doors;
Engine 1..1 engine;
}
class Engine {}
}
© 2011 SAP AG. All rights reserved. 89
90. Imagine the same for Text
So we remove them from the other view, but not the underlying domain model
package vehicles {
class Vehicle { package vehicles {
Wheel 1..* wheels; class Wheel {
} Double radius;
class Wheel {} Boolean tubeless;
class Car extends Vehicle { Double width;
Door 0..* doors; }
Engine 1..1 engine; }
}
class Engine {}
}
© 2011 SAP AG. All rights reserved. 90
91. Imagine the same for Text
Adding classes and associations may not alter other views
package vehicles {
class Vehicle { package vehicles {
Wheel 1..* wheels; class Wheel {
} Double radius;
class Wheel {} Boolean tubeless;
class Car extends Vehicle { Double width;
Door 0..* doors; AirPressureSensor 0..1 airPressureSensor;
Engine 1..1 engine; }
} class AirPressureSensor {}
class Engine {} }
}
© 2011 SAP AG. All rights reserved. 91
92. Imagine the same for Text
With partial, overlapping views, delete has to come in two flavors. Delete from view…
package vehicles {
class Vehicle { package vehicles {
Wheel 1..* wheels; class Wheel {
} Double radius;
class Wheel {} Boolean tubeless;
class Car extends Vehicle { Double width;
Door 0..* doors; AirPressureSensor 0..1 airPressureSensor;
Engine 1..1 engine; }
} class AirPressureSensor {}
class Engine {} }
}
© 2011 SAP AG. All rights reserved. 92
93. Imagine the same for Text
…and delete from domain model
package vehicles {
class Vehicle { package vehicles {
Wheel 1..* wheels; class Wheel {
} Double radius;
class Wheel {} Boolean tubeless;
class Car extends Vehicle { Double width;
Door 0..* doors; AirPressureSensor 0..1 airPressureSensor;
Engine 1..1 engine; }
} class AirPressureSensor {}
class Engine {} }
}
This is pretty unusual for a text editor.
But it is what happens when you apply the core principles of modeling.
Under which circumstances is this useful?
© 2011 SAP AG. All rights reserved. 93
94. Is Modeling a Lost Cause?
Not necessarily
Some convergence on Eclipse / EMF (at least somehow like EMOF)
Starting to use EMF as façade for existing design-time data / models
UML in widespread use for documentation
OCL starting to gain foothold in model validation
Some “textual modeling” starting, mostly based on EMF
However
Still too many heterogeneous repositories and tool workbenches
Model interchange (XMI?) does not seem to solve our problems
No standards in use for model transformation / code generation
Tools lag behind in quality compared to tools for handling source code
© 2011 SAP AG. All rights reserved. 94
95. Summary
Modeling adds to the history of computing
Partial and overlapping views, using different forms of notation
Comes with its own set of challenges
Until modeling tools reach the maturity of, say, an Eclipse JDT, developers will
perceive them as hindrance rather than accelerator.
We need broadly-accepted and working standards
We shouldn’t try to automate insoluble mapping problems.
“Computer! Turn my little high-level sketch into an executable system!”
“Textual modeling” trend can bridge some gaps in interesting ways.
© 2011 SAP AG. All rights reserved. 95
96. Thank You!
Questions?
axel.uhl@sap.com
© 2011 SAP AG. All rights reserved. 96
97. © 2011 SAP AG. Alle Rechte vorbehalten.
Weitergabe und Vervielfältigung dieser Publikation oder von Teilen daraus sind, Java ist eine eingetragene Marke von Sun Microsystems, Inc.
zu welchem Zweck und in welcher Form auch immer, ohne die ausdrückliche JavaScript ist eine eingetragene Marke der Sun Microsystems, Inc., verwendet
schriftliche Genehmigung durch SAP AG nicht gestattet. In dieser Publikation unter der Lizenz der von Netscape entwickelten und implementierten Technologie.
enthaltene Informationen können ohne vorherige Ankündigung geändert werden.
SAP, R/3, SAP NetWeaver, Duet, PartnerEdge, ByDesign, SAP BusinessObjects
Die von SAP AG oder deren Vertriebsfirmen angebotenen Softwareprodukte Explorer, StreamWork und weitere im Text erwähnte SAP-Produkte und -
können Softwarekomponenten auch anderer Softwarehersteller enthalten. Dienstleistungen sowie die entsprechenden Logos sind Marken oder eingetragene
Microsoft, Windows, Excel, Outlook, und PowerPoint sind eingetragene Marken Marken der SAP AG in Deutschland und anderen Ländern.
der Microsoft Corporation. Business Objects und das Business-Objects-Logo, BusinessObjects, Crystal
IBM, DB2, DB2 Universal Database, System i, System i5, System p, System p5, Reports, Crystal Decisions, Web Intelligence, Xcelsius und andere im Text
System x, System z, System z10, System z9, z10, z9, iSeries, pSeries, xSeries, erwähnte Business-Objects-Produkte und Dienstleistungen sowie die
zSeries, eServer, z/VM, z/OS, i5/OS, S/390, OS/390, OS/400, AS/400, S/390 entsprechenden Logos sind Marken oder eingetragene Marken der Business
Parallel Enterprise Server, PowerVM, Power Architecture, POWER6+, POWER6, Objects Software Ltd. Business Objects ist ein Unternehmen der SAP AG.
POWER5+, POWER5, POWER, OpenPower, PowerPC, BatchPipes, Sybase und Adaptive Server, iAnywhere, Sybase 365, SQL Anywhere und
BladeCenter, System Storage, GPFS, HACMP, RETAIN, DB2 Connect, RACF, weitere im Text erwähnte Sybase-Produkte und -Dienstleistungen sowie die
Redbooks, OS/2, Parallel Sysplex, MVS/ESA, AIX, Intelligent Miner, WebSphere, entsprechenden Logos sind Marken oder eingetragene Marken der Sybase Inc.
Netfinity, Tivoli und Informix sind Marken oder eingetragene Marken der IBM Sybase ist ein Unternehmen der SAP AG.
Corporation.
Alle anderen Namen von Produkten und Dienstleistungen sind Marken der
Linux ist eine eingetragene Marke von Linus Torvalds in den USA und anderen jeweiligen Firmen. Die Angaben im Text sind unverbindlich und dienen lediglich zu
Ländern. Informationszwecken. Produkte können länderspezifische Unterschiede
Adobe, das Adobe-Logo, Acrobat, PostScript und Reader sind Marken oder aufweisen.
eingetragene Marken von Adobe Systems Incorporated in den USA und/oder Die in dieser Publikation enthaltene Information ist Eigentum der SAP. Weitergabe
anderen Ländern. und Vervielfältigung dieser Publikation oder von Teilen daraus sind, zu welchem
Oracle ist eine eingetragene Marke der Oracle Corporation. Zweck und in welcher Form auch immer, nur mit ausdrücklicher schriftlicher
UNIX, X/Open, OSF/1 und Motif sind eingetragene Marken der Open Group. Genehmigung durch SAP AG gestattet.
Citrix, ICA, Program Neighborhood, MetaFrame, WinFrame, VideoFrame und
MultiWin sind Marken oder eingetragene Marken von Citrix Systems, Inc.
HTML, XML, XHTML und W3C sind Marken oder eingetragene Marken des
W3C®, World Wide Web Consortium, Massachusetts Institute of Technology.
© 2011 SAP AG. All rights reserved. 98