<?xml version="1.0" encoding="utf-8" ?> 
<?xml-stylesheet type="text/xsl" href="courses.xsl" ?>
<courses name="Fawcett">

  <btitle>Software Restructuring</btitle>
  <theme src="HomeTheme.css" />

  <visible>
  <title>Masters Thesis:<br/>Software Restructuring</title>
  <revised>11 December 2008</revised>

  <hnav/>
  <cnav/>
  <hilight>
    <ifile title="Project Topics">Projects.xml</ifile>&#32;
    <ifile title="Master's Projects">MastersProjects.xml</ifile>&#32;
    <ifile title="Master's Theses">MastersTheses.xml</ifile>&#32;
    <ifile title="Research">research.xml</ifile>&#32;
    <ifile title="References">references.xml</ifile>&#32;
    <ifile title="Cloner">Cloner.xml</ifile>&#32;
    <ifile title="Software Foundry">Foundry.xml</ifile>&#32;
  </hilight>

  <image src="../Research/SantoshSinghDefenseDocs/SantoshSingh.jpg" size="300" />
  <caption>Advisor Fawcett and Candidate Singh</caption>

<!--
  <quote source="Frederick Brooks, Mythical Man-Month">
    Good judgement comes from experience, and experience comes from bad judgement.
  </quote>
-->

  <html><a name="contents"/></html>
  <section title="Defense">
    Santosh Singh Kesar successfully defended this work on October 8th, 2008, before his committee: Drs. Ehat Ercanli (chair), 
    Daniel Pease, Gina Lee-Glauser, and Jim Fawcett (advisor).  
  </section>
  <section title="Thesis Documents and Code">
    <file title="Defense Presentation">../Research/SantoshSinghDefenseDocs/Semi-Automated_Software_Restructuring.ppt</file>
    <file title="Thesis Document">../Research/SantoshSinghDefenseDocs/Thesis_Document.pdf</file>
    <file title="Restructuring Code">../Research/SantoshSinghDefenseDocs/CodeRestructuring.zip</file>
  </section>

  <section title="Summary">
    <olist>
      <litem>
        This research attempts to answer the question, "Can one automate the process of restructuring source code?"
      </litem>
      <litem>
        Santosh demonstrated that, using an informal recursive descent parsing process, large global functions and
        class methods can be restructured
        as compositions of smaller functions.  This process is entirely automatic, based on user entered parameters at the
        beginning of the restructuring process.
      </litem>
      <litem>
        The fundamental idea is to evaluate feasible regions from which to extract smaller functions, based on control scope
        and regions of data definition and manipulation.
      </litem>
      <litem>
        Our restructuring process uses a parse tree designed to capture and provide convenient manipulation of this information,
        shown in the diagram below.
      </litem>
    </olist>
    <images>
      <imageItem src="../research/SantoshSinghDefenseDocs/Capture1.jpg" size="500" />
    </images>
    <caption>Restructuring Parse Tree</caption>
    <p/>

    <html><img src="../Research/SantoshSinghDefenseDocs/committee.jpg" width="100%"/></html>
    <caption>Santosh's committee - Drs. Fawcett, Pease, Lee-Glauser, Ercanli with Candidate Santosh Singh"</caption>

  </section>

  </visible>
</courses>
