38
Internet-speed Software Maintenance PR. XAVIER BLANC – BORDEAUX UNIVERSITY 09/02/15 IWAISE'14 1

Internet-speed Software Maintenance - LIFL · Internet Application ' Runs'on'the'Internet'(='Internet'Communica@on)' ' Uses'Internet'resources' ' Provides'Internet'resources' ' Composed(of(at(least(2(sides((Front

  • Upload
    lyhanh

  • View
    215

  • Download
    0

Embed Size (px)

Citation preview

Internet-speed Software Maintenance PR. XAVIER BLANC – BORDEAUX UNIVERSITY

09/02/15' IWAISE'14' 1'

Short Bio ' Model'Driven'Engineering'(2000'–'2010)'◦  Elabora@on'of'modeling'language'◦  Model'transforma@on'(OMG'–'QVT)'◦  Model'Interoperability'◦  Itera@ve'Modeling'

' SoMware'Maintenance'(2010'–'now)'◦  Code'Source'evolu@on'◦  Internet'Maintenance'◦  Web'ecosystem'◦  InternetQspeed'Maintenance'

09/02/15' IWAISE'14' 2'

LIP6'

LaBRI'

Internet Application ' Runs'on'the'Internet'(='Internet'Communica@on)'

' Uses'Internet'resources'

' Provides'Internet'resources'

' Composed(of(at(least(2(sides((Front(/(Back)(

09/02/15' IWAISE'14' 3'

Real Picture: Web Ecosystem

09/02/15' IWAISE'14' 4'

Traditional Software Engineering ' Requirements'are'defined'a'priori''◦  by'the'product'owner'

' Tes@ng'and'Evalua@on'are'done'before'deployment''◦  by'the'product'owner'

' Evolu@on'is'driven'by'the'product'owner'

09/02/15' IWAISE'14' 5'

Internet Speed Software Engineering ' Requirements'neither'change'and'are'unreachable'◦  Sell'products'and'Make'more'money'◦  Exchange'short'message'and'A_ract'more'people'

' Evalua@on'is'done'aMer'the'deployment'◦  By'looking'at'the'user'behavior''

' Evolu@on'is'infinitely'driven'by'the'Market''' 'and'by'the'Internet'

09/02/15' IWAISE'14' 6'

Example: Cdiscount ' Electronic'Commerce'Company'

' Best'seller'of'TV,'Wine,'etc…'

' ''

' Requirements:'Sell'products'!'

' Evalua@on:'Sales'!'

' Life'of'a'page'is'very'short'!'

09/02/15' IWAISE'14' 7'

Software Maintenance on Internet ' Perfec@ve'Maintenance'(new)'

' Correc@ve'Maintenance'(fix)'

' Adap@ve'Maintenance'(update)'

' More(than(100(men(for(CDiscount(

09/02/15' IWAISE'14' 8'

Challenges ' Be'able'to'address'maintenance'issues'at'the'internet'speed'

' =>'Reduce'the'@me'

' =>'Reduce'the'cost'

' =>'Improve'quality'

