Kim Oyama grew up on Lana’i and graduated in 2008 from Lana’i High School. She is a senior studying Computer Science and Computer Engineering at Northern Arizona University. Before transferring to NAU for its Electrical Engineering program, she was a double major in Computer Science and Mathematics at the University of Hawai’i at Hilo. Once she has completed her undergraduate education, Kim would like to study computer architecture and design in graduate school.
Home Island: Lana’i
High School: Lana’i High School
Institute when accepted: Northern Arizona University
Optimizing the Software Development Process: Implementing a Build Automation System
Project Site: Oceanit
Mentor: Michael Bush
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 have evaluated and implemented a continuous integration tool, Hudson, the build tools Ant and CMake, and the unit testing tools JUnit and CPPUnit. Hudson, the 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 automatically. This development process is more efficient than the current process, making it easier for new developers to work on the software because they will not need to spend as much time learning about the hierarchical structure of the system.