UCOSPLogNabilMaadarani

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

Each UCOSP participant is asked to log all their accomplishments as well as the difficulties they have getting set up to understand Umple and other experiences they have. Difficulties might include 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. Mention issue numbers and revision numbers in your log to help create hyperlinks.

UAS Engine

Link to project Github.

Log entries in reverse chronological order

Table of Contents

November 21-28 2014
November 21 2014
November 14 2014
November 11 2014
November 6 2014
November 5 2014
October 31 2014
October 30 2014
October 23 2014
October 17 2014
October 10 2014
October 2 2014
September 30 2014
September 25 2014
September 20 2014
September 19 2014
September 18 2014
September 16-17 2014
September 12 2014
September 9 2014
September 8 2014
September 7 2014
September 6 2014
September 5 2014

November 21-28 2014 (worked on a small piece every day)

  • Found an open-source graphing library that uses HTML5 and JavaScript to draw simple bar graphs.
  • Used the library with the inputs received from the code analyzer to draw the bar graph showing the number of classes, attributes, and associations.
  • Linked all pieces together in a Main.php file that runs the entire application.
  • Fixed bugs and updated documentation on GitHub for better user instructions.
  • Project is complete.

November 21 2014

  • Started the last piece of UAS-Engine: the Grapher. This component collects necessary data (# of classes, attributes, associations) generated by the Code Analysis tool and generates a graph (or similar schema) portraying that data.
  • Completed fetching the number of classes, attributes, and associations of the entire project by picking out the relevant information from the HTML file generated by the Code Analysis tool.
  • At this point, PHP is still used to do the above, but I might need JQuery or another library to help me generate a final HTML file that will include the graph.

November 14 2014

  • After thorough research, I found that it is more convenient to make UAS-Engine a command-line only tool as files are being created/modified locally, and this is problematic to do through a browser as file/directory permissions need to be modified.

November 11 2014

  • Started implementing the app's frontend using HTML5 and PHP.
  • Had a lot of trouble figuring out how to include PHP files outside the webroot with the current app schema (originally created by Andrew), but finally figured it out by adding a PHP handler in the webroot that takes care of include the backend files.
  • The app will function different in the browser than the current command line tool: in a browser, we don't have control over where projects are downloaded as this is set by the browser itself. Therefore, the directory attribute will be removed as it's irrelevant.
  • Downloading through the browser is very different than through the command line, so I will have to create different PHP files for that. I've decided to keep the command line code in case people prefer using it over the browser.

November 6 2014

  • Talked to Miguel and decided to drop the manual umplification for MOA since it will take far too much time, preventing me from presenting something.
  • Added the code analysis part to the app.
  • The umplificator and the code analyzer have some serious bugs that need to be fixed, because it is preventing correct umplification and code analysis of the projects downloaded.

November 5 2014

  • Made more progress with the manual umplification of moa. 92 Umple classes have been manually umplified so far (out of 390).
  • I can see that the umplificator is throwing an exception when trying to umplify with level 2 (classes + attributes + associations). Will talk to Miguel about this tomorrow.
  • After the umplification issue above is resolved, I will use the code analyzer on the umple files generated, and output the results to a web page.
  • Problem: Running the Umple JUnit tests from the command is taking forever. I have tried everything from switching between multiple Ant versions, to updating to the latest JDK 7, but the command line hangs when running the tests. Will talk to Tim and/or Miguel about this today.

October 31 2014

  • Changed the way the Downloader works: from now on, all that needs to be provided is the project name and whether it's on Github or Google Code, and the correct project is automatically downloaded.
  • Now the zip file (from Github projects) containing the project is read and extracted to the destination directory chosen by the user. Previously, the zip was stored as well. This gets rid of non-needed files.
  • Added new functionality: after the project is downloaded, it is now automatically umplified (umplification level can be chosen). The resulting umple files are stored in "src-umple" in the root directory of the downloaded project; this ensures cleanliness and readability.
  • Updated the Read Me of UAS-Engine on Github showing how the tool can be used as of now.
  • Created an Umple Wiki page regarding UAS-Engine. Find it here.

October 30 2014

  • Still doing the manual umplification for MOA. This process takes a very large amount of time because there are 390 Umple files to go through to find classes, attributes, and associations.
  • Check current progress here.
  • Started working on automatically umplifying projects after they are downloaded.

October 23 2014

  • Made major enhancements to the Downloader by completely supporting Google Code and Github repos depending on the user's choice.
  • Updated UAS-Engine's Github page to explain how to use the downloader.
  • Ready to move on to analyzing downloaded projects and umplifying them.

October 17 2014

  • Tried integrating the Downloader into the web app, but realized that it is incorrect: the downloader needs to be a command line tool in order to have more flexibility regarding where to download the projects and how to manipulate them (unzipping, etc).
  • Completed downloader model in Umple (should be converted to PHP before use).
  • Created command-line tool that allows downloading projects to any specified destination directory (for now it simply downloads the zip).
  • Plan to add following functionalities: unzipping project, and figuring out which directory(ies) to apply umplification to.
  • Just added unzipping capability.

October 10 2014

  • In the process of doing manual umplification on the MOA project to compare with the analyzer.
  • Also working on the Downloader component of the UAS Engine and writing PHPUnit tests for it.
  • Plan to get more work done during the Reading Week.

October 2 2014

  • Made a formal plan with Miguel to manually umplify the MOA project up to its association, start off from level 0: I will have to manually translate all the Java attributes and associations into their equivalents in Umple.
  • Once that's done, the umplificator will be used at level two, and the code analyzer will show us if the numbers found are close to what we find above. If not, the umplificator will be enhanced.
  • Also, the final umple source code of MOA will be used to generate Java files that need to pass the same test cases included with the MOA project.

September 30 2014

  • Will start doing manual umplification of the MOA application, and will report numbers to Miguel as agreed with him.
  • It's probably a good idea to include this app in the UAS-Engine as it uses Google Code versus GitHub which is used by most of the other projects.

September 25 2014

  • Built a preliminary model of the Downloader with Umple, and PHP is correctly generated.
  • Currently setting up unit tests before I continue building the application. I'm using PHPUnit: had several issues setting it up on Mavericks.
  • Connected with another team of the SEG4910 class who is using PHPUnit, and I was able to get it up and running on my system.

September 20 2014

  • Second day of the UCOSP Code Sprint.
  • Got my patch for issue 627 (on Google Code) approved and committed to Umple (verified that changes were applied through Umple Online: GarageDoor is now decapitalized).
  • Discussed my plan for the 2 semesters with Andrew: I will be building a separate tool, UAS-Engine, that will fetch Java projects from multiple sources (GitHub, Google Code, etc), reverse engineer them to Umple code and eventually build a database of statistics regarding the projects. This will ideally show the progress of the umplificator as it can show how the stats change between 2 different runs.
  • Created the GitHub repo for UAS-Engine, and built the skeleton of the PHP app that will host the engine. Currently, it only prints Hello World in the browser.
  • Next task is to build a model of the downloader component using umple code. The downloader shall be able to pull the source code of a project given its URL (as a first step). Then, I will try to output a simple statistic (number of lines of code) in the web app.
  • The issue regarding this project is issue 624. I've updated it to include necessary information.

September 19 2014

  • First day of the UCOSP Code Sprint: met the team in person, and mentor Andrew.
  • After thorough inspection and verification, I have sent a patch with no errors to Tim. Will meet him tomorrow to discuss long term goals of my involvement with the Umple project (umplification).

September 18 2014

  • Fixed issue 627: modified code in Generator_CodeJava.ump and Generator_CodeCpp.ump to de-capitalize first letter of the state machine attribute in case it's capitalized. The tests previously written now pass (capitalizedStateMachineAttribute.ump). It doesn't look like state machine code generation is supported in Ruby yet as there was no complaint of missing testName.ruby.txt file. Could be wrong, but I'll check with Andrew in the morning.
  • Patch sent to professor Tim and Hamoud for review.
  • Plan to speak to Andrew tomorrow at the code sprint regarding umplication, and the potential PHP web app associated with it.

September 16-17 2014

  • Added an Umple State Machine example to test the capitalization issue, and wrote a JUnit test that compares the Umple code output to text files that I wrote myself. The test obviously fails when because the variable name generated is capitalized, while the expected output is a de-capitalized name. Since the test driven development approached is used, this is normal.
  • The next step is to find where exactly the variable name is generated, and force de-capitalizing it. When the test passes, I will send Tim my first patch.

September 12 2014

  • Had second Hangout with Tim and the team: highlighted progress and immediate/long term plans.
  • As promised, here is what I did to get rid of the Eclipse problems (I'm using Eclipse Kepler):
    1. Do a full ant build from the command line.
    2. After the build is successful, highlight all Eclipse projects (make sure you're using the version that include the Modeling Tools) => right click => refresh. You should have no errors at this point. You don't need to compile Master.ump because it is already done in the command line, but I did not get any errors when I did that after the refresh.
    3. Run the JUnit tests as mentioned in the instructions. In my case, everything passed except an ant related test. After discussing it with graduates, I came to the conclusion that it is a very minor issue, and solely related to my Eclipse since the test passes in the command line. For that reason, I added an "@Ignore" on top of that test (will never commit that change though).
    4. (Optional) If you need JET, install it using the newly updated instructions from the Wiki.
  • Updated my log format to enable easy navigation to specific log entries. This will definitely be helpful in the future when my log page becomes much larger.
  • Top priority at the moment is to find the solution to issue 627 and submit a patch before the code sprint. Back To Top

September 9 2014

  • Met with Miguel, and discussed the Eclipse problems: after refreshing my svn repo, generating my own umple complier, and doing a full build, compiling Master.ump stopped generating errors in Eclipse.
  • I was finally able to install JET. The method described in the Wiki is outdated, so I updated it with relevant information.
  • Still having the ant related JUnit test failing in Eclipse only. Waiting for a reply to my email regarding this.
  • Opened issue 627 regarding the problem I had outlined on September 8. Will try to work on that once I read enough documentation, but I think I have a starting point (Generator_CodeJava.ump).
  • Got assigned issue issue 624. Discussed it with Miguel, and could work on it after I've solved some small Umple issues first. Back To Top

September 8 2014

  • Emailed mentor Miguel Garzon, and will meet him tomorrow to resolve Eclipse/JET problems, and discuss umplification.
  • Read further through the manual:
    • I find that State Machine and the way they're translated into code (especially Java & Ruby) and SVG graphs peak my interest the most so far. Would also be really cool if the user can draw the state diagrams in Umple Online (will discuss this possibility with Tim).
    • Potential issue: I also noticed that Umple keeps the the attribute representing the states (i.e. status, garageDoor) the same way it is written in Umple code when generating Java and Ruby code. This results is potentially having a capitalized variable name, which is exactly identical to the Enum of states itself. This is considered bad code practice, and also leads to confusing code. See below for the code snippets from the -longer- garage door example. I'm including the translation of class Garage { GarageDoor {...} }

Code translation to Java:

private GarageDoor GarageDoor;

Code translation to Ruby:

private UNKNOWN ID: type GarageDoor;

Code translation to C++ (seems like the variable name in C++ is correctly lowercased):

// State Machines
GarageDoor garageDoor;
  • Plan to finish the finish the recommended readings soon and start looking at some issues to solve. Back To Top

September 7 2014

Added alternate ant directory in the Wiki (in case Homebrew was used to install ant on Mac OSX).
Back To Top

September 6 2014

  • Followed the DevelopmentSetUp page to set up my environment (on Mac OSX 10.9 - Mavericks), and ran into following issues:
    • Ant failed to build because of taskdef's. Fixed: Added ant-contrib jar to ant's lib directory /usr/share/ant/lib/
    • Eclipse fails to install JET, with the following error: Downloaded stream not a valid archive. Check the server. Will reach out by email for help regarding this.
    • All JUnit tests pass from Eclipse except the "BuilderTest". The problem seems to be with Ant inside Eclipse (all tests pass from the command-line). I tried numerous things, including setting the "Ant Home" in Eclipse to Ant's installation location, but had no luck making that test work.
    • Whenever I compile Master.ump and refresh the projects in Eclipse, I get 17 errors (even right after a fresh build). Will reach out by email regarding this.
  • It seems like my command line environment works fine, but I'd like to resolve the Eclipse issues asap.
    Back To Top

September 5 2014

  • Read the first couple of pages of the manual.
  • Had initial meeting with Tim and fellow UCOSPs via Google Hangout. That gave me a much better understanding on the things we'll be working with, and what is expected from us.
  • I had previously used Umple Online with other courses, so I played around with it to refresh my memory, and tried out some examples.
  • Analyzed the Java code generated from example to better understand how associations are translated into code. I feel particularly interested in the translation of diagrams into code, as this is exactly how knowledge is translated from human perspective into machine perspective. Might choose to work in this area (TBD).
  • Found a typo in my name under my Umple user profile, and fixed it.
  • I plan to get my development environment up and running this weekend, and start reading through the documentation and the issues proposed to figure out what I would like to work during the semester (and hopefully have a formal plan to present to Tim by the next Hangout).
    Back To Top