Optimizing the Software Development Process: Implementing a Build Automation System

Friday, October 28, 2011
Hall 1-2 (San Jose Convention Center)
Kimberly Oyama , Computer Science, Northern Arizona University, Flagstaff, AZ
Michael Bush, BSCS , Oceanit, Kihei, HI
Oceanit’s software development teams often collaborate on large software systems.  However, each developer has a different method of handling his or her checked-out source code.  When developing software with multiple interdependent projects, developers must check-out the project that they want to work on, along with all of the projects’ dependencies.  Before they can build and test their project they must first assemble the dependencies in the correct order; this requires prior knowledge of the system or process documentation and time.  To speed up the building and testing process, we will implement a continuous integration tool, Hudson, the build tools, Ant and CMake, and the unit testing tools, JUnit and CPPUnit.  Hudson, job scheduling software, will run pre-scheduled builds according to each development team’s specifications.  Ant and CMake, script generating tools, help the developer create build scripts that also simplify the building process.  These scripts can be executed in Hudson, minimizing the amount of time the developers spend setting up the build schedule.  To optimize this build automation system, unit testing tools are employed to help developers write test scripts that will run module tests so the developer doesn’t need to. This development process is more efficient than the current process, making it easier for new developers to work on the software because they wouldn’t have to spend too much time learning about the hierarchical structure of the system.