Practical Software Development Techniques: Tools and Techniques for Building Enterprise Software