Clone this wiki locally
Each UCOSP participant is asked to log all the steps they take as they make progress through the semester. This includes difficulties they faced (getting set up, 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.
Please record entries in reverse chronological order
I began my work on issue 1001 yesterday. Using Eclipse's debugger, I arrived at a solution today. However, there are 37 existing tests that need to be updated as a result of my change. I am unsure if there is a specific process to follow when updating existing tests, so I have posted a question regarding this on the issue page.
The main cause of issue 1001 was that a parallel state machine's parent state name was not included when the parent state's state machine name differed from it.
Following our meeting today, and Vahdat's comments on my PR for issue 778, I have created a new issue, and I have assigned it to myself. My plan now is to update my PR so that it can be merged to resolve issue 778. I will begin working on the new issue this weekend.
Had a productive past couple of days! I submitted a PR for issue 778. I will now start working on issue 935. I have two midterms, and another assignment due next week, so I will likely not have this issue completed by Friday.
I have now received feedback and answers for my questions and comments in issue 935 and issue 778. For issue 778 I now have a good understanding of the change I need to make. I also have a good understanding of issue 935, but I have a remaining question which I posted on the issue's page.
I also noted that Vahdat mentioned me in issue 140. I will begin investigating this issue after I have finished issues 935 and 778.
I also spent some time reading the following document on UML State Machine Diagrams .
For both issue 935, and issue 778, I am waiting for feedback on my comments and questions. Before I can create solutions for either of these issues, I need a better understanding of the expected behaviour. I spent a lot of time today walking through the current execution of the code in both cases using Eclipse's debugger.
For issue 935, I believe the file that will need to be modified is state_machine_Event.ump . From my understanding, the UmpleInternalParser creates all of the State objects, and associates their exit and entry actions with them. It is up to the code generator to correctly write the event methods. I also noticed differences between the PHP and Java code generated for the example in issue 935. I posted a comment in the issue regarding this observation.
For issue 778, I believe I have found the section in UmpleInternalParser where the parallel state machines are being created and added to the UmpleModel. I posted a comment in the issue regarding this.
This past week was a "week from hell" with regards to my other three courses. I unfortunately did not make progress on issue 935. However, I spent a lot of time today investigating both issue 935 and issue 778. I added my questions and comments to both of the issue's discussion feeds. While waiting for feedback, my plan is to use the Eclipse debugger to see what areas of the code are being called in each issue's example. I am hoping that this will give me a general idea of where changes should be made.
As I mentioned in the group meeting today, I hope to be finished with both of these issues by next Friday. I also sent Vahdat an email asking how I should prioritize the remaining state machine issues. I will be devoting all of Sunday to Umple to get caught up with my missed time this past week.
I submitted my PR for issue 925 yesterday, and it has now been merged into Umple's master branch. The next issue I will work on is issue 935 the sequence of exit actions are not executed correctly. I will begin my investigation in the next couple of days.
January 31st - February 1st
I have successfully implemented my fix for issue 925. One of the tricky parts to resolving this issue was determining where to place the fix in UmpleInternalParser_CodeStateMachine.ump . Initially, I tried fixing the issue in "postTokenStateMachineAnalysis". I ran into problems though when I tried modifying the final states activity, transition, action, and nested state machine lists. I then realized that I could analyze the final state, and refactor it, in the "analyzeState" method.
Another issue I ran into during my work was that I did not realize that line number comments had to be removed from the .java.txt files for template tests. The Eclipse debugger helped me realize this.
I have added a warning (W072RefactoredFinalState) that will be generated if Umple detects and omits do activities, nested state machines, exit actions, and/or outgoing transitions in a final state. I have also added tests for the warning to "UmpleParserStateMachineTests.java". Tomorrow, I will finish the Umple User Manual page for the W072, and I will submit a PR.
I began my investigation on issue 925, and posted a couple of questions on the issue page. I have a very busy week ahead with interviews for summer coop positions, and performing usability tests for my "User Interface" group project. I am aiming to have this issue resolved by the end of the week.
I also posted an observation I made on UmpleOnline's slow loading time
I submitted a pull request for issue #923 . The most difficult part of solving this issue was determining which file I needed to modify for both the Java and PHP code generation. As a result of working on this issue, I now have a much better understanding of how Umple's code generation works. I also know how to create tests for the "ClassTemplateTest" files.
I browsed through the current state machine issues to see what I will be working on next. After finding the following four issues, I sent Tim and Vahdat an email to see which one they would like me to work on.
One of my accomplishments on the last day of the code sprint was completing my fixes for the UmpleOnline examples so that their generated Java and PHP files could be compiled. From my pull request, Vahdat identified a new issue regarding Umple traits. I spent some time investigating the issue with him, and he will be developing a fix for it. Once the fix is completed, issue #758 will be closed.
I also developed Java test cases for issue issue #923. I added my tests to JavaClassTemplateTest.java, and confirmed that they were being executed. I am aiming to submit a pull request for this issue by Friday evening. I am currently catching up with the coursework that I missed last Friday, and reviewing my school assignments that are due this week.
For my term project, I have chosen to concentrate on Umple's state machines. I will be looking for new state machine issues to work on over the next few days.
Overall, I really enjoyed my time at the code sprint. It was great to get to know everyone in person, and I am much more familiar with Umple's system architecture, as well as its syntax and semantics. I am looking forward to continuing to develop my knowledge of the system, and resolving more issues.
As a result of modifying the "GeometricSystem.ump" UmpleOnline example, I discovered a bug with Umple's PHP code generation. I noticed that Umple's PHP code generation does not correctly convert method parameters to valid PHP method parameters. I was instructed by Vahdat to open the following issue #964. Before posting the issue, I spent some time checking how PHP processes method parameters.
For the rest of the day, I continued my investigation of issue #923. After a lot of "grepping", and reading the JavaDocs, I determined the location in which I need to implement my change. In "class_MethodDeclaration.ump", there is the following line:
String override = aMethod.getIsImplemented() ? " @Override\n" : "";
There is no code that checks if the method has been implemented by a state machine. I confirmed my findings with Vahdat. My next steps are to create test cases for the issue, and then implement my solution.
At the end of the day, I ran into an issue with git when I tried to make one last change for issue #758's PR. After my committing my change, and performing the steps in "Step 8" of CONTRIBUTING.md I could not push my changes up to my branch. In the end, Vahdat and I found the following git command which resolved my issue:
git push -f origin resolve_issue_758
Today was a productive day. I worked through all of the Umple examples that were failing their Java and PHP compilation. As I fixed the examples, I also spent time reviewing the Umple User manual whenever I came across unfamiliar syntax, as well as to review Umple's features. This was my first time working with PHP code as well, so I also spent some time exploring the generated PHP code, and understanding its syntax and semantics. I have submitted a PR for issue #758. I have started to investigate issue #923, and will be focusing on this issue tomorrow.
I have two new issues that I will be working on during the code sprint in Calgary:
- issue #758 Activate testing of UmpleOnline and User Manual examples during the build
- issue #923 No need for default implementations of interface while they are implemented by state machines
I gave Tim my revisions for the "Development Style" page so that some of the steps mapped to umple/CONTRIBUTING.md . I also updated issue #593 and it's corresponding pull request to show that it is now closed. I am busy finishing up my school assignments as much as I can before the code sprint.
I submitted a pull request for issue #593. I found the "Traffic Lights B" example in the umpleonline/ump/ directory. I used the following command to confirm that my fix corrected the issue:
ant -Dmyenv=local -f build.exampletests.xml allUserManualAndExampleTests
However, before I made any changes, I executed the above command and the following UmpleOnline examples failed their Java compilation:
I emailed Vahdat to see if a new issue should be created to fix these examples.
Today I believe I was able to identify the cause of issue #593. I came up with two general solutions for the issue. I updated the issue page with my findings, and to see if I can implement either of my solutions. I also need to determine where I will write my tests and the actual fix. So far I have looked through the directories listed in https://github.com/umple/umple/wiki/UmpleArchitectureStateMachines. I have asked for guidance on the issue page.
I also reviewed the "State Machine" section in the Umple User Manual, and notified Adam to include a typo fix for the "Pooled State Machine" page in his fixes for the user manual.
I am excited to begin working on my first Umple issue (https://github.com/umple/umple/issues/593). I confirmed with Vahdat that my development environment is ready to go, and I also received more information about the state machine and Gradle projects. I am going to start investigating issue 593 tomorrow, and I will do more research on Gradle over the next couple of days to see if I would like to pursue it as my project for the semester. Over the past couple of days, I have been working on school assignments that are due shortly after the code sprint so that I don't have to worry about them.
January 10th - 11th
Over the past couple of days, I have played around with a few more of the class diagram and state machine examples with Umple. I have also had the chance to look over the current issues, and a few that I would be interested in working on are:
Later on, when I become more familiar with Umple, and after resolving some issues, I'd be interested in working on https://github.com/umple/umple/issues/713 . Over the next couple of days, I am going to continue exploring Umple's codebase, and its architecture.
Using "Eclipse Installer", I added the modelling tools package for Eclipse Neon.2 Release (4.6.2). With the new package, the newest version of the Umple plugin from the site now works on my machine. After updating Eclipse, I ran a full test and it completed successfully.
I reviewed the "Umple Testing Architecture" page, as well as, the "Umple Architecture" page. I also setup Eclipse to do a full build of Umple thanks to Adam's guide https://github.com/umple/umple/wiki/Performing-a-Full-Build-of-Umple-In-Eclipse-Using-Ant
Tomorrow, I am going to go through more Umple examples, and look at some of the current issues on GitHub.
I completed setting up Eclipse with the "cruise.umple" and "cruise.umple.nebula" projects, and was able to successfully run a full JUnit test. Initially, the JUnit tests were failing. After doing a full re-build of Umple, all tests passed. I also added the most recent version of the Umple Eclipse plugin (cruise.umple.eclipse_126.96.36.19946.jar) from https://github.com/umple/umple/releases and placed it in Eclipse's "dropins" directory.
I also experimented with the "ant" command line tool. One of the commands I played around with was "ant -Dmyenv=local build.testbed.xml testJava".
I watched the following video to get oriented with Umple's examples: https://www.youtube.com/watch?v=HLWML9YSD_U I also went through the coop program class diagram example, and the garage door state machine example. I was able to use the command line compiler to compile both of these examples. This coming week, I will go through more examples, and implement my own.
My next steps are to review the "Umple Testing Architecture", and to review the current issues to determine the areas of Umple I would like to work on.
Progress on UCOSP resources:
1. Umple User Manual - Finished reviewing all material except the "Examples" section, planning on finishing this section by the end of the weekend (January 8th)
2. Completed review of "Philosophy and Vision", "Best Umple Use Practices", "Contribution Process To Umple", and the pull request tutorial
3. Architecture - Finished reviewing all material except the "Umple Testing Architecture" section, planning on finishing this section by Monday (January 9th)
4. Development Setup - Successfully completed everything up to "Step 3: Setting Up Eclipse" for my MacBook Pro running "macOS Sierra Version 10.12.2 (16C67)"
* visited the following Wikipedia pages to see what the "ant" and "ivy" build tools were:
Overall, I feel like I have a pretty good initial overview of Umple. I am looking forward to going through the examples, and resolving issues because I will improve my understanding of the system.