CMU CS 15819 - Language Support for Extensibility and Evolvability

Unformatted text preview:

15-819 Objects and Aspects: Language Support for Extensibility and EvolvabilityObjects and AspectsCourse GoalsCourse TopicsTopic Sign-UpCourse StructureLeading the DiscussionWhy Objects?Object MechanismsOO Type SystemsReasoning about InheritanceWhy Aspects?What is AOP?AOP Research Questions15-819 Objects and Aspects:Language Support for Extensibility and EvolvabilityJonathan AldrichFall, 2004Objects and Aspects•Goals–Capture problem domain more closely in code–Provide mechanisms for extensibility•Techniques–Inheritance, Subtyping, Dispatch, Pointcuts, AdviceCourse Goals•Understand most important OOP/AOP ideas•Analyze strengths and weaknesses of OOP/AOP systems•Develop insight into the engineering benefits of OOP/AOP•Develop open research questionsCourse Topics•Object-oriented programming–Language mechanisms - 5–Type systems - 6•Aspect-oriented programming–Emerging models - 6–Engineering benefits and drawbacks - 4•Formal reasoning–Formal models of objects and aspects - 5–Modular reasoning in OOP and AOP systems - 4•Questions–What topics would you like to emphasize?–What papers do you want to read?Topic Sign-Up•Sep 15. Prototypes–Self: the Power of Simplicity •Sep 20. Multi-methods - Kevin–Object-Oriented Multi-Methods in Cecil•Sep 22. Objects and Functions - Jason–Modular Typechecking for Hierarchically Extensible Datatypes and Functions •Sep 25. Traits and Mix-ins–Traits: Composable Units of Behavior •Sep 29. Scala - Donna–Web site and documentationCourse Structure•This is a graduate-level research seminar–Not a lecture course: must actively participate•Expectations–Read the paper(s) before class–Present one or two lectures•Prepare slides•Discuss them with me before classLeading the Discussion•Assume people have read the paper–Summarize main idea–Go through examples•Compare to other work–Expressiveness: use code examples–Checking: what errors does it catch and/or miss?–Engineering: how does it aid or hinder software evolution?•Ask open-ended questions–You’re not giving a lecture!Why Objects?•Simula 67 – the first OO language–Goal: Executable models of complex systems•Technical properties–Inheritance•Facilitates code reuse–Subtyping between ADTs•Models classification hierarchies in real-world systems–Data type extensibility•Define new classes and their functionality•No need to change existing codeObject Mechanisms•Prototypes–Object cloning instead of class instantiation•Multiple dispatch, value dispatch–Dispatch on argument types and values•Traits, Mixins–A clean way to compose object behaviorOO Type Systems•Correlated families of types–F-bounded polymorphism–Family polymorphism•Typestate–Track interface changes to an object•Ownership–Enforcing “containment” of internal objectsReasoning about Inheritance•Effects–Want to specify effects in superclass, even though subclasses can add new mutable data•Invariants–Must be extended when new fields are added–Must be preserved with overridingWhy Aspects?•Separation of concerns–Modularize “crosscutting concerns”•Those that are spread throughout program•E.g., display update, synchronization, security checks–Makes these concerns easier to evolve•Non-invasive extension–Want to extend existing objects with new behavior–Subclassing doesn’t help if “new” statements in existing code are fixedWhat is AOP?•Quantification–Can locally specify a set of events in the dynamic execution of a program•E.g., calls to all methods in the interface of a module–Pointcut: a named set of events, described with a logical predicate•Obliviousness–Can extend a program even if that program was not specifically prepared for the extension•E.g., add synchronization to unsynchronized data structures–Advice: a piece of code that is executed whenever the events in a pointcut are triggeredAOP Research Questions•What can different AOP models express?•Is AOP useful in practice?•How does one formally model AOP?•How can one reason modularly in the presence of


View Full Document

CMU CS 15819 - Language Support for Extensibility and Evolvability

Download Language Support for Extensibility and Evolvability
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view Language Support for Extensibility and Evolvability and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view Language Support for Extensibility and Evolvability 2 2 and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?