SlideShare a Scribd company logo
1 of 18
Download to read offline
ESUG 2003
Induced Intentional Software Views



         Tom Tourwé Johan Brichau
         Andy Kellens and Kris Gybels


         Programming Technology Lab
       Department of Computer Science
          Vrije Universiteit Brussel
                                        1
Problems with Software Documentation

  ÿ Software becomes very large, more complex and constantly
       evolves
  ÿ Software documentation is extremely important to cope
       with these issues
       ÿ avoid design degradation
       ÿ understand inner workings
       ÿ implement correct behaviour
  ÿ Documentation is often non existent or outdated
       ÿ not active part of development process
       ÿ documentation and implementation are separated
       ÿ not robust w.r.t. evolution
August 2003                                                             2
                                                          © PROG, VUB
Software Views


                                             Software View




   ÿ Documentation technique used to highlight important
       design structures
        ÿ design patterns, framework hotspots, collaborations, ...
   ÿ Collection of source code artifacts
        ÿ classes, methods, variables, ...
   ÿ Two different kinds of software views
        ÿ Extensional views
        ÿ Intentional views
August 2003                                                                        3
                                                                     © PROG, VUB
Extensional Views

 View name




                 Drag & Drop


View artifacts



August 2003                                  4
                               © PROG, VUB
Extensional Views

ÿ Manual enumeration of source code artifacts
ÿ Advantages
     ÿ easy to define (drag & drop)
ÿ Disadvantages
     ÿ not robust w.r.t. evolution
     ÿ not scalable
     ÿ not intention revealing

                                      Reduces interest of using software views



August 2003                                                                      5
                                                                  © PROG, VUB
Intentional Views




August 2003                          6
                       © PROG, VUB
Intentional Views

ÿ Defined by means of an intentional description
    ÿ executable expression in a programming language
    ÿ view’s content is computed from the source code
ÿ Advantages
    ÿ robust w.r.t. evolution
    ÿ scalable
    ÿ intention revealing               Complicates use of Intentional Views
ÿ Disadvantages
    ÿ hard to define (requires meta-programming skills)
    ÿ risk to be overly general
    ÿ requires detailed knowledge of the application’s internal structure
August 2003                                                                     7
                                                                  © PROG, VUB
Induced Intentional Views

  ÿ Combines advantages of extensional and intentional views
       ÿ ease of use of extensional views
       ÿ robustness and scalability of intentional views
  ÿ     Inducing views
       ÿ manually classify source code artifacts
       ÿ automatically derive intention behind it
  ÿ Techniques
       ÿ Logic Metaprogramming
              ÿ to connect views to implementation
       ÿ Inductive Logic Programming (Machine Learning)
              ÿ to derive intention automatically
August 2003                                                              8
                                                           © PROG, VUB
Logic Meta Programming (LMP)

  ÿ Using a logic programming language (Prolog) at the meta
       level to reason about and manipulate programs at the base
       level (in Smalltalk)
  ÿ Allows     to define intentional views in a concise and
       declarative manner
  ÿ SOUL
       ÿ Interpreter integrated in VW
       ÿ Contains extensive library of logic predicates that consult source
              code



August 2003                                                                   9
                                                               © PROG, VUB
Inductive Logic Programming

  ÿ Machine learning technique
       ÿ Discovers a general pattern underlying a number of examples
       ÿ Requires a set of examples and a background theory


                                Background
        Examples                                                 Induced Logic Rules
                                  Theory


  grandFather(tom,bob).     father(tom,peter).     grandFather(?grandfather,?person) if
  grandFather(tom,jim).     father(tom,marie).        father(?grandfather,?father),
  grandFather(tom,ellen).   father(peter,bob).        father(?father,?person).
  grandFather(tom,bart).    father(peter,jim).     grandFather(?grandfather,?person) if
                            mother(marie,ellen).      father(?grandfather,?mother),
                            mother(marie,bart).       mother(?mother,?person).




