SlideShare une entreprise Scribd logo
1  sur  57
Télécharger pour lire hors ligne
Software Evolution
in the Large
Nicolas.Anquetil@inria.com
2 / 57Montpellier – 10/11/17
• Background
• Research Direction
• Past Research
• Future Project
• Wrapping Up
Agenda
BACKGROUND
4 / 57Montpellier – 10/11/17
Software maintenance
• “Today, you will use 13 COBOL
applications” [P. Nieuwbourg, 01/25/12]
• To remain useful, systems must
evolve
– Adaptation to new needs (GUI, cloud, …)
– Prepare for future evolutions
5 / 57Montpellier – 10/11/17
• Windows NT 3.1 (1993)
– 4 a 5 MLOC (M. Lines Of Code)
• Windows server 2003
– 50 MLOC
• Today
– ???
Software maintenance
42 m
( 60 lines/page,
both sides)
47 m
6 / 57Montpellier – 10/11/17
• Ever living systems
– The problem is intrinsic to programs
– Involves understanding a mathematical
model (program)
– Independent of formalism
(programming language, Model Driven
Engineering, Software Product Lines,
aspects, …)
Software maintenance
VISION
8 / 57Montpellier – 10/11/17
Evolution in
the small
Evolution in
the large
vs.
9 / 57Montpellier – 10/11/17
Evolution in the small
10 / 57Montpellier – 10/11/17
• Modifcation (refactoring)
– On 1 entity
– Small number of parameters
– Well defned behavior
– “Preserve code semantic”
– Generic (constrained only by the
programming language)
Evolution in the small
11 / 57Montpellier – 10/11/17
Evolution in the LARGE
• Eclipse v2.1 → v3.0
v2.1 (Extensible IDE) v3.0 (Rich Client
Platform)
12 / 57Montpellier – 10/11/17
Evolution in the LARGE
https://www.versionone.com/agile-101/
agile-software-programming-best-practices/refactoring
13 / 57Montpellier – 10/11/17
Evolution in the LARGE
• Restructure architecture
• Large refactor
• Break a big class
• Introduce a design pattern (e.g. MVC,
factory, strategy, Hybernate)
• Migrate to a new library version
• …
14 / 57Montpellier – 10/11/17
Evolution in the LARGE
• Can/Should occurs regularly (≠often)
in the life of a system
• Evolution
– On several entities
– Complex behavior
– Specifc to the domain, system, and task
– May break code semantic temporarily
15 / 57Montpellier – 10/11/17
Evolution in the LARGE
• What can we do?
• What are the big activities?
• What tools are needed?
RESEARCH
17 / 57Montpellier – 10/11/17
Evolution in the LARGE
• What can we do?
• Some propositions:
– System specifc refactorings
– Model Driven Transformation
– Programming language migration
18 / 57Montpellier – 10/11/17
Evolution in the LARGE
• What can we do?
• Some propositions:
– System specifc refactorings
– Model Driven Transformation
– Programming language migration
19 / 57Montpellier – 10/11/17
JHotDraw 7.4.1 → 7.5.1
class HSLColorSpace extends ColorSpace
{
public HSLColorSpace() { /* … */ }
// …
}
class HSLColorSpace extends ColorSpace
implements NamedColorSpace {
private static HSLColorSpace instance;
public static HSLColorSpace getInstance() {
/* … */ }
private HSLColorSpace() { /* … */ }
public String getName() {
return “HSL”;
}
// …
}
System Specifc Refactorings
20 / 57Montpellier – 10/11/17
class HSVColorSpace extends ColorSpace
{
public HSVColorSpace() { /* … */ }
// …
}
class HSVColorSpace extends ColorSpace
implements NamedColorSpace {
private static HSVColorSpace instance;
public static HSVColorSpace getInstance() {
/* … */ }
private HSVColorSpace() { /* … */ }
public String getName() {
return “HSV”;
}
// …
}
System Specifc Refactorings
JHotDraw 7.4.1 → 7.5.1
21 / 57Montpellier – 10/11/17
class HSVColorSpace extends ColorSpace
{
public HSVColorSpace() { /* … */ }
// …
}
class HSVColorSpace extends ColorSpace
implements NamedColorSpace {
private static HSVColorSpace instance;
public static HSVColorSpace getInstance() {
/* … */ }
private HSVColorSpace() { /* … */ }
public String getName() {
return “HSV”;
}
// …
}
System Specifc Refactorings
JHotDraw 7.4.1 → 7.5.1
Repeated
9 times
22 / 57Montpellier – 10/11/17
PackageManager 0.58 → 0.59
class GreasePharo30CoreSpec
platform
package
addPlatformRequirement: #’pharo’.
package
addProvision: #’Grease-Core-Platform’
class GreasePharo30CoreSpec
platformRequirements
^ #( #’pharo’ )
provisions
^ #( #’Grease-Core-Platform’ )
class SeasideCanvas20CoreSpec
platform
package
addPlatformRequirement: #’pharo2.x’.
package
addProvision: #’Seaside-Canvas-Platform’
class SeasideCanvas20CoreSpec
platformRequirements
^ #( #’pharo2.x’ )
provisions
^ #( #’Seaside-Canvas-Platform’ )
System Specifc Refactorings
23 / 57Montpellier – 10/11/17
PackageManager 0.58 → 0.59
class GreasePharo30CoreSpec
platform
package
addPlatformRequirement: #’pharo’.
package
addProvision: #’Grease-Core-Platform’
class GreasePharo30CoreSpec
platformRequirements
^ #( #’pharo’ )
provisions
^ #( #’Grease-Core-Platform’ )
class SeasideCanvas20CoreSpec
platform
package
addPlatformRequirement: #’pharo2.x’.
package
addProvision: #’Seaside-Canvas-Platform’
class SeasideCanvas20CoreSpec
platformRequirements
^ #( #’pharo2.x’ )
provisions
^ #( #’Seaside-Canvas-Platform’ )
System Specifc Refactorings
Repeated
19 times
24 / 57Montpellier – 10/11/17
Pharo systems Found
PetitDelphi 21
PetitSQL I 6
PetitSQL II 98
PackageManager I 50
PackageManager II 19
PackageManager III 64
PackageManager IV 7
Jenkins 7
MooseQuery I 16
MooseQuery II 8
Pillar 99
Java systems Found
Eclipse I 26
Eclipse II 72
JHotDraw 9
MyWebMarket 7
VerveineJ 3
• Found (manually) in various systems
histories
System Specifc Refactorings
25 / 57Montpellier – 10/11/17
• System/task specifc
• “Incomplete” (may break semantics)
• Complex
• Tedious
• Error prone
System Specifc Refactorings
Automate ?
26 / 57Montpellier – 10/11/17
System Specifc Refactorings
developer
code edition
changed
code entity
new code
location
transformation
events
transformation
pattern
automatic
confguration
new changed
location
applying
transformations
INPUT RECORD
REPLAY
1
2
43
strategies
27 / 57Montpellier – 10/11/17
System Specifc Refactorings
Operators’ parameters
(to adapt)
Recorded actions
(operators)
• Record
28 / 57Montpellier – 10/11/17
System Specifc Refactorings
Custom
refactoring
name
IDE
(list of methods)
• Replay
29 / 57Montpellier – 10/11/17
Pharo systems #Repetition #Operators #Parameters
PetitDelphi 21 2 3
PetitSQL I 6 3 5
PetitSQL II 98 3 6
PackageManager I 50 5 4
PackageManager II 19 3 5
PackageManager III 64 2 4
PackageManager IV 7 4 7
Jenkins 7 1 3
MooseQuery I 16 1 3
MooseQuery II 8 4 5
Pillar 99 4 9
• Case studies
System Specifc Refactorings
30 / 57Montpellier – 10/11/17
System Specifc Refactorings
• “Can the tool confgure parameters?”
Pharo systems #repetitions #Operators #Parameters %Correct
PetitDelphi 21 2 3 99%
PetitSQL I 6 3 5 67%
PetitSQL II 98 3 6 83%
PackageManager I 50 5 4 29%
PackageManager II 19 3 5 54%
PackageManager III 64 2 4 72%
PackageManager IV 7 4 7 79%
Jenkins 7 1 3 49%
MooseQuery I 16 1 3 36%
MooseQuery II 8 4 5 28%
Pillar 99 4 9 56%
31 / 57Montpellier – 10/11/17
System Specifc Refactorings
• Efciency depends on type of
operator parameter
Param. type Correct Incorrect
%Correc
t
Class 21 3 77%
Method 6 5 98%
Pragma
(annotation)
98 6 13%
Prototype 50 4 99%
Source code 19 5 9%
variable 64 4 100%
32 / 57Montpellier – 10/11/17
System Specifc Refactorings
• Improve results?
• Better automatic confguration of
parameters
– Specialize on parameter type
– New confguration strategy
– Select several replay location at a time
• Auto discover replay locations
• Automating recording
33 / 57Montpellier – 10/11/17
Evolution in the LARGE
• What can we do?
• Some propositions:
– System specifc refactorings
– Model Driven Transformation
– Programming language migration
34 / 57Montpellier – 10/11/17
Model Driven Transformation
Old
system
Idealized
organization
Renewed
system
35 / 57Montpellier – 10/11/17
Model Driven Transformation
Old
system
Idealized
organization
Renewed
system
Round trip
Engineering
(Horseshoe)
36 / 57Montpellier – 10/11/17
Model Driven Transformation
Piggyback
Horseshoe
oose
37 / 57Montpellier – 10/11/17
Model Driven Transformation
●
SVN
●
Bugs
●
CSV
●
XML
oose●
Smalltalk
●
Java
●
Ada
●
C/C++
●
Fortran
●
4D
38 / 57Montpellier – 10/11/17
Orion planner
39 / 57Montpellier – 10/11/17
Orion planner
Versions of model
40 / 57Montpellier – 10/11/17
Orion planner
• Creating working version
41 / 57Montpellier – 10/11/17
Orion planner
Model of the system
(editable)
42 / 57Montpellier – 10/11/17
Orion planner
• Interact w/ model (explore solutions)
43 / 57Montpellier – 10/11/17
Orion planner
• Interact w/ model (explore solutions)
44 / 57Montpellier – 10/11/17
Orion planner
• Interact w/ model (explore solutions)
• Create logical entities (e.g. modules)
45 / 57Montpellier – 10/11/17
Orion planner
Validation (e.g.
architectural rules)
46 / 57Montpellier – 10/11/17
Orion planner
• Defne Dependency Constraints
47 / 57Montpellier – 10/11/17
Orion planner
• Check constraints on model
48 / 57Montpellier – 10/11/17
Orion planner
• High level representation of the
system with “logical” entities
– Mapped to the code (piggyback
round trip)
– Editable
– Behave as real entities
(→ metrics, constraints)
FUTURE
50 / 57Montpellier – 10/11/17
Orion planner
• High level representation of the
system with “logical” entities
– Mapped to the code (piggyback
round trip)
– Editable
– Behave as real entities
(→ metrics, constraints)
• Still missing
51 / 57Montpellier – 10/11/17
Evolution in the LARGE
• What can we do?
• Some propositions:
– System specifc refactorings
– Model Driven Transformation
– Programming language migration
your photoyour photo
herehere
52 / 57Montpellier – 10/11/17
Language Migration
• Numerical modeling application
• Used in all felds of science (biology,
physics, economics, …)
Induction in a stator
53 / 57Montpellier – 10/11/17
Language Migration
• Numerical modeling application
• Many old applications
• Written in Fortran
– First compiled language (?)
– 50’s
– Low abstraction level
– Not taught anymore
– Less tools
54 / 57Montpellier – 10/11/17
Language Migration
Fortran
to C++
55 / 57Montpellier – 10/11/17
Language Migration
• Fortran to C++ migration
– Syntax migration ;
– Programming idioms : “Natural” C/C++
vs “Fortran-in-C-syntax”;
– Libraries migration ;
– Optimization patterns : specifc to the
domain of numerical modeling;
– Paradigm migration : procedural to
Object-Oriented
WRAPPING UP
57 / 57Montpellier – 10/11/17
Evolution in the LARGE
• Software evolution is inevitable
• Evolution in the small vs. Evolution in
the LARGE
• How can we help?
– Macro recording
– Piggyback horseshoe w/ OrionPlanner
– Language migration

