MASS Java Documentation, Verification, and Testing

Slides:



Advertisements
Similar presentations
Java.  Java is an object-oriented programming language.  Java is important to us because Android programming uses Java.  However, Java is much more.
Advertisements

16/13/2015 3:30 AM6/13/2015 3:30 AM6/13/2015 3:30 AMIntroduction to Software Development What is a computer? A computer system contains: Central Processing.
Computer Science 162 Section 1 CS162 Teaching Staff.
26-Jun-15 Getting Ready for CIT Labs Lab is scheduled for 3;00-4:30 Fridays in Moore 207 Lab is not in Towne 309 (Registrar has it wrong) Everyone.
70-290: MCSE Guide to Managing a Microsoft Windows Server 2003 Environment Chapter 8: Implementing and Managing Printers.
30-Jun-15 Getting Ready for CIT Labs Lab is scheduled for 1:30-3:00 Fridays in Moore 207 Lab is not in Towne 313 (Registrar has it wrong) Everyone.
Chris Rouse CSS Cooperative Education Faculty Research Internship Winter / Spring 2014.
Slide 1 of 9 Presenting 24x7 Scheduler The art of computer automation Press PageDown key or click to advance.
Workflow API and workflow services A case study of biodiversity analysis using Windows Workflow Foundation Boris Milašinović Faculty of Electrical Engineering.
Data Structures and Programming.  John Edgar2.
BIT 285: ( Web) Application Programming Lecture 07 : Tuesday, January 27, 2015 Git.
Introduction to High-Level Language Programming
CSS Cooperative Education Faculty Research Internship Spring / Summer 2013 Richard Romanus 08/23/2013 Developing and Extending the MASS Library (Java)
Introduction Purpose This course describes the process of installing the KPIT GNU toolchain on your PC. Objective Learn how easy it is to get information.
1 Software Development Configuration management. \ 2 Software Configuration  Items that comprise all information produced as part of the software development.
COMCOM omponent bject odel After this presentation, you will: Be Able To: Conceptual understanding of COM How it works, What it’s used for Decode Acronyms.
EGEE is a project funded by the European Union under contract IST Testing processes Leanne Guy Testing activity manager JRA1 All hands meeting,
The Cluster Computing Project Robert L. Tureman Paul D. Camp Community College.
A Framework for Elastic Execution of Existing MPI Programs Aarthi Raveendran Tekin Bicer Gagan Agrawal 1.
A Framework for Elastic Execution of Existing MPI Programs Aarthi Raveendran Graduate Student Department Of CSE 1.
Loosely Coupled Parallelism: Clusters. Context We have studied older archictures for loosely coupled parallelism, such as mesh’s, hypercubes etc, which.
Testing and Debugging Version 1.0. All kinds of things can go wrong when you are developing a program. The compiler discovers syntax errors in your code.
From Quality Control to Quality Assurance…and Beyond Alan Page Microsoft.
CSS 700: MASS CUDA Parallel‐Computing Library for Multi‐Agent Spatial Simulation Fall Quarter 2014 Nathaniel Hart UW Bothell Computing & Software Systems.
(1) Introduction to Continuous Integration Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of.
Object Oriented Programming Criteria: P2 Date: 07/10/15 Name: Thomas Jazwinski.
Five todos when moving an application to distributed HTC.
BIT 285: ( Web) Application Programming Lecture 07 : Tuesday, January 27, 2015 Git.
Hongbin Li 11/13/2014 A Debugger of Parallel Mutli- Agent Spatial Simulation.
MASS C++ Updates JENNIFER KOWALSKY, What is MASS? Multi-Agent Spatial Simulation A library for parallelizing simulations and data analysis Uses.
Chapter 25 – Configuration Management 1Chapter 25 Configuration management.
Apache Ignite Compute Grid Research Corey Pentasuglia.
Error Analysis Logic Errors.
What is BizTalk ?
FOP: Multi-Screen Apps
The Distributed Application Debugger (DAD)
Development Environment
Apache Ignite Data Grid Research Corey Pentasuglia.
Metrics of Software Quality
Done By: Ashlee Lizarraga Ricky Usher Jacinto Roches Eli Gomez
Computer Terms Review from what language did C++ originate?
Debugging Intermittent Issues
CSE 374 Programming Concepts & Tools
Eclipse Navigation & Usage.
Debugging Intermittent Issues
Systems Analysis and Design
The University of Adelaide, School of Computer Science
Constructing a system with multiple computers or processors
Bomgar Remote support software
Malwarebytes Installation Issues Number Facing error with Malwarebytes software is not something unusual as most of the users use to face.
TRANSLATORS AND IDEs Key Revision Points.
Methodology & Current Results
CIS16 Application Development – Programming with Visual Basic
Intro. To Operating Systems
Constructing a system with multiple computers or processors
Constructing a system with multiple computers or processors
Quality Assurance in an Agile Development Team Michelle Wu 2018 PNSQC
Course: Module: Lesson # & Name Instructional Material 1 of 32 Lesson Delivery Mode: Lesson Duration: Document Name: 1. Professional Diploma in ERP Systems.
Constructing a system with multiple computers or processors
Programming.
Applied Software Project Management
Multithreaded Programming
BugHint: A Visual Debugger Based on Graph Mining
Operating System Introduction.
CS 240 – Advanced Programming Concepts
Review of Previous Lesson
1.3.7 High- and low-level languages and their translators
Java Code Review with CheckStyle
NOTICE! These materials are prepared only for the students enrolled in the course Distributed Software Development (DSD) at the Department of Computer.
SeeSoft A Visualization Tool..
Presentation transcript:

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

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.

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.

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.

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.

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.

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.

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.

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.

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 email 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.

Questions?