' Evalua@on'via'Observa@on'(Customer'Behavior)'

09/02/15' IWAISE'14' 9'

Example 1: Track with BigData ' Req:'Track'customer'(Perfec@ve'Maintenance)'

' Record(all(ac?ons(performed(by(the(customers(

' Use(BigData(to(analyse(!(

09/02/15' IWAISE'14' 10'

Example 2: Moving to MEAN ' Req:'improve'technology'(adap@ve'maintenance)'

' Add(angular(components(

' Integrate(Node(and(MongoDB(

09/02/15' IWAISE'14' 11'

Prediction Approaches ' SoMware'Maintenance'is'about'80%'of'the'project'cost''

' A'predic@on'approach'aims''◦  to'an@cipate'the'next'maintenance'opera@ons'◦  or'to'limit'them'

' Approaches:'◦  MDA'◦  Architecture'and'refactoring'

09/02/15' IWAISE'14' 12'

Predict with Model Driven Development ' Three'levels'of'abstrac@on'◦  CIM:'Requirements'◦  PIM:'Analysis,'Abstract'Design'◦  PSM:'Concrete'Design'

' Code'Genera@on'/'Model'Transforma@on'

' How'to'use'MD'for'Internet'Speed'SoMware'Maintenance?'

09/02/15' IWAISE'14' 13'

MD and BigData ' CIM'◦  All'the'ac@ons'should'be'recorded'◦  An'analysis'is'a'request'on'the'ac@ons'

' PIM'◦  How'to'capture'ac@ons?'◦  What'is'an'ac@on?''◦  What'is'an'analysis?'

' PSM'◦  How'to'model'BigData'plakorm?'

09/02/15' IWAISE'14' 14'

MD and MEAN ' CIM'◦  S@ll'the'same'

' PIM'◦  S@ll'the'same'◦  How(to(model(Front(End?(

' PSM'◦  How'to'model'Angular?'

09/02/15' IWAISE'14' 15'

MD for Internet-speed Applications

?'

09/02/15' IWAISE'14' 16'

Predict with Architecture and Metrics ' A'good'architecture'helps'maintenance'

' Measure'how'good'is'the'architecture'with'metrics'

' Use'refactoring'to'improve'the'architecture'

09/02/15' IWAISE'14' 17'

Architecture and BigData ' How'to'move'from'3'@ers'architecture'to'BigData?'◦  NoSQL'◦  Map'&'Reduce'

' Is'there'any'useful'metrics?'

?'

09/02/15' IWAISE'14' 18'

Architecture and MEAN ' How'to'move'from'ASP.net'to'Angular?'◦  MonoQpage'◦  TwoQway'synchroniza@on'◦  JavaScript'◦  REST'

' Is'there'any'metrics'?'

09/02/15' IWAISE'14' 19'

Internet-speed Architecture and Metrics ' Architecture'variability'◦  No'schema'◦  Dynamic'◦  Cloud'

' Metrics'◦  Mainly'OO'◦  No'universal'predictor'

09/02/15' IWAISE'14' 20'

Predict or Replay ' Is'it'really'possible'to'predict'at'the'internet'speed?'

' Instead,'can'we'replay'(and'improve)'exis@ng'maintenance'opera@ons?'

09/02/15' IWAISE'14' 21'

Replay: Challenges ' Context'mapping'◦  Find'applica@ons'that'share'the'same'maintenance'issues'

' Observa@on'gathering'◦  Observe'these'applica@ons'and'gather'the'performed'maintenance'opera@ons'

' Evalua@on'measuring'◦  Rank'the'performed'opera@ons'

' Replay'◦  Adapt'and'perform'new'maintenance'opera@ons'

09/02/15' IWAISE'14' 22'

First Attempt: Library Migration ' Update'third'party'library'(Adap@ve'Maintenance)'◦  More'than'one'dependent'library'for'any'large'applica@on'(>'10'kloc)'◦  Reuse'code'≈'Wri_en'code''◦  Maven:'70'000'Libraries,'70'millions'of'libraries'

' Issues:'◦  Which'library'to'consider?'Which'one'to'select?'◦  How'to'modify'the'applica@on?'Which'maintenance'opera@ons?'

09/02/15' IWAISE'14' 23'

Observe Existing Library Migrations ' Observe'Java'Applica@ons'that'already'performed'a'library'migra@on'

' Create'graph'of'migra@ons'

' Measure'the'trends'

' Iden@fy'maintenance'opera@on'

' =>'Can'be'used'as'guidelines'!'

Log4J&

Logback&Slf4J&

09/02/15' IWAISE'14' 24'

How to find library migrations? ' Look'at'all'the'versions'of'exis@ng'applica@ons'and'detect'the'used'libraries'

' Iden@fy'two'successive'versions'where'one'library'is'removed'and'another'one'is'added'

JUnit& JUnit& TestNG& TestNG&

Deal'with'false'posi@ve'

09/02/15' IWAISE'14' 25'

Results = Trends

Migration library graph Categories and trends

Migration evolution graph Period of migration

09/02/15' IWAISE'14' 26'

How to find Maintenance operations? ' Observe'library'migra@ons'to'iden@fy'maintenance'opera@ons'

' With'the'intent'to'replay'them'

Before' AMer'

09/02/15' IWAISE'14' 27'

Line& Symbol&

4' Log.getLog'

9' Log.getLog'

11' Log.fatal'

Line& Symbol&

4' Logger.getLogger'

9' Logger.getLogger'

11' Logger.error'

Diff'(unix)(

REM$(between$L4$and$L5)$:$${Log.getLog}$ADD$:$(between$L4$and$L5)${Logger.getLogger}'

« migration » Hunk if REM$& ADD$non empty

3'hunks'

09/02/15' IWAISE'14' 28'

Synthesis on Library Migration ' We'can'◦  observe'trends'of'migra@on'◦  gather'the'performed'maintenance'opera@ons,'

' By'analysing'these'opera@ons,'we'can'◦  adapt'them'◦  replay'them'

09/02/15' IWAISE'14' 29'

How to replay? ' Create'a'sample'of'exis@ng'applica@on'◦  Popula@on,'Representa@veness,'Efficiency,'etc.'

' Analyse'the'sample'◦  Source'code,'Commits,'Issues,'Requirements,'etc.'

' Rank'the'effect'◦  Effect'observa@on,'Methodology'

' Abstract'maintenance'opera@on'◦  AST'diff'

' Perform'maintenance'

09/02/15' IWAISE'14' 30'

Ongoing research ' Sampling'and'performing'analyses'◦  Harmony'(Java),'DigIt'(Ruby)'

' Abstract'maintenance'opera@on'◦  GumTree''

' Age'of'an'Internet'Applica@on'◦  Genera@on'of'updates'

09/02/15' IWAISE'14' 31'

Harmony ' Build'random'or'constrainted'samples'from'exis@ng'Open'Source'plakorms'(GitHub,'GoogleCode,'…)'

' Code'your'analysis'on'top'of'an'abstract'framework'

=>&Automa8c&run&of&the&analysis&&h_ps://code.google.com/p/harmony/'

&

09/02/15' IWAISE'14' 32'

Gumtree ' AST'Diff'

' Support'move'edi@ng'opera@ons'

' Efficient'

09/02/15' IWAISE'14' 33'

Age of an Internet Application

09/02/15' IWAISE'14' 34'

Artefact'A''(Version'1)'