Contenu connexe

Tendances

ebpf and IO Visor: The What, how, and what next!
ebpf and IO Visor: The What, how, and what next!ebpf and IO Visor: The What, how, and what next!
ebpf and IO Visor: The What, how, and what next!Affan Syed
 
CSW2017 Henry li how to find the vulnerability to bypass the control flow gua...
CSW2017 Henry li how to find the vulnerability to bypass the control flow gua...CSW2017 Henry li how to find the vulnerability to bypass the control flow gua...
CSW2017 Henry li how to find the vulnerability to bypass the control flow gua...CanSecWest
 
OpenZFS code repository
OpenZFS code repositoryOpenZFS code repository
OpenZFS code repositoryMatthew Ahrens
 
Breaking paravirtualized devices
Breaking paravirtualized devicesBreaking paravirtualized devices
Breaking paravirtualized devicesPriyanka Aash
 
Kernel Recipes 2016 - Landlock LSM: Unprivileged sandboxing
Kernel Recipes 2016 - Landlock LSM: Unprivileged sandboxingKernel Recipes 2016 - Landlock LSM: Unprivileged sandboxing
Kernel Recipes 2016 - Landlock LSM: Unprivileged sandboxingAnne Nicolas
 
Metasploit - The Exploit Learning Tree
Metasploit - The Exploit Learning TreeMetasploit - The Exploit Learning Tree
Metasploit - The Exploit Learning TreeE Hacking
 
