Successful software constantly evolves. Most programmers work on projects they did not start. Most companies spend more on maintaining old systems than on building new ones. This is good, because it shows that companies build software that is worth keeping and maintaining, but it also means that change is the heart of software development. Most programming tools treat change at a very low level: programmers make most changes with text editors, and tools tend to focus on changes to lines of text, and although programming is predominantly about change, contemporary tools do not provide direct support for understanding or facilitating change. This makes programming more expensive, time-consuming, and error-prone than it should be. This research project will develop a change-oriented programming environment (COPE) that supports change by putting transformations at the center of software development. COPE will enable both average and expert programmers to write, script, modify, and replay their own transformations. COPE will enable programmers to think about programs as compositions of transformations, and to automate as many of these transformations as possible. Characterizing software development in terms of transformations is an essential step to take software engineering from manual development to automated (or semi-automated) development of software.

By enabling programmers to express their programming tasks as program transformations, COPE will alter the way programmers think about, teach, create, reuse, and understand programs. Specifically, COPE considers five activities: (1) analyze what changes programmers typically make and how they perceive, recall, and communicate changes, (2) automate transformations to make it easier to apply and script changes, (3) develop tools that compose and manipulate transformations to make it easier to reuse them, (4) integrate transformations with version control to provide better ways for archiving and understanding changes, and (5) develop tools that infer higher-level transformations from lower-level changes. COPE will deliver a rich transformation-aware toolset that synergistically integrates all these activities. COPE aims to (a) change the way people program, (b) create a platform for research for future research, and (c) produce results that ultimately will become standard software development practice. The PIs will disseminate the results through presentations, books, publications, open-source code, industrial collaborations, and educational activities. A version of COPE will be used to revamp the software engineering curriculum at the University of Illinois and the University of Texas to emphasize the science of change in large code bases.

Agency
National Science Foundation (NSF)
Institute
Division of Computer and Communication Foundations (CCF)
Application #
1439957
Program Officer
Sol Greenspan
Project Start
Project End
Budget Start
2013-11-18
Budget End
2018-06-30
Support Year
Fiscal Year
2014
Total Cost
$1,698,140
Indirect Cost
Name
Oregon State University
Department
Type
DUNS #
City
Corvallis
State
OR
Country
United States
Zip Code
97331