SlideShare a Scribd company logo
1 of 25
Download to read offline
Frameworkevolution ohne
Nebenwirkungen -
Automatische Adaption von
Clients und Dokumentation


                        Katharina Somieski
    Innovationsforum, 28.11.2007, Dresden
Projekt „B2-PDE“




     • Beteiligte:
           – Technische Universität Dresden (Lehrstuhl
             Softwaretechnologie)
           – Comarch Software AG (Dresden)

     • FuE-Verbundprojekt gefördert von der SAB


     • Projektrahmen: ERP-System „B2“
           – Praktische Probleme bei neuen Versionen des B2-Frameworks :
              • Plugin-Anpassung
              • Tutorial-Anpassung




Innovationsforum, 28.11.2007          Ilie Şavga                    Slide 2 of 16
Software Technology Group, Department of Computer Science, Technische Universität Dresden




           Changed-Based Support for
           Binary Compatibility in
           Evolving Frameworks



                                      M.Sc. Ilie Şavga (B2-PDE Team)
                              Innovation Forum, 28.11.2007, Dresden
Software Frameworks


        Framework Version 1


                                                A software framework is a software component
                                                that embodies a skeleton solution for a family
                                                of related software products and is instantiated
             Customer
                                                by modules containing custom code (plugins).
            getName()
            getDiscount()
                                                                           Johnson and Foote 1998




        customer.getDiscount();

           Plugin Version 1



Innovationsforum, 28.11.2007             Ilie Şavga                                             Slide 4 of 16
Framework Change Breaking a Plugin


        Framework Version 1                                            Framework Version 2

                                                                           Customer
                                                                          getName()
                                              ExtractSubclass
             Customer
            getName()
                                                                          VipCustomer
            getDiscount()
                                                                          getDiscount()




        customer.getDiscount();

           Plugin Version 1



Innovationsforum, 28.11.2007                     Ilie Şavga                               Slide 5 of 16
Motivation and Goal



We want to automatically preserve binary compatibility of framework and its
  plugins—the latter must link and run with new framework releases without
  recompiling.
                                                                  Forman et al., 1995




       Using change history automatically retain binary compatibility to
       reduce the costs and improve the quality of framework
       upgrade.




Innovationsforum, 28.11.2007          Ilie Şavga                                Slide 6 of 16
Change-Driven Adaptation


                                               ExtractSubclass                   Framework Version 2

                                                                                     Customer
                                                         generate
                                                         generate
                                                                                    getName()
 Adapter (wrapper) design pattern
                            GoF 1995;

                                                                                    VipCustomer
                                                                      delegate
                                                                                    getDiscount()

                                                                      delegate
                                                  Customer
                                                getName()
                                                getDiscount()

                                             Adapter Version 1-to-2




        customer.getDiscount();

           Plugin Version 1



Innovationsforum, 28.11.2007                         Ilie Şavga                                     Slide 7 of 16
Adaptation Layer for Binary Compatibility




                                      Change
                                      Change
                                    Specification
                                    Specification
                           input


                                                     F2
                      Generator
                      Generator
      generate


                 AL1
                                   delegate




                 P1                                  P2

                                                                 time

Innovationsforum, 28.11.2007                        Ilie Şavga          Slide 8 of 16
Adaptation Layers for Binary Compatibility




                                      Change
                                      Change
                                    Specification
                                    Specification
                           input


                                                                                 F3
                      Generator
                      Generator
      generate                                generate


                 AL1                                     AL2
                                                                      delegate

                                   delegate



                 P1                                       P2                     P3
                                                                                      time

Innovationsforum, 28.11.2007                             Ilie Şavga                          Slide 9 of 16
Two Adaptation Tools of B2-PDE




• Differ in how the change information is specified




                                      ADE:                      B2-PDE
                                 change mapping
            effectiveness                                     Development

                                                     ComeBack!:
                                                  refactoring-based




                                                                automation

Innovationsforum, 28.11.2007                  Ilie Şavga                     Slide 10 of 16
Framework Refactoring Breaking a Plugin


        Framework Version 1                                                    Framework Version 2

                                                                                      Customer
                                                                                    getName()
                                           ExtractSubclass
             Customer
            getName()
                                                                                    VipCustomer
            getDiscount()
                                                                                    getDiscount()




                                                             Refactoring is a behavior-preserving
                                                             source transformation.
                                                                    Opdyke 1992; Roberts 1999; Fowler 1999


        customer.getDiscount();
                                                             Refactoring operations comprise >80%
                                                             of application-breaking API changes.
           Plugin Version 1
                                                                                      Dig and Johnson 2005



Innovationsforum, 28.11.2007                  Ilie Şavga                                             Slide 11 of 16
The ComeBack! Tool


                                    Framework
                                    Framework
                                     Binaries
                                      Binaries

                                   parsing

                                                       ComeBack!
                                    Framework
                                    Framework
                                    Fact Base
                                     Fact Base



                                       Prolog
                   Comeback                             Refactoring
                                       Prolog
                   Comeback                             Refactoring
                                       Engine
                    Library                              History
                                       Engine
                     Library                              History



                                      Adapter
                                      Adapter
                                     Fact Base
                                     Fact Base
                                     pretty printing


                                      Adapter
                                      Adapter
                                       Layer
                                       Layer

                                   ComeBack! homepage: http://comeback.sf.net

Innovationsforum, 28.11.2007            Ilie Şavga                     Slide 12 of 16
Refactoring-Based Adaptation




                                                  Refactoring
                                                  Refactoring
                                         input
                                                    History
                                                    History


                                                                              F3
                           Generator
                           Generator
           generate                       generate


                      AL1                            AL2
                                                                   delegate

                                       delegate



                      P1                             P2                       P3
                                                                                   time

Innovationsforum, 28.11.2007                          Ilie Şavga                          Slide 13 of 16
ADE: Adapter Development Environment




              F1                                                              F3


                                input                          input

                                        Heuristic Engine
                                        Heuristic Engine

                                                output

                                                            amend and
                                                             complete
                                           Change
                                           Change
                                           Mapping
                                           Mapping
                                                                        developers
                                                                        developers




Innovationsforum, 28.11.2007                   Ilie Şavga                            Slide 14 of 16
Change-Based Adaptation in ADE




                                                     Change
                                                     Change
                                         input
                                                     Mapping
                                                     Mapping


                                                                               F3
                           Generator
                           Generator
           generate                       generate


                      AL1                            AL2
                                                                    delegate

                                       delegate



                      P1                              P2                       P3
                                                                                    time

Innovationsforum, 28.11.2007                           Ilie Şavga                          Slide 15 of 16
Adaptation in B2-PDE: Benefits




• Framework developers
      • no update patches
      • empowered framework maintenance
• Third-party companies
      • no manual plugin adaptation
• End Users
      • „silent“ plugin adaptation
For all
    Treated as a specification, change history fosters the automatic
    preservation of binary compatibility reducing the costs and
    increasing the quality of framework upgrade.