Stefano Cordibella - An introduction to Yocto Project
Stefano Cordibella - An introduction to Yocto ProjectStefano Cordibella - An introduction to Yocto Project
Stefano Cordibella - An introduction to Yocto Projectlinuxlab_conf
 
Overview of FreeBSD PMC Tools
Overview of FreeBSD PMC ToolsOverview of FreeBSD PMC Tools
Overview of FreeBSD PMC ToolsACMBangalore
 
Systems Programming Assignment Help - Processes
Systems Programming Assignment Help - ProcessesSystems Programming Assignment Help - Processes
Systems Programming Assignment Help - ProcessesHelpWithAssignment.com
 
Puppet Continuous Integration with PE and GitLab
Puppet Continuous Integration with PE and GitLabPuppet Continuous Integration with PE and GitLab
Puppet Continuous Integration with PE and GitLabAlessandro Franceschi
 

Tendances (16)

ebpf and IO Visor: The What, how, and what next!
ebpf and IO Visor: The What, how, and what next!ebpf and IO Visor: The What, how, and what next!
ebpf and IO Visor: The What, how, and what next!
 
CSW2017 Henry li how to find the vulnerability to bypass the control flow gua...
CSW2017 Henry li how to find the vulnerability to bypass the control flow gua...CSW2017 Henry li how to find the vulnerability to bypass the control flow gua...
CSW2017 Henry li how to find the vulnerability to bypass the control flow gua...
 
