SlideShare uma empresa Scribd logo
1 de 449
Baixar para ler offline
Techniques for Automated Software
            Evolution
      PhD Dissertation by Raffi Khatchadourian
         Computer Science & Engineering
               Ohio State University

            Advisor: Neelam Soundarajan
 Committee: Atanas Rountev, Paul Sivilotti, Paul Evans




                           1
Biography

• Born in New York, NY and raised in Edison, NJ.
• First generation American.
 • Family immigrated from Sofia, Bulgaria.
• Graduated from Monmouth University in 2004 with a B.S. in Computer
  Science.
• Worked as:
 • A Software Engineer at State of New Jersey Office of Information
    Technology in Trenton, NJ.
  • A UNIX Systems Administrator for pharmaceutical website in Toms
    River, NJ.
• Entered PhD program at OSU in September, 2005.
• M.S. in Computer Science from OSU in March, 2010.
• Start as an RF (wireless) Systems Integration Engineer on the iPhone
  development team at Apple Inc. in Cupertino, CA on Monday (4/4/2011).
                                                                         2
Publication Highlights
•   Raffi Khatchadourian, Phil Greenwood, Awais Rashid, and Guoqing Xu.
    Pointcut rejuvenation: Recovering pointcut expressions in evolving
    aspect-oriented software. IEEE Transactions on Software Engineering,
    99(PrePrints), 2011. ISSN 0098-5589.
•   Raffi Khatchadourian, Phil Greenwood, Awais Rashid, and Guoqing Xu.
    Pointcut rejuvenation: Recovering pointcut expressions in evolving
    aspect-oriented software. In Proceedings of the 24th International Conference
    on Automated Software Engineering (ASE ’09), pages 575–579, Auckland, New
    Zealand, November 2009. IEEE/ACM.
•   Raffi Khatchadourian, Johan Dovland, and Neelam Soundarajan. Enforcing
    behavioral constraints in evolving aspect-oriented programs. In
    Proceedings of the 7th International Workshop on Foundations of Aspect-
    Oriented Languages (FOAL ’08) at the 7th International Conference on Aspect-
    Oriented Software Development (AOSD ’08), pages 19–28, Brussels, Belgium, April
    2008. ACM.
•   Raffi Khatchadourian, Jason Sawin, and Atanas Rountev. Automated
    refactoring of legacy Java software to enumerated types. In Proceedings
    of the 23rd International Conference on Software Maintenance (ICSM ’07),
    pages 224–233, Paris, France, October 2007. IEEE.
•   Peer-reviewed totals (2005-): 1 paper to appear in a journal, 5 papers appearing in
    conference proceedings, and 5 papers appearing in workshop proceedings.           3
Activity Highlights

• Helped develop new Applied Software Engineering course ECE/CSE 668
  based on Challenge-X hybrid SUV automobile simulation at OSU CAR
  in 2006.
• Summer intern at Bell Labs under Rick Hull and Kedar Namjoshi
  (program language design for shared-experience, multimedia, multi-
  protocol, event-driven applications) in 2007.
• Visiting Graduate Research Associate with the Aspect-Oriented Software
  Engineering (AOSE) Group at the Computing Department of Lancaster
  University, UK under Awais Rashid in 2008.
• Visiting Researcher with the Programming Principles and Practices
  (PPP) Group at the Department of Graphics and Computer Science of the
  University of Tokyo under Hidehiko Masuhara in 2010.
• Proposed project mentor for Google Summer of Code (GSoC) in 2009
  and 2010. Project based on refactoring to enumerated types in Java.
• Organizing committee member (Web Chair) for the European
  Conference on Object-Oriented Programming (ECOOP).
                                                                        4
Award Highlights



• Japan Society for the Promotion of Science
 (JSPS) Summer Program Fellowship Recipient in
 2010.
• National Science Foundation (NSF) East Asia
 and Pacific Summer Institutes (EAPSI) Award
 Recipient in 2010.
• Ohio State University Department of Computer
 Science & Engineering Graduate Teaching Award
 Recipient in 2010.

                                                 5
Motivation




        6
Motivation




• Software changes over
  time:




                                  6
Motivation




• Software changes over
  time:

 • Requirements evolve




                                  6
Motivation




• Software changes over
  time:

 • Requirements evolve
 • New platforms emerge
    (e.g., mobile devices)




                                     6
Motivation




• Software changes over
  time:

 • Requirements evolve
 • New platforms emerge
    (e.g., mobile devices)

 • Frameworks change
    (e.g., XML vs.
    annotation-based)


                                     6
Motivation




        7
Motivation



Changing and/or maintaining large, complex software
systems can be non-trivial:
      Tedious: May require changing many lines of
               code.
 Error-prone: Changes may be implemented
              incorrectly.
    Omission- May opportunities to produce better
      prone: code.


                                                      7
Motivation



Changing and/or maintaining large, complex software
systems can be non-trivial:
      Tedious: May require changing many lines of
               code.
 Error-prone: Changes may be implemented
              incorrectly.
    Omission- May opportunities to produce better
      prone: code.


                                                      7
Motivation


                                       Adding a
                                    parameter to a
