Presentation is loading. Please wait.

Presentation is loading. Please wait.

MASS Java Documentation, Verification, and Testing

Similar presentations


Presentation on theme: "MASS Java Documentation, Verification, and Testing"— Presentation transcript:

1 MASS Java Documentation, Verification, and Testing
Preparing MASS Java for Release Andrew VanKooten

2 MASS Developed by the Distributed Systems Laboratory
Parallel-Computing Library Two major components: Distributed-Shared Memory called Places Execution instances that run on those Places called Agents Can run on multiple computing nodes MASS is a parallel-computing library for Multi-Agent Spatial Simulation developed by the Distributed Systems Laboratory here at UW Bothell. It is intended to parallelize a program in a way that is easier to program than other parallelizing libraries such as MPI (Message Passing Interface). MASS is made up of a distributed-shared memory over multiple computing nodes called Places, and a set of execution instances that reside on those Places called Agents. Those Agents can interact with each other and move from Place to Place.

3 Types of MASS Applications
Simulations: Wave2D RandomWalk Sugarscape Data Analysis: Motif Finder Climate Analysis Wave2D is a simulation of Schrodinger's wave diffusion equation. It uses a 2D matrix of Places that act as a single point and slowly diffuses over time. RandomWalk is a simulation of a bunch of “Objects” walking from the center in random directions. Each object is an Agent. Sugarscape simulates ants walking over the Place matrix looking for sugar. Motif Finder is an analysis tool used to find recurrent or significant patterns in a graph. Used to compare similarities in DNA. Climate Analysis is a big data analysis tool that allow analysis on climate data and calculations on large data sets.

4 Project Goals Verify current version of MASS Java with test programs
Verify MASS Debugger with current version of MASS Test MASS with multiple AWS EC2 instances Complete various documentation: MASS Java Specification MASS Java Developer Guide MASS Java AWS Setup Guide This project had four main goals. Verify that the latest versions of MASS Java have been integrated, and test it with the applications listed earlier. Also, update those tests so they can work with the most recent version. Integrate the MASS Debugger with the current version of MASS and verify to see if it is still functional. Create multiple AWS EC2 instances and test MASS on them with the test applications. Update and finish documentation including a technical manual, developer guide, and AWS setup guide.

5 1. Verify MASS Java Tested and verified most current version of MASS Java Most issues resulted from a lack of documentation Debugging remote processes can be difficult Test programs also had to be updated The largest part of this project was to test the most current version of MASS Java with multiple test applications like the one two slides ago. Those test programs also had to be updated to the current version of MASS. Doing so was challenging due to the size of the project and the lack of documentation. Also, trying to debug remote processes can be difficult since you cannot see the output as its running, but luckily there are systems within MASS to help with this.

6 2. Verify MASS Debugger Tool that was developed to help visualize data of MASS applications GUI application Project had to be integrated with current version of MASS Did not require many changes The MASS Debugger is a tool developed a year ago that can help visualize the data in a MASS application. It allows you to pause the application at any time, inspect the data in any Place or Agent, and even add new values to them. It is very easy to use, all that is needed in the MASS application is a few lines of code. This project had to be integrated with MASS and tested with some of the test applications. This was my first time debugging a GUI application, so that was a challenge at first but ultimately it did not require any major changes.

7 3. Test MASS Java on AWS Set up AWS EC2 instances to test MASS Java on
Get MASS to communicate between multiple instances Ultimately, to run MASS efficiently, a cluster of computers is required and not everyone has access to one. So, I had to figure how to set up and run MASS Java on multiple AWS EC2. The setup of EC2 instances is not too difficult and very intuitive, but the more challenging part was getting MASS to communicate between multiple instances. MASS would use a file that contained the hostname, the username, and the password of each computing node to connect to, but this did not work for EC2 instances and it wasn’t necessarily the best idea. So, I modified MASS to allow the use of private keys making it so a password was not needed.

8 4. MASS Java Documentation
Documentation for MASS Java was last updated in 2010 Developing MASS and developing MASS applications is much clearer The last time the MASS Java manual was updated was in 2010 and MASS has grown larger and updated since then. Because of this, starting out developing MASS was difficult and you had to figure out many things that were not explicitly mentioned somewhere. I tried my best to translate my experiences making MASS work and how it works into the new and updated documentation so hopefully, the time taken to figure out how to use MASS will be shortened, and that people outside of the distributed systems lab can use it without hassle.

9 Future Work Continue to add documentation to source code
Update other applications to work with MASS Update design to allow for more scalability and additional features More bug fixes may be necessary There is still work to be done on MASS. The source code and documentation may still need to be updated with comments, especially if new features are added. There are still more applications for MASS that have been developed, but may not work with the current version, so those will need to be updated. Some bugs that came up testing MASS, were resulted because of the design, so some components may need a redesign to allow for better scalability and additional features. And there may be more bugs that I did not catch, so those will need to found and fixed.

10 What I Learned Documentation and commenting is worth it
Communication is important How to better manage my time to work on a longer term project Technical knowledge of distributed systems Use of many tools for software development What did I learn? First of all, that documentation and commenting is worth it! They are not necessarily for you but for the person who has to make your code work. Communication is important. There were many time when communication was slow, so I would become blocked because I was waiting for an back with files I needed or some help. This was the largest software project I have worked on and I was working on it by myself, so I had to learn how to manage my time so I could get enough work done a week. I built upon my knowledge of distributed systems, by working the back end of one I was able to gain a deeper understanding of how one can work. And of course, I learned how to use many tools that are used for software development including Amazon Web Services.

11 Questions?


Download ppt "MASS Java Documentation, Verification, and Testing"

Similar presentations


Ads by Google