Title: Change Management on Hybrid OMDoc Documents: A Case Study
1Change Management on Hybrid OMDoc Documents A
Case Study
Sönke Holsten, Normen Müller
2What is Change Management on Hybrid OMDoc
Documents?
- Change Management
- Maintenance of relations
- Propagation of changes
- Hybrid OMDoc Documents
- self-contained structured compositions of
information units hosted in various application
domains with OMDoc as the top-level information
unit
3Document-based Software Development
- Markups constituting the software development
process - formal specifications ZML, OMDoc
- design diagram XMIUML
- source code JavaML, CodeML
4Requirements Specification
- The software should be able to manage phone
numbers, i.e. represent a phonebook. Each entry
in the phonebook should consist of a phone number
and a name. It should be possible to - add entries
- delete entries
- query for entries by name
5UML Diagram
- ltUMLModelgt
- ltUMLClass namePhonebookgt
- ltUMLOperation nameaddEntry/gt
- ltUMLOperation namedelEntry /gt
- ltUMLOperation namesearchEntry /gt
- lt/UMLClassgt
- ltUMLClass namePhonebookEntrygt
- ltUMLAttribute namenumber /gt
- ltUMLAttribute namename /gt
- lt/UMLClassgt
- ltUMLDatatype nameint/gt
- ltUMLDatatype namestring/gt
- ltUMLDatatype namevoid/gt
- ltUMLAssociation /gt
- lt/UMLModelgt
6Source Code
- /
- This is the class Phonebook, which
- manages phonebook entries
- consisting of a name and a number
- /
- class Phonebook
-
- Public
- void addEntry(string name, int number)
- void delEntry(string name)
- int searchEntry(string name)
- /
- Phonebook class empty constructor.
- /
- Phonebook()
- /
- Phonebook class empty destructor.
- /
- Phonebook()
... ltccdef exportsearchEntry"gt ltccsym
cd"cpp.dec" name"public-type-function"/gt
ltapplygt ltccsym cd"cpp.types name"funtype"/gt
ltccsym cd"cpp.types" nameint"/gt ltccsym
cd"cpp.types" name"string"/gt lt/applygt ltbindgt
ltccsym cd"cpp.proc" name"function"/gt ltbvargt
ltccv name"name"/gt lt/bvargt ...
lt/bindgt lt/ccdefgt ...
7Maintenance of relations
Requirements
Satisfied by
- Explicit statingof relations
- Deriving new relations
UML Diagram
Implemented by
Source Code
Verified by
Tested by
Test case
8Change Propagation
- Software undergoes changes, e.g. new
functionality is implemented It should be
possible to query for entries by number - Change step by step
- Programmer renames existing method searchEntry to
searchEntryByName
9Requirements Specification
- The software should be able to manage phone
numbers, i.e. represent a phonebook. Each entry
in the phonebook should consist of a phone number
and a name. It should be possible to - add entries
- delete entries
- query for entries by name
10UML Diagram
- ltUMLModelgt
- ltUMLClass namePhonebookgt
- ltUMLOperation nameaddEntry/gt
- ltUMLOperation namedelEntry /gt
- ltUMLOperation namesearchEntry /gt
- lt/UMLClassgt
- ltUMLClass namePhonebookEntrygt
- ltUMLAttribute namenumber /gt
- ltUMLAttribute namename /gt
- lt/UMLClassgt
- ltUMLDatatype nameint/gt
- ltUMLDatatype namestring/gt
- ltUMLDatatype namevoid/gt
- ltUMLAssociation /gt
- lt/UMLModelgt
11Primitive Equivalence Relations
ltagt ltbgtlt/bgt ltcgtltd/gtlt/cgt lt/agt
ltagtltb/gtltcgtltd/gt lt/cgtlt/agt
a
c
b
d
XML
12Primitive Equivalence Relations (2)
a
a
c
b
c
b
d
d
XML
Grammar
13Primitive Equivalence Relations (3)
a
a
c
b
c
b
d
e
XML
Grammar
DocModel
14Document Model
- Equivalence Relations
- Similarity Groups
- Groups elements that are considered equal under a
certain equivalence relation - Dependencies
- What dependencies may exist
- Rules to compute dependencies
15Classified Dependencies
- 3-tuple lt(a,b), R, eqgt, where
- a, b are information units
- (a,b) ? R
- eq is a set of equivalence relations
- CDs react sensitive on eq
16Change Relation
- 3-tuple lt(a,b), R, eqgt, where
- a, b are information units
- (a,b) ? R
- eq is a set of equivalence relations
- CRs preserve eq
17Outlook
- Representation of
- differences (XUpdate/ XQuery Update Facility
RDF) - dependencies (RDF schema)
- equivalence relations (?)
- Extend Phonebook example step by step
18Questions I want to answer
- Are primitive equivalence relations sufficient
for change detection? - What information do we need to automatically
propagate a change?
19Thank you for your attention!
20Any suggestions?