Agile/XP Tools
Software Engineering
Software Engineering is a relatively new term which was first used as a title for the World’s first conference on software engineering, sponsored and facilitated by NATO in 1968. It was designated to solve the troublesome problems in building softwares. The concept is to apply engineering disciplines to software design and construction. It aims to make software product predictable in terms of cost, quality and time. Brooks mentioned “No silver bullet” in his article The Mythical Man-Month in 1986, which is to say that there’s no specific solutions for the uncertainties, inconsistencies and complexities. But are there any ways to improve this process? Of course.
The following contents draw heavily from Armando Fox’s slides.
P & D
Plan & Document is one of the methods in the early stage of SE. It emphasizes the importance of plan and document in advance. Here are some key points:
- Make plan before doing any coding.
- Write detailed documents (e.g.: requirement documents and interface documents) of all phases of the plan you made.
- Members should strictly follow the documents decided in earlier phases.
- Any changes in plan or design should be reflected in documentation.
Waterfall Model, 1970
- Requirements Analysis and Specification
- Architecture design.
- Implementation and Integration
- Verification.
- Maintenance. It believes that “Earlier catch bug, cheaper it is”. But it requires extensive documentations, which may be too heavy and even too “clumsy” sometimes.
Spiral Model, 1986
As far as I am concerned, spiral model is the former prototype of Agile. It emphasizes the whole process of building a healthy software consists of multiple iterations, in which every iteration contains almost every phase that waterfall model requires. Here is the illustration:

Rational Unified Process, 2003
It is called Rational
for it is first developed by a company called Rational Software.

The RUP framework is two dimensional, with axes indicating time and content. The time dimension is organized by phases, iterations, and milestones. The content dimension consists of software disciplines containing the workflows, roles, activities, and artifacts as they apply to that discipline. -IBM
Agile Manifesto, 2001
“We are uncovering better ways of developing SW by doing it and helping others do it. Through this work we have come to value:
- Individuals and interactions over processes & tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan That is, while there is value in the items on the right, we value the items on the left more.”
Extreme Programming, 1999 - 2003
If one thing is good, then do it whenever you can and make best use of it:
- If short iterations are good, make them as short as possible (weeks vs. years)
- If simplicity is good, always do the simplest thing that could possibly work
- If testing is good, test all the time. Write the test code before you write the code to test.
- If code reviews are good, review code continuously, by programming in pairs, taking turns looking over each others’ shoulders.

Tools for Agile/XP in Ruby on Rails
- Github to perform version control.
- Pivotal Tracker for project management. We can use points and velocity to track our current progress and to predict our future progress.
- Heroku for deploying our app. (This is only for those who don’t have the access to a personal server. But it’s indeed a perfect way to check your code structure and independency.)
- Travis CI for automatically running tests, which is called continuous integration(CI) by some people.
- Coveralls for detailed test coverage measurements.
- CodeClimate for reporting on the quality and robustness of our source code. (Static Analysis.)