Innovationsforum, 28.11.2007                Ilie Şavga                 Slide 16 of 16
Backup
References


R. Johnson and B. Foote. Designing reusable classes. Journal of Object-Oriented Programming, 1(2):22–35, June 1988.
W. F. Opdyke. Refactoring Object-Oriented Frameworks. PhD thesis, Urbana-Champaign, IL, USA, 1992.
D. B. Roberts. Practical analysis for refactoring. PhD thesis, University of Illinois at Urbana-Champaign, Urbana, Illinois, 1999.
M. Fowler. Refactoring: Improving the Design of Existing Code. Addison-Wesley, 1999.
D. Dig and R. Johnson. The role of refactorings in API evolution. In ICSM ’05: Proceedings of the 21st IEEE International Conference on Software
       Maintenance (ICSM’05), pages 389–398, Washington, DC, USA, 2005. IEEE Computer Society.
GoF: E. Gamma, R. Helm, R. Johnson, and J. Vlisside. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, Reading,
       Massachusetts, 1995.
S. Becker, A. Brogi, I. Gorton, S. Overhage, A. Romanovsky, and M. Tivoli. Towards an engineering approach to component adaptation. In R. H.
       Reussner, J. A. Stafford, and C. A. Szyperski, editors, Architecting Systems with Trustworthy Components, volume 3938 of Lecture Notes in
       Computer Science, pages 193–215. Springer, 2004.
J. A. Stafford, and C. A. Szyperski, editors, Architecting Systems with Trustworthy Components, volume 3938 of Lecture Notes in Computer Science,
       pages 193–215. Springer, 2004.
CORBA homepage. http://www.corba.org
Microsoft COM homepage. http://www.microsoft.com/Com/default.mspx.
J. Camara, C. Canal, J. Cubo, and J. Murillo. An aspectoriented adaptation framework for dynamic component evolution. In 3rd ECOOP Workshop on
       Reflection, AOP and Meta-Data for Software Evolution, pages 59–71, 2006.
I. R. Forman, M. H. Conner, S. H. Danforth, and L. K. Raper. Release-to-release binary compatibility in SOM. In OOPSLA ’95: Proceedings of the tenth
       annual conference on Objectoriented programming systems, languages, and applications, pages 426–438, New York, NY, USA, 1995. ACM
       Press.
S. Malabarba, R. Pandey, J. Gragg, E. Barr, and J. F. Barnes. Runtime support for type-safe dynamic java classes. In ECOOP ’00: Proceedings of the
       14th European Conference on Object-Oriented Programming, pages 337–361, London, UK, 2000. Springer-Verlag.
I.Balaban, F. Tip, and R. Fuhrer. Refactoring support for class library migration. In OOPSLA ’05: Proceedings of the 20th annual ACM SIGPLAN
       conference on Object oriented programming, systems, languages, and applications, pages 265–279, New York, NY, USA, 2005. ACM Press.
K. Chow and D. Notkin. Semi-automatic update of applications in response to library changes. In ICSM ’96: Proceedings of the 1996 International
       Conference on Software Maintenance, page 359, Washington, DC, USA, 1996. IEEE Computer Society.
J. Henkel and A. Diwan. Catchup!: capturing and replaying refactorings to support API evolution. In ICSE ’05: Proceedings of the 27th international
       conference on Software engineering, pages 274–283, New York, NY, USA, 2005. ACM Press.
R. Keller and U. Hoelzle. Binary component adaptation. Lecture Notes in Computer Science, 1445:307–318, 1998.
S. Roock and A. Havenstein. Refactoring tags for automatic refactoring of framework dependent applications. In XP’02: Proceedings of Extreme
       Programming Conference, pages 182–185, 2002.




Innovationsforum, 28.11.2007                                         Ilie Şavga                                                       Slide 18 of 16
Comebacks


  A comeback is a refactoring transforming adapters to compensate
     for a framework refactoring.

Refactoring                            Comeback

AddClass(class,superclass, subclasses) CbAddClass(class,superclass,subclasses):
                                         – RemoveClass (class)

PushDownMethod                         CbPushDownMethod
       (class,subclass,method)                (class,subclass,method):
                                         – AddMethod(class,Method(subclass,method))
                                         – RemoveMethod(subclass,method)
ExtractSubclass                        CbExtractSubclass
        (class,subclass,methods)               (class,subclass,methods):
                                         – forall m in methods:
                                           CbPushDownMethod(class,subclass,m)
                                         – CbAddClass(subclass,class,Subclasses(class))



Innovationsforum, 28.11.2007          Ilie Şavga                               Slide 19 of 16
Related Work



    Prevention                                                     Facilitation

    Use of a legacy middleware or a                                Distribute changes: change info (as
       specific communication protocol                                annotations or separate
       to connect a framework and its                                 specifications) + adaptation rules.
       plugins.

                                                                    Pros: potentially unlimited
    Pros: transparent client adaptation,
                                                                       power.
       in some cases without
       recompilation.

    Cons: middleware-dependent                                       Cons: cumbersome manual
       framework development.                                           specifications; invasion by
                                                                        adapter code requires source
                                                                        availability and recompilation.



  CORBA; COM; Forman et al., 1995; Malabarba et al., 2000;              Balaban et al., 2005; Chow and Notkin 1996; Henkel and Diwan 2005;
  Camara et al. 2006;                                                   Keller and Hölze 1998; Roock and Havenstein 2002;


Innovationsforum, 28.11.2007                                     Ilie Şavga                                                     Slide 20 of 16
Setting the Context


Refactoring
    Note: we consider the addition of functionality also a refactoring
    Pure Deletion is not allowed
Frameworks
      API well defined
      Black- and white-box
      Callbacks
      No generic types in the API
      No public fields in the API
      Reflection and serialization used in a adaptive-aware disciplined way
      Controlled (expressed by refactoring) split/merge of types




Innovationsforum, 28.11.2007             Ilie Şavga                           Slide 21 of 16
Beyond Refactorings


Adaptable signature-level component mismatches, no protocol or
  semantic adaptation.
                                                               Becker et al. 2004


Intended behavior-modifying framework changes:
• Visible: to be tested
      – Testing adapters
• Unvisible: to be adapted
      – Updating change specification                  Dig et al. 2007; MolhadoRef




Innovationsforum, 28.11.2007            Ilie Şavga                    Slide 22 of 16
Other Related Issues


• Refactoring acquisition
      – Manual: annotations, + version control systems          Chow and Notkin 1996; Wemmie 2006

      – Semi-automatic: metrics-based heuristics, vector space information
        retrieval, relating CVS to transactions, origin analysis, clone detection
                                                        Demeyer et al. 2000; Antoniol et al. 2004; Gorg and Weisgerber 2005;
                                                        Zou and Godfrey 2003; Rysselberghe and Demeyer 2003
         • combination of syntactic (signature-based, shingles) and semantic
            (clone detection, reference graphs) analysis Weissgerber and Diehl 2006; Dig et al. 2006
      – Automatic: Eclipse and JBuilder