August 2003                                                                                             10
                                                                                          © PROG, VUB
Software Views with LMP

  ÿ Extensional
       ÿ Logic facts (enumeration)
       ÿ        class(ScExpression).
                class(ScConsExpression).
  ÿ             methodInClass(analyse,ScConsExpression).
                ...
  ÿ
  ÿ Intentional
       ÿ Logic rules (program)
                                                       Induction algorithm
                 class(?method) if
                     methodInClass(analyse,?method).
                 ...


August 2003                                                                       11
                                                                    © PROG, VUB
Proof of concept experiment

                             ScExpression

                           newClosure
                           analyse



                ScSequence                  ScCons
                Expression                 Expression                  SpecialForm
                                                                         Handler
              newClosure                newClosure
              analyse                   analyse                      newClosure
                                                                     handle:


                                                         DefineHandler                 IfHandler

                                                        newClosure                newClosure
                                                        handle:                   handle:




August 2003                                                                                                     12
                                                                                                  © PROG, VUB
Classified Items

    analyser(classImplementsMethodNamed(ScExpression,analyse)).
    analyser(classImplementsMethodNamed(ScConsExpression,analyse)).
    analyser(classImplementsMethodNamed(ScSequenceExpression,analyse)).
    ...
    analyser(classImplementsMethodNamed(SpecialFormHandler,handle:)).
    analyser(classImplementsMethodNamed(DefineHandler,handle:)).
    analyser(classImplementsMethodNamed(IfHandler,handle:)).




August 2003                                                                      13
                                                                   © PROG, VUB
Derived Rules

                                                                defines intention
   intention(analyser,<?class,?selector>) if
                                                                   in terms of
      analyser(classImplementsMethodNamed(?class,?selector)).
                                                                  derived rules
   analyser(classImplementsMethodNamed(?class, handle:)) if
      methodSendsMessage(?class, handle:, newConverterFor:),
      methodSendsMessage(?class, handle:, newClosure),
      methodSendsMessage(?class, handle:, analyse),
      classInHierarchyOf(?class,Scheme.SpecialFormHandler),
      classInHierarchyOf(?class,Scheme.SpecialFormHandlerWithSuccessor),
      classInHierarchyOf(?class, ?class).


                                 Redundant


August 2003                                                                       14
                                                                    © PROG, VUB
Derived Rules




  analyser(classImplementsMethodNamed(?class, analyse)) if
     methodSendsMessage(?class, analyse, newClosure),
     classInHierarchyOf(?class,Scheme.ScExpression),
     classInHierarchyOf(?class, ?class).
                                           Redundant
  analyser(classImplementsMethodNamed(Scheme.DefineRelHandler,handle:)).




August 2003                                                                     15
                                                                  © PROG, VUB
Discussion

  ÿ Results show that intentions are discovered
  ÿ Problems encountered
       ÿ algorithm is sensitive to order of examples presented
       ÿ sufficient number of examples is needed
              ÿ rules are either too restrictive or too general
       ÿ performance issues
  ÿ Scalability
       ÿ only two small experiments, no large-scale study yet




August 2003                                                                     16
                                                                  © PROG, VUB
Prototype Tool Support




August 2003                               17
                            © PROG, VUB
Conclusion

  ÿ Induced       intentional views combine advantages of
       extensional and intentional views, while removing their
       respective disadvantages
  ÿ Can be used to tackle software documentation problems
       ÿ explicit link between source code and documentation by means of
              LMP
       ÿ robust w.r.t. evolution
  ÿ Can be integrated easily into already existing development
       tools


August 2003                                                                18
                                                             © PROG, VUB

More Related Content

Similar to Induced Intentional Software Views

Postdoc symposium - A Logic Meta-Programming Foundation for Example-Driven Pa...
Postdoc symposium - A Logic Meta-Programming Foundation for Example-Driven Pa...Postdoc symposium - A Logic Meta-Programming Foundation for Example-Driven Pa...
Postdoc symposium - A Logic Meta-Programming Foundation for Example-Driven Pa...ICSM 2011
 
