
%\documentstyle[11pt]{mybook}

\documentclass[12pt]{article}


\usepackage{graphicx,latexsym}

\setlength{\textwidth}{6in}
\setlength{\textheight}{9.25in}
\renewcommand{\baselinestretch}{1.5}

\begin{document}

\raggedbottom

\hsize=6in\hoffset=0.0in\vsize=9.25in\voffset=-0.75in
\def\bighsize{\hsize}
\def\myitemwidth{4.5in}

\pagestyle{plain}


\pagenumbering{arabic}

\thispagestyle{plain}

\noindent {\Large \bf BITS C461 Software Engineering}
\vskip0.1in
\noindent {\Large First Semester 2003-2004}
\vskip0.3in
\noindent {\Large \bf  Project Requirements:}

\vskip0.3in
\hskip0.2in{\large \bf JListen: A  Program Auralizer for Java}

\vskip0.4in 
\noindent {\bf Project Sponsor: \rm\vtop{\hbox{Aditya P. Mathur}\vskip0.051in\hbox{Department of Computer Science}\hbox{Purdue University, West Lafayette, IN, USA}}}

\vfill
\hbox to \hsize{\hfill Original: Aug 4, 2003. Revision: None.}

\newpage

\section{Long Term Goal}

The long term goal of this project is to create a commercially available, open source, too for auralizing Java programs. 
When executed, an auralized Java program is able to send commands to a sound server which then obeys these commands thereby resulting in sounds. Auralization of Java programs is likely to be useful in debugging, announcement of special events such as intrusion attempts, and for pure entertainment. 

For the purpose of auralization, the execution of every program is considered  as a sequence of events and activities. For example, "the value of a program variable become 0" is an event. The execution of a loop inside a program is an activity that covers several events. It is these program events that are mapped to various sounds through the auralization process. One can hear tthe auralized program  during its execution and conclude what events have occurred and what are the ongoing activities. 

\section{What is to be done\,?}

Selected teams of students of BITS~C461 will be required to complete the following tasks related to this project:

\begin{enumerate}

\item Understand and analyze project requirements. The product of this activity will be a list of high level and low level use cases, system sequence diagrams, and a domain model expressed in UML.

\item Complete a design of the various components of the Jlisten. The product of this activity will be a complete design of JListen and its individual components. The design must be expressed in UML.

\item A prototype of Jlisten. The prototype will demonstrate how a full-fledged JListen would work. The prototype  will have only a selected subset of the features that a full fledged JListen might have. Teams working on the project will decide what features to select for prototyping.

\end{enumerate}




\section{Using JListen}

As shown in  Figure~\ref{jlisten-arch}, a user of Jlisten begins with a Java program $J$ that is to be auralized. The user then specifes what events and activities in $J$ are to be auralized. This specification is expressed in Listen Specification Language (LSL).  LSL allows specification of events and activities in a program that need to to be auralized. LSL also allows the specification of what sounds are to be associated with an event or an activity and at what rate these are to be played. The core of LSL  is independent of the programming language used for auralizing a program. By adding a list of keywords to the LSL core, one obtains LSL/L for programming language L. For example, LSL/Java is obtained by adding Java keywords to LSL core.
Additional information of LSL is available from the following site.

http://www.cs.purdue.edu/homes/apm/research-->Program Auralization


\begin{figure}[htb]

\centerline{\includegraphics[width=4.5in,height=5.5in]{jlisten-architecture}}
\caption{Interactions amongst components of JListen. Three instances of LSS are shown. In practice the number of LSS instances could be zero or more.}
\label{jlisten-arch}
\end{figure}

\vskip0.1in\noindent An LSL specification and $J$ are input to an LSL parser and then to Java Program Auralizer  (JPA).  The auralizer generates an instrumented version of $J$. The instrumented version of $J$  contains calls to a Listen Sound Server (LSS). The instrumented $J$ is then compiled using any Java compiler to produce an executable version of $J$. During execution, whenever a call to LSS is executed, LSS receives a request to play a sound. LSS uses its current parameter settings to decide whether or not to play the sound, and, if the sound is to be played then on which audio device should it be played. 

LSS is a stand alone component of JListen. It is independent of any programming language. Thus, for example, one could use LSS for processing requests coming from a C or a C++ program.


\section{LSS: Listen Sound Server}

This extremely powerful stand alone application communicates with any auralized application and processes incoming requests for generating sounds.  An auralized application may communicate with LSS in a variety of ways. It could also be compiled with the auralized application. The LSS can be executing on a machine different from the machine on which the auralized program executes. This feature allows a single auralized program to be heard at any computer accessible via the network.

LSS allows a user to selectively listen for zero or more events and activities that have been auralized. Thus, for example, an LSL specification might call for events $E_1$ and $E_2$ in program $J$  to be auralized. However, any time during the execution  of $J$, a user could instruct LSS not to play the sound corresponding to evgent $E_1$. Further, the mapping between an event and a specific sound can also be altered during the execution of $J$. For example, if the LSL specification calls for playing a note on the Sitar whenever event $E$ is detected, a user could change this mapping of $E$ to Sitar to $E$ to Banjo.

LSS can also receive audio requests from more than one auralized application. Thus, for example, auralized programs $J_1$ and $J_2$ could send audio requests to LSS concurrently. The user can tune LSS to play any of the programs, none of them, or both of them simultaneously. Thus, LSS serves as a multichannel concurrent radio for auralized programs.

 


\vskip0.5in\framebox{\parbox[t]{5.5in}{\em The requirements given here are incomplete and ambiguous. Teams will need to resolve ambiguities and, where necessary, complete the requirements. Help wil be available from the instructors.}}





\end{document}