• Refactoring representation
      – Refactoring-aware SCM system                                                           Dig et al. 2007; MolhadoRef

• Refactoring and metrics
      – Predictive and retrospective
      – Process-oriented frameworks                          Mens and Demeyer 2001; Cimon et al. 2000; Tahvildari et al. 2003

• Refactoring-driven testing                                                                        Bannwart and Müller 2006




Innovationsforum, 28.11.2007                    Ilie Şavga                                                       Slide 23 of 16
Tecnical Issues


• Linkage problems
      – Currently by reflection
      – In the future: by strong names
• Wrapping/Unwrapping types
      – Imply adaptation-requires dedicated methods
      – The performance pentalties to estimate




Innovationsforum, 28.11.2007             Ilie Şavga   Slide 24 of 16
References


S. Demeyer, S. Ducasse, and O. Nierstrasz. Finding refactorings via change metrics. In OOPSLA ’00: Proceedings of the 15th ACM
      SIGPLAN conference on Object-oriented programming, systems, languages, and applications, pages 166–177, New York, NY,
      USA, 2000. ACM Press.
G. Antoniol, M. D. Penta, and E. Merlo. An automatic approach to identify class evolution discontinuities. In IWPSE ’04: Proceedings of
      the Principles of Software Evolution, 7th International Workshop on (IWPSE’04), pages 31–40, Washington, DC, USA, 2004. IEEE
      Computer Society.
C. Gorg and P. Weisgerber. Detecting and visualizing refactorings from software archives. In IWPC ’05: Proceedings of the 13th
      International Workshop on Program Comprehension, pages 205–214, Washington, DC, USA, 2005. IEEE Computer Society.
L. Zou and M.W. Godfrey. Detecting merging and splitting using origin analysis. In WCRE ’03: Proceedings of the 10th Working
      Conference on Reverse Engineering, page 146, Washington, DC, USA, 2003. IEEE Computer Society.
F. V. Rysselberghe and S. Demeyer. Reconstruction of successful software evolution using clone detection. In IWPSE ’03: Proceedings
      of the 6th International Workshop on Principles of Software Evolution, page 126, Washington, DC, USA, 2003. IEEE Computer
      Society.
P. Weissgerber and S. Diehl. Identifying refactorings from source-code changes. In ASE ’06: Proceedings of the 21st IEEE
      International Conference on Automated Software Engineering (ASE’06), pages 231–240, Washington, DC, USA, 2006. IEEE
      Computer Society.
D. Dig, C. Comertoglu, D. Marinov, and R. Johnson. Automated detection of refactorings in evolving components. In D. Thomas,
      editor, ECOOP, volume 4067 of Lecture Notes in Computer Science, pages 404–428. Springer, 2006.
D. Dig, K. Manzoor, R. Johnson, and T. N. Nguyen. Refactoring-aware configuration management for object-oriented programs. In
      ICSE, 2007.
Molhadoref homepage. https://netfiles.uiuc.edu/dig/MolhadoRef.
C. Bitter. Using Aspect-Oriented Techniques for Adaptation. Master Thesis, TU Dresden, 2007.
T. Mens and S. Demeyer. Evolution metrics. In Proc. Int. Workshop on Principles of Software Evolution, 2001.
L. Tahvildari, K. Kontogiannis, and J. Mylopoulos. Quality-driven software reengineering. Journal of System Software, 66(3):225–239,
      2003.
F. Bannwart and P. Müller. Changing programs correctly: Refactoring with specifications. In J. Misra, T. Nipkow, and E. Sekerinski,
      editors, FM, volume 4085 of Lecture Notes in Computer Science, pages 492–507. Springer, 2006.
T. Mens, N. V. Eetvelde, S. Demeyer, and D. Janssens. Formalizing refactorings with graph transformations: Research articles. Journal
      of Software Maintenance and Evolution:Research and Practice, 17(4):247–276, 2005.
N.V.Eetvelde. A Graph Transformation Approach to Refactoring. University of Antwerp. PhD. Thesis, 2007.




Innovationsforum, 28.11.2007                                   Ilie Şavga                                                  Slide 25 of 16

More Related Content

What's hot

Estimating Packaged Software - The first part of a framework
Estimating Packaged Software - The first part of a frameworkEstimating Packaged Software - The first part of a framework
Estimating Packaged Software - The first part of a frameworkNesma
 
White Paper: Configuration and Build Management of Product Line Development w...
White Paper: Configuration and Build Management of Product Line Development w...White Paper: Configuration and Build Management of Product Line Development w...
White Paper: Configuration and Build Management of Product Line Development w...Perforce
 
04 - Agile Software Configuration Management
04 - Agile Software Configuration Management04 - Agile Software Configuration Management
04 - Agile Software Configuration ManagementSergii Shmarkatiuk
 
Embedding Existing Heterogeneous Monitoring Techniques into a Lightweight, Di...
Embedding Existing Heterogeneous Monitoring Techniques into a Lightweight, Di...Embedding Existing Heterogeneous Monitoring Techniques into a Lightweight, Di...
Embedding Existing Heterogeneous Monitoring Techniques into a Lightweight, Di...yocaba
 
1.0 about software configuration management trainings
1.0   about software configuration management trainings1.0   about software configuration management trainings
1.0 about software configuration management trainingsSergii Shmarkatiuk
 
Tool support for semi-automatic modularization of existing code bases
Tool support for semi-automatic modularization of existing code basesTool support for semi-automatic modularization of existing code bases
Tool support for semi-automatic modularization of existing code basesyocaba
 
分会场九Altiris终端管理套件和服务器管理套件现在及远景
分会场九Altiris终端管理套件和服务器管理套件现在及远景分会场九Altiris终端管理套件和服务器管理套件现在及远景
分会场九Altiris终端管理套件和服务器管理套件现在及远景ITband
 
PL/SQL Development
PL/SQL DevelopmentPL/SQL Development
PL/SQL DevelopmentThanh Nguyen
 
Nero digitalpluginadobepremiere eng
Nero digitalpluginadobepremiere engNero digitalpluginadobepremiere eng
Nero digitalpluginadobepremiere engGayathri Govindan
 
Reliability Growth Planning: Its Concept, Applications, and Challenges
Reliability Growth Planning: Its Concept, Applications, and Challenges Reliability Growth Planning: Its Concept, Applications, and Challenges
Reliability Growth Planning: Its Concept, Applications, and Challenges ASQ Reliability Division
 
E-GEN/WS
E-GEN/WSE-GEN/WS
E-GEN/WSteddi22
 
Enterprise Source and Release Management Using StratoSource
Enterprise Source and Release Management Using StratoSourceEnterprise Source and Release Management Using StratoSource
Enterprise Source and Release Management Using StratoSourceSalesforce Developers
 
Auto-Scaling to Minimize Cost and Meet Application Deadlines in Cloud Workflows
Auto-Scaling to Minimize Cost and Meet Application Deadlines in Cloud WorkflowsAuto-Scaling to Minimize Cost and Meet Application Deadlines in Cloud Workflows
Auto-Scaling to Minimize Cost and Meet Application Deadlines in Cloud Workflowsmingtemp
 

