Section B.3. Books


B.3. Books

The books listed in this appendix cover each of the named topics in a general sense. Books that cover just one specific tool are listed in the chapter that discusses such tools. For instance, books that are just about CVS are referred to in the Section 4.6.1.

B.3.1. Automation and General Tools


Pragmatic Project Automation. Mike Clark. Pragmatic Bookshelf. 2004.

This book describes good automation practices using CruiseControl (see Section 3.4.4).


Essential Open Source Toolset: Programming with Eclipse, JUnit, CVS, Bugzilla, Ant, Tcl/Tk, and More. Andreas Zeller and Jens Krinke. Wiley. 2005.

B.3.2. Software Configuration Management


Open Soure Development with CVS, Third Edition. Karl Fogel and Moshe Bar. Paraglyph Press. 2003.

Also available online at http://cvsbook.red-bean.com/OSDevWithCVS_3E.pdf. This book covers much more than just CVS; SCM best practices and different approaches to open source development are also discussed. The names of the authors alternate on different editions.


Pragmatic Version Control with CVS. Dave Thomas and Andy Hunt. Pragmatic Bookshelf. 2003.

This book and the next one in this list are from the same series; they discuss using SCM tools in the context of an automated development environment.


Pragmatic Version Control with Subversion. Mike Mason. Pragmatic Bookshelf. 2005.


Software Configuration Management Patterns. Stephen P. Berczuk and Brad Appleton. Addison-Wesley. 2002.

B.3.3. Building Software


Managing Projects with GNU make, Third Edition.Robert Mecklenburg. O'Reilly. 2004.

As the title suggests, this book is mainly about make, but the third edition has useful discussions of how build tools scale, performance, portability, and debugging build files, all of which have relevance beyond make.


Multi-Platform Code Management. Kevin Jameson. O'Reilly. 1994.

One of the earliest books to describe a complete build environment in detail.

B.3.4. Testing Software

This section includes books that refer to testing environments, not just books about how to test software.


Pragmatic Unit Testing in Java with JUnit. Andy Hunt and Dave Thomas. Pragmatic Bookshelf. 2003.


Pragmatic Unit Testing in C# with NUnit. Andy Hunt and Dave Thomas. Pragmatic Bookshelf. 2004.


Test Driven Development: By Example. Kent Beck. Addison-Wesley. 2002.


Managing the Testing Process, Second Edition.Rex Black. Wiley. 2002.


Testing Computer Software, Second Edition. Cem Kaner, Jack Falk, and Hung Nguyen. Wiley. 1999.


Effective Software Testing50 Specific Ways to Improve Your Testing. Elfriede Dustin. Addison-Wesley. 2003.

B.3.5. Tracking Bugs

Are there any books about what you want in a bug tracking system? I've never seen one.

B.3.6. Documentation Environments


Word Hacks. Andrew Savikas. O'Reilly. 2004.


LaTeX: A Document Preparation System (User's Guide and Reference Manual). Leslie Lamport. Addison-Wesley. 1986.

This book is also a good example of how to describe using a documentation tool.

B.3.7. Releasing Products


Ship it! A Practical Guide to Successful Software Projects. Jared Richardson and Will Gwaltney. Pragmatic Bookshelf. 2005.

B.3.8. Maintenance


Working Effectively with Legacy Code. Michael Feathers. Prentice Hall. 2004.


Refactoring: Improving the Design of Existing Code. Martin Fowler, Kent Beck, John Brant, William Opdyke, and Don Roberts. Addison-Wesley. 1999.


Software Exorcism: A Handbook for Debugging and Optimizing Legacy Code. Reverend Bill Blunden. APress. 2003.

B.3.9. Politics and People


The Mythical Man Month. Frederick P. Brooks. Addison-Wesley. 1975.

Though it describes the way your father wrote code, most of it still rings true. Much of what is written in this book is now assumed knowledge in the software industry.


Facts and Fallacies of Software Engineering. Robert L. Glass. Addison-Wesley. 2003.

Lots of opinions, with good justifications and rebuttals.


Great Software Debates. Alan M. Davis. Wiley. 2004.

A series of short essays on different topics, ranging from academia to industry and back. Not really debates, but thought-provoking writing anyway.

B.3.10. Developing Software

Some of these books are specific to languages or methodologies, but I have found them all useful at one time or another.


The Practice of Programming. Brian Kernighan and Rob Pike. Addison-Wesley. 1999.

The related web site is at http://cm.bell-labs.com/cm/cs/tpop.


The Art of Unix Programming. Eric S. Raymond. Addison-Wesley. 2003.

Also available online at http://www.catb.org/~esr/writings/taoup. Contains many examples of the ideas in this book, with a Unix bias.


Mastering Regular Expressions, Second Edition. Jeffrey E. F. Friedl. O'Reilly. 2002.

This is the book to build your confidence in what you can do with all of your text-based tools.


Code Complete, Second Edition. Steve McConnell. Microsoft Press. 2004.

The second edition has a related web site at http://cc2e.com.


The Pragmatic Programmer: From Journeyman to Master. Andrew Hunt and David Thomas. Addison-Wesley. 1999.


Expert C Programming. Peter van der Linden. Prentice Hall. 1994.

If only for the terrible puns, this is my favorite advanced C book.


Programming Pearls. Jon Bentley. Addison-Wesley. 1986.

A strongly pragmatic approach to programming, with lots of references to development environments.

B.3.11. General Design

Much of what makes a product or tool useful is a good design. Listed below are two books that, while not directly related to software design, will encourage deeper thought about the issues behind designing things.


Notes on the Synthesis of Form. Christopher Alexander. Harvard University Press. 1964.

The basic idea is simple: make your categories fit how you work, not the other way around. This building architect's books helped inspire the various books about software patterns.


How Buildings Learn. Stewart Brand. Penguin. 1995.

A fascinating book describing how buildings change, with lots of photographs and drawings showing the same buildings changing over time. The different aspects of a building such as internal layout and services change at different rates, just as software products change their different parts at differing rates. No answers, but plenty of ideas to consider about how to design things that can change gracefully over time.



Practical Development Environments
Practical Development Environments
ISBN: 0596007965
EAN: 2147483647
Year: 2004
Pages: 150

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net