OpenZFS code repository
OpenZFS code repositoryOpenZFS code repository
OpenZFS code repository
 
How We Test Linux
How We Test LinuxHow We Test Linux
How We Test Linux
 
OpenZFS - AsiaBSDcon
OpenZFS - AsiaBSDconOpenZFS - AsiaBSDcon
OpenZFS - AsiaBSDcon
 
Breaking paravirtualized devices
Breaking paravirtualized devicesBreaking paravirtualized devices
Breaking paravirtualized devices
 
Kernel Recipes 2016 - Landlock LSM: Unprivileged sandboxing
Kernel Recipes 2016 - Landlock LSM: Unprivileged sandboxingKernel Recipes 2016 - Landlock LSM: Unprivileged sandboxing
Kernel Recipes 2016 - Landlock LSM: Unprivileged sandboxing
 
Metasploit - The Exploit Learning Tree
Metasploit - The Exploit Learning TreeMetasploit - The Exploit Learning Tree
Metasploit - The Exploit Learning Tree
 
Mesa and Its Debugging
Mesa and Its DebuggingMesa and Its Debugging
Mesa and Its Debugging
 
Stefano Cordibella - An introduction to Yocto Project
Stefano Cordibella - An introduction to Yocto ProjectStefano Cordibella - An introduction to Yocto Project
Stefano Cordibella - An introduction to Yocto Project
 
Eclipse - Installation and quick start guide
Eclipse - Installation and quick start guideEclipse - Installation and quick start guide
Eclipse - Installation and quick start guide
 
Overview of FreeBSD PMC Tools
Overview of FreeBSD PMC ToolsOverview of FreeBSD PMC Tools
Overview of FreeBSD PMC Tools
 
Python arch wiki
Python   arch wikiPython   arch wiki
Python arch wiki
 
Systems Programming Assignment Help - Processes
Systems Programming Assignment Help - ProcessesSystems Programming Assignment Help - Processes
Systems Programming Assignment Help - Processes
 
Puppet Continuous Integration with PE and GitLab
Puppet Continuous Integration with PE and GitLabPuppet Continuous Integration with PE and GitLab
Puppet Continuous Integration with PE and GitLab
 
Open Dayligth usando SDN-NFV
Open Dayligth usando SDN-NFVOpen Dayligth usando SDN-NFV
Open Dayligth usando SDN-NFV
 

Similaire à Evolution in the large

Mike Bartley - Innovations for Testing Parallel Software - EuroSTAR 2012
Mike Bartley - Innovations for Testing Parallel Software - EuroSTAR 2012Mike Bartley - Innovations for Testing Parallel Software - EuroSTAR 2012
Mike Bartley - Innovations for Testing Parallel Software - EuroSTAR 2012TEST Huddle
 
Kernel Recipes 2018 - 10 years of automated evolution in the Linux kernel - J...
Kernel Recipes 2018 - 10 years of automated evolution in the Linux kernel - J...Kernel Recipes 2018 - 10 years of automated evolution in the Linux kernel - J...
Kernel Recipes 2018 - 10 years of automated evolution in the Linux kernel - J...Anne Nicolas
 
Advanced Java Testing @ POSS 2019
Advanced Java Testing @ POSS 2019Advanced Java Testing @ POSS 2019
Advanced Java Testing @ POSS 2019Vincent Massol
 
JUC Europe 2015: Jenkins-Based Continuous Integration for Heterogeneous Hardw...
JUC Europe 2015: Jenkins-Based Continuous Integration for Heterogeneous Hardw...JUC Europe 2015: Jenkins-Based Continuous Integration for Heterogeneous Hardw...
JUC Europe 2015: Jenkins-Based Continuous Integration for Heterogeneous Hardw...CloudBees
 
New types of tests for Java projects
New types of tests for Java projectsNew types of tests for Java projects
New types of tests for Java projectsVincent Massol
 