Changing and/or maintaining large, complex software
systems can be non-trivial:            method
      Tedious: May require changing many lines of
               code.
 Error-prone: Changes may be implemented
              incorrectly.
    Omission- May opportunities to produce better
      prone: code.


                                                      7
Motivation



Changing and/or maintaining large, complex software
systems can be non-trivial:
      Tedious: May require changing many lines of
               code.
 Error-prone: Changes may be implemented
              incorrectly.
    Omission- May opportunities to produce better
      prone: code.


                                                      7
Motivation



      Removing a
Changing and/or maintaining large, complex software
systemsparameter may
method can be non-trivial:
  alter overloading to
        Tedious: May require changing many lines of
        overriding
                   code.
 Error-prone: Changes may be implemented
              incorrectly.
    Omission- May opportunities to produce better
      prone: code.


                                                      7
Motivation



Changing and/or maintaining large, complex software
systems can be non-trivial:
      Tedious: May require changing many lines of
               code.
 Error-prone: Changes may be implemented
              incorrectly.
    Omission- May opportunities to produce better
      prone: code.


                                                      7
Motivation



Changing and/or maintaining large, complex software
systems can be non-trivial:
     Tedious: May require changing many lines of
              code.
                                  HashTable vs.
 Error-prone: Changes may be implemented
              incorrectly.          HashMap

    Omission- May opportunities to produce better
      prone: code.


                                                      7
Motivation



Changing and/or maintaining large, complex software
systems can be non-trivial:
      Tedious: May require changing many lines of
               code.
 Error-prone: Changes may be implemented
              incorrectly.
    Omission- May opportunities to produce better
      prone: code.


                                                      7
Approach




      8
Approach




• Approaches made to
  provide mechanical
  assistance in evolution
  tasks.




                                  8
Approach




• Approaches made to
  provide mechanical
  assistance in evolution
  tasks.

• Typically in the form of
  plug-ins to IDEs.




                                   8
Approach




• Approaches made to
  provide mechanical
  assistance in evolution
  tasks.

• Typically in the form of
  plug-ins to IDEs.

• Ease the burden of
  software maintenance
  and evolution.



                                   8
Approach


                                  Restrict
                             workspace to only
• Approaches made to         displays elements
  provide mechanical          relevant to the
  assistance in evolution           task
  tasks.

• Typically in the form of
  plug-ins to IDEs.

• Ease the burden of
  software maintenance
  and evolution.



                                                 8
Approach


                                  Restrict
                             workspace to only
• Approaches made to         displays elements
  provide mechanical          relevant to the
  assistance in evolution           task
  tasks.

• Typically in the form of
  plug-ins to IDEs.
       Restructure
•code the burden of
  Ease while preserving
      semantics (i.e.,
  software maintenance
  and evolution.
        refactoring)

                                                 8
Thesis Outline




            9
Thesis Outline




• For my thesis, I have pursed three directions:




                                                      9
Thesis Outline




• For my thesis, I have pursed three directions:
 1. Mechanically alleviate burden of fragile pointcuts in
    Aspect-Oriented software.




                                                       9
Thesis Outline




• For my thesis, I have pursed three directions:
 1. Mechanically alleviate burden of fragile pointcuts in
    Aspect-Oriented software.
 2.Automatically refactor legacy Java software to
   language enumerated (enum) types.




                                                       9
Thesis Outline




• For my thesis, I have pursed three directions:
 1. Mechanically alleviate burden of fragile pointcuts in
    Aspect-Oriented software.
 2.Automatically refactor legacy Java software to
   language enumerated (enum) types.
 3.Robustly specify evolving Aspect-Oriented software
   components.


                                                       9
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution
Techniques for Automated Software Evolution

Mais conteúdo relacionado

Mais procurados

SADT & IDEF0 for Augmenting UML, Algile & Usability Engineering
SADT & IDEF0 for Augmenting UML, Algile & Usability EngineeringSADT & IDEF0 for Augmenting UML, Algile & Usability Engineering
SADT & IDEF0 for Augmenting UML, Algile & Usability EngineeringDavid Marca
 
Oop01 6
Oop01 6Oop01 6
Oop01 6schwaa
 
Jagannath Basu July 2016
Jagannath Basu July 2016Jagannath Basu July 2016
Jagannath Basu July 2016Jagannath Basu
 
Next-gen IDE v2 - OpenSlava 2013-10-11
Next-gen IDE v2 - OpenSlava 2013-10-11Next-gen IDE v2 - OpenSlava 2013-10-11
Next-gen IDE v2 - OpenSlava 2013-10-11Jorge Hidalgo
 
Primavera _ Rebecca King _ Mind the Gap - Strategies and tools to help bridge...
Primavera _ Rebecca King _ Mind the Gap - Strategies and tools to help bridge...Primavera _ Rebecca King _ Mind the Gap - Strategies and tools to help bridge...
Primavera _ Rebecca King _ Mind the Gap - Strategies and tools to help bridge...InSync2011
 
Catalyst college-presentation
Catalyst college-presentationCatalyst college-presentation
Catalyst college-presentationVinodh Kombissan
 