What's hot (16)

Estimating Packaged Software - The first part of a framework
Estimating Packaged Software - The first part of a frameworkEstimating Packaged Software - The first part of a framework
Estimating Packaged Software - The first part of a framework
 
White Paper: Configuration and Build Management of Product Line Development w...
White Paper: Configuration and Build Management of Product Line Development w...White Paper: Configuration and Build Management of Product Line Development w...
White Paper: Configuration and Build Management of Product Line Development w...
 
04 - Agile Software Configuration Management
04 - Agile Software Configuration Management04 - Agile Software Configuration Management
04 - Agile Software Configuration Management
 
Aniketos effects plus_6sep_2012-v04
Aniketos effects plus_6sep_2012-v04Aniketos effects plus_6sep_2012-v04
Aniketos effects plus_6sep_2012-v04
 
Embedding Existing Heterogeneous Monitoring Techniques into a Lightweight, Di...
Embedding Existing Heterogeneous Monitoring Techniques into a Lightweight, Di...Embedding Existing Heterogeneous Monitoring Techniques into a Lightweight, Di...
Embedding Existing Heterogeneous Monitoring Techniques into a Lightweight, Di...
 
1.0 about software configuration management trainings
1.0   about software configuration management trainings1.0   about software configuration management trainings
1.0 about software configuration management trainings
 
Tool support for semi-automatic modularization of existing code bases
Tool support for semi-automatic modularization of existing code basesTool support for semi-automatic modularization of existing code bases
Tool support for semi-automatic modularization of existing code bases
 
分会场九Altiris终端管理套件和服务器管理套件现在及远景
分会场九Altiris终端管理套件和服务器管理套件现在及远景分会场九Altiris终端管理套件和服务器管理套件现在及远景
分会场九Altiris终端管理套件和服务器管理套件现在及远景
 
PL/SQL Development
PL/SQL DevelopmentPL/SQL Development
PL/SQL Development
 
Nero digitalpluginadobepremiere eng
Nero digitalpluginadobepremiere engNero digitalpluginadobepremiere eng
Nero digitalpluginadobepremiere eng
 
Reliability Growth Planning: Its Concept, Applications, and Challenges
Reliability Growth Planning: Its Concept, Applications, and Challenges Reliability Growth Planning: Its Concept, Applications, and Challenges
Reliability Growth Planning: Its Concept, Applications, and Challenges
 
E-GEN/WS
E-GEN/WSE-GEN/WS
E-GEN/WS
 
What’s new System Center 2012 SP1, VMM
What’s new System Center 2012 SP1, VMMWhat’s new System Center 2012 SP1, VMM
What’s new System Center 2012 SP1, VMM
 
Enterprise Source and Release Management Using StratoSource
Enterprise Source and Release Management Using StratoSourceEnterprise Source and Release Management Using StratoSource
Enterprise Source and Release Management Using StratoSource
 
Unit 08: Security for Web Applications
Unit 08: Security for Web ApplicationsUnit 08: Security for Web Applications
Unit 08: Security for Web Applications
 
Auto-Scaling to Minimize Cost and Meet Application Deadlines in Cloud Workflows
Auto-Scaling to Minimize Cost and Meet Application Deadlines in Cloud WorkflowsAuto-Scaling to Minimize Cost and Meet Application Deadlines in Cloud Workflows
Auto-Scaling to Minimize Cost and Meet Application Deadlines in Cloud Workflows
 

Viewers also liked

Como Se Reproduce 1 Virus
Como Se Reproduce 1 VirusComo Se Reproduce 1 Virus
Como Se Reproduce 1 Viruspillaliebres
 
Finding Quality HIV/AIDS Information
Finding Quality HIV/AIDS InformationFinding Quality HIV/AIDS Information
Finding Quality HIV/AIDS InformationCarolPerryman
 
7th Grade Chapter 4 Lesson 1
7th Grade Chapter 4 Lesson 17th Grade Chapter 4 Lesson 1
7th Grade Chapter 4 Lesson 1MRS.KDUNCAN
 
8th Grade Chapter 4 Lesson 1
8th Grade Chapter 4 Lesson 18th Grade Chapter 4 Lesson 1
8th Grade Chapter 4 Lesson 1MRS.KDUNCAN
 

Viewers also liked (7)

Como Se Reproduce 1 Virus
Como Se Reproduce 1 VirusComo Se Reproduce 1 Virus
Como Se Reproduce 1 Virus
 
Finding Quality HIV/AIDS Information
Finding Quality HIV/AIDS InformationFinding Quality HIV/AIDS Information
Finding Quality HIV/AIDS Information
 
Tipos
TiposTipos
Tipos
 
Contexto1
Contexto1Contexto1
Contexto1
 
Democracia
DemocraciaDemocracia
Democracia
 
7th Grade Chapter 4 Lesson 1
7th Grade Chapter 4 Lesson 17th Grade Chapter 4 Lesson 1
7th Grade Chapter 4 Lesson 1
 
8th Grade Chapter 4 Lesson 1
8th Grade Chapter 4 Lesson 18th Grade Chapter 4 Lesson 1
8th Grade Chapter 4 Lesson 1
 

Similar to Frameworkevolution ohne Nebenwirkung - Automatische Adaption von Clients und Dokumentation

Eclipse Summit 2008 - Thales - SolFa
Eclipse Summit 2008 - Thales - SolFaEclipse Summit 2008 - Thales - SolFa
Eclipse Summit 2008 - Thales - SolFaBENOIT_LANGLOIS
 
Smooth transition to Eclipse in practice
Smooth transition to Eclipse in practiceSmooth transition to Eclipse in practice
Smooth transition to Eclipse in practiceguest301ea
 
GEF 5.0.0 - From a User's Perspective
GEF 5.0.0 - From a User's PerspectiveGEF 5.0.0 - From a User's Perspective
GEF 5.0.0 - From a User's PerspectiveAlexander Nyßen
 
VCOC BonFIRE presentation at FIRE Engineering Workshop 2012
VCOC BonFIRE presentation at FIRE Engineering Workshop 2012VCOC BonFIRE presentation at FIRE Engineering Workshop 2012
VCOC BonFIRE presentation at FIRE Engineering Workshop 2012Andrés Gómez
 
DSDP Device Debugging Project Update - Eclipse Con 2009
DSDP Device Debugging Project Update - Eclipse Con 2009DSDP Device Debugging Project Update - Eclipse Con 2009
DSDP Device Debugging Project Update - Eclipse Con 2009PawelP
 
ZENworks Configuration Management
ZENworks Configuration ManagementZENworks Configuration Management
ZENworks Configuration ManagementRoel van Bueren
 
AI For Software Engineering: Two Industrial Experience Reports
AI For Software Engineering: Two Industrial Experience ReportsAI For Software Engineering: Two Industrial Experience Reports
AI For Software Engineering: Two Industrial Experience ReportsUniversity of Antwerp
 
