A wide range of development tools have been available for many years to help developers write code more efficiently . These tools range from specialized single function tools to complete tool suites addressing all stages of the software development life cycle. Given the maturity of the tool market, it is still quite surprising to find so many programmers utilizing no more than a simple text editor and basic compiler for their development. Part of the problem, no doubt, can be lack of proper processes in development organizations, as described in Part 3 of this book. The other part of the problem is that most tools, despite their fancy user interfaces, are no panacea for software development. An unskilled developer with great tools will still be less successful in developing software than a good developer with no tools.
Today, many vendors package development tools together in a so-called integrated development environment (IDE). Some IDEs started out as single-function tools and evolved as vendors added more functionality or merged their product with others to provide customers a more complete single-stop solution. It is common for IDEs to address software development from either the user interface point of view or the database point of view. Not surprisingly, IDEs that started out as simple GUI development tools often take the former approach while IDEs that started out as database access tools often take the latter approach. Both of these approaches can be sub-optimal for modern multi- tier software architectures. If you design your code by starting with the user interface, you often end up designing the database to match the user interface. If you start designing your code with the database, you can end up developing your user interface to match the database design. In either case, business logic often gets mixed in with both the user interface code and the database code instead of being isolated in a stand-alone module. The best tools let you start by defining your business logic and then help you derive both user interface and back-end database design based on the requirements of your business logic.
Despite the limitations of many tools, a good IDE or other development tool, used properly, will contribute much to the success of your project. This chapter discusses some of the various classes of tools available including IDEs, GUI development tools, database tools, and testing tools. Examples are given of some of the more popular tools in each category. Where possible, tools supporting the Java language have been given as examples because of the popularity of the Java platform. As there are literally hundreds of development tools, the ones presented in this chapter are not meant to be an all-inclusive list. This chapter further describes some of the components that might be found in an IDE, such as code editors, compilers, profilers, and debuggers .