Refactoring_Rosenheim_2008_Workshop
Refactoring_Rosenheim_2008_WorkshopRefactoring_Rosenheim_2008_Workshop
Refactoring_Rosenheim_2008_WorkshopMax Kleiner
 
CPSeis & GeoCraft
CPSeis & GeoCraftCPSeis & GeoCraft
CPSeis & GeoCraftbillmenger
 
Linux Performance Analysis: New Tools and Old Secrets
Linux Performance Analysis: New Tools and Old SecretsLinux Performance Analysis: New Tools and Old Secrets
Linux Performance Analysis: New Tools and Old SecretsBrendan Gregg
 
HiPEAC 2019 Tutorial - Maestro RTOS
HiPEAC 2019 Tutorial - Maestro RTOSHiPEAC 2019 Tutorial - Maestro RTOS
HiPEAC 2019 Tutorial - Maestro RTOSTulipp. Eu
 
Fluo CICD OpenStack Summit
Fluo CICD OpenStack SummitFluo CICD OpenStack Summit
Fluo CICD OpenStack SummitMiguel Zuniga
 
The Nuxeo Way: leveraging open source to build a world-class ECM platform
The Nuxeo Way: leveraging open source to build a world-class ECM platformThe Nuxeo Way: leveraging open source to build a world-class ECM platform
The Nuxeo Way: leveraging open source to build a world-class ECM platformNuxeo
 
Efficient and Advanced Omniscient Debugging for xDSMLs (SLE 2015)
Efficient and Advanced Omniscient Debugging for xDSMLs (SLE 2015)Efficient and Advanced Omniscient Debugging for xDSMLs (SLE 2015)
Efficient and Advanced Omniscient Debugging for xDSMLs (SLE 2015)Benoit Combemale
 
EclipseCon Eu 2015 - Breathe life into your Designer!
EclipseCon Eu 2015 - Breathe life into your Designer!EclipseCon Eu 2015 - Breathe life into your Designer!
EclipseCon Eu 2015 - Breathe life into your Designer!melbats
 
Abstractions and Directives for Adapting Wavefront Algorithms to Future Archi...
Abstractions and Directives for Adapting Wavefront Algorithms to Future Archi...Abstractions and Directives for Adapting Wavefront Algorithms to Future Archi...
Abstractions and Directives for Adapting Wavefront Algorithms to Future Archi...inside-BigData.com
 
minimesos. Apache Mesos made easy
minimesos. Apache Mesos made easyminimesos. Apache Mesos made easy
minimesos. Apache Mesos made easyViktor Sadovnikov
 
Scheduling in next generation os
Scheduling in next generation osScheduling in next generation os
Scheduling in next generation osSantosh Nage
 

Similaire à Evolution in the large (20)

Mike Bartley - Innovations for Testing Parallel Software - EuroSTAR 2012
Mike Bartley - Innovations for Testing Parallel Software - EuroSTAR 2012Mike Bartley - Innovations for Testing Parallel Software - EuroSTAR 2012
Mike Bartley - Innovations for Testing Parallel Software - EuroSTAR 2012
 
Kernel Recipes 2018 - 10 years of automated evolution in the Linux kernel - J...
Kernel Recipes 2018 - 10 years of automated evolution in the Linux kernel - J...Kernel Recipes 2018 - 10 years of automated evolution in the Linux kernel - J...
Kernel Recipes 2018 - 10 years of automated evolution in the Linux kernel - J...
 
Advanced Java Testing @ POSS 2019
Advanced Java Testing @ POSS 2019Advanced Java Testing @ POSS 2019
Advanced Java Testing @ POSS 2019
 
JUC Europe 2015: Jenkins-Based Continuous Integration for Heterogeneous Hardw...
JUC Europe 2015: Jenkins-Based Continuous Integration for Heterogeneous Hardw...JUC Europe 2015: Jenkins-Based Continuous Integration for Heterogeneous Hardw...
JUC Europe 2015: Jenkins-Based Continuous Integration for Heterogeneous Hardw...
 
New types of tests for Java projects
New types of tests for Java projectsNew types of tests for Java projects
New types of tests for Java projects
 
Refactoring_Rosenheim_2008_Workshop
Refactoring_Rosenheim_2008_WorkshopRefactoring_Rosenheim_2008_Workshop
Refactoring_Rosenheim_2008_Workshop
 
CPSeis & GeoCraft
CPSeis & GeoCraftCPSeis & GeoCraft
CPSeis & GeoCraft
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
Linux Performance Analysis: New Tools and Old Secrets
Linux Performance Analysis: New Tools and Old SecretsLinux Performance Analysis: New Tools and Old Secrets
Linux Performance Analysis: New Tools and Old Secrets
 
HiPEAC 2019 Tutorial - Maestro RTOS
HiPEAC 2019 Tutorial - Maestro RTOSHiPEAC 2019 Tutorial - Maestro RTOS
HiPEAC 2019 Tutorial - Maestro RTOS
 
