Here are the following references I give in my talk on Real World Software Engineering
http://web.mit.edu/hershey/www/Real_World_Software_Engineering_files/references.txt I only include texts that I have read, so I'm sure there are others that are good, I just haven't had time to read them. Also most of these books on not on software design itself, but rather on the software process.
References with * are "must reads."
OO Skills -
Patterns:
- Design Patterns, Elements of Reusable Software (Erich Gamma, Richard Helm, et al) *
- Patterns in Java, Vol I & II (Mark Grand)
- Anti-Patterns
- Refactoring: Improving the Design of Existing Code (Martin Fowler) *
-
http://iamwww.unibe.ch/~scg/OOinfo/ -
http://www.celigent.com/uml/ -
http://www.industriallogic.com/papers/learning.html -
http://hillside.net/patterns/ -
http://c2.com/ppr/index.html Project Lifecycle - Overview:
- The Mythical Man-Month (Frederick P. Brooks, Jr.) *
Project Lifecycle - Planning:
- Use Cases: Requirements in Context (Daryl Kulak & Eamonn Guiney)
Methodologies:
- Peopleware: Productive Projects and Teams (Tom DeMarco & Timothy Lister) *
- Death March: The Complete Software Developer
Performance:
- Practical Java: Programming Language Guide (Peter Hagger) *
- Java in Practice: Design Styles and Idioms for Effective Java (Nigel Warren & Philip Bishop)
- Java Platform Performance: Strategies and Tactics (Steve Wilson & Jeff Kesselman)
Testing:
-
http://www.junit.org/ Documentation (internal):
- UML Distilled: A Brief Guide to the Standard Object Modeling Language (Martin Fowler & Kendall Scott)