Adaptive Software
Kevin Cella
Graduate Seminar
02/04/2005
Agenda
Adaptive Computing History Adaptive Software Formal Definition DemeterJ / AOP
Alternate Designs Advantages/Disadvantages Applications Reactions Wrap it up!
Adaptive Computing
Hardware Fault Tolerant CPU Architectures
EDGE Digital Filter Robot Controller
Software Engineering Agents Adaptive Programming Networking
Agenda
Adaptive Computing History Adaptive Software Formal Definition DemeterJ / AOP
Alternate Designs Advantages/Disadvantages Applications Reactions Wrap it up!
History
1982 Hades 1982-1985 Zeus 1985-present Demeter 1990 Traversal Strategy 1995 Separation of Concerns 1996 Xerox PARC - AOP
Agenda
Adaptive Computing History Adaptive Software Formal Definition DemeterJ / AOP
Alternate Designs Advantages/Disadvantages Applications Reactions Wrap it up!
A Closer Look
What is Adaptive Programming?
An extension of OOP using graph theory and formal languages to further abstract collaborating classes and generate a family of programs from a common architectural graph.
Class Graph
ProcedureTraversal Strategy =>
Propagation Pattern =>
Wrapper Definition =>
Generated Code
Result
Agenda
Adaptive Computing History Adaptive Software Formal Definition DemeterJ / AOP
Alternate Designs Advantages/Disadvantages Applications Reactions Wrap it up!
Formal Definition
Class Graph Context-Free Grammar
Traversal Strategies Regular Expressions NDFA Intersections
Graph Theory Construction edge Subclass edges
Agenda
Adaptive Computing History Adaptive Software Formal Definition DemeterJ / AOP
Alternate Designs Advantages/Disadvantages Applications Reactions Wrap it up!
Law of Demeter"Only talk to your immediate friends"
The methods of a class should not depend in any way on the structure of any class, except the immediate top-level structure of their own class
Demeter Method
Class Dictionary Propagation Pattern Traversal Strategy Demeter Grammar
Delayed Binding Wrapper Code Generation
AOP Join Points Pointcuts Advice Aspects Compiler - AspectJ
Weaving Byte Code Manipulation Observer Pattern Java Language Extension
Alternate Designs
Object-Oriented Databases XML/Java Data Binding Adaptable Plug and Play Components
Aspectual Collaborations Aspectual Components
DJ Java Library
Standardization – Design Patterns AP Patterns
Inventor’s Paradox Structure-Shy Traversal Structure-Shy Object Context Class Graph
Agenda
Adaptive Computing History Adaptive Software Formal Definition DemeterJ / AOP
Alternate Designs Advantages/Disadvantages Applications Reactions Wrap it up!
Advantages
Maintenance Simplified Implementation Understandability Readability Reusability Code Reduction
Disadvantages
Security Weaving Language Extension
Grammar Integrate into Current OO-Languages
Agenda
Adaptive Computing History Adaptive Software
Examples Formal Definition DemeterJ / AOP
Alternate Designs Advantages/Disadvantages Applications Reactions Wrap it up!
Applications
Hewlett-Packard Planetary Computing SmartFrog
IBM eLiza
Testing EJB .NET
Agenda
Adaptive Computing History Adaptive Software Formal Definition DemeterJ / AOP
Alternate Designs Advantages/Disadvantages Applications Reactions Wrap it up!
Reactions
Lack of Standards Code Weaving Education Security Cost Analysis
Agenda
Adaptive Computing History Adaptive Software Formal Definition DemeterJ / AOP
Alternate Designs Advantages/Disadvantages Applications
Coding Examples Thesis Wrap it up!
Looking Ahead
AI Naturalistic Programming Tools packaged with SDK
Questions?
Discussion Topics
Practicality Large vs. Small Scale Applications
New Tools Standards Education