Beyond static configuration
Beyond static configurationBeyond static configuration
Beyond static configuration
 
Fluo CICD OpenStack Summit
Fluo CICD OpenStack SummitFluo CICD OpenStack Summit
Fluo CICD OpenStack Summit
 
Introduction to multicore .ppt
Introduction to multicore .pptIntroduction to multicore .ppt
Introduction to multicore .ppt
 
The Nuxeo Way: leveraging open source to build a world-class ECM platform
The Nuxeo Way: leveraging open source to build a world-class ECM platformThe Nuxeo Way: leveraging open source to build a world-class ECM platform
The Nuxeo Way: leveraging open source to build a world-class ECM platform
 
Efficient and Advanced Omniscient Debugging for xDSMLs (SLE 2015)
Efficient and Advanced Omniscient Debugging for xDSMLs (SLE 2015)Efficient and Advanced Omniscient Debugging for xDSMLs (SLE 2015)
Efficient and Advanced Omniscient Debugging for xDSMLs (SLE 2015)
 
EclipseCon Eu 2015 - Breathe life into your Designer!
EclipseCon Eu 2015 - Breathe life into your Designer!EclipseCon Eu 2015 - Breathe life into your Designer!
EclipseCon Eu 2015 - Breathe life into your Designer!
 
Abstractions and Directives for Adapting Wavefront Algorithms to Future Archi...
Abstractions and Directives for Adapting Wavefront Algorithms to Future Archi...Abstractions and Directives for Adapting Wavefront Algorithms to Future Archi...
Abstractions and Directives for Adapting Wavefront Algorithms to Future Archi...
 
Mastering Real-time Linux
Mastering Real-time LinuxMastering Real-time Linux
Mastering Real-time Linux
 
minimesos. Apache Mesos made easy
minimesos. Apache Mesos made easyminimesos. Apache Mesos made easy
minimesos. Apache Mesos made easy
 
Scheduling in next generation os
Scheduling in next generation osScheduling in next generation os
Scheduling in next generation os
 

Dernier

Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 

Dernier (20)

Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 

