1 / 37

IMPROVING PROGRAM COMPREHENSION TOOLS FOR DOMAIN-SPECIFIC LANGUAGES

IMPROVING PROGRAM COMPREHENSION TOOLS FOR DOMAIN-SPECIFIC LANGUAGES. Nuno Oliveira. Supervisors: Professor Pedro Rangel Henriques Professora Maria João Varanda Pereira. University of Minho, Department of Informatics. Imagine the following scenario:. You are a software analyst….

bin
Download Presentation

IMPROVING PROGRAM COMPREHENSION TOOLS FOR DOMAIN-SPECIFIC LANGUAGES

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. IMPROVING PROGRAM COMPREHENSION TOOLS FOR DOMAIN-SPECIFIC LANGUAGES Nuno Oliveira Supervisors: Professor Pedro Rangel Henriques Professora Maria João Varanda Pereira University of Minho, Department of Informatics

  2. Imagine the following scenario: You are a software analyst… …who is assigned a task of maintaining a software piece

  3. Well… this is just a part of that software… void fn() { struct model *o = (struct model *)malloc(sizeof(struct model)); o->switch = true; while(o->switch){ try_sense(o); if(o->sensor_date != NULL){ o->p ++; o->h = 1; o->b = (struct object*)malloc(sizeof(struct object)); o->b = o->sensor_date; o->sensor_date = NULL; o->b->next = NULL; } } }

  4. - What is it all about? Your first reaction… - What does this program do? • What are its effects on the real • world concepts? And this would be the second one… • I Can’t even figure out the problem domain! So you’d probably give up on maintaining such code.

  5. But… what if, somehow, you have information about the problem domain? Robots are picking stones, but their arms never go back down, after the first stone! Ah, Ok! Let me see it again. You Boss

  6. In fact, this code can solve a lot of problems, and none in particular void fn() { struct model *o = (struct model *)malloc(sizeof(struct model)); o->switch = true; while(o->switch){ try_sense(o); if(o->sensor_date != NULL){ o->p ++; o->h = 1; o->b = (struct object*)malloc(sizeof(struct object)); o->b = o->sensor_date; o->sensor_date = NULL; o->b->next = NULL; } } } But if you know that this code corresponds to a robot task…

  7. Then… Program Comprehension (PC) tools (PCTools) will fasten the way you work… DA4Java PICS SHriMP Alma Imagix4D JIRiSS Bauhaus Alborz Reflexion Model CodeCrawler SeeSoft Cerberus Rigi

  8. And… Do not take advantage of Problem Domain Do not connect Problem and Program Domains automatically You will not be able to easily know what statement do what in the real world objects… That is the HARDEST part!! So… Maintenance main tasks are still hand-made, increasing time and expenditures!

  9. Brooks theorizes that: A program is better understood if the person who is through the process of comprehension knows the program and problem domains, and is capable of establishing bridges between them. To formalize such theory in a tool for General Purpose Languages (GPL) is impossible or, at least, is neither easy nor direct! Would it be the same with Domain-Specific Languages? Why?

  10. Well, imagine again the same scenario: You are asoftware analyst… …who is assigned a task of maintaining a software piece

  11. … and that software was developed with a DSL: PROGRAM { TURN_ON WHILE (TURNED_ON){ IF(HAS_STONE_IN_FRONT){ ROBOT_ARM_ON; PICK_STONE; DROP_STONE_IN_BAG; } } }

  12. - Is that all? Your first reaction… - What does this program do? • What are its effects on the real • world concepts? And this would be the second reaction… • We’re talking about a robot task… • First, the robot is started, then, in a loop, it picks stones into a bag, whenever it senses one…

  13. Do I need to tell you where the error is? No, boss! Already found it! Yes, that was easy, but… what if the DSL is more complex? A PCTool improved to cope with DSL advantages would help us! Is it possible? You Boss

  14. If we prove the following three things: Question1: Can the PC techniques, tailored for GPLs, be applied on DSLs? Question2 Is it possible to improve existent PCTools, in order to give the end-user useful and better perspectives to comprehend the program and the problem? Extended Brooks Theory A program comprehension tool, eases the task of comprehending a program when synchronized visualizations of its program and problem domains are provided, since from these visualizations, the user is able to build a conceptual knowledge base that easily bridges both program and problem domains.

  15. Can the PC techniques, tailored for GPLs, be applied on DSLs?

  16. ALMA • A system to assist program comprehension tasks for ANY GPL DAST – Decorated Abstract Syntax Tree (ALMA internal representation (IR) ) TECHNIQUES The Meaning? The DAST stores the meaning of the program by using semantic patterns as nodes of a tree!

  17. So, to cope with Problem Domain… ALMA IR needs to be improved… … adding on, to the semantic patterns: Actors represent the Problem Domain Concepts Animation Functions describe the behavior of the concepts according to the operational semantic of the program. Resulting in…

  18. Animation Patterns represent the animation, at problem domain level,according to the operational semantic of the program Are injected in the DAST, creating a DAPAST (Decorated with Animation Patterns Abstract Syntax Tree)

  19. The DAST technique was used in a PCTool for GPLs… … and can be added of Animation Patterns to cope with Problem Domain Concepts! Which are static for every statement in a DSL, regardless of the program… So, this answers question 1! You Boss

  20. Is it possible to improve existent PCTools, in order to give the end-user useful and better perspectives to comprehend the program and the problem?

  21. Evolution: ALMA

  22. Evolution: ALMA >> ALMA2

  23. Beautiful… but how we specify a front-end for ALMA2 ? Boss

  24. 1. Analyse DSL formal definition and its specific domain DSL Problem Domain Problem Domain Concepts Program Domain Concepts DSL Formal Definition Possible Internal State Designing the Problem Visualization by Domains Analysis

  25. Program Domain Concepts Conceptual Mappings Table Problem Domain Concepts 2. Define mappings between the problem concepts and syntactic or semantic parts of the DSL; Designing the Problem Visualization by Concepts Mappings Definition

  26. 3. Associate images or image sequences with concepts at problem domain; Behavioural Visualization Table Images Problem Domain Concepts Designing the Problem Visualization by Images and Concepts Association

  27. Behavioural Visualization Table Conceptual Mappings Table Alma2 Front-End for DSPs 4. Use Alma2 to build the mappings between problem and program domains and the imagery. Designing the Problem Visualization by Definition of ALMA2 Specification Theory is good, what about practice?

  28. = Rotate a % Label 360 + a 90 For each grammar rule we define 1. The Operational Semantics using ALMA2 basic API and 2. The Operational Behaviour using ALMA2 extended API rule Instruction_TurnLeft { INSTRUCTION ::= #Turnleft compute { INSTRUCTION.tree = new Alma.CStmtsNode( new AnimAssignNode( tA, new Alma.COperNode( new Alma.COperNode( new Alma.CVarNode(tA), new Alma.CConstNode(90), "+” ), new Alma.CConstNode(360), "%"), new AnimationPattern[] { new APRotate(robot, new int[] {1}, "angle"), new APLabel(robot, new int[] {1}, "beepers: ", "beepers") } ) ); }; }

  29. ALMA2 tested with Imperative DSL

  30. ALMA2 tested with Declarative DSL

  31. The improvement of ALMA to ALMA2 is possible… … and the animation of the Problem Domain concepts together with the visualization of program domain, is a better perspective for the users! We can only be sure of its usefulness if we prove it… Let’s prove it then! You Boss

  32. Extended Brooks Theory A program comprehension tool, will ease the task of comprehending a program when synchronized visualizations of its program and problem domains are provided, since from these visualizations, the user is able to build a conceptual knowledge base that easily bridges both program and problem domains.

  33. The Proof Ingredients: 1 Questionnaire (8 Questions) 20 Participants The Proof Objectives: Solve PC tasks using Alma and Alma2 Measure variables with the questions: Time (spent in the questions) Correctness (in the answers) Relevance assigned to the approach(of the synchronized visualizations) Compare variables measured both in Alma and Alma2

  34. The Proof Results: Time Correctness Relevance

  35. Conclusion Despite of spending more time to create a mental model of the program… …With this approach, the effectiveness of the comprehension is achieved… So, maintenance time and expenditures are reduced! Meaning that synchronized Visualizations of Prog. And Prob. Domains are important to achieve the comprehension of the program You Boss

  36. Conclusion Because the connection of both domains allows us to: • Perceive how the program does; • Perceive what are the effects of the program in the problem domain… And of course, to achieve knowledge through an Action-Effect paradigm. You Boss

  37. IMPROVING PROGRAM COMPREHENSION TOOLS FOR DOMAIN-SPECIFIC LANGUAGES Nuno Oliveira Thank you!! University of Minho, Department of Informatics

More Related