Kakadu Software High Quality JPEG2000 Software Enhanced Server Platform
Kakadu Software High Quality JPEG2000 Software Enhanced Server PlatformKakadu Software High Quality JPEG2000 Software Enhanced Server Platform
Kakadu Software High Quality JPEG2000 Software Enhanced Server Platformxband
 
PHP Development Tools 2.0 - Success Story
PHP Development Tools 2.0 - Success StoryPHP Development Tools 2.0 - Success Story
PHP Development Tools 2.0 - Success StoryMichael Spector
 
J2 Detailed Design And Analysis
J2 Detailed Design And AnalysisJ2 Detailed Design And Analysis
J2 Detailed Design And Analysisj2aircraft
 
SynapseIndia mobile apps deployment framework architecture
SynapseIndia mobile apps deployment framework architectureSynapseIndia mobile apps deployment framework architecture
SynapseIndia mobile apps deployment framework architectureSynapseindiappsdevelopment
 
What's New for Presentation in Visual Studio 2008 SP1
What's New for Presentation in Visual Studio 2008 SP1What's New for Presentation in Visual Studio 2008 SP1
What's New for Presentation in Visual Studio 2008 SP1ukdpe
 
X plat dev - part ii publish
X plat dev - part ii publishX plat dev - part ii publish
X plat dev - part ii publishTekObserver
 
OSCC20 SceneGate, EchoVoice, and IMABox
OSCC20 SceneGate, EchoVoice, and IMABox OSCC20 SceneGate, EchoVoice, and IMABox
OSCC20 SceneGate, EchoVoice, and IMABox Lisa Laxton
 
Building Server-Side Eclipse based web applications
Building Server-Side Eclipse based web applicationsBuilding Server-Side Eclipse based web applications
Building Server-Side Eclipse based web applicationsGunnar Wagenknecht
 
SOA OSB suite cluster installation
SOA OSB suite cluster installationSOA OSB suite cluster installation
SOA OSB suite cluster installationRakesh Gujjarlapudi
 
What's New in Plug-in Development (Galileo)
What's New in Plug-in Development (Galileo)What's New in Plug-in Development (Galileo)
What's New in Plug-in Development (Galileo)Chris Aniszczyk
 
Illia shestakov - The Future of Java JDK #9
Illia shestakov - The Future of Java JDK #9Illia shestakov - The Future of Java JDK #9
Illia shestakov - The Future of Java JDK #9Anna Shymchenko
 

Similar to Frameworkevolution ohne Nebenwirkung - Automatische Adaption von Clients und Dokumentation (20)

Eclipse Summit 2008 - Thales - SolFa
Eclipse Summit 2008 - Thales - SolFaEclipse Summit 2008 - Thales - SolFa
Eclipse Summit 2008 - Thales - SolFa
 
Smooth transition to Eclipse in practice
Smooth transition to Eclipse in practiceSmooth transition to Eclipse in practice
Smooth transition to Eclipse in practice
 
GEF 5.0.0 - From a User's Perspective
GEF 5.0.0 - From a User's PerspectiveGEF 5.0.0 - From a User's Perspective
GEF 5.0.0 - From a User's Perspective
 
VCOC BonFIRE presentation at FIRE Engineering Workshop 2012
VCOC BonFIRE presentation at FIRE Engineering Workshop 2012VCOC BonFIRE presentation at FIRE Engineering Workshop 2012
VCOC BonFIRE presentation at FIRE Engineering Workshop 2012
 
DSDP Device Debugging Project Update - Eclipse Con 2009
DSDP Device Debugging Project Update - Eclipse Con 2009DSDP Device Debugging Project Update - Eclipse Con 2009
DSDP Device Debugging Project Update - Eclipse Con 2009
 
ZENworks Configuration Management
ZENworks Configuration ManagementZENworks Configuration Management
ZENworks Configuration Management
 
AI For Software Engineering: Two Industrial Experience Reports
AI For Software Engineering: Two Industrial Experience ReportsAI For Software Engineering: Two Industrial Experience Reports
AI For Software Engineering: Two Industrial Experience Reports
 
Kakadu Software High Quality JPEG2000 Software Enhanced Server Platform
Kakadu Software High Quality JPEG2000 Software Enhanced Server PlatformKakadu Software High Quality JPEG2000 Software Enhanced Server Platform
Kakadu Software High Quality JPEG2000 Software Enhanced Server Platform
 
PHP Development Tools 2.0 - Success Story
PHP Development Tools 2.0 - Success StoryPHP Development Tools 2.0 - Success Story
PHP Development Tools 2.0 - Success Story
 
J2 Detailed Design And Analysis
J2 Detailed Design And AnalysisJ2 Detailed Design And Analysis
J2 Detailed Design And Analysis
 
SynapseIndia mobile apps deployment framework architecture
SynapseIndia mobile apps deployment framework architectureSynapseIndia mobile apps deployment framework architecture
SynapseIndia mobile apps deployment framework architecture
 
What's New for Presentation in Visual Studio 2008 SP1
What's New for Presentation in Visual Studio 2008 SP1What's New for Presentation in Visual Studio 2008 SP1
What's New for Presentation in Visual Studio 2008 SP1
 
X plat dev - part ii publish
X plat dev - part ii publishX plat dev - part ii publish
X plat dev - part ii publish
 
OSCC20 SceneGate, EchoVoice, and IMABox
OSCC20 SceneGate, EchoVoice, and IMABox OSCC20 SceneGate, EchoVoice, and IMABox
OSCC20 SceneGate, EchoVoice, and IMABox
 
Building Server-Side Eclipse based web applications
Building Server-Side Eclipse based web applicationsBuilding Server-Side Eclipse based web applications
Building Server-Side Eclipse based web applications
 
EDI
EDIEDI
EDI
 
SOA OSB suite cluster installation
SOA OSB suite cluster installationSOA OSB suite cluster installation
SOA OSB suite cluster installation
 
What's New in Plug-in Development (Galileo)
What's New in Plug-in Development (Galileo)What's New in Plug-in Development (Galileo)
What's New in Plug-in Development (Galileo)
 
Illia shestakov - The Future of Java JDK #9
Illia shestakov - The Future of Java JDK #9Illia shestakov - The Future of Java JDK #9
Illia shestakov - The Future of Java JDK #9
 
Cast vs sonar
Cast vs sonarCast vs sonar
Cast vs sonar
 

More from SoftwareSaxony

Anleitung zum Handeln: Wissensmanagement im Enterprise 2.0
Anleitung zum Handeln: Wissensmanagement im Enterprise 2.0Anleitung zum Handeln: Wissensmanagement im Enterprise 2.0
Anleitung zum Handeln: Wissensmanagement im Enterprise 2.0SoftwareSaxony
 
Die Entdeckung des Menschen: Wissensmanagement im Enterprise 2.0
Die Entdeckung des Menschen: Wissensmanagement im Enterprise 2.0Die Entdeckung des Menschen: Wissensmanagement im Enterprise 2.0
Die Entdeckung des Menschen: Wissensmanagement im Enterprise 2.0SoftwareSaxony
 
