<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/oai-pmh.xsl"?>
<OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
  <responseDate>2026-09-19T13:25:29Z</responseDate>
  <request identifier="oai:www.ideals.illinois.edu:2142/50602" metadataPrefix="etdms" verb="GetRecord">https://www.ideals.illinois.edu/oai-pmh</request>
  <GetRecord>
    <record>
      <header>
        <identifier>oai:www.ideals.illinois.edu:2142/50602</identifier>
        <datestamp>2023-07-11</datestamp>
        <setSpec>col_2142_5131</setSpec>
        <setSpec>col_2142_10761</setSpec>
        <setSpec>com_2142_5130</setSpec>
        <setSpec>com_2142_10755</setSpec>
        <setSpec>com_2142_234</setSpec>
      </header>
      <metadata>
        <thesis xmlns="http://www.ndltd.org/standards/metadata/etdms/1.1/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dc="http://purl.org/dc/elements/1.1/" xsi:schemaLocation="http://www.ndltd.org/standards/metadata/etdms/1.1/ http://www.ndltd.org/standards/metadata/etdms/1.1/etdms11.xsd http://purl.org/dc/elements/1.1/ http://www.ndltd.org/standards/metadata/etdms/1.1/etdmsdc.xsd">
          <dc:contributor>Johnson, Ralph E.</dc:contributor>
          <dc:contributor>Johnson, Ralph E.</dc:contributor>
          <dc:contributor>Adve, Vikram S.</dc:contributor>
          <dc:contributor>Bailey, Brian P.</dc:contributor>
          <dc:contributor>Ernst, Michael D.</dc:contributor>
          <dc:creator>Vakilian, Mohsen</dc:creator>
          <dc:date>2014-09-16T17:24:17Z</dc:date>
          <dc:date>2014-09-16T17:24:17Z</dc:date>
          <dc:date>2014-08</dc:date>
          <dc:date>2014-09-16</dc:date>
          <dc:date>2014-08</dc:date>
          <dc:description>Software rapidly evolves. A refactoring is a code change that preserves the behavior of the program.
There has been much interest in automation to make refactoring more efficient and reliable. Although
modern Integrated Development Environments (IDEs) provide many automated refactorings, studies
suggest that programmers underuse automated refactorings. Based on our studies of programmers’
refactoring practices, we argue that usability problems are the common reasons of underusing automated
refactorings. We introduce compositional refactoring, a new paradigm of automating refactorings. In this
paradigm, the tool designer decomposes the large refactorings into a set of smaller, primitive changes
and automates the primitive changes. Then, programmers compose the primitive changes to make
larger changes. We have used the compositional paradigm to automate two classes of refactorings: the
refactorings supported by modern IDEs and type qualifier inference. Type qualifiers augment a type
system to check more properties of the software. Automated inference of type qualifiers can reduce the
cost of using type qualifiers. The compositional paradigm enabled us to build the first universal type
qualifier inference system. The system takes an existing type qualifier checker as an input and uses it
to assist programmers in inserting type qualifiers. Our studies show that compositional refactoring is
natural to programmers, gives programmers more control, and makes the automation more predictable
and usable than the existing wizard-based and batch paradigms. The compositional paradigm achieves
higher usability by automating less. Although this phenomenon may seem counterintuitive, it is not
uncommon in automation design. The promising results of the compositional paradigm suggest that
other software development automation technologies may also achieve a wider adoption by reducing
the level of automation.</dc:description>
          <dc:description>Item withdrawn by Laura Spradlin (lspradl2@illinois.edu) on 2014-07-17T15:11:23Z
Item was in collections:
University of Illinois Theses &amp; Dissertations (ID: 1)
No. of bitstreams: 1
Vakilian_Mohsen.pdf: 1273451 bytes, checksum: 3918b0abda77a40cc2c37ab539925cfa (MD5)</dc:description>
          <dc:description>Made available in DSpace on 2014-09-16T17:24:17Z (GMT). No. of bitstreams: 2
Mohsen_Vakilian.pdf: 1273287 bytes, checksum: 6a9c4a58833a1bb86e97dbc09f749637 (MD5)
license.txt: 4065 bytes, checksum: 84ab1c78502a6c4bae8a73f145812c5c (MD5)</dc:description>
          <dc:identifier>http://hdl.handle.net/2142/50602</dc:identifier>
          <dc:language>en</dc:language>
          <dc:rights>Copyright 2014 Mohsen Vakilian</dc:rights>
          <dc:subject>Software Engineering</dc:subject>
          <dc:subject>Human-Computer Interaction</dc:subject>
          <dc:subject>Programming Languages</dc:subject>
          <dc:subject>Empirical</dc:subject>
          <dc:subject>Refactoring</dc:subject>
          <dc:subject>Program Transformation</dc:subject>
          <dc:subject>Type Qualifier Inference</dc:subject>
          <dc:subject>Type System</dc:subject>
          <dc:subject>Type Inference</dc:subject>
          <dc:subject>Compositional</dc:subject>
          <dc:subject>Critical Incident Technique</dc:subject>
          <dc:subject>Usability Evaluation Methodology</dc:subject>
          <dc:subject>Software Evolution</dc:subject>
          <dc:subject>Programming Environment</dc:subject>
          <dc:title>Less is sometimes more in the automation of software evolution tasks</dc:title>
          <dc:type>text</dc:type>
          <degree>
            <department>Computer Science</department>
            <departmentCode>1434</departmentCode>
            <discipline>Computer Science</discipline>
            <disciplineCode>0112</disciplineCode>
            <grantor>University of Illinois at Urbana-Champaign</grantor>
            <level>Dissertation</level>
            <name>Ph.D.</name>
            <program>PHD:Computer Science -UIUC</program>
            <programCode>10KS0112PHD</programCode>
          </degree>
        </thesis>
      </metadata>
    </record>
  </GetRecord>
</OAI-PMH>