A Logic Meta-Programming Foundation for Example-Driven Pattern Detection in O...
A Logic Meta-Programming Foundation for Example-Driven Pattern Detection in O...A Logic Meta-Programming Foundation for Example-Driven Pattern Detection in O...
A Logic Meta-Programming Foundation for Example-Driven Pattern Detection in O...Coen De Roover
 
ESWC-2011: S-Match received 7 years award
ESWC-2011: S-Match received 7 years award ESWC-2011: S-Match received 7 years award
ESWC-2011: S-Match received 7 years award Pavel Shvaiko
 
MLGrafViz: multilingual ontology visualization plug-in for Protégé
MLGrafViz: multilingual ontology visualization plug-in for ProtégéMLGrafViz: multilingual ontology visualization plug-in for Protégé
MLGrafViz: multilingual ontology visualization plug-in for ProtégéCSITiaesprime
 
Domain specific languages and Scala
Domain specific languages and ScalaDomain specific languages and Scala
Domain specific languages and ScalaFilip Krikava
 
Towards a Marketplace of Open Source Software Data
Towards a Marketplace of Open Source Software DataTowards a Marketplace of Open Source Software Data
Towards a Marketplace of Open Source Software DataFernando Silva Parreiras
 
PHX Session #5 : Architecture Without Big Design Up Front (Garibay)
PHX Session #5 : Architecture Without Big Design Up Front (Garibay)PHX Session #5 : Architecture Without Big Design Up Front (Garibay)
PHX Session #5 : Architecture Without Big Design Up Front (Garibay)Steve Lange
 
Runtime Behavior of JavaScript Programs
Runtime Behavior of JavaScript ProgramsRuntime Behavior of JavaScript Programs
Runtime Behavior of JavaScript ProgramsIRJET Journal
 
Close encounters in MDD: when Models meet Code
Close encounters in MDD: when Models meet CodeClose encounters in MDD: when Models meet Code
Close encounters in MDD: when Models meet Codelbergmans
 
STATICMOCK : A Mock Object Framework for Compiled Languages
STATICMOCK : A Mock Object Framework for Compiled Languages STATICMOCK : A Mock Object Framework for Compiled Languages
STATICMOCK : A Mock Object Framework for Compiled Languages ijseajournal
 
Framework Engineering_Final
Framework Engineering_FinalFramework Engineering_Final
Framework Engineering_FinalYoungSu Son
 
Learning to Rank Relevant Files for Bug Reports using Domain Knowledge
Learning to Rank Relevant Files for Bug Reports using Domain KnowledgeLearning to Rank Relevant Files for Bug Reports using Domain Knowledge
Learning to Rank Relevant Files for Bug Reports using Domain KnowledgeXin Ye
 
Using Stratego/XT for generation of software connectors.
Using Stratego/XT for generation of software connectors.Using Stratego/XT for generation of software connectors.
Using Stratego/XT for generation of software connectors.Michal Malohlava
 
the Concept of Object-Oriented Programming
the Concept of Object-Oriented Programmingthe Concept of Object-Oriented Programming
the Concept of Object-Oriented ProgrammingAida Ramlan II
 
Feelin' Groovy: An Afternoon of Reflexive Metaprogramming
Feelin' Groovy: An Afternoon of Reflexive MetaprogrammingFeelin' Groovy: An Afternoon of Reflexive Metaprogramming
Feelin' Groovy: An Afternoon of Reflexive MetaprogrammingMatt Stine
 

Similar to Induced Intentional Software Views (20)

Postdoc symposium - A Logic Meta-Programming Foundation for Example-Driven Pa...
Postdoc symposium - A Logic Meta-Programming Foundation for Example-Driven Pa...Postdoc symposium - A Logic Meta-Programming Foundation for Example-Driven Pa...
Postdoc symposium - A Logic Meta-Programming Foundation for Example-Driven Pa...
 