Mais procurados (14)

Yogesh_Kadam
Yogesh_KadamYogesh_Kadam
Yogesh_Kadam
 
SADT & IDEF0 for Augmenting UML, Algile & Usability Engineering
SADT & IDEF0 for Augmenting UML, Algile & Usability EngineeringSADT & IDEF0 for Augmenting UML, Algile & Usability Engineering
SADT & IDEF0 for Augmenting UML, Algile & Usability Engineering
 
Neeraj_Virmani_Resume
Neeraj_Virmani_ResumeNeeraj_Virmani_Resume
Neeraj_Virmani_Resume
 
DheepthiResume
DheepthiResumeDheepthiResume
DheepthiResume
 
Oop01 6
Oop01 6Oop01 6
Oop01 6
 
Jagannath Basu July 2016
Jagannath Basu July 2016Jagannath Basu July 2016
Jagannath Basu July 2016
 
Next-gen IDE v2 - OpenSlava 2013-10-11
Next-gen IDE v2 - OpenSlava 2013-10-11Next-gen IDE v2 - OpenSlava 2013-10-11
Next-gen IDE v2 - OpenSlava 2013-10-11
 
KumarjitSharma_28011985
KumarjitSharma_28011985KumarjitSharma_28011985
KumarjitSharma_28011985
 
Primavera _ Rebecca King _ Mind the Gap - Strategies and tools to help bridge...
Primavera _ Rebecca King _ Mind the Gap - Strategies and tools to help bridge...Primavera _ Rebecca King _ Mind the Gap - Strategies and tools to help bridge...
Primavera _ Rebecca King _ Mind the Gap - Strategies and tools to help bridge...
 
01 the big_idea
01 the big_idea01 the big_idea
01 the big_idea
 
Oop 1
Oop 1Oop 1
Oop 1
 
Oop 2
Oop 2Oop 2
Oop 2
 
Mannu_Kumar_CV
Mannu_Kumar_CVMannu_Kumar_CV
Mannu_Kumar_CV
 
Catalyst college-presentation
Catalyst college-presentationCatalyst college-presentation
Catalyst college-presentation
 

Destaque

Destaque (7)

Software Evolution
Software EvolutionSoftware Evolution
Software Evolution
 
Software evolution evangelisation
Software evolution evangelisationSoftware evolution evangelisation
Software evolution evangelisation
 
Software Evolution Introduction (EVO 2008)
Software Evolution Introduction (EVO 2008)Software Evolution Introduction (EVO 2008)
Software Evolution Introduction (EVO 2008)
 
Software evolution -- Good practices
Software evolution -- Good practicesSoftware evolution -- Good practices
Software evolution -- Good practices
 
Software Evolution
Software EvolutionSoftware Evolution
Software Evolution
 
Ch9 evolution
Ch9 evolutionCh9 evolution
Ch9 evolution
 
Software Evolution
Software EvolutionSoftware Evolution
Software Evolution
 

Semelhante a Techniques for Automated Software Evolution

Software development philosophies v1
Software development philosophies v1Software development philosophies v1
Software development philosophies v1Praveen Nair
 
01 fse software&sw-engineering
01 fse software&sw-engineering01 fse software&sw-engineering
01 fse software&sw-engineeringMohesh Chandran
 
Twelve Factor - Designing for Change
Twelve Factor - Designing for ChangeTwelve Factor - Designing for Change
Twelve Factor - Designing for ChangeEric Wyles
 
Pointcut Rejuvenation: Recovering Pointcut Expressions in Evolving Aspect-Ori...
Pointcut Rejuvenation: Recovering Pointcut Expressions in Evolving Aspect-Ori...Pointcut Rejuvenation: Recovering Pointcut Expressions in Evolving Aspect-Ori...
Pointcut Rejuvenation: Recovering Pointcut Expressions in Evolving Aspect-Ori...Raffi Khatchadourian
 
Engineering Software Products: 10. Devops and code management
Engineering Software Products: 10. Devops and code managementEngineering Software Products: 10. Devops and code management
Engineering Software Products: 10. Devops and code managementsoftware-engineering-book
 
Il paradigma DevOps e Continuous Delivery Automation
Il paradigma DevOps e Continuous Delivery AutomationIl paradigma DevOps e Continuous Delivery Automation
Il paradigma DevOps e Continuous Delivery AutomationHP Enterprise Italia
 
Il paradigma DevOps e Continuous Delivery Automation
Il paradigma DevOps e Continuous Delivery Automation Il paradigma DevOps e Continuous Delivery Automation
Il paradigma DevOps e Continuous Delivery Automation HP Enterprise Italia
 
1. introducción a la Ingeniería de Software (UTM 2071)
1. introducción a la Ingeniería de Software (UTM 2071)1. introducción a la Ingeniería de Software (UTM 2071)
1. introducción a la Ingeniería de Software (UTM 2071)Mario A Moreno Rocha
 
Make software like they make cars!
Make software like they make cars!Make software like they make cars!
Make software like they make cars!Ashish Belagali
 
DevOps and Build Automation
DevOps and Build AutomationDevOps and Build Automation
DevOps and Build AutomationHeiswayi Nrird
 
