110 likes | 126 Views
Learn about an objectification of Soar using Protégé, merging design and programming, and aspect-oriented software development. Explore the Herbal IDE architecture and resources.
E N D
The Herbal IDE Isaac Councill 11/05/03
Overview • Protégé • An objectification of Soar – the PSCM, roughly • Merging the design and programming processes • Aspect-oriented software development • Herbal IDE architecture summary
Protégé • Ontology editor – used to create object systems that describe all concepts and concept relations within a domain. • There are many plugins for protégé, including support for xml and rdf output. Protégé is a free download from http://protege.stanford.edu
An Objectification of Soar • Specified using Protégé • Constructed using PSCM as base model, with augmentations deemed appropriate • Encourages top-down design and programming
Aspect-Oriented Programming • One step beyond OOP • Programmatic behaviors often do not fit naturally discrete modules (e.g. design patterns, logging, optimization levels) • AOP allows modularization of cross-cutting behaviors in object systems
AOP Example Common solution to logging: public void doGet(JspImplicitObjects theObjects) throws ServletException { logger.entry("doGet(...)"); JspTestController controller = new JspTestController(); controller.handleRequest(theObjects); logger.exit("doGet"); }
AOP Example (cont.) Create an aspect to objectify logging and avoid repetitive coding: public aspect AutoLog { pointcut publicMethods() : execution(public * org.apache.cactus..*(..)); pointcut logObjectCalls() : execution(* Logger.*(..)); pointcut loggableCalls() : publicMethods() && ! logObjectCalls(); before() : loggableCalls() { Logger.entry(thisJoinPoint.getSignature().toString()); } after() : loggableCalls() { Logger.exit(thisJoinPoint.getSignature().toString()); } }
AOP in the Herbal IDE • Soar is difficult to program/understand/explain! • One way to slice it: The interesting parts of models aren’t just the operators they have in them, but how those operators interact with each other (aspects!) • Flexible aspect creation allows developers to specify reusable behaviors • More principled design • Better encapsulation of interesting bits • More understandable and explainable models (that’s the main point, afterall)
Resources • Protégé – http://protege.stanford.edu • RDF – http://www.dlib.org/dlib/may98/miller/05miller.html • XSLT – http://www.xml.com/pub/a/2000/08/holman/ • Aspect-oriented programming • http://www.parc.xerox.com/aop • http://aosd.net