A Logic Meta-Programming Foundation for Example-Driven Pattern Detection in O...
A Logic Meta-Programming Foundation for Example-Driven Pattern Detection in O...A Logic Meta-Programming Foundation for Example-Driven Pattern Detection in O...
A Logic Meta-Programming Foundation for Example-Driven Pattern Detection in O...
 
CSMR11b.ppt
CSMR11b.pptCSMR11b.ppt
CSMR11b.ppt
 
ESWC-2011: S-Match received 7 years award
ESWC-2011: S-Match received 7 years award ESWC-2011: S-Match received 7 years award
ESWC-2011: S-Match received 7 years award
 
Object
ObjectObject
Object
 
MLGrafViz: multilingual ontology visualization plug-in for Protégé
MLGrafViz: multilingual ontology visualization plug-in for ProtégéMLGrafViz: multilingual ontology visualization plug-in for Protégé
MLGrafViz: multilingual ontology visualization plug-in for Protégé
 
Domain specific languages and Scala
Domain specific languages and ScalaDomain specific languages and Scala
Domain specific languages and Scala
 
Towards a Marketplace of Open Source Software Data
Towards a Marketplace of Open Source Software DataTowards a Marketplace of Open Source Software Data
Towards a Marketplace of Open Source Software Data
 
opps.pptx
opps.pptxopps.pptx
opps.pptx
 
PHX Session #5 : Architecture Without Big Design Up Front (Garibay)
PHX Session #5 : Architecture Without Big Design Up Front (Garibay)PHX Session #5 : Architecture Without Big Design Up Front (Garibay)
PHX Session #5 : Architecture Without Big Design Up Front (Garibay)
 
Runtime Behavior of JavaScript Programs
Runtime Behavior of JavaScript ProgramsRuntime Behavior of JavaScript Programs
Runtime Behavior of JavaScript Programs
 
Close encounters in MDD: when Models meet Code
Close encounters in MDD: when Models meet CodeClose encounters in MDD: when Models meet Code
Close encounters in MDD: when Models meet Code
 
ASE02.ppt
ASE02.pptASE02.ppt
ASE02.ppt
 
STATICMOCK : A Mock Object Framework for Compiled Languages
STATICMOCK : A Mock Object Framework for Compiled Languages STATICMOCK : A Mock Object Framework for Compiled Languages
STATICMOCK : A Mock Object Framework for Compiled Languages
 
Framework Engineering_Final
Framework Engineering_FinalFramework Engineering_Final
Framework Engineering_Final
 
Learning to Rank Relevant Files for Bug Reports using Domain Knowledge
Learning to Rank Relevant Files for Bug Reports using Domain KnowledgeLearning to Rank Relevant Files for Bug Reports using Domain Knowledge
Learning to Rank Relevant Files for Bug Reports using Domain Knowledge
 
Using Stratego/XT for generation of software connectors.
Using Stratego/XT for generation of software connectors.Using Stratego/XT for generation of software connectors.
Using Stratego/XT for generation of software connectors.
 
the Concept of Object-Oriented Programming
the Concept of Object-Oriented Programmingthe Concept of Object-Oriented Programming
the Concept of Object-Oriented Programming
 
Feelin' Groovy: An Afternoon of Reflexive Metaprogramming
Feelin' Groovy: An Afternoon of Reflexive MetaprogrammingFeelin' Groovy: An Afternoon of Reflexive Metaprogramming
Feelin' Groovy: An Afternoon of Reflexive Metaprogramming
 
JAVA Collection and generics
JAVA Collection and genericsJAVA Collection and generics
JAVA Collection and generics
 

More from ESUG

Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingWorkshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingESUG
 
Technical documentation support in Pharo
Technical documentation support in PharoTechnical documentation support in Pharo
Technical documentation support in PharoESUG
 
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapThe Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapESUG
 
Sequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoSequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoESUG
 
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...ESUG
 
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsAnalyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsESUG
 
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6ESUG
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationESUG
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingESUG
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesESUG
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportESUG
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsESUG
 
Garbage Collector Tuning
Garbage Collector TuningGarbage Collector Tuning
Garbage Collector TuningESUG
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseESUG
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FutureESUG
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the DebuggerESUG
 
Websockets for Fencing Score
Websockets for Fencing ScoreWebsockets for Fencing Score
Websockets for Fencing ScoreESUG
 
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptESUG
 
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocAdvanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocESUG
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsESUG
 

More from ESUG (20)

Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingWorkshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programming
 
Technical documentation support in Pharo
Technical documentation support in PharoTechnical documentation support in Pharo
Technical documentation support in Pharo
 
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapThe Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and Roadmap
 
Sequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoSequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in Pharo
 
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...
 
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsAnalyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early results
 
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test Generation
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic Programming
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience Report
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIs
 
Garbage Collector Tuning
Garbage Collector TuningGarbage Collector Tuning
Garbage Collector Tuning
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and Future
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the Debugger
 
Websockets for Fencing Score
Websockets for Fencing ScoreWebsockets for Fencing Score
Websockets for Fencing Score
 
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
 
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocAdvanced Object- Oriented Design Mooc
Advanced Object- Oriented Design Mooc
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and Transformations
 

Recently uploaded

Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
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
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGSujit Pal
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
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
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
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
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 

Recently uploaded (20)

Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
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
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
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
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
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...
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 