The Product and Process(1).pdf
The Product and Process(1).pdfThe Product and Process(1).pdf
The Product and Process(1).pdfShivareddyGangam
 
Introduction to Agile Software Development & Python
Introduction to Agile Software Development & PythonIntroduction to Agile Software Development & Python
Introduction to Agile Software Development & PythonTharindu Weerasinghe
 
Code Craftsmanship Checklist
Code Craftsmanship ChecklistCode Craftsmanship Checklist
Code Craftsmanship ChecklistRyan Polk
 
The quality attribute of upgradability
The quality attribute of upgradabilityThe quality attribute of upgradability
The quality attribute of upgradabilityLen Bass
 
Software Engineering- Crisis and Process Models
Software Engineering- Crisis and Process ModelsSoftware Engineering- Crisis and Process Models
Software Engineering- Crisis and Process ModelsNishu Rastogi
 
Writting Better Software
Writting Better SoftwareWritting Better Software
Writting Better Softwaresvilen.ivanov
 
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
 
Slides chapter 1
Slides chapter 1Slides chapter 1
Slides chapter 1gvkmku
 
Software Development Standard Operating Procedure
Software Development Standard Operating Procedure Software Development Standard Operating Procedure
Software Development Standard Operating Procedure rupeshchanchal
 

Semelhante a Techniques for Automated Software Evolution (20)

Software development philosophies v1
Software development philosophies v1Software development philosophies v1
Software development philosophies v1
 
01 fse software&sw-engineering
01 fse software&sw-engineering01 fse software&sw-engineering
01 fse software&sw-engineering
 
Twelve Factor - Designing for Change
Twelve Factor - Designing for ChangeTwelve Factor - Designing for Change
Twelve Factor - Designing for Change
 
Pointcut Rejuvenation: Recovering Pointcut Expressions in Evolving Aspect-Ori...
Pointcut Rejuvenation: Recovering Pointcut Expressions in Evolving Aspect-Ori...Pointcut Rejuvenation: Recovering Pointcut Expressions in Evolving Aspect-Ori...
Pointcut Rejuvenation: Recovering Pointcut Expressions in Evolving Aspect-Ori...
 
SE notes 2.pdf
SE notes 2.pdfSE notes 2.pdf
SE notes 2.pdf
 
Engineering Software Products: 10. Devops and code management
Engineering Software Products: 10. Devops and code managementEngineering Software Products: 10. Devops and code management
Engineering Software Products: 10. Devops and code management
 
Il paradigma DevOps e Continuous Delivery Automation
Il paradigma DevOps e Continuous Delivery AutomationIl paradigma DevOps e Continuous Delivery Automation
Il paradigma DevOps e Continuous Delivery Automation
 
Il paradigma DevOps e Continuous Delivery Automation
Il paradigma DevOps e Continuous Delivery Automation Il paradigma DevOps e Continuous Delivery Automation
Il paradigma DevOps e Continuous Delivery Automation
 
1. introducción a la Ingeniería de Software (UTM 2071)
1. introducción a la Ingeniería de Software (UTM 2071)1. introducción a la Ingeniería de Software (UTM 2071)
1. introducción a la Ingeniería de Software (UTM 2071)
 
Make software like they make cars!
Make software like they make cars!Make software like they make cars!
Make software like they make cars!
 
DevOps and Build Automation
DevOps and Build AutomationDevOps and Build Automation
DevOps and Build Automation
 
The Product and Process(1).pdf
The Product and Process(1).pdfThe Product and Process(1).pdf
The Product and Process(1).pdf
 
Introduction to Agile Software Development & Python
Introduction to Agile Software Development & PythonIntroduction to Agile Software Development & Python
Introduction to Agile Software Development & Python
 
Code Craftsmanship Checklist
Code Craftsmanship ChecklistCode Craftsmanship Checklist
Code Craftsmanship Checklist
 
The quality attribute of upgradability
The quality attribute of upgradabilityThe quality attribute of upgradability
The quality attribute of upgradability
 
Software Engineering- Crisis and Process Models
Software Engineering- Crisis and Process ModelsSoftware Engineering- Crisis and Process Models
Software Engineering- Crisis and Process Models
 
Writting Better Software
Writting Better SoftwareWritting Better Software
Writting Better Software
 
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
 
Slides chapter 1
Slides chapter 1Slides chapter 1
Slides chapter 1
 
Software Development Standard Operating Procedure
Software Development Standard Operating Procedure Software Development Standard Operating Procedure
Software Development Standard Operating Procedure
 

Mais de Raffi Khatchadourian

Towards Safe Automated Refactoring of Imperative Deep Learning Programs to Gr...
Towards Safe Automated Refactoring of Imperative Deep Learning Programs to Gr...Towards Safe Automated Refactoring of Imperative Deep Learning Programs to Gr...
Towards Safe Automated Refactoring of Imperative Deep Learning Programs to Gr...Raffi Khatchadourian
 
