UCOSPLogXinxinKou

Kevin Brightwell edited this page Aug 26, 2015 · 1 revision
Clone this wiki locally

Each UCOSP participant is asked to log all the difficulties they have getting set up to understand Umple. This includes understanding how to model in Umple, using UmpleOnline, code that is difficult to figure out, and development tools that are hard to figure out, or don't seem to work properly. The more log entries added the more we can better get a grip on the usability issues with Umple, and the more we can help future new contributors come up to speed.

Log Entries in reverse chronological order

I usually update this log once a week, and I put what I finished and worked on in the past one week in one entry.

Project Summary

My work includes bug fixing, adding new features, editing wiki pages.

  • Issues Fixed:

    1. issue 656 (on Google Code): made the system detecting and generating negation (!) correctly.
    2. issue 662 (on Google Code): added implemented interfaces in umple class Json so each class diagram knows which interfaces they are implementing; added js code to make the connection between classes and interfaces show on the UI; added HTML code for the UI of interfaces.
    3. issue 681 (on Google Code): removed the relationship between filtered in and filtered out classes so that umpleonline won't stop by filters.
  • Feature Added: issue 651 (on Google Code)

    1. define the grammars of filters
    2. added empty and default filters which include everything in the model\
    3. made filters include a subset of the model
    4. added hops in filters, so that filters can include neighbors of the filtered in classes.
    5. modified the hops grammar so that filters always include the entire super class hierarchy the filtered in classes by default. However, the setting can be overwritten in the filter.
    6. made the system support multiple filters, and made nested filters available (not committed yet).
    7. Filters are able to select classes from certain namespaces.
  • Filter Wiki Page: https://code.google.com/p/umple/wiki/Umple_model_filter?ts=1427251638&updated=Umple_model_filter

  • Future Work: the invocation of filters through Umpleonline

I will wrap up my work left by the end of this week.

It was a great experience working on UMPLE. I learned a lot about the functionality of grammars and compilers and gained experience in programming in a project with a large code base. If there's any problems within in the code I committed, please let me know and I will come back and fix them.

6th April 2015

  1. working on using filter to select classes in a specific namespaces

3rd April 2015

  1. made the system support multiple filters
  2. add nested filters, shown below: > http://i.imgur.com/9b7H8ge.png

31 March 2015

  1. changed the names and the format of "hops" in the filter grammar
  2. working on the combination of the filters, ex:
filter name_a
{
  hops{
    super *;
    sub 1;
    association 1;
  }
  include AAA;
}

filter name_b
{
  hops{
    super 1;
    sub 0;
  }

  include BBB;
}

//combining filter name_a and name_b with their parent, children and association setting

filter name_c
{
  filter name_a, name_b;
}

24 March 2015

  1. Modified the filter grammars after discussion with Andrew and Tim and edited the wiki page: https://code.google.com/p/umple/wiki/Umple_model_filter?ts=1427251638&updated=Umple_model_filter
  2. added tests for including superclasses and subclasses
  3. changed the filter code so that it include all superclass hierarchy and no subclass by default, the setting can be changed in the filter.

17 March 2015

  1. added including related classes tests/functions for filters: looked at association, association variable, association end classes to figure out how association is implemented in umple
  2. refactor the code: added 1--many umpleclass in filter to replace class names

10 March 2015

  1. Added default/empty filter tests; umple system can recognize the empty filter and include everything.
  2. Changed the relationship between umple model and filters from 1->0.1 to 1->many.
  3. Worked on the invocation of different umple filters.

3 March 2015

25Feburary 2015

Issue 651 (on Google Code)

  1. set one filter to one model (1 to 1 relationship)
  2. added names and values in a filter
  3. added parsing filter test
  4. added applying filter test
  5. added applyFilter() Function in model class
  6. refactored the code

Issue 681 (on Google Code)

  1. making filters to work on umpleonline

17rd Feburary 2015

  1. For issue 651 (on Google Code), defined the filter EBNF syntax(filter was diagram).
  2. Added an wiki page for the examples and proposed syntax of filters: https://code.google.com/p/umple/wiki/Umple_model_filter?ts=1424189882&updated=Umple_model_filter
  3. Will add examples of how to activate filters using command line in the wiki page (there will be umple code for activating filters).
  4. Making tests for implementing filters
  5. Tested the parsing and metadata of filters

10rd Feburary 2015

In the past week, I fixed the issue with the interfaces UI and added a value in the diagram grammar.

  1. UI issue: moving the interface doesn't update the generalization arrow positions. Also, the generalization error doesn't seem to render on the editable diagram when the interface+generalization is input via code.
    • Solution: update the umple_system.js, add interfaces checking in UmpleSystem.redraw(umpleclass) and UmpleSystem.redrawGeneralizationsTo(umpleClass)
  2. went through the EBNF grammar rules and umple .grammar files in order to define the diagram grammars.
  3. define diagram grammar in .grammar file: added values in a diagram.
    • right now the following code:
   diagram 
   { 
    value1, value2 
   }

