Dev-Build-Test-Prod Procedure Management

Detailed Description(PDF) | End-of-Summer Presentation(PDF)

On large-scale software development, there are several phases and lots of people involved in. In my group in UBS, there were four phases: (1) Development. Developers develop on codes and finish the unit test; (2) Build before test. Developers build codes on a remote server. Codes that passed the build are copied to some "test space" waiting for test; (3) Testing. Test professionals get codes from the test space and do comprehensive test on them; (4) Production. Project Manager release the codes that passed the test.

Among these phases, there are a lot of manual work and conflicts. A good management is to reduce manual work and conflicts as much as possible. For this purpose, I exploited Maven, TeamCity and Subversion to manage the whole software development procedure.

Maven is a build tool which has many advantages compared to Ant. The most phenominent one is "convention over configuration". I set up and managed Maven repository server for my group, reorganized projects into modules, create standard directory structures and controlled dependencies among projects so that developers don't have to do much configuration work.

TeamCity is a build management and continuous integration server which can help build projects and send out notifications automatically. I used it to manage the before-test build with time trigger and event trigger so that developers don't have to manually fire before-test build everytime.

Subversion is a Version Control System. I did some research on the Subversion best practices and wrote a Groovy script to implement the Always-Branch practice. The script can reduce conflicts among developers and can be best combined with Maven and TeamCity.

This project is more of software engineering and project management. I like it because I learned how to communicate with people and understand them from their views. In my opinion, after all, code management is people management.