36
Facilitating Maintenance and Evolution of Non-Functional Concerns (NFCs) in Modern Enterprise Applications Myoungkyu Song SW Innovations Lab, Dept. of Computer Science, Virginia Tech Dr. Eli Tilevich, Chair Virginia Tech Dr. Stephen H. Edwards Virginia Tech Dr. Dennis G. Kafura Virginia Tech Dr. Barbara G. Ryder Virginia Tech Dr. Kwangkeun Yi Seoul National Univ., South Korea pril, 28 2011, 2225@KWII Committee Members Preliminary Dissertation Proposal Exam SW I- Lab

Mksong proposal-slide

  • Upload
    mksong

  • View
    178

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Mksong proposal-slide

Facilitating Maintenance and Evolution ofNon-Functional Concerns (NFCs) in

Modern Enterprise Applications

Facilitating Maintenance and Evolution ofNon-Functional Concerns (NFCs) in

Modern Enterprise Applications

Myoungkyu Song

SW Innovations Lab, Dept. of Computer Science, Virginia Tech

Dr. Eli Tilevich, Chair Virginia TechDr. Stephen H. Edwards Virginia TechDr. Dennis G. Kafura Virginia TechDr. Barbara G. Ryder Virginia TechDr. Kwangkeun Yi Seoul National Univ.,

South KoreaApril, 28 2011, 2225@KWII

Committee Members

Preliminary Dissertation Proposal Exam

SW I-Lab

Page 2: Mksong proposal-slide

Computer Science @Virginia Tech 2April. 28 2011

BackgroundMetadata

Annotations

@Table

C# Attributes[Author ( …

XML<column=… <field=…/>

Confi-gure

Non-Functional Concerns

Security Testing

Persistence FaultTolerance

Functional Concerns

SourceCode

IntermediateRepresentation

(Bytecode)

Compiler

EnterpriseApplication

Page 3: Mksong proposal-slide

Computer Science @Virginia Tech 3April. 28 2011

Business Logic

NFC Example: Persistence

public class ManagerBean extends javax.ejb.EntityBean { private Long orderId; private String status;

public ManagerBean(){...}...}

<entity><class name=“ManagerBean” table=“Manager”><field name=“orderId” primary-key=“true”> <column name=“ORDERID”/> </field> <field name=“status”> <column name=“STATUS”/> </field> ...</entity>

+Metadata (XML)

Page 4: Mksong proposal-slide

Computer Science @Virginia Tech 4April. 28 2011

Problem: Address maintenance and evolution challenges

of implementing non-functional concerns (NFCs) declaratively

Thesis statement: Domain-specific languages can facilitate the

maintenance and evolution of NFC implementations in modern enterprise applications

Dissertation Objective

Page 5: Mksong proposal-slide

Computer Science @Virginia Tech 5April. 28 2011

Background: Goal 1Metadata

Annotation

@Table

C# Attributes[Author ( …

XML<column=… <field=…/>

Confi-gure

Non-Functional Concerns

Security Testing

Persistence FaultTolerance

Functional Concerns

SourceCode

IntermediateRepresentation

(Bytecode)

Compiler

EnterpriseApplication

Goal 1: Reusable Enterprise Metadata with PBSE

Page 6: Mksong proposal-slide

Computer Science @Virginia Tech 6April. 28 2011

Background: Goal 2Metadata

Annotation

@Table

C# Attributes[Author ( …

XML<column=… <field=…/>

Confi-gure

Non-Functional Concerns

Security Testing

Persistence FaultTolerance

Functional Concerns

SourceCode

IntermediateRepresentation

(Bytecode)

Compiler

EnterpriseApplication

Goal 2: Managing Transparent Program Transformations

Page 7: Mksong proposal-slide

Computer Science @Virginia Tech 7April. 28 2011

Background: Goal 3Metadata

Annotation

@Table

C# Attributes[Author ( …

XML<column=… <field=…/>

Confi-gure

Non-Functional Concerns

Security Testing

Persistence FaultTolerance