Automated Evolution of Feature Logging Statement Levels Using Git Histories a...
Automated Evolution of Feature Logging Statement Levels Using Git Histories a...Automated Evolution of Feature Logging Statement Levels Using Git Histories a...
Automated Evolution of Feature Logging Statement Levels Using Git Histories a...Raffi Khatchadourian
 
A Tool for Rejuvenating Feature Logging Levels via Git Histories and Degree o...
A Tool for Rejuvenating Feature Logging Levels via Git Histories and Degree o...A Tool for Rejuvenating Feature Logging Levels via Git Histories and Degree o...
A Tool for Rejuvenating Feature Logging Levels via Git Histories and Degree o...Raffi Khatchadourian
 
Challenges in Migrating Imperative Deep Learning Programs to Graph Execution:...
Challenges in Migrating Imperative Deep Learning Programs to Graph Execution:...Challenges in Migrating Imperative Deep Learning Programs to Graph Execution:...
Challenges in Migrating Imperative Deep Learning Programs to Graph Execution:...Raffi Khatchadourian
 
Actor Concurrency Bugs: A Comprehensive Study on Symptoms, Root Causes, API U...
Actor Concurrency Bugs: A Comprehensive Study on Symptoms, Root Causes, API U...Actor Concurrency Bugs: A Comprehensive Study on Symptoms, Root Causes, API U...
Actor Concurrency Bugs: A Comprehensive Study on Symptoms, Root Causes, API U...Raffi Khatchadourian
 
An Empirical Study of Refactorings and Technical Debt in Machine Learning Sys...
An Empirical Study of Refactorings and Technical Debt in Machine Learning Sys...An Empirical Study of Refactorings and Technical Debt in Machine Learning Sys...
An Empirical Study of Refactorings and Technical Debt in Machine Learning Sys...Raffi Khatchadourian
 
Automated Evolution of Feature Logging Statement Levels Using Git Histories a...
Automated Evolution of Feature Logging Statement Levels Using Git Histories a...Automated Evolution of Feature Logging Statement Levels Using Git Histories a...
Automated Evolution of Feature Logging Statement Levels Using Git Histories a...Raffi Khatchadourian
 
An Empirical Study on the Use and Misuse of Java 8 Streams
An Empirical Study on the Use and Misuse of Java 8 StreamsAn Empirical Study on the Use and Misuse of Java 8 Streams
An Empirical Study on the Use and Misuse of Java 8 StreamsRaffi Khatchadourian
 
Safe Automated Refactoring for Intelligent Parallelization of Java 8 Streams
Safe Automated Refactoring for Intelligent Parallelization of Java 8 StreamsSafe Automated Refactoring for Intelligent Parallelization of Java 8 Streams
Safe Automated Refactoring for Intelligent Parallelization of Java 8 StreamsRaffi Khatchadourian
 
Safe Automated Refactoring for Intelligent Parallelization of Java 8 Streams
Safe Automated Refactoring for Intelligent Parallelization of Java 8 StreamsSafe Automated Refactoring for Intelligent Parallelization of Java 8 Streams
Safe Automated Refactoring for Intelligent Parallelization of Java 8 StreamsRaffi Khatchadourian
 
A Brief Introduction to Type Constraints
A Brief Introduction to Type ConstraintsA Brief Introduction to Type Constraints
A Brief Introduction to Type ConstraintsRaffi Khatchadourian
 
Safe Automated Refactoring for Intelligent Parallelization of Java 8 Streams ...
Safe Automated Refactoring for Intelligent Parallelization of Java 8 Streams ...Safe Automated Refactoring for Intelligent Parallelization of Java 8 Streams ...
Safe Automated Refactoring for Intelligent Parallelization of Java 8 Streams ...Raffi Khatchadourian
 
A Tool for Optimizing Java 8 Stream Software via Automated Refactoring
A Tool for Optimizing Java 8 Stream Software via Automated RefactoringA Tool for Optimizing Java 8 Stream Software via Automated Refactoring
A Tool for Optimizing Java 8 Stream Software via Automated RefactoringRaffi Khatchadourian
 
Porting the NetBeans Java 8 Enhanced For Loop Lambda Expression Refactoring t...
Porting the NetBeans Java 8 Enhanced For Loop Lambda Expression Refactoring t...Porting the NetBeans Java 8 Enhanced For Loop Lambda Expression Refactoring t...
Porting the NetBeans Java 8 Enhanced For Loop Lambda Expression Refactoring t...Raffi Khatchadourian
 
Towards Safe Refactoring for Intelligent Parallelization of Java 8 Streams
Towards Safe Refactoring for Intelligent Parallelization of Java 8 StreamsTowards Safe Refactoring for Intelligent Parallelization of Java 8 Streams
Towards Safe Refactoring for Intelligent Parallelization of Java 8 StreamsRaffi Khatchadourian
 
Proactive Empirical Assessment of New Language Feature Adoption via Automated...
Proactive Empirical Assessment of New Language Feature Adoption via Automated...Proactive Empirical Assessment of New Language Feature Adoption via Automated...
Proactive Empirical Assessment of New Language Feature Adoption via Automated...Raffi Khatchadourian
 
