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

Project Abstract:

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.