\section{Design Requirements}
\label{design_requirements}

PaWS framework has several functional requirements, some times related
to the design constraints:

\begin{enumerate}

  \item {\bf Uploading user files (also multiple
      files)}\label{req:uploading_files}: user can provide the source
    code not only by typing or copy-and-pasting it into the
    application window, but also by browsing and picking it from
    his/her machine.

  \item {\bf Saving results on user
      machine}\label{req:saving_results}: user can write back the
    result of the analysis or transformation as a file on his/her
    machine.

  \item {\bf Printing results}\label{req:printing_results}: the user can
    print the result of the analysis or transormation on his/her
    printer.

  \item {\bf Presenting dependence
      graphs}\label{req:dependence_graphs}: user can create and
    display dependence graph of his/her source code. Also
    demonstrations can include graphs.

  \item {\bf Detecting language}\label{req:language_detection}:
    programming language of the source code is detected and
    displayed. C, Fortran77 and, to some extent, Fortran 90 are supported.

  \item {\bf Deleting temporary files}\label{req:deleting_files}:
    temporary files, which are not used anymore, are removed from the
    server disk space.

  \item {\bf Providing ready-to-use examples}\label{req:providing_examples}:
    each analysis and transformation has a set of pedagogical
    examples ready to use by the user.

  \item {\bf Authentication mechanism}\label{req:authentication}:
    access to the PaWS is protected by a simple authentication
    mechanism, a login name and a password.

\end{enumerate}
