Award Date

8-2010

Degree Type

Thesis

Degree Name

Master of Science in Computer Science

First Committee Member

Jan Pedersen, Chair

Second Committee Member

Laxmi Gewali

Third Committee Member

Evangelos Yfantis

Graduate Faculty Representative

Aly Said

Number of Pages

108

Abstract

With networks, multiprocessors, and multi-threaded systems becoming more common in our world it is increasingly evident that concurrent programming is not something to be ignored or marginalized even though many takes on concurrency (mainly by means of monitors or shared resources) have proven to be difficult to deal with on large scales. Thankfully, a good deal of work has already been done to combat this, through CSP, occam, and other such derivatives, to produce a scalable process oriented paradigm. Still, it is cumbersome to attempt to deal with the intricacies of such communicating networks down to every minutia; if, instead, it was possible to manage communicating elements on a higher level it would be far more practical to design large scale networks of processes!

As such, Visual Occam has been designed to automate some of the inner workings of occam to allow any user (novice or otherwise) the ability to create complex networks of communicating processes through easy to understand user interactions and interfaces. Taking a number of cues from digital circuit design software and modern integrated development environments, it is possible to select components (both predefined and arbitrarily complex user created systems) from a library of objects, hook them together in a network, and produce compilable code without having to worry about how or why the chosen components perform their function. Since any of these components may themselves be networks of processes, it becomes trivial to construct large systems that would otherwise be unwieldy to put together by hand.

The end result? A high level, easy to understand, visual abstraction of those concurrent networks previously so frustrating to develop.

Keywords

Communicating sequential processes (CSP); Human user interface design; Occam (Computer program language); Process oriented design; Software engineering; User interfaces (Computer systems); Visual programming (Computer science)

Disciplines

Computer Sciences | Graphics and Human Computer Interfaces | OS and Networks | Programming Languages and Compilers | Software Engineering

Language

English