Defaultification Refactoring: A Tool for Automatically Converting Java Method...
Defaultification Refactoring: A Tool for Automatically Converting Java Method...Defaultification Refactoring: A Tool for Automatically Converting Java Method...
Defaultification Refactoring: A Tool for Automatically Converting Java Method...Raffi Khatchadourian
 
Defaultification Refactoring: A Tool for Automatically Converting Java Method...
Defaultification Refactoring: A Tool for Automatically Converting Java Method...Defaultification Refactoring: A Tool for Automatically Converting Java Method...
Defaultification Refactoring: A Tool for Automatically Converting Java Method...Raffi Khatchadourian
 
Automated Refactoring of Legacy Java Software to Default Methods Talk at ICSE...
Automated Refactoring of Legacy Java Software to Default Methods Talk at ICSE...Automated Refactoring of Legacy Java Software to Default Methods Talk at ICSE...
Automated Refactoring of Legacy Java Software to Default Methods Talk at ICSE...Raffi Khatchadourian
 
Poster on Automated Refactoring of Legacy Java Software to Default Methods
Poster on Automated Refactoring of Legacy Java Software to Default MethodsPoster on Automated Refactoring of Legacy Java Software to Default Methods
Poster on Automated Refactoring of Legacy Java Software to Default MethodsRaffi Khatchadourian
 

Mais de Raffi Khatchadourian (20)

Towards Safe Automated Refactoring of Imperative Deep Learning Programs to Gr...
Towards Safe Automated Refactoring of Imperative Deep Learning Programs to Gr...Towards Safe Automated Refactoring of Imperative Deep Learning Programs to Gr...
Towards Safe Automated Refactoring of Imperative Deep Learning Programs to Gr...
 
Automated Evolution of Feature Logging Statement Levels Using Git Histories a...
Automated Evolution of Feature Logging Statement Levels Using Git Histories a...Automated Evolution of Feature Logging Statement Levels Using Git Histories a...
Automated Evolution of Feature Logging Statement Levels Using Git Histories a...
 
A Tool for Rejuvenating Feature Logging Levels via Git Histories and Degree o...
A Tool for Rejuvenating Feature Logging Levels via Git Histories and Degree o...A Tool for Rejuvenating Feature Logging Levels via Git Histories and Degree o...
A Tool for Rejuvenating Feature Logging Levels via Git Histories and Degree o...
 
Challenges in Migrating Imperative Deep Learning Programs to Graph Execution:...
Challenges in Migrating Imperative Deep Learning Programs to Graph Execution:...Challenges in Migrating Imperative Deep Learning Programs to Graph Execution:...
Challenges in Migrating Imperative Deep Learning Programs to Graph Execution:...
 
Actor Concurrency Bugs: A Comprehensive Study on Symptoms, Root Causes, API U...
Actor Concurrency Bugs: A Comprehensive Study on Symptoms, Root Causes, API U...Actor Concurrency Bugs: A Comprehensive Study on Symptoms, Root Causes, API U...
Actor Concurrency Bugs: A Comprehensive Study on Symptoms, Root Causes, API U...
 
An Empirical Study of Refactorings and Technical Debt in Machine Learning Sys...
An Empirical Study of Refactorings and Technical Debt in Machine Learning Sys...An Empirical Study of Refactorings and Technical Debt in Machine Learning Sys...
An Empirical Study of Refactorings and Technical Debt in Machine Learning Sys...
 
Automated Evolution of Feature Logging Statement Levels Using Git Histories a...
Automated Evolution of Feature Logging Statement Levels Using Git Histories a...Automated Evolution of Feature Logging Statement Levels Using Git Histories a...
Automated Evolution of Feature Logging Statement Levels Using Git Histories a...
 
An Empirical Study on the Use and Misuse of Java 8 Streams
An Empirical Study on the Use and Misuse of Java 8 StreamsAn Empirical Study on the Use and Misuse of Java 8 Streams
An Empirical Study on the Use and Misuse of Java 8 Streams
 
Safe Automated Refactoring for Intelligent Parallelization of Java 8 Streams
Safe Automated Refactoring for Intelligent Parallelization of Java 8 StreamsSafe Automated Refactoring for Intelligent Parallelization of Java 8 Streams
Safe Automated Refactoring for Intelligent Parallelization of Java 8 Streams
 
Safe Automated Refactoring for Intelligent Parallelization of Java 8 Streams
Safe Automated Refactoring for Intelligent Parallelization of Java 8 StreamsSafe Automated Refactoring for Intelligent Parallelization of Java 8 Streams
Safe Automated Refactoring for Intelligent Parallelization of Java 8 Streams
 
A Brief Introduction to Type Constraints
A Brief Introduction to Type ConstraintsA Brief Introduction to Type Constraints
A Brief Introduction to Type Constraints
 
Safe Automated Refactoring for Intelligent Parallelization of Java 8 Streams ...
Safe Automated Refactoring for Intelligent Parallelization of Java 8 Streams ...Safe Automated Refactoring for Intelligent Parallelization of Java 8 Streams ...
Safe Automated Refactoring for Intelligent Parallelization of Java 8 Streams ...
 