Induced Intentional Software Views

  • 1. ESUG 2003 Induced Intentional Software Views Tom Tourwé Johan Brichau Andy Kellens and Kris Gybels Programming Technology Lab Department of Computer Science Vrije Universiteit Brussel 1
  • 2. Problems with Software Documentation ÿ Software becomes very large, more complex and constantly evolves ÿ Software documentation is extremely important to cope with these issues ÿ avoid design degradation ÿ understand inner workings ÿ implement correct behaviour ÿ Documentation is often non existent or outdated ÿ not active part of development process ÿ documentation and implementation are separated ÿ not robust w.r.t. evolution August 2003 2 © PROG, VUB
  • 3. Software Views Software View ÿ Documentation technique used to highlight important design structures ÿ design patterns, framework hotspots, collaborations, ... ÿ Collection of source code artifacts ÿ classes, methods, variables, ... ÿ Two different kinds of software views ÿ Extensional views ÿ Intentional views August 2003 3 © PROG, VUB
  • 4. Extensional Views View name Drag & Drop View artifacts August 2003 4 © PROG, VUB
  • 5. Extensional Views ÿ Manual enumeration of source code artifacts ÿ Advantages ÿ easy to define (drag & drop) ÿ Disadvantages ÿ not robust w.r.t. evolution ÿ not scalable ÿ not intention revealing Reduces interest of using software views August 2003 5 © PROG, VUB
  • 7. Intentional Views ÿ Defined by means of an intentional description ÿ executable expression in a programming language ÿ view’s content is computed from the source code ÿ Advantages ÿ robust w.r.t. evolution ÿ scalable ÿ intention revealing Complicates use of Intentional Views ÿ Disadvantages ÿ hard to define (requires meta-programming skills) ÿ risk to be overly general ÿ requires detailed knowledge of the application’s internal structure August 2003 7 © PROG, VUB
  • 8. Induced Intentional Views ÿ Combines advantages of extensional and intentional views ÿ ease of use of extensional views ÿ robustness and scalability of intentional views ÿ Inducing views ÿ manually classify source code artifacts ÿ automatically derive intention behind it ÿ Techniques ÿ Logic Metaprogramming ÿ to connect views to implementation ÿ Inductive Logic Programming (Machine Learning) ÿ to derive intention automatically August 2003 8 © PROG, VUB
  • 9. Logic Meta Programming (LMP) ÿ Using a logic programming language (Prolog) at the meta level to reason about and manipulate programs at the base level (in Smalltalk) ÿ Allows to define intentional views in a concise and declarative manner ÿ SOUL ÿ Interpreter integrated in VW ÿ Contains extensive library of logic predicates that consult source code August 2003 9 © PROG, VUB
  • 10. Inductive Logic Programming ÿ Machine learning technique ÿ Discovers a general pattern underlying a number of examples ÿ Requires a set of examples and a background theory Background Examples Induced Logic Rules Theory grandFather(tom,bob). father(tom,peter). grandFather(?grandfather,?person) if grandFather(tom,jim). father(tom,marie). father(?grandfather,?father), grandFather(tom,ellen). father(peter,bob). father(?father,?person). grandFather(tom,bart). father(peter,jim). grandFather(?grandfather,?person) if mother(marie,ellen). father(?grandfather,?mother), mother(marie,bart). mother(?mother,?person). August 2003 10 © PROG, VUB
  • 11. Software Views with LMP ÿ Extensional ÿ Logic facts (enumeration) ÿ class(ScExpression). class(ScConsExpression). ÿ methodInClass(analyse,ScConsExpression). ... ÿ ÿ Intentional ÿ Logic rules (program) Induction algorithm class(?method) if methodInClass(analyse,?method). ... August 2003 11 © PROG, VUB
  • 12. Proof of concept experiment ScExpression newClosure analyse ScSequence ScCons Expression Expression SpecialForm Handler newClosure newClosure analyse analyse newClosure handle: DefineHandler IfHandler newClosure newClosure handle: handle: August 2003 12 © PROG, VUB
  • 13. Classified Items analyser(classImplementsMethodNamed(ScExpression,analyse)). analyser(classImplementsMethodNamed(ScConsExpression,analyse)). analyser(classImplementsMethodNamed(ScSequenceExpression,analyse)). ... analyser(classImplementsMethodNamed(SpecialFormHandler,handle:)). analyser(classImplementsMethodNamed(DefineHandler,handle:)). analyser(classImplementsMethodNamed(IfHandler,handle:)). August 2003 13 © PROG, VUB
  • 14. Derived Rules defines intention intention(analyser,<?class,?selector>) if in terms of analyser(classImplementsMethodNamed(?class,?selector)). derived rules analyser(classImplementsMethodNamed(?class, handle:)) if methodSendsMessage(?class, handle:, newConverterFor:), methodSendsMessage(?class, handle:, newClosure), methodSendsMessage(?class, handle:, analyse), classInHierarchyOf(?class,Scheme.SpecialFormHandler), classInHierarchyOf(?class,Scheme.SpecialFormHandlerWithSuccessor), classInHierarchyOf(?class, ?class). Redundant August 2003 14 © PROG, VUB
  • 15. Derived Rules analyser(classImplementsMethodNamed(?class, analyse)) if methodSendsMessage(?class, analyse, newClosure), classInHierarchyOf(?class,Scheme.ScExpression), classInHierarchyOf(?class, ?class). Redundant analyser(classImplementsMethodNamed(Scheme.DefineRelHandler,handle:)). August 2003 15 © PROG, VUB
  • 16. Discussion ÿ Results show that intentions are discovered ÿ Problems encountered ÿ algorithm is sensitive to order of examples presented ÿ sufficient number of examples is needed ÿ rules are either too restrictive or too general ÿ performance issues ÿ Scalability ÿ only two small experiments, no large-scale study yet August 2003 16 © PROG, VUB
  • 17. Prototype Tool Support August 2003 17 © PROG, VUB
  • 18. Conclusion ÿ Induced intentional views combine advantages of extensional and intentional views, while removing their respective disadvantages ÿ Can be used to tackle software documentation problems ÿ explicit link between source code and documentation by means of LMP ÿ robust w.r.t. evolution ÿ Can be integrated easily into already existing development tools August 2003 18 © PROG, VUB