Aspect Orientation for Your Language of Choice Florian Heidenreich, Jendrik Johannes, Steffen Zschaler Workshop on Aspect-Oriented Modelling 30 September, 2007
Fakultät Informatik, Institut für Software- und Multimediatechnik, Lehrstuhl Softwaretechnologie TU Dresden, (c) Steffen ZschalerFolie 2 von 14 Outline 1.Motivation 2.Invasive Software Composition 3.Reuseware – ISC for arbitrary languages 4.Aspect Orientation with Reuseware 5.Conclusions
Fakultät Informatik, Institut für Software- und Multimediatechnik, Lehrstuhl Softwaretechnologie TU Dresden, (c) Steffen ZschalerFolie 3 von 14 Motivation What do you look for when developing a domain-specific language? –Fitness for purpose Provision of appropriate concepts for the domain -Supportfor modular development? for components? for reuse? for cross-cutting concerns? Would be good, BUT difficult and time-consuming!
Fakultät Informatik, Institut für Software- und Multimediatechnik, Lehrstuhl Softwaretechnologie TU Dresden, (c) Steffen ZschalerFolie 4 von 14 Motivation (2) DSL embedded in Host Language Standalone DSL Domain-Specific Concepts Available General Engineering Concepts Available (Modules, Components…) Here in particular: Aspect Orientation Support Here in particular: Aspect Orientation Support
Fakultät Informatik, Institut für Software- und Multimediatechnik, Lehrstuhl Softwaretechnologie TU Dresden, (c) Steffen ZschalerFolie 5 von 14 taxComputation: Expression public class TaxPayer { private double income; public double deductTax() { return ; } public class TaxPayer { private double income; public double deductTax() { return ; } public class TaxPayer { private double income; public double deductTax() { return income * 0.4; } public class TaxPayer { private double income; public double deductTax() { return income * 0.4; } Invasive Software Composition Generic grey-box composition technique Based on manipulation of abstract syntax trees / abstract syntax models bind income * income * 0.4 public class TaxPayer { private double income; public double deductTax() { return income * ; } public class TaxPayer { private double income; public double deductTax() { return income * ; }
Fakultät Informatik, Institut für Software- und Multimediatechnik, Lehrstuhl Softwaretechnologie TU Dresden, (c) Steffen ZschalerFolie 6 von 14 Reuseware – ISC for arbitrary languages Language Existing tools Program Reuse Language Reuseware Define components Describe how to compose them Define special-purpose composition operators Define components Describe how to compose them Define special-purpose composition operators Compose with written in executed / edited / analysed with Monolithic Program No Reuse Limited Structuring Capabilities Monolithic Program No Reuse Limited Structuring Capabilities Reuseware provides… Primitives to easily construct composition systems An engine to execute compositions …for any language Reuseware provides… Primitives to easily construct composition systems An engine to execute compositions …for any language
Fakultät Informatik, Institut für Software- und Multimediatechnik, Lehrstuhl Softwaretechnologie TU Dresden, (c) Steffen ZschalerFolie 7 von 14 AOM: CDATAString WSHome: HTMLDocument Aspect Orientation with Reuseware -- Home -- Home Home -- Home... Aspect-Oriented Modelling WSTitle: CDATAString bind Quantification through multiple slots of the same name Quantification through multiple slots of the same name
Fakultät Informatik, Institut für Software- und Multimediatechnik, Lehrstuhl Softwaretechnologie TU Dresden, (c) Steffen ZschalerFolie 8 von 14 Aspect Orientation with Reuseware (2) WSHome: HTMLDocument -- Home -- Home Home -- Home... AOM: CDATAString Aspect-Oriented Modelling WSTitle: CDATAString bind Quantification through fragment queries encapsulating multiple fragments Quantification through fragment queries encapsulating multiple fragments WSProgramme: HTMLDocument -- Programme -- Programme Programme -- Programme... WSTitle: CDATAString WSPages: Set(HTMLDocument)
Fakultät Informatik, Institut für Software- und Multimediatechnik, Lehrstuhl Softwaretechnologie TU Dresden, (c) Steffen ZschalerFolie 9 von 14 Aspect Orientation with Reuseware (3)
Fakultät Informatik, Institut für Software- und Multimediatechnik, Lehrstuhl Softwaretechnologie TU Dresden, (c) Steffen ZschalerFolie 10 von 14 Aspect-Oriented Modelling with Reuseware > FileSystem > +fileSystemPropertyHook > +fileSystemOperationHook() > FSFolder +name > +fsFolderPropertyHook > +fsFolderOperationHook() > FSFile +name +content > +fsFilePropertyHook > +fsFileOperationHook() > fileSystemPackageHook > fileSystemPackageHook fileSystem 1 rootFolder child * 1 parent 1 folder * file
Fakultät Informatik, Institut für Software- und Multimediatechnik, Lehrstuhl Softwaretechnologie TU Dresden, (c) Steffen ZschalerFolie 11 von 14 Aspect-Oriented Modelling with Reuseware (2) observer * > Observer > +update() > Subject > +attach (observer: Observer) > +detach (observer: Observer) > +notify () 1 subject observer 1 * subjects >
Fakultät Informatik, Institut für Software- und Multimediatechnik, Lehrstuhl Softwaretechnologie TU Dresden, (c) Steffen ZschalerFolie 12 von 14 Aspect-Oriented Modelling with Reuseware (3) FileSystemCore FS.* FileSystemAnchor fileSystemOperationHook fs.*OperationHook fileSystemPackageHook ObserverPattern.uml subjectClassSlot observerClassSlot observerOperationAnchor subjectOperationAnchor observerAssociation subjectAssociation
Fakultät Informatik, Institut für Software- und Multimediatechnik, Lehrstuhl Softwaretechnologie TU Dresden, (c) Steffen ZschalerFolie 13 von 14 Conclusions & Outlook DSLs need modularisation techniques, such as AOP Difficult and time consuming to develop Presented a Reuseware Extension to support aspect orientation for arbitrary languages -Including modelling languages such as UML -Supported by graphical editor for defining aspect weaving
Fakultät Informatik, Institut für Software- und Multimediatechnik, Lehrstuhl Softwaretechnologie TU Dresden, (c) Steffen ZschalerFolie 14 von 14 The End! Thank you for your attention! I will happily answer your questions.