A Tool for Optimizing Java 8 Stream Software via Automated Refactoring
A Tool for Optimizing Java 8 Stream Software via Automated RefactoringA Tool for Optimizing Java 8 Stream Software via Automated Refactoring
A Tool for Optimizing Java 8 Stream Software via Automated Refactoring
 
Porting the NetBeans Java 8 Enhanced For Loop Lambda Expression Refactoring t...
Porting the NetBeans Java 8 Enhanced For Loop Lambda Expression Refactoring t...Porting the NetBeans Java 8 Enhanced For Loop Lambda Expression Refactoring t...
Porting the NetBeans Java 8 Enhanced For Loop Lambda Expression Refactoring t...
 
Towards Safe Refactoring for Intelligent Parallelization of Java 8 Streams
Towards Safe Refactoring for Intelligent Parallelization of Java 8 StreamsTowards Safe Refactoring for Intelligent Parallelization of Java 8 Streams
Towards Safe Refactoring for Intelligent Parallelization of Java 8 Streams
 
Proactive Empirical Assessment of New Language Feature Adoption via Automated...
Proactive Empirical Assessment of New Language Feature Adoption via Automated...Proactive Empirical Assessment of New Language Feature Adoption via Automated...
Proactive Empirical Assessment of New Language Feature Adoption via Automated...
 
Defaultification Refactoring: A Tool for Automatically Converting Java Method...
Defaultification Refactoring: A Tool for Automatically Converting Java Method...Defaultification Refactoring: A Tool for Automatically Converting Java Method...
Defaultification Refactoring: A Tool for Automatically Converting Java Method...
 
Defaultification Refactoring: A Tool for Automatically Converting Java Method...
Defaultification Refactoring: A Tool for Automatically Converting Java Method...Defaultification Refactoring: A Tool for Automatically Converting Java Method...
Defaultification Refactoring: A Tool for Automatically Converting Java Method...
 
Automated Refactoring of Legacy Java Software to Default Methods Talk at ICSE...
Automated Refactoring of Legacy Java Software to Default Methods Talk at ICSE...Automated Refactoring of Legacy Java Software to Default Methods Talk at ICSE...
Automated Refactoring of Legacy Java Software to Default Methods Talk at ICSE...
 
Poster on Automated Refactoring of Legacy Java Software to Default Methods
Poster on Automated Refactoring of Legacy Java Software to Default MethodsPoster on Automated Refactoring of Legacy Java Software to Default Methods
Poster on Automated Refactoring of Legacy Java Software to Default Methods
 

Último

Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 

Último (20)

Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 

