1 / 27

Using Aspects to Support the Software Process: XP over Eclipse

Using Aspects to Support the Software Process: XP over Eclipse. Oren Mishali and Shmuel Katz Technion, Israel Institute of Technology. The idea …. Aspects for Software Process support. SP-aspects support the Software Process (SP) Are woven into the development environment. Software product.

gilon
Download Presentation

Using Aspects to Support the Software Process: XP over Eclipse

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Using Aspects to Support the Software Process: XP over Eclipse Oren Mishali and Shmuel Katz Technion, Israel Institute of Technology

  2. The idea…

  3. Aspects for Software Process support • SP-aspectssupport the Software Process (SP) • Are woven into the development environment Software product 1/14

  4. Process management support • The problem: (defined process) – (actual process) > 0 • The solution: Software Process Management • SP-aspects add management support • The use of AOP for that purpose is novel • Flexible support, no scattering and tangling 2/14

  5. Process modeling support • A need for a formal abstract representation of the process • Facilitates automation, helps to define the process • Promotes process understanding, training… • SP-aspects can be a process model • A novel non-functional role of aspects • Special design considerations 3/14

  6. Our Vision…

  7. SP-aspects repository • Supports different development methodologies • SP-aspects use the ontology of the methodology • key-events, entities, activities, predicates • Platform-independent, general and abstract • A variety of concrete forms • Users can generate concrete SP-aspects 4/14

  8. Generating concrete SP-aspects • e.g. activity part  management strategy • Measurement • Enforcement • Automation 1. Specify Methodology & Platform 2. Choose refinements to the abstract parts 5/14

  9. So far… • SP-aspects • Repository • Generator Using Aspects to Support the Software Process: XP over Eclipse

  10. A case-study: XPoverEclipse • Extreme Programming (XP) • Values • Communication, feedback, simplicity and courage • Basic-principles • e.g. ‘rapid feedback’, ‘honest measurement’ • Practices • e.g. ‘pair programming’, ‘test first’, ‘collective ownership’ 6/14

  11. A case-study: XPoverEclipse • Extreme Programming (XP) • Values • Communication, feedback, simplicity and courage • Basic-principles • e.g. ‘rapid feedback’, ‘honest measurement’ • Practices • e.g. ‘pair programming’, ‘test first’, ‘collective ownership’ • XP-aspects are defined using AspectJ • Prototype implementation over Eclipse 6/14

  12. An Example…

  13. Test-first • Tests should be written before the code • Is not an easy practice • TestFirst aspect: Upon creation of a coding-element there should already be a corresponding unit-test 7/14

  14. public abstract aspect TestFirst { protected abstract pointcut creationOfUnitTests(UnitTest test); protected abstract pointcut creationOfCodingElements(CodingElement element); after(UnitTest test): creationOfUnitTests(test){ existingUnitTests.add(test); } before(CodingElement element): creationOfCodingElements(element){ if(!hasUnitTest(element, existingUnitTests)) disapproval(element); } protected abstract boolean hasUnitTest(...); protected abstract void disapproval(...); … } Ontology: Key-events Predicates Activities Entities 8/14

  15. public abstract aspect TestFirst { protected abstract pointcut creationOfUnitTests(UnitTest test); protected abstract pointcut creationOfCodingElements(CodingElement element); after(UnitTest test): creationOfUnitTests(test){ existingUnitTests.add(test); } before(CodingElement element): creationOfCodingElements(element){ if(!hasUnitTest(element, existingUnitTests)) disapproval(element); } protected abstract boolean hasUnitTest(...); protected abstract void disapproval(...); … } Ontology: Key-events Predicates Activities Entities 8/14

  16. public abstract aspect TestFirst { protected abstract pointcut creationOfUnitTests(UnitTest test); protected abstract pointcut creationOfCodingElements(CodingElement element); after(UnitTest test): creationOfUnitTests(test){ existingUnitTests.add(test); } before(CodingElement element): creationOfCodingElements(element){ if(!hasUnitTest(element, existingUnitTests)) disapproval(element); } protected abstract boolean hasUnitTest(...); protected abstract void disapproval(...); … } Ontology: Key-events Predicates Activities Entities 8/14

  17. public abstract aspect TestFirst { protected abstract pointcut creationOfUnitTests(UnitTest test); protected abstract pointcut creationOfCodingElements(CodingElement element); after(UnitTest test): creationOfUnitTests(test){ existingUnitTests.add(test); } before(CodingElement element): creationOfCodingElements(element){ if(!hasUnitTest(element, existingUnitTests)) disapproval(element); } protected abstract boolean hasUnitTest(...); protected abstract void disapproval(...); … } Ontology: Key-events Predicates Activities Entities 8/14

  18. public abstract aspect TestFirst { protected abstract pointcut creationOfUnitTests(UnitTest test); protected abstract pointcut creationOfCodingElements(CodingElement element); after(UnitTest test): creationOfUnitTests(test){ existingUnitTests.add(test); } before(CodingElement element): creationOfCodingElements(element){ if(!hasUnitTest(element, existingUnitTests)) disapproval(element); } protected abstract boolean hasUnitTest(...); protected abstract void disapproval(...); … } Ontology: Key-events Predicates Activities Entities 8/14

  19. XP-Elements: public interfaceXPElement { public boolean isArtifact(); public String getName(); ... } public interface Artifact extends XPElement { public static final int PLANNING = 1; public static final int DESIGN = 2; public static final int CODING = 3; public static final int TESTING = 4; ... public int getPhase(); ... } public interface CodingElement extends Artifact { public static final int CLASS = 1; public static final int METHOD = 2; ... public int getKind(); ... } public interface PairProgrammers extends XPElement { public String getPilotName(); public String getNavigatorName(); ... } 9/14

  20. A reminder… “SP-aspects have abstract and general definition and can be realized in a variety of concrete forms”

  21. public abstract aspect TestFirst { protected abstract pointcut creationOfUnitTests(UnitTest test); protected abstract pointcut creationOfCodingElements(CodingElement element); after(UnitTest test): creationOfUnitTests(test){ existingUnitTests.add(test); } before(CodingElement element): creationOfCodingElements(element){ if(!hasUnitTest(element, existingUnitTests)) disapproval(element); } … } • What kind of coding-elements are affected? • What kind of management strategy is taken? 10/14

  22. EclipseTestFirst extends TestFirst • Upon creation of a coding-element there should already be a corresponding unit-test 11/14

  23. EclipseTestFirst extends TestFirst • Upon creation of a Java class there should already be a corresponding JUnit test-case named Test{ClassName} • disapproval(…) enforces the practice • XP-Elements are connected using inter-type declarations • The weaving is done using AJEER • Load-time weaving 11/14

  24. Implementation notes • Finding the join-points is difficult • Join-points are not extension-points • XP-aspects can be changed • The way that abstract policies are realized • Modifications of the underlying environment 12/14

  25. Related work • Process Centered Engineering Environments (PCEs) • Consider a process model as an input • No seamless integration • Eclipse-based solutions • AOP and the software process 13/14

  26. Aspects for software process support • Aspects for XP over Eclipse are only one case-study • RUP-aspects… • A construction of a fuller set for XP has begun • Refactoring, Continuous integration • Preliminary experiments with users • Enforcement can be irritating • Automation is most popular • Except setup, XP-aspects do not affect service 14/14

  27. Thanks… • Questions?

More Related