Functional Concerns

SourceCode

IntermediateRepresentation

(Bytecode)

Compiler

EnterpriseApplication

Goal 3: Reusing NFCs Across Languages

Page 8: Mksong proposal-slide

Computer Science @Virginia Tech 8April. 28 2011

Pattern-Based Structural Expressions (PBSE) A novel metadata language based on queries against the

main program; easier to program, understand, maintain, and reuse.

The Structural Enhancement Rule (SER) language A DSL for documenting bytecode enhancements;

enables source-level prog. understanding and debugging tools

Reusing NFCs Across Languages An approach to reusing NFCs across languages through

automated metadata translation

Contributions

Page 9: Mksong proposal-slide

Computer Science @Virginia Tech 9April. 28 2011

Background Completed Work

Reusable Enterprise Metadata with Pattern-Based Structural Expressions (PBSE) (Main research track paper at AOSD’10)

Enhancing Source-Level Programming Tools with An Awareness of Transparent Program Transformations (Main research track paper & SW demo at OOPSLA’09)

Research Plan Reusing NFCs Across Languages

Work Plan

Roadmap

Page 10: Mksong proposal-slide

Computer Science @Virginia Tech 10April. 28 2011

Business Logic

Limitation of Enterprise Metadata

public class ManagerEJB {

public String getOrderId(){return orderId;

}

public String getStatus(){return status;

}

@Entity@Table(name="Manager")

@Id @Column(name="orderId", primaryKey=true)

@Column(name="status", primaryKey=false)

+ Metadata (Java 5 Annotation)

Page 11: Mksong proposal-slide

Computer Science @Virginia Tech 11April. 28 2011

A PBSE Script Example01 Metadata MyJPA<Package p>02 Class c in p03 Where (public *EJB)04 c += @Table05 @Table.name = (c.name =~ s/EJB$//) 06 Column<c> 0708 Metadata Column<Class c>09 Field f in c10 Where (private * *)11 Method m in c 12 Where((“get” + (f.name =~ s/^[a-z]/[A-Z]/)) == m.name)13 m += @Column14 @Column.name = f.name15 Where(public * get*Id ())16 @Column.primKey = true17 m += @Id 18 MyJPA <"package1">

Page 12: Mksong proposal-slide

Computer Science @Virginia Tech 12April. 28 2011

Metadata module_name <[Package|Class|Method|Field|Parameter] val>

[Class|Method|Field|Parameter] iterator in parm Where (pattern) @Metadata @Metadata.property @Metadata.property = val val += @Metadata ~s / [^] old_val [$] / new_val

PBSE Constructs

Page 13: Mksong proposal-slide

Computer Science @Virginia Tech 13April. 28 2011

Programmable Use OO and declarative query programming

Understandable Encode relationship between program constructs and

their metadata Maintainable

Express explicit structural information Reusable

Leverage naming conventions of framework depen-dent code

Pattern-Based Structural Expressions

Page 14: Mksong proposal-slide

Computer Science @Virginia Tech 14April. 28 2011

Background Completed Work

Reusable Enterprise Metadata with Pattern-Based Structural Expressions (Main research track paper at AOSD’10)

Enhancing Source-Level Programming Tools with An Awareness of Transparent Program Transformations(Main research track paper & SW demo at OOPSLA’09)

Research Plan Reusing NFCs Across Languages

Work Plan

Roadmap

Page 15: Mksong proposal-slide

April. 28 2011 Computer Science @Virginia Tech 15

public void displayMaxMortgageEligibility

(mortgage.Bank$Display, double);

Code:

...

invokestatic // jdoGetsalaryLevel;

aload_0

invokestatic // jdoGetcreditLevel;

...

invokevirtual // calcMaxMortgage

...

invokevirtual // getMortgageField

Example: Mortgage Authorization Application

Example: Mortgage Authorization Application

Difficult to find errors. Hinder source-level Prog. tools.

public void displayMaxMortgageEligibility

(Display display, double projectedIn-crease) {

...

double maxMortgage =

calcMaxMortgage(salaryLevel, creditLevel);

...

FrameField mortgageField =

display.getMortgageField();

mortgageField.setVal(maxMortgage);

...

}

Page 16: Mksong proposal-slide

April. 28 2011 Computer Science @Virginia Tech – OOPSLA 2009 16

Program JDO Using SUPER_JDO_SER

Begin

EnhClass = OrgClass

EnhClass.AddInterface (“javax.jdo.spi.PersistenceCapable”)

Var Pattern fieldP

Begin

modifiers = (“private” or “protected”) and not “static”

End

Var Iterator fieldIter = OrgClass.Fields(fieldP)

EnhClass.AddMethod(FieldSetReplacer(“jdoSet”, fieldIter))

EnhClass.AddMethod(FieldGetReplacer(“jdoGet”, fieldIter))

End

A SER Script Example

A SER Script Example

01

02

03

04

05

06

07

08

09

10

11

12

13

Page 17: Mksong proposal-slide

April. 28 2011 Computer Science @Virginia Tech 17

What is a structural enhancement? Large scale program transformations

Add, change, remove classes, methods, and fields Limited and well-defined method body changes

Replace field accesses with getter/setter Replace method calls with wrappers

Managing Bytecode Enhancements

Managing Bytecode Enhancements

Page 18: Mksong proposal-slide

April. 28 2011 Computer Science @Virginia Tech 18

Structural enhancements at the bytecode level Poorly understood, not properly documented Lack easy-to-understand expression medium

Our solution Structural Enhancements Rules (SER) Language

Domain Specific Language (DSL) for bytecode enhance-ments

Helps express ,understand, and maintain enhancements

Managing Bytecode Enhancements

Managing Bytecode Enhancements

Page 19: Mksong proposal-slide

April. 28 2011 Computer Science @Virginia Tech 19

AddClass [Add|Remove]SuperClass [Add|Remove]SuperInterface [Add|Remove]Method [Add|Remove]Field ReplicateMethod Field[Get|Set]Replacer Iterators Patterns

SER Constructs

SER Constructs

Page 20: Mksong proposal-slide

April. 28 2011 Computer Science @Virginia Tech 20

Leveraging SER for Maintenance

Leveraging SER for Maintenance

SER Interpreter

OriginalSource code

SERScript

EnhancementInformation

OriginalSource Code

EnhancedBytecode

SERParser

Src. code

Processor

Bytecode

Processor

Bytecode to

Src. MapSymbol

Table

Source Code Enhancement Program Constructs

Page 21: Mksong proposal-slide

April. 28 2011 Computer Science @Virginia Tech 21

Symbolic Debugger for Enhanced Bytecode

Symbolic Debugger for Enhanced Bytecode

A standard debugger : JDB

The changed method

The newly added methodsThe skip instruction

The reverse instruction

Our symbolic debugger

Page 22: Mksong proposal-slide

Computer Science @Virginia Tech 22April. 28 2011

Background Completed Work

Reusable Enterprise Metadata with Pattern-Based Structural Expressions

Enhancing Source-Level Programming Tools with An Awareness of Transparent Program Transformations

Research Plan Reusing NFCs Across Languages

Work Plan

Roadmap

Page 23: Mksong proposal-slide

Computer Science @Virginia Tech 23April. 28 2011

Metadata

Annotation

@Table

C# Attributes[Author ( …

XML<column=… <field=…/>

Confi-gure

Non-Functional Concerns

Security Testing

Persistence FaultTolerance

Functional Concerns

SourceCode

IntermediateRepresentation

(Bytecode)

Compiler

EnterpriseApplication

Emerging languages(ELs) cross-compiled to mainstream languages(MLs) NFCs, such as security, testing, and persistence

implemented in target MLs NFCs specified through metadata EL unable to access ML’s NFC implementations

EL programmers waste development effort reimplementing NFCs

A novel approach reusing NFC implementations across languages by

automatically translating metadata

Research Plan

Page 24: Mksong proposal-slide

Computer Science @Virginia Tech 24April. 28 2011

Step 1: PBSE Metadata Translation Framework

Step 2: PBSE Meta-metadata Step 3: Generative Visitor

Goals & Steps

PBSESource

Language

Programin SourceLanguage

1st

2nd

nth

PBSETarget

Language1...n

1st

2nd

nth

MetadataTarget

Language1...n

Programin TargetLanguage

Cross Compiler

Executable

NFCsFunctionalConcerns

1...n

PBSETranslator

MetadataTranslator

Page 25: Mksong proposal-slide

Computer Science @Virginia Tech 25April. 28 2011

Step 1:Metadata Translation Framework

Programin SourceLanguage

Programin TargetLanguage

1...n

Metadatain SourceLanguage

Metadatain TargetLanguage

1...n

ProgramCross-

Compile

MetadataCross-

Compile

<<tag>>

<<tag>>

Page 26: Mksong proposal-slide

Computer Science @Virginia Tech 26April. 28 2011

1. MetaMetadata PBSEJavaToXML<PBSE pbse>2. Where (Class c in pbse)3. @Table -> "<class/>"4. @Table.name -> "<class name=" + c.name + "/>"5. @Table.class -> "<class table=" + c.table + "/>"6. Where (Field f in pbse)7. @Field -> "<field/>"8. @Field.name -> "<field name=" + f.name + "/>"9. @Column -> "<column/>"10. @Column.name -> "<column name=" + f.column + "/>"

Step 2: PBSE meta-metadata

Mapping

Mapping

Page 27: Mksong proposal-slide

Computer Science @Virginia Tech 27April. 28 2011

Step 3: Generative Visitor<<interface>>

PBSEVistitor

+ visit(PBSEElementPackage elem)

+ visit(PBSEElementClass elem)

+ visit(PBSEElementField elem)

+ visit(PBSEElementMethod elem)

...

PBSEVisitorX10toJava

PBSEVisitorJavatoXML

PBSEVisitorJavatoAnnotation

PBSEVisitorX10toCpp

...

<<interface>>

PBSEElement

+ accept(PBSEVisitor visitor)

PBSEElementPackage

PBSEElementClass

...

Page 28: Mksong proposal-slide

Computer Science @Virginia Tech 28April. 28 2011

Step 3: Generative Visitor cont’d1. <jdo><package name=“packageName">2. <class table="ClassName"3. name="ClassNameModel" 4. ...>5. <field name=...>6. <column name=.../>7. </field>...

1. class PBSEVisitorJavaToXML extends PBSEVisitorAdaptor{2. void visit(...){3. ...4. if( elem.tagWith ("@Table")){ 5. out.write( JavaToXML.translate6. ("@Table","<class/>"));7. } else 8. if( elem.tagWith ("@Table.name")){ 9. out.write( JavaToXML.translate10. ("@Table.name","<class table=${value}/>"));11. } else 12. ...

Page 29: Mksong proposal-slide

Computer Science @Virginia Tech 29April. 28 2011

Reuse NFCs across languages Collaborate with IBM Research on X10

IBM Innovation Award 2010 Cross-compilation

X10 cross-compiles to Java & C++ Scala, Jython, and JRuby

Reuse NFCs of Testing: JUnit (Java Unit Testing Framework) & CppUnit

(C++ Unit Testing Framework) Transparent Persistence: JDO (Java Data Objects) &

ODB (ORM system for C++)

Evaluation Plan

Page 30: Mksong proposal-slide

Computer Science @Virginia Tech 30April. 28 2011

Reusing UnitTest Framework

1. public class Integrate {

2. static def computeArea(left:double, right:double) {3. return recEval(left, (left*left + 1.0) * left, 4. right, (right*right + 1.0) * right, 0);5. } 6. static def recEval(l:double,.. r:double,..) {7. // ..8. finish { 9. async {expr1 = recEval(c, fc, r, fr, ar); }; 10. expr2 = recEval(l, fl, c, fc, al);11. } 12. return expr1 + expr2;13. }}

The class to be tested

The method to be tested

1. public class IntegrateTest {2. var parm : double;3. var expt : double;4. var integrate : Integrate;

5. def this(parm : double, expt : double) {6. this.parm = parm;7. this.expt = expt;8. }9. public def testComputeArea() {10. val result = integrate.computeArea(0, this.parm);11. TUnit.assertEquals(this.expt, result);12. }13. public static def data() {14. val parm = new Array[double](0..1*0..2);15. parm(0, 0) = 2;16. parm(0, 1) = 6.000000262757339;...}}

Parameterizing

Page 31: Mksong proposal-slide

Computer Science @Virginia Tech 31April. 28 2011

Reusing UnitTest Framework: PBSE Spec.

1. Metadata UnitTest<Package p>2. Class c in p3. Where(public class *Test)4. c += @RunWith5. @RunWith.value = "Parameterized"6. TestMethod<c>7. Metadata TestMethod<Class c>8. Method m in c9. Where (public def init ())10. m += @Before11. Where (public def finish ())12. m += @After13. Where (public def test* ())14. m += @Test15. Where (public static def data ())16. m += @Parameters17. UnitTest<“package1">

cont’d

Parameterization

Page 32: Mksong proposal-slide

Computer Science @Virginia Tech 32April. 28 2011

Reusing Transparent Persistence1. public class Fmm3d{2. def getDirectEnergy() : Double{3. val model = new FmmModel();4. val directEnergy = finish (SumReducer()){5. ateach (p1 in locallyEssentialTrees) {6. var thisPlaceEnergy : Double = 0.0;7. for ([x1,y1,z1] in lowestLevelBoxes.dist(here)){8. val box1 = lowestLevelBoxes(x1,y1,z1) as FmmLeafBox;9. for ([atomIndex1] in 0..(box1.atoms.size()-1)){10. for (p in uList){11. for ([otherBoxAtomIndex] in 0..(boxAtoms.size-1)){12. thisPlaceEnergy += 13. atom1.charge * atom2Packed.charge / 14. atom1.centre.distance(atom2Packed.centre);15. }}}16. model.setModelId(id(box1.x,box1.y,box1.z));17. model.setEnergy(thisPlaceEnergy);18. //...19. TP.setFmmModelObj(model);

Long Comput-ation Part

TransparentlyPersistent

Page 33: Mksong proposal-slide

Computer Science @Virginia Tech 33April. 28 2011

NFCsCross-compile

Enable reuse of main stream language NFC implementations in emerging languages.

Research Plan: Summary

EmergingLanguage

ApplicationCross-

compiler

X LanguageBackgroundApplication

Y LanguageBackgroundApplication

Y LanguageNFCs

X LanguageNFCs

Metadat

a

Metadat

a

Metadat

a

Metadat

a

Metadat

a

Page 34: Mksong proposal-slide

Computer Science @Virginia Tech 34April. 28 2011

Problems: Metadata programming takes increasingly large

amounts of time and efforts Source code alone not sufficient to understand the

enhanced NFC implementations at intermediate level in modern applications

Cross-compiled source language inaccessible to the NFCs implemented by mainstream target ones

Significance cont’d

Page 35: Mksong proposal-slide

Computer Science @Virginia Tech 35April. 28 2011

The specific innovations: Pattern-Based Structural Expressions (PBSE)

A novel metadata format that is easier to author, understand, reuse, and maintain than existing metadata formats

Structural Enhancement Rule (SER) A DSL documenting intermediate code enhancements that

facilitates the understanding and debugging of NFC implementations

Automated metadata cross-translation Enable cross-compiled source language programs to reuse

target language NFC implementations

Significance

Page 36: Mksong proposal-slide

Computer Science @Virginia Tech 36April. 28 2011

Goal 1 & 2: published on 2 conferences Goal 3: will submit ICSE, ECOOP, OOPSLA ,

AOSD, or TOSEM

Work PlanThank you