Software Development and Professional Practice reveals how to design and code great software. What factors do you take into account? What makes a good design? What methods and processes are out there for designing software? Is designing small programs different than designing large ones? How can you tell a good design from a bad one? You'll learn the principles of good software design, and how to turn those principles back into great code.
Software Development and Professional Practice is also about code construction--how to write great programs and make them work. What, you say? You've already written eight gazillion programs! Of course I know how to write code! Well, in this book you'll re-examine what you already do, and you'll investigate ways to improve. Using the Java language, you'll look deeply into coding standards, debugging, unit testing, modularity, and other characteristics of good programs. You'll also talk about reading code. How do you read code? What makes a program readable? Can good, readable code replace documentation? How much documentation do you really need?
This book introduces you to software engineering--the application of engineering principles to the development of software. What are these engineering principles? First, all engineering efforts follow a defined process. So, you'll be spending a bit of time talking about how you run a software development project and the different phases of a project. Secondly, all engineering work has a basis in the application of science and mathematics to real-world problems. And so does software development! You'll therefore take the time to examine how to design and implement programs that solve specific problems.
Finally, this book is also about human-computer interaction and user interface design issues. A poor user interface can ruin any desire to actually use a program; in this book, you'll figure out why and how to avoid those errors.
Software Development and Professional Practice covers many of the topics described for the ACM Computing Curricula 2001 course C292c Software Development and Professional Practice. It is designed to be both a textbook and a manual for the working professional.
Review By: Keith Kautzman 03/08/2012John Dooley's Software Development and Professional Practice is an excellent overview of the proper steps to take when developing software. Dooley has spent numerous years in the software development profession and in computer science education. His book is a clear-cut, easy-to-read, and easy-to-understand guide that clearly shows his expertise in the field as well as his strong ability to share his knowledge with others in a way that is understandable and just plain makes sense.
Let me get something straight right away. This is not a coding book. It is not going to teach the reader how to write C++ or Java programs. This book is about how to write programs well. It gets into the nitty-gritty of the steps needed to write high-quality programs, including some of the not-so-glamorous steps that should be taken by all developers. Dooley gives overviews of lifecycles, project management, requirements design, coding, testing, walkthroughs, code reviews, and code inspections. While you can't have a book about software development without touching on some coding, the other aspects of the development process that Dooley covers are much more valuable than the coding chapters.
Ultimately, I think the greatest value comes from the various lists Dooley provides to check yourself as you go through the software development process. For example, analyzing that requirements are consistent with project objectives and that each requirement is necessary, testable, doable, and unambiguous is something that many new and some not-so-new developers should understand and step through in a requirements review. This same thing applies in the unit testing section of the book. I have run into many developers who think unit testing is running the program to completion. Dooley goes through a high-level overview of conditions that should be verified when unit testing any program as well as the test writing process itself.
Software Development and Professional Practice is a book that I will be referencing on a regular basis to educate developers and to check on myself. This is also a book that I would suggest to others who are new to software development and those who wish for a refresher.