Der Wikipedia Irrtum: Wissensmanagement im Enterprise 2.0
Der Wikipedia Irrtum: Wissensmanagement im Enterprise 2.0Der Wikipedia Irrtum: Wissensmanagement im Enterprise 2.0
Der Wikipedia Irrtum: Wissensmanagement im Enterprise 2.0SoftwareSaxony
 
Landesservicestelle Schule-Wirtschaft in Sachsen
Landesservicestelle Schule-Wirtschaft in SachsenLandesservicestelle Schule-Wirtschaft in Sachsen
Landesservicestelle Schule-Wirtschaft in SachsenSoftwareSaxony
 
Berufliches Gymnasium für Informations- und Kommuniktionstechnologie am BSZ F...
Berufliches Gymnasium für Informations- und Kommuniktionstechnologie am BSZ F...Berufliches Gymnasium für Informations- und Kommuniktionstechnologie am BSZ F...
Berufliches Gymnasium für Informations- und Kommuniktionstechnologie am BSZ F...SoftwareSaxony
 
Berufliches Schulungszentrum Freital
Berufliches Schulungszentrum FreitalBerufliches Schulungszentrum Freital
Berufliches Schulungszentrum FreitalSoftwareSaxony
 
Vortrag Prof. Friedrich zur AG Personal von Software Saxony
Vortrag Prof. Friedrich zur AG Personal von Software SaxonyVortrag Prof. Friedrich zur AG Personal von Software Saxony
Vortrag Prof. Friedrich zur AG Personal von Software SaxonySoftwareSaxony
 
Fachhochschule der Wirtschaft
Fachhochschule der WirtschaftFachhochschule der Wirtschaft
Fachhochschule der WirtschaftSoftwareSaxony
 
Schülerrechenzentrum Dresden
Schülerrechenzentrum DresdenSchülerrechenzentrum Dresden
Schülerrechenzentrum DresdenSoftwareSaxony
 
Vom Web2.0 zum Unternehmen2.0
Vom Web2.0 zum Unternehmen2.0Vom Web2.0 zum Unternehmen2.0
Vom Web2.0 zum Unternehmen2.0SoftwareSaxony
 
Tutorialgenerator DEPTH
Tutorialgenerator DEPTHTutorialgenerator DEPTH
Tutorialgenerator DEPTHSoftwareSaxony
 

More from SoftwareSaxony (14)

Anleitung zum Handeln: Wissensmanagement im Enterprise 2.0
Anleitung zum Handeln: Wissensmanagement im Enterprise 2.0Anleitung zum Handeln: Wissensmanagement im Enterprise 2.0
Anleitung zum Handeln: Wissensmanagement im Enterprise 2.0
 
Die Entdeckung des Menschen: Wissensmanagement im Enterprise 2.0
Die Entdeckung des Menschen: Wissensmanagement im Enterprise 2.0Die Entdeckung des Menschen: Wissensmanagement im Enterprise 2.0
Die Entdeckung des Menschen: Wissensmanagement im Enterprise 2.0
 
Der Wikipedia Irrtum: Wissensmanagement im Enterprise 2.0
Der Wikipedia Irrtum: Wissensmanagement im Enterprise 2.0Der Wikipedia Irrtum: Wissensmanagement im Enterprise 2.0
Der Wikipedia Irrtum: Wissensmanagement im Enterprise 2.0
 
Landesservicestelle Schule-Wirtschaft in Sachsen
Landesservicestelle Schule-Wirtschaft in SachsenLandesservicestelle Schule-Wirtschaft in Sachsen
Landesservicestelle Schule-Wirtschaft in Sachsen
 
Berufliches Gymnasium für Informations- und Kommuniktionstechnologie am BSZ F...
Berufliches Gymnasium für Informations- und Kommuniktionstechnologie am BSZ F...Berufliches Gymnasium für Informations- und Kommuniktionstechnologie am BSZ F...
Berufliches Gymnasium für Informations- und Kommuniktionstechnologie am BSZ F...
 
Berufliches Schulungszentrum Freital
Berufliches Schulungszentrum FreitalBerufliches Schulungszentrum Freital
Berufliches Schulungszentrum Freital
 
Vortrag Prof. Friedrich zur AG Personal von Software Saxony
Vortrag Prof. Friedrich zur AG Personal von Software SaxonyVortrag Prof. Friedrich zur AG Personal von Software Saxony
Vortrag Prof. Friedrich zur AG Personal von Software Saxony
 
Enterprise20
Enterprise20Enterprise20
Enterprise20
 
InterfaceProjects
InterfaceProjectsInterfaceProjects
InterfaceProjects
 
Fachhochschule der Wirtschaft
Fachhochschule der WirtschaftFachhochschule der Wirtschaft
Fachhochschule der Wirtschaft
 
Schülerrechenzentrum Dresden
Schülerrechenzentrum DresdenSchülerrechenzentrum Dresden
Schülerrechenzentrum Dresden
 
Vom Web2.0 zum Unternehmen2.0
Vom Web2.0 zum Unternehmen2.0Vom Web2.0 zum Unternehmen2.0
Vom Web2.0 zum Unternehmen2.0
 
Business over IP
Business over IPBusiness over IP
Business over IP
 
Tutorialgenerator DEPTH
Tutorialgenerator DEPTHTutorialgenerator DEPTH
Tutorialgenerator DEPTH
 

Recently uploaded

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdfChristopherTHyatt
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 

Recently uploaded (20)

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 