Evolution in the large

  • 1. Software Evolution in the Large Nicolas.Anquetil@inria.com
  • 2. 2 / 57Montpellier – 10/11/17 • Background • Research Direction • Past Research • Future Project • Wrapping Up Agenda
  • 4. 4 / 57Montpellier – 10/11/17 Software maintenance • “Today, you will use 13 COBOL applications” [P. Nieuwbourg, 01/25/12] • To remain useful, systems must evolve – Adaptation to new needs (GUI, cloud, …) – Prepare for future evolutions
  • 5. 5 / 57Montpellier – 10/11/17 • Windows NT 3.1 (1993) – 4 a 5 MLOC (M. Lines Of Code) • Windows server 2003 – 50 MLOC • Today – ??? Software maintenance 42 m ( 60 lines/page, both sides) 47 m
  • 6. 6 / 57Montpellier – 10/11/17 • Ever living systems – The problem is intrinsic to programs – Involves understanding a mathematical model (program) – Independent of formalism (programming language, Model Driven Engineering, Software Product Lines, aspects, …) Software maintenance
  • 8. 8 / 57Montpellier – 10/11/17 Evolution in the small Evolution in the large vs.
  • 9. 9 / 57Montpellier – 10/11/17 Evolution in the small
  • 10. 10 / 57Montpellier – 10/11/17 • Modifcation (refactoring) – On 1 entity – Small number of parameters – Well defned behavior – “Preserve code semantic” – Generic (constrained only by the programming language) Evolution in the small
  • 11. 11 / 57Montpellier – 10/11/17 Evolution in the LARGE • Eclipse v2.1 → v3.0 v2.1 (Extensible IDE) v3.0 (Rich Client Platform)
  • 12. 12 / 57Montpellier – 10/11/17 Evolution in the LARGE https://www.versionone.com/agile-101/ agile-software-programming-best-practices/refactoring
  • 13. 13 / 57Montpellier – 10/11/17 Evolution in the LARGE • Restructure architecture • Large refactor • Break a big class • Introduce a design pattern (e.g. MVC, factory, strategy, Hybernate) • Migrate to a new library version • …
  • 14. 14 / 57Montpellier – 10/11/17 Evolution in the LARGE • Can/Should occurs regularly (≠often) in the life of a system • Evolution – On several entities – Complex behavior – Specifc to the domain, system, and task – May break code semantic temporarily
  • 15. 15 / 57Montpellier – 10/11/17 Evolution in the LARGE • What can we do? • What are the big activities? • What tools are needed?
  • 17. 17 / 57Montpellier – 10/11/17 Evolution in the LARGE • What can we do? • Some propositions: – System specifc refactorings – Model Driven Transformation – Programming language migration
  • 18. 18 / 57Montpellier – 10/11/17 Evolution in the LARGE • What can we do? • Some propositions: – System specifc refactorings – Model Driven Transformation – Programming language migration
  • 19. 19 / 57Montpellier – 10/11/17 JHotDraw 7.4.1 → 7.5.1 class HSLColorSpace extends ColorSpace { public HSLColorSpace() { /* … */ } // … } class HSLColorSpace extends ColorSpace implements NamedColorSpace { private static HSLColorSpace instance; public static HSLColorSpace getInstance() { /* … */ } private HSLColorSpace() { /* … */ } public String getName() { return “HSL”; } // … } System Specifc Refactorings
  • 20. 20 / 57Montpellier – 10/11/17 class HSVColorSpace extends ColorSpace { public HSVColorSpace() { /* … */ } // … } class HSVColorSpace extends ColorSpace implements NamedColorSpace { private static HSVColorSpace instance; public static HSVColorSpace getInstance() { /* … */ } private HSVColorSpace() { /* … */ } public String getName() { return “HSV”; } // … } System Specifc Refactorings JHotDraw 7.4.1 → 7.5.1
  • 21. 21 / 57Montpellier – 10/11/17 class HSVColorSpace extends ColorSpace { public HSVColorSpace() { /* … */ } // … } class HSVColorSpace extends ColorSpace implements NamedColorSpace { private static HSVColorSpace instance; public static HSVColorSpace getInstance() { /* … */ } private HSVColorSpace() { /* … */ } public String getName() { return “HSV”; } // … } System Specifc Refactorings JHotDraw 7.4.1 → 7.5.1 Repeated 9 times
  • 22. 22 / 57Montpellier – 10/11/17 PackageManager 0.58 → 0.59 class GreasePharo30CoreSpec platform package addPlatformRequirement: #’pharo’. package addProvision: #’Grease-Core-Platform’ class GreasePharo30CoreSpec platformRequirements ^ #( #’pharo’ ) provisions ^ #( #’Grease-Core-Platform’ ) class SeasideCanvas20CoreSpec platform package addPlatformRequirement: #’pharo2.x’. package addProvision: #’Seaside-Canvas-Platform’ class SeasideCanvas20CoreSpec platformRequirements ^ #( #’pharo2.x’ ) provisions ^ #( #’Seaside-Canvas-Platform’ ) System Specifc Refactorings
  • 23. 23 / 57Montpellier – 10/11/17 PackageManager 0.58 → 0.59 class GreasePharo30CoreSpec platform package addPlatformRequirement: #’pharo’. package addProvision: #’Grease-Core-Platform’ class GreasePharo30CoreSpec platformRequirements ^ #( #’pharo’ ) provisions ^ #( #’Grease-Core-Platform’ ) class SeasideCanvas20CoreSpec platform package addPlatformRequirement: #’pharo2.x’. package addProvision: #’Seaside-Canvas-Platform’ class SeasideCanvas20CoreSpec platformRequirements ^ #( #’pharo2.x’ ) provisions ^ #( #’Seaside-Canvas-Platform’ ) System Specifc Refactorings Repeated 19 times
  • 24. 24 / 57Montpellier – 10/11/17 Pharo systems Found PetitDelphi 21 PetitSQL I 6 PetitSQL II 98 PackageManager I 50 PackageManager II 19 PackageManager III 64 PackageManager IV 7 Jenkins 7 MooseQuery I 16 MooseQuery II 8 Pillar 99 Java systems Found Eclipse I 26 Eclipse II 72 JHotDraw 9 MyWebMarket 7 VerveineJ 3 • Found (manually) in various systems histories System Specifc Refactorings
  • 25. 25 / 57Montpellier – 10/11/17 • System/task specifc • “Incomplete” (may break semantics) • Complex • Tedious • Error prone System Specifc Refactorings Automate ?
  • 26. 26 / 57Montpellier – 10/11/17 System Specifc Refactorings developer code edition changed code entity new code location transformation events transformation pattern automatic confguration new changed location applying transformations INPUT RECORD REPLAY 1 2 43 strategies
  • 27. 27 / 57Montpellier – 10/11/17 System Specifc Refactorings Operators’ parameters (to adapt) Recorded actions (operators) • Record
  • 28. 28 / 57Montpellier – 10/11/17 System Specifc Refactorings Custom refactoring name IDE (list of methods) • Replay
  • 29. 29 / 57Montpellier – 10/11/17 Pharo systems #Repetition #Operators #Parameters PetitDelphi 21 2 3 PetitSQL I 6 3 5 PetitSQL II 98 3 6 PackageManager I 50 5 4 PackageManager II 19 3 5 PackageManager III 64 2 4 PackageManager IV 7 4 7 Jenkins 7 1 3 MooseQuery I 16 1 3 MooseQuery II 8 4 5 Pillar 99 4 9 • Case studies System Specifc Refactorings
  • 30. 30 / 57Montpellier – 10/11/17 System Specifc Refactorings • “Can the tool confgure parameters?” Pharo systems #repetitions #Operators #Parameters %Correct PetitDelphi 21 2 3 99% PetitSQL I 6 3 5 67% PetitSQL II 98 3 6 83% PackageManager I 50 5 4 29% PackageManager II 19 3 5 54% PackageManager III 64 2 4 72% PackageManager IV 7 4 7 79% Jenkins 7 1 3 49% MooseQuery I 16 1 3 36% MooseQuery II 8 4 5 28% Pillar 99 4 9 56%
  • 31. 31 / 57Montpellier – 10/11/17 System Specifc Refactorings • Efciency depends on type of operator parameter Param. type Correct Incorrect %Correc t Class 21 3 77% Method 6 5 98% Pragma (annotation) 98 6 13% Prototype 50 4 99% Source code 19 5 9% variable 64 4 100%
  • 32. 32 / 57Montpellier – 10/11/17 System Specifc Refactorings • Improve results? • Better automatic confguration of parameters – Specialize on parameter type – New confguration strategy – Select several replay location at a time • Auto discover replay locations • Automating recording
  • 33. 33 / 57Montpellier – 10/11/17 Evolution in the LARGE • What can we do? • Some propositions: – System specifc refactorings – Model Driven Transformation – Programming language migration
  • 34. 34 / 57Montpellier – 10/11/17 Model Driven Transformation Old system Idealized organization Renewed system
  • 35. 35 / 57Montpellier – 10/11/17 Model Driven Transformation Old system Idealized organization Renewed system Round trip Engineering (Horseshoe)
  • 36. 36 / 57Montpellier – 10/11/17 Model Driven Transformation Piggyback Horseshoe oose
  • 37. 37 / 57Montpellier – 10/11/17 Model Driven Transformation ● SVN ● Bugs ● CSV ● XML oose● Smalltalk ● Java ● Ada ● C/C++ ● Fortran ● 4D
  • 38. 38 / 57Montpellier – 10/11/17 Orion planner
  • 39. 39 / 57Montpellier – 10/11/17 Orion planner Versions of model
  • 40. 40 / 57Montpellier – 10/11/17 Orion planner • Creating working version
  • 41. 41 / 57Montpellier – 10/11/17 Orion planner Model of the system (editable)
  • 42. 42 / 57Montpellier – 10/11/17 Orion planner • Interact w/ model (explore solutions)
  • 43. 43 / 57Montpellier – 10/11/17 Orion planner • Interact w/ model (explore solutions)
  • 44. 44 / 57Montpellier – 10/11/17 Orion planner • Interact w/ model (explore solutions) • Create logical entities (e.g. modules)
  • 45. 45 / 57Montpellier – 10/11/17 Orion planner Validation (e.g. architectural rules)
  • 46. 46 / 57Montpellier – 10/11/17 Orion planner • Defne Dependency Constraints
  • 47. 47 / 57Montpellier – 10/11/17 Orion planner • Check constraints on model
  • 48. 48 / 57Montpellier – 10/11/17 Orion planner • High level representation of the system with “logical” entities – Mapped to the code (piggyback round trip) – Editable – Behave as real entities (→ metrics, constraints)
  • 50. 50 / 57Montpellier – 10/11/17 Orion planner • High level representation of the system with “logical” entities – Mapped to the code (piggyback round trip) – Editable – Behave as real entities (→ metrics, constraints) • Still missing
  • 51. 51 / 57Montpellier – 10/11/17 Evolution in the LARGE • What can we do? • Some propositions: – System specifc refactorings – Model Driven Transformation – Programming language migration your photoyour photo herehere
  • 52. 52 / 57Montpellier – 10/11/17 Language Migration • Numerical modeling application • Used in all felds of science (biology, physics, economics, …) Induction in a stator
  • 53. 53 / 57Montpellier – 10/11/17 Language Migration • Numerical modeling application • Many old applications • Written in Fortran – First compiled language (?) – 50’s – Low abstraction level – Not taught anymore – Less tools
  • 54. 54 / 57Montpellier – 10/11/17 Language Migration Fortran to C++
  • 55. 55 / 57Montpellier – 10/11/17 Language Migration • Fortran to C++ migration – Syntax migration ; – Programming idioms : “Natural” C/C++ vs “Fortran-in-C-syntax”; – Libraries migration ; – Optimization patterns : specifc to the domain of numerical modeling; – Paradigm migration : procedural to Object-Oriented
  • 57. 57 / 57Montpellier – 10/11/17 Evolution in the LARGE • Software evolution is inevitable • Evolution in the small vs. Evolution in the LARGE • How can we help? – Macro recording – Piggyback horseshoe w/ OrionPlanner – Language migration