Helping programmers work more efficiently
Developing today's complex computer software can involve thousands of people working -- sometimes at cross purposes -- in numerous countries. Resolving inevitable glitches is expensive and time-consuming, but a University of Nebraska-Lincoln computer scientist thinks she can help programmers work more efficiently.
Anita Sarma, assistant professor of computer science and engineering, recently earned a five-year, $500,000 Faculty Early Career Development Program Award from the National Science Foundation to develop her software solution. These prestigious CAREER awards support pre-tenure faculty who exemplify the role of teacher-scholars through outstanding research, excellent education and the integration of education and research.
To develop software, programmers write step-by-step instructions of computer code. These lines of code are interconnected and often number in the millions. For example, Microsoft’s 2007 Vista operating system, developed by thousands of programmers in 22 countries, contained more than 50 million lines of code.
Coordinating the efforts of so many people is challenging. Resolving problems that arise when programmers are unaware of what others have done or when merging code into one program can delay development by months or even years. Worse, software may be released with defects.
"Most software projects go over budget and over time, and that is largely due to coordination problems," Sarma said. "My research goal is helping software developers be more efficient and productive."
NOT JUST DETECTING CONFLICTS – AVOIDING THEM
To solve these problems, computer scientists are working on solutions that monitor changes to the code in real-time and their impact on other pieces of code and programmers. A programmer can know, for example, when others are working on the same file. This kind of program analysis alerts programmers to potential conflicts, so they can communicate and resolve them faster. But so far these programs often flag potential conflicts that may not always occur, further interrupting a developer's busy schedule.
Sarma's work goes a step further. She aims to avoid conflicts altogether instead of just trying to detect them.
"What I'm doing is proactive," she said. "In what context is Developer A making the change, and how are the changes going to affect Developer B's work right now?"
To do that, she's using data-mining techniques to analyze software repositories, the place where developers store lines of code, record what tasks were performed and note any issues that arose. By seeing the effects various tasks and file changes had on previous programming efforts, she can make predictions about future programming. With that information, she'll model relationships between tasks, called constraints: if x happens, then y results.
From there, she'll develop what's called a constraint-solving program that analyzes the current development situation in real time and identifies the best next task. For example, if a programmer finishes a task, the program suggests next tasks that would avoid conflicting with others. As programmers start and finish tasks, the program continually reevaluates the situation.
MORE EFFECTIVE COLLABORATION
Sarma's solution will be available as a plug-in for Eclipse, a popular program for developing software.
She has already demonstrated how her methods would have avoided three weeks of delays in developing PERL, a software development tool. The relatively small program used 51 programmers and has 2 million lines of code.
Sarma also is using her CAREER award to develop curricula designed to teach college and high school students how to collaborate more effectively. Short, hands-on activities will help students learn to listen effectively, build on and negotiate ideas together and engage in constructive scientific arguments. She said she hopes the fun and engaging exercises will encourage more young people to choose science careers.