can be parsed and stored as metadata.

  1. the next step would be the code generation: if the class name is in the diagram, then generate the corresponding code( java, json, php...)
  2. problems I ran into:
    • When I did a "svn up" after modified some UI code, I got the following error: sqllite: database disk image is malformed. Some threads suggest that I should do an integrity check on the sqlite database that keeps track of the repository. I just recreated the work copy merged my change (the dump solution).
    • When I ran a full build after change some java code in cruise.umple.src-gen for testing (which should be erased after rebuild), I got an umple compiler error. I reverted all my changes, the error kept the same... I had to redownloaded the source code and merged my changes agian. ## 3rd Feburary 2015 In the past week, I mainly worked on the connection between umple classes and interfaces on the editable UI:
  3. added implemented interfaces in umple class Json so each class diagram knows which interfaces they are implementing
  4. added js code to make the connection between classes and interfaces show on the UI; http://i.imgur.com/ZVuEA18.png
  5. change the html of the interfaces to improve the editablility of interfaces.
  6. a problem to be noticed is that: if the umple code of the implemented interfaces is created later than the class umple code, the diagrams need to be moved to show the connection between classes and interfaces.
  7. started working on the diagram feature issue 651 (on Google Code): went through the code of how to add a grammar entry parsing the diagrams.

28th January 2015

  • Simply adding jsonForInterface will only change the json output, and it requires adding more front-end code to show interfaces on UI. In order to make it pragmatically easier, I tweaked the json generator code so that it will take umpleinterface as a type of umpleclass and use a boolean isInterface to differentiate interfaces and classes.
  • a problem I came across is js won't update in the browser, ctrl+f5 will fix it.
  • for editable UI, the default layout of interfaces was also changed so that newly created interfaces wouldn't overlap with classes.
  • now interfaces can show up in editable UI: http://i.imgur.com/6l8F7Pm.jpg
  • interfaces are in Json now: http://i.imgur.com/wOk1eIW.jpg ## 26th January 2015 ### issue 662 (on Google Code)
  • wrote a unit test for Json code generation in JsonTemplateTest.java in test/cruise.umple.implementation.json:
    1. created an .ump file including interface
    2. checked the json output in the console, found that the jsoninterface is not generated
  • changed the JsonGenerate.java file to make the json output as expected: line 193

String json = "{" + jsonForClasses + ", " + jsonForInterfaces + ", " + jsonForAssociations + " }";

from

String json = "{" + jsonForClasses + ", " + jsonForAssociations + " }";

  • change the test cases to make them green
  • run ant -DshouldPackageUmpleOnline=true -Dmyenv=local -f build.umple.xml packageUmpleonline to update the local umpleonline server
  • the Json code is correctly Generated

24th January 2015

  • Set up local Umpleonline following the instruction on https://code.google.com/p/umple/wiki/SettingUpLocalUmpleOnlineWebServer
  • Start working on issue 664 (on Google Code) ## 21th January 2015 Term Project Plan: https://docs.google.com/document/d/1hedLY7_eCPev58HwWoPsAAfLxuA15kEDlRmKrxpcTZ0/edit?usp=sharing ## 20th January 2015 Had a meeting with Andrew: got a live code demo of the Umple compiling process; now I have a more clear understanding of how the code get parsed into token streams and AST. ## 19th January 2015
  • Started working on issue 664 (on Google Code)
  • Read the documentation of Umple architecture: https://code.google.com/p/umple/wiki/Architecture ## 18th January 2015 Last Day of Code Sprint:
  • Talked with Andrew about the term project.
  • Started from issue 664 (on Google Code), figured out that there is not interface attribute for JSON code.
  • The main project for this term will be issue 651 (on Google Code): adding a diagram feature to generate a subset of classes
  • To Do: install umpleonline locally; write a project plan ## 17th January 2015 Second Day of Code Sprint:
  • Ran into environment problems after installing Jet and changing the Jet template. Resolved the problem by removing the Jet project.
  • Kept working on issue 656 (on Google Code); got confused by the recursive negation() function in umple_code.ump; found the error in the code: the negation of attributes was handled by negating the operators; the negation of functions was not handled, ex: !(age<18) was converted to age >= 18; !getFlag() was converted to getFlag().
  • changed displayNegation attributes in the constrainVariables and made a patch, however the tests failed after the modification.
  • Fixed the issue by tweaking the negation() function: if it's a attribute then negate the operator; if it's a function then add a "!" in front of the generated code (Huge thanks for Andrew's help).

16th January 2015

First Day of Code Sprint:

  • Getting familiar with Umple infrastructure and architecture
  • Regenerating bugs from the starter tickets
  • Starting working on issue 656 (on Google Code): Added failed tests for issue 656 (on Google Code) by testing parsing and matedata in UmpleParserStateMachineTest.java

14th January 2015

Working on the tasks from the to-do list:

  • Re-created a model using UmpleOnline: http://cruise.site.uottawa.ca/umpleonline/umple.php?model=150114559173
  • Ran a full build, 3866 tests passed (if some failed, run a full rebuild)
  • Added a test for ManyAttribute Class of Java programs and made a patch of it.
  • Loaded the umple projects into eclipse (Note: JRE 1.7 is required to remove all the errors in the code)
  • Browsing through the issues in bugs.umple.org
  • Working on Issue 643 (on Google Code)

7th January 2015

  • Played with Umpleonline.
  • Installed Umple Eclipse plugin.
  • Set up development environment for Ubuntu 14.04.
  • Ran a full build successfully
  • Had the first hangout meeting with the team.