Frameworkevolution ohne Nebenwirkung - Automatische Adaption von Clients und Dokumentation

  • 1. Frameworkevolution ohne Nebenwirkungen - Automatische Adaption von Clients und Dokumentation Katharina Somieski Innovationsforum, 28.11.2007, Dresden
  • 2. Projekt „B2-PDE“ • Beteiligte: – Technische Universität Dresden (Lehrstuhl Softwaretechnologie) – Comarch Software AG (Dresden) • FuE-Verbundprojekt gefördert von der SAB • Projektrahmen: ERP-System „B2“ – Praktische Probleme bei neuen Versionen des B2-Frameworks : • Plugin-Anpassung • Tutorial-Anpassung Innovationsforum, 28.11.2007 Ilie Şavga Slide 2 of 16
  • 3. Software Technology Group, Department of Computer Science, Technische Universität Dresden Changed-Based Support for Binary Compatibility in Evolving Frameworks M.Sc. Ilie Şavga (B2-PDE Team) Innovation Forum, 28.11.2007, Dresden
  • 4. Software Frameworks Framework Version 1 A software framework is a software component that embodies a skeleton solution for a family of related software products and is instantiated Customer by modules containing custom code (plugins). getName() getDiscount() Johnson and Foote 1998 customer.getDiscount(); Plugin Version 1 Innovationsforum, 28.11.2007 Ilie Şavga Slide 4 of 16
  • 5. Framework Change Breaking a Plugin Framework Version 1 Framework Version 2 Customer getName() ExtractSubclass Customer getName() VipCustomer getDiscount() getDiscount() customer.getDiscount(); Plugin Version 1 Innovationsforum, 28.11.2007 Ilie Şavga Slide 5 of 16
  • 6. Motivation and Goal We want to automatically preserve binary compatibility of framework and its plugins—the latter must link and run with new framework releases without recompiling. Forman et al., 1995 Using change history automatically retain binary compatibility to reduce the costs and improve the quality of framework upgrade. Innovationsforum, 28.11.2007 Ilie Şavga Slide 6 of 16
  • 7. Change-Driven Adaptation ExtractSubclass Framework Version 2 Customer generate generate getName() Adapter (wrapper) design pattern GoF 1995; VipCustomer delegate getDiscount() delegate Customer getName() getDiscount() Adapter Version 1-to-2 customer.getDiscount(); Plugin Version 1 Innovationsforum, 28.11.2007 Ilie Şavga Slide 7 of 16
  • 8. Adaptation Layer for Binary Compatibility Change Change Specification Specification input F2 Generator Generator generate AL1 delegate P1 P2 time Innovationsforum, 28.11.2007 Ilie Şavga Slide 8 of 16
  • 9. Adaptation Layers for Binary Compatibility Change Change Specification Specification input F3 Generator Generator generate generate AL1 AL2 delegate delegate P1 P2 P3 time Innovationsforum, 28.11.2007 Ilie Şavga Slide 9 of 16
  • 10. Two Adaptation Tools of B2-PDE • Differ in how the change information is specified ADE: B2-PDE change mapping effectiveness Development ComeBack!: refactoring-based automation Innovationsforum, 28.11.2007 Ilie Şavga Slide 10 of 16
  • 11. Framework Refactoring Breaking a Plugin Framework Version 1 Framework Version 2 Customer getName() ExtractSubclass Customer getName() VipCustomer getDiscount() getDiscount() Refactoring is a behavior-preserving source transformation. Opdyke 1992; Roberts 1999; Fowler 1999 customer.getDiscount(); Refactoring operations comprise >80% of application-breaking API changes. Plugin Version 1 Dig and Johnson 2005 Innovationsforum, 28.11.2007 Ilie Şavga Slide 11 of 16
  • 12. The ComeBack! Tool Framework Framework Binaries Binaries parsing ComeBack! Framework Framework Fact Base Fact Base Prolog Comeback Refactoring Prolog Comeback Refactoring Engine Library History Engine Library History Adapter Adapter Fact Base Fact Base pretty printing Adapter Adapter Layer Layer ComeBack! homepage: http://comeback.sf.net Innovationsforum, 28.11.2007 Ilie Şavga Slide 12 of 16
  • 13. Refactoring-Based Adaptation Refactoring Refactoring input History History F3 Generator Generator generate generate AL1 AL2 delegate delegate P1 P2 P3 time Innovationsforum, 28.11.2007 Ilie Şavga Slide 13 of 16
  • 14. ADE: Adapter Development Environment F1 F3 input input Heuristic Engine Heuristic Engine output amend and complete Change Change Mapping Mapping developers developers Innovationsforum, 28.11.2007 Ilie Şavga Slide 14 of 16
  • 15. Change-Based Adaptation in ADE Change Change input Mapping Mapping F3 Generator Generator generate generate AL1 AL2 delegate delegate P1 P2 P3 time Innovationsforum, 28.11.2007 Ilie Şavga Slide 15 of 16
  • 16. Adaptation in B2-PDE: Benefits • Framework developers • no update patches • empowered framework maintenance • Third-party companies • no manual plugin adaptation • End Users • „silent“ plugin adaptation For all Treated as a specification, change history fosters the automatic preservation of binary compatibility reducing the costs and increasing the quality of framework upgrade. Innovationsforum, 28.11.2007 Ilie Şavga Slide 16 of 16
  • 18. References R. Johnson and B. Foote. Designing reusable classes. Journal of Object-Oriented Programming, 1(2):22–35, June 1988. W. F. Opdyke. Refactoring Object-Oriented Frameworks. PhD thesis, Urbana-Champaign, IL, USA, 1992. D. B. Roberts. Practical analysis for refactoring. PhD thesis, University of Illinois at Urbana-Champaign, Urbana, Illinois, 1999. M. Fowler. Refactoring: Improving the Design of Existing Code. Addison-Wesley, 1999. D. Dig and R. Johnson. The role of refactorings in API evolution. In ICSM ’05: Proceedings of the 21st IEEE International Conference on Software Maintenance (ICSM’05), pages 389–398, Washington, DC, USA, 2005. IEEE Computer Society. GoF: E. Gamma, R. Helm, R. Johnson, and J. Vlisside. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, Reading, Massachusetts, 1995. S. Becker, A. Brogi, I. Gorton, S. Overhage, A. Romanovsky, and M. Tivoli. Towards an engineering approach to component adaptation. In R. H. Reussner, J. A. Stafford, and C. A. Szyperski, editors, Architecting Systems with Trustworthy Components, volume 3938 of Lecture Notes in Computer Science, pages 193–215. Springer, 2004. J. A. Stafford, and C. A. Szyperski, editors, Architecting Systems with Trustworthy Components, volume 3938 of Lecture Notes in Computer Science, pages 193–215. Springer, 2004. CORBA homepage. http://www.corba.org Microsoft COM homepage. http://www.microsoft.com/Com/default.mspx. J. Camara, C. Canal, J. Cubo, and J. Murillo. An aspectoriented adaptation framework for dynamic component evolution. In 3rd ECOOP Workshop on Reflection, AOP and Meta-Data for Software Evolution, pages 59–71, 2006. I. R. Forman, M. H. Conner, S. H. Danforth, and L. K. Raper. Release-to-release binary compatibility in SOM. In OOPSLA ’95: Proceedings of the tenth annual conference on Objectoriented programming systems, languages, and applications, pages 426–438, New York, NY, USA, 1995. ACM Press. S. Malabarba, R. Pandey, J. Gragg, E. Barr, and J. F. Barnes. Runtime support for type-safe dynamic java classes. In ECOOP ’00: Proceedings of the 14th European Conference on Object-Oriented Programming, pages 337–361, London, UK, 2000. Springer-Verlag. I.Balaban, F. Tip, and R. Fuhrer. Refactoring support for class library migration. In OOPSLA ’05: Proceedings of the 20th annual ACM SIGPLAN conference on Object oriented programming, systems, languages, and applications, pages 265–279, New York, NY, USA, 2005. ACM Press. K. Chow and D. Notkin. Semi-automatic update of applications in response to library changes. In ICSM ’96: Proceedings of the 1996 International Conference on Software Maintenance, page 359, Washington, DC, USA, 1996. IEEE Computer Society. J. Henkel and A. Diwan. Catchup!: capturing and replaying refactorings to support API evolution. In ICSE ’05: Proceedings of the 27th international conference on Software engineering, pages 274–283, New York, NY, USA, 2005. ACM Press. R. Keller and U. Hoelzle. Binary component adaptation. Lecture Notes in Computer Science, 1445:307–318, 1998. S. Roock and A. Havenstein. Refactoring tags for automatic refactoring of framework dependent applications. In XP’02: Proceedings of Extreme Programming Conference, pages 182–185, 2002. Innovationsforum, 28.11.2007 Ilie Şavga Slide 18 of 16
  • 19. Comebacks A comeback is a refactoring transforming adapters to compensate for a framework refactoring. Refactoring Comeback AddClass(class,superclass, subclasses) CbAddClass(class,superclass,subclasses): – RemoveClass (class) PushDownMethod CbPushDownMethod (class,subclass,method) (class,subclass,method): – AddMethod(class,Method(subclass,method)) – RemoveMethod(subclass,method) ExtractSubclass CbExtractSubclass (class,subclass,methods) (class,subclass,methods): – forall m in methods: CbPushDownMethod(class,subclass,m) – CbAddClass(subclass,class,Subclasses(class)) Innovationsforum, 28.11.2007 Ilie Şavga Slide 19 of 16
  • 20. Related Work Prevention Facilitation Use of a legacy middleware or a Distribute changes: change info (as specific communication protocol annotations or separate to connect a framework and its specifications) + adaptation rules. plugins. Pros: potentially unlimited Pros: transparent client adaptation, power. in some cases without recompilation. Cons: middleware-dependent Cons: cumbersome manual framework development. specifications; invasion by adapter code requires source availability and recompilation. CORBA; COM; Forman et al., 1995; Malabarba et al., 2000; Balaban et al., 2005; Chow and Notkin 1996; Henkel and Diwan 2005; Camara et al. 2006; Keller and Hölze 1998; Roock and Havenstein 2002; Innovationsforum, 28.11.2007 Ilie Şavga Slide 20 of 16
  • 21. Setting the Context Refactoring Note: we consider the addition of functionality also a refactoring Pure Deletion is not allowed Frameworks API well defined Black- and white-box Callbacks No generic types in the API No public fields in the API Reflection and serialization used in a adaptive-aware disciplined way Controlled (expressed by refactoring) split/merge of types Innovationsforum, 28.11.2007 Ilie Şavga Slide 21 of 16
  • 22. Beyond Refactorings Adaptable signature-level component mismatches, no protocol or semantic adaptation. Becker et al. 2004 Intended behavior-modifying framework changes: • Visible: to be tested – Testing adapters • Unvisible: to be adapted – Updating change specification Dig et al. 2007; MolhadoRef Innovationsforum, 28.11.2007 Ilie Şavga Slide 22 of 16
  • 23. Other Related Issues • Refactoring acquisition – Manual: annotations, + version control systems Chow and Notkin 1996; Wemmie 2006 – Semi-automatic: metrics-based heuristics, vector space information retrieval, relating CVS to transactions, origin analysis, clone detection Demeyer et al. 2000; Antoniol et al. 2004; Gorg and Weisgerber 2005; Zou and Godfrey 2003; Rysselberghe and Demeyer 2003 • combination of syntactic (signature-based, shingles) and semantic (clone detection, reference graphs) analysis Weissgerber and Diehl 2006; Dig et al. 2006 – Automatic: Eclipse and JBuilder • Refactoring representation – Refactoring-aware SCM system Dig et al. 2007; MolhadoRef • Refactoring and metrics – Predictive and retrospective – Process-oriented frameworks Mens and Demeyer 2001; Cimon et al. 2000; Tahvildari et al. 2003 • Refactoring-driven testing Bannwart and Müller 2006 Innovationsforum, 28.11.2007 Ilie Şavga Slide 23 of 16
  • 24. Tecnical Issues • Linkage problems – Currently by reflection – In the future: by strong names • Wrapping/Unwrapping types – Imply adaptation-requires dedicated methods – The performance pentalties to estimate Innovationsforum, 28.11.2007 Ilie Şavga Slide 24 of 16
  • 25. References S. Demeyer, S. Ducasse, and O. Nierstrasz. Finding refactorings via change metrics. In OOPSLA ’00: Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, pages 166–177, New York, NY, USA, 2000. ACM Press. G. Antoniol, M. D. Penta, and E. Merlo. An automatic approach to identify class evolution discontinuities. In IWPSE ’04: Proceedings of the Principles of Software Evolution, 7th International Workshop on (IWPSE’04), pages 31–40, Washington, DC, USA, 2004. IEEE Computer Society. C. Gorg and P. Weisgerber. Detecting and visualizing refactorings from software archives. In IWPC ’05: Proceedings of the 13th International Workshop on Program Comprehension, pages 205–214, Washington, DC, USA, 2005. IEEE Computer Society. L. Zou and M.W. Godfrey. Detecting merging and splitting using origin analysis. In WCRE ’03: Proceedings of the 10th Working Conference on Reverse Engineering, page 146, Washington, DC, USA, 2003. IEEE Computer Society. F. V. Rysselberghe and S. Demeyer. Reconstruction of successful software evolution using clone detection. In IWPSE ’03: Proceedings of the 6th International Workshop on Principles of Software Evolution, page 126, Washington, DC, USA, 2003. IEEE Computer Society. P. Weissgerber and S. Diehl. Identifying refactorings from source-code changes. In ASE ’06: Proceedings of the 21st IEEE International Conference on Automated Software Engineering (ASE’06), pages 231–240, Washington, DC, USA, 2006. IEEE Computer Society. D. Dig, C. Comertoglu, D. Marinov, and R. Johnson. Automated detection of refactorings in evolving components. In D. Thomas, editor, ECOOP, volume 4067 of Lecture Notes in Computer Science, pages 404–428. Springer, 2006. D. Dig, K. Manzoor, R. Johnson, and T. N. Nguyen. Refactoring-aware configuration management for object-oriented programs. In ICSE, 2007. Molhadoref homepage. https://netfiles.uiuc.edu/dig/MolhadoRef. C. Bitter. Using Aspect-Oriented Techniques for Adaptation. Master Thesis, TU Dresden, 2007. T. Mens and S. Demeyer. Evolution metrics. In Proc. Int. Workshop on Principles of Software Evolution, 2001. L. Tahvildari, K. Kontogiannis, and J. Mylopoulos. Quality-driven software reengineering. Journal of System Software, 66(3):225–239, 2003. F. Bannwart and P. Müller. Changing programs correctly: Refactoring with specifications. In J. Misra, T. Nipkow, and E. Sekerinski, editors, FM, volume 4085 of Lecture Notes in Computer Science, pages 492–507. Springer, 2006. T. Mens, N. V. Eetvelde, S. Demeyer, and D. Janssens. Formalizing refactorings with graph transformations: Research articles. Journal of Software Maintenance and Evolution:Research and Practice, 17(4):247–276, 2005. N.V.Eetvelde. A Graph Transformation Approach to Refactoring. University of Antwerp. PhD. Thesis, 2007. Innovationsforum, 28.11.2007 Ilie Şavga Slide 25 of 16