Artefact'B'''(Version'2)'

Depends(on(

Depends(on(

Version'1' Jan.'2012'

Version'2' Oct.'2012'

Version'3' Oct.'2013'

Version'1' Jan.'2012'

Version'2' Feb.'2012'

Version'3' Oct.'2013'

Applica@on'

Updating application ' Analyze'artefact'to'iden@fy'possible'updates'

' Find'applica@ons'that'performed'some'of'the'updates'

' Measure'the'effects'

09/02/15' IWAISE'14' 35'

Version'1' Jan.'2012'

Version'2' Oct.'2012'

Version'3' Oct.'2013'

Artefact'Change'Analyze'

Replay and Big Data? ' Few'exis@ng'applica@ons'

' However,'already'iden@fying'some'opera@ons'(Hadoop,'Spark,'…)'

09/02/15' IWAISE'14' 36'

Replay and MEAN? ' More'exis@ng'applica@ons'

' Many'framework,'languages'

' Iden@fying'migra@on'opera@ons'(from'3'@ers)'

09/02/15' IWAISE'14' 37'

Conclusion ' Internet'has'provoked'a'mess'in'soMware'maintenance'

' But'has'opened'a'door'for'maintenance'replay'

' Maintenance'replay'needs'◦  News'Methodology'◦  New'Analysis'/'Effect''

'

09/02/15' IWAISE'14' 38'