Techniques for Automated Software Evolution

  • 1. Techniques for Automated Software Evolution PhD Dissertation by Raffi Khatchadourian Computer Science & Engineering Ohio State University Advisor: Neelam Soundarajan Committee: Atanas Rountev, Paul Sivilotti, Paul Evans 1
  • 2. Biography • Born in New York, NY and raised in Edison, NJ. • First generation American. • Family immigrated from Sofia, Bulgaria. • Graduated from Monmouth University in 2004 with a B.S. in Computer Science. • Worked as: • A Software Engineer at State of New Jersey Office of Information Technology in Trenton, NJ. • A UNIX Systems Administrator for pharmaceutical website in Toms River, NJ. • Entered PhD program at OSU in September, 2005. • M.S. in Computer Science from OSU in March, 2010. • Start as an RF (wireless) Systems Integration Engineer on the iPhone development team at Apple Inc. in Cupertino, CA on Monday (4/4/2011). 2
  • 3. Publication Highlights • Raffi Khatchadourian, Phil Greenwood, Awais Rashid, and Guoqing Xu. Pointcut rejuvenation: Recovering pointcut expressions in evolving aspect-oriented software. IEEE Transactions on Software Engineering, 99(PrePrints), 2011. ISSN 0098-5589. • Raffi Khatchadourian, Phil Greenwood, Awais Rashid, and Guoqing Xu. Pointcut rejuvenation: Recovering pointcut expressions in evolving aspect-oriented software. In Proceedings of the 24th International Conference on Automated Software Engineering (ASE ’09), pages 575–579, Auckland, New Zealand, November 2009. IEEE/ACM. • Raffi Khatchadourian, Johan Dovland, and Neelam Soundarajan. Enforcing behavioral constraints in evolving aspect-oriented programs. In Proceedings of the 7th International Workshop on Foundations of Aspect- Oriented Languages (FOAL ’08) at the 7th International Conference on Aspect- Oriented Software Development (AOSD ’08), pages 19–28, Brussels, Belgium, April 2008. ACM. • Raffi Khatchadourian, Jason Sawin, and Atanas Rountev. Automated refactoring of legacy Java software to enumerated types. In Proceedings of the 23rd International Conference on Software Maintenance (ICSM ’07), pages 224–233, Paris, France, October 2007. IEEE. • Peer-reviewed totals (2005-): 1 paper to appear in a journal, 5 papers appearing in conference proceedings, and 5 papers appearing in workshop proceedings. 3
  • 4. Activity Highlights • Helped develop new Applied Software Engineering course ECE/CSE 668 based on Challenge-X hybrid SUV automobile simulation at OSU CAR in 2006. • Summer intern at Bell Labs under Rick Hull and Kedar Namjoshi (program language design for shared-experience, multimedia, multi- protocol, event-driven applications) in 2007. • Visiting Graduate Research Associate with the Aspect-Oriented Software Engineering (AOSE) Group at the Computing Department of Lancaster University, UK under Awais Rashid in 2008. • Visiting Researcher with the Programming Principles and Practices (PPP) Group at the Department of Graphics and Computer Science of the University of Tokyo under Hidehiko Masuhara in 2010. • Proposed project mentor for Google Summer of Code (GSoC) in 2009 and 2010. Project based on refactoring to enumerated types in Java. • Organizing committee member (Web Chair) for the European Conference on Object-Oriented Programming (ECOOP). 4
  • 5. Award Highlights • Japan Society for the Promotion of Science (JSPS) Summer Program Fellowship Recipient in 2010. • National Science Foundation (NSF) East Asia and Pacific Summer Institutes (EAPSI) Award Recipient in 2010. • Ohio State University Department of Computer Science & Engineering Graduate Teaching Award Recipient in 2010. 5
  • 8. Motivation • Software changes over time: • Requirements evolve 6
  • 9. Motivation • Software changes over time: • Requirements evolve • New platforms emerge (e.g., mobile devices) 6
  • 10. Motivation • Software changes over time: • Requirements evolve • New platforms emerge (e.g., mobile devices) • Frameworks change (e.g., XML vs. annotation-based) 6
  • 12. Motivation Changing and/or maintaining large, complex software systems can be non-trivial: Tedious: May require changing many lines of code. Error-prone: Changes may be implemented incorrectly. Omission- May opportunities to produce better prone: code. 7
  • 13. Motivation Changing and/or maintaining large, complex software systems can be non-trivial: Tedious: May require changing many lines of code. Error-prone: Changes may be implemented incorrectly. Omission- May opportunities to produce better prone: code. 7
  • 14. Motivation Adding a parameter to a Changing and/or maintaining large, complex software systems can be non-trivial: method Tedious: May require changing many lines of code. Error-prone: Changes may be implemented incorrectly. Omission- May opportunities to produce better prone: code. 7
  • 15. Motivation Changing and/or maintaining large, complex software systems can be non-trivial: Tedious: May require changing many lines of code. Error-prone: Changes may be implemented incorrectly. Omission- May opportunities to produce better prone: code. 7
  • 16. Motivation Removing a Changing and/or maintaining large, complex software systemsparameter may method can be non-trivial: alter overloading to Tedious: May require changing many lines of overriding code. Error-prone: Changes may be implemented incorrectly. Omission- May opportunities to produce better prone: code. 7
  • 17. Motivation Changing and/or maintaining large, complex software systems can be non-trivial: Tedious: May require changing many lines of code. Error-prone: Changes may be implemented incorrectly. Omission- May opportunities to produce better prone: code. 7
  • 18. Motivation Changing and/or maintaining large, complex software systems can be non-trivial: Tedious: May require changing many lines of code. HashTable vs. Error-prone: Changes may be implemented incorrectly. HashMap Omission- May opportunities to produce better prone: code. 7
  • 19. Motivation Changing and/or maintaining large, complex software systems can be non-trivial: Tedious: May require changing many lines of code. Error-prone: Changes may be implemented incorrectly. Omission- May opportunities to produce better prone: code. 7
  • 20. Approach 8
  • 21. Approach • Approaches made to provide mechanical assistance in evolution tasks. 8
  • 22. Approach • Approaches made to provide mechanical assistance in evolution tasks. • Typically in the form of plug-ins to IDEs. 8
  • 23. Approach • Approaches made to provide mechanical assistance in evolution tasks. • Typically in the form of plug-ins to IDEs. • Ease the burden of software maintenance and evolution. 8
  • 24. Approach Restrict workspace to only • Approaches made to displays elements provide mechanical relevant to the assistance in evolution task tasks. • Typically in the form of plug-ins to IDEs. • Ease the burden of software maintenance and evolution. 8
  • 25. Approach Restrict workspace to only • Approaches made to displays elements provide mechanical relevant to the assistance in evolution task tasks. • Typically in the form of plug-ins to IDEs. Restructure •code the burden of Ease while preserving semantics (i.e., software maintenance and evolution. refactoring) 8
  • 27. Thesis Outline • For my thesis, I have pursed three directions: 9
  • 28. Thesis Outline • For my thesis, I have pursed three directions: 1. Mechanically alleviate burden of fragile pointcuts in Aspect-Oriented software. 9
  • 29. Thesis Outline • For my thesis, I have pursed three directions: 1. Mechanically alleviate burden of fragile pointcuts in Aspect-Oriented software. 2.Automatically refactor legacy Java software to language enumerated (enum) types. 9
  • 30. Thesis Outline • For my thesis, I have pursed three directions: 1. Mechanically alleviate burden of fragile pointcuts in Aspect-Oriented software. 2.Automatically refactor legacy Java software to language enumerated (enum) types. 3.Robustly specify evolving Aspect-Oriented software components. 9