CGN - Book Reviewshttp://www.codegeneration.net/br_recent.phpRecent reviewsen-us2008-05-16T01:16:03-08:00Practical Development Environmentshttp://www.codegeneration.net/br_review.php?id=339Publisher's page: http://safari.oreilly.com/0596007965
Does Your Environment Maketh Your Productivity?
Some people regard programming to be a mathematical discipline. Some people regard programming to be an engineering discipline. And some regard it to be design. Whatever camp you happen to fall in, we can agree that programming is a strictly human discipline. It is also an act of creation (Or, in so many software shops, it is an act of maintenance, which can also be looked at, from a different angle, as an act of creation). Creation, itself, of course is a process and, as in every other process, the quality of the output flows from the quality of this process. What governs the quality of this process is the whole system of sequences of which the process consists of and of which the process is embedded. In other words, the environment. It is because of this that Doar's Practical Development Environments should be looked at by every software engineer.
This book is about software development environments, i.e. development environments for creating software. It is especially about the tools you can use to create practical development environments (practical development environments, according to the book, are environments that are used by successful projects).
So, who is this book for? This book is for people engaged in creating software products. This is very broad, ranging from programmer, to developer, to DBA, to system administrator, to manager, and even to the CTO/CIO. And all the way to the humble code generation developer.
Although the book mentions the traditional waterfall development process, the book specifically focuses on the following phases: Implementation, Testing, Documentation, Release, and Maintenance. The main activities the book focuses on are Software Configuration Management (SCM), Build, Test, Tracking Bugs, Writing Documentation, Releasing Products, and Maintenance, and the tools that can be used to manage these activities.
Each chapter follows the same useful structure: describing the activity to be covered, such as SCM, in that chapter, its role within the software development process, the tools that can be used to manage that activity, and the drawbacks of these tools. It ends with a checklist of questions you should ask of any tool you are using or any tool you plan to use.
Many of the tools described in the book are open source. This makes the book timely in the light of the momentum behind the open source movement. It describes how tools, such as version control tools, build tools, bug tracking tools, etc, can be used and re-used for many different projects. The reader is also reminded of the arcane problems of integrating tools together, and a solution, i.e. the usage of URLs and emails, is briefly described. At several places in the book, the reader is reminded of the vital importance of automation in a development environment. This reminds me of how Bruce Walker defined programming, in Wexelblat's History of Programming Languages, where he said “Never forget that it is a waste of energy to do something twice, and if you know exactly what is to be done, you need not do it yourself at all”.
One of the promises of this book is to stop you, the reader, from making some or all of what it called the “Dirty Secrets of Software Projects”. These secrets are listed on pages 5 and 6 of the book. One of the pleasantly odd things I learned from the book is the existence of a Request For Comment (RFC) document on “Choosing a Name for your Computer”, which I found entertaining and useful.
The chapters on “Project Communication” and “Politics and People” summarized and put into context most of the essential points in the book (these points were listed on pages 5 and 6 of the book -- “Dirty Secrets of Software Projects”), and the appendix has a long list of references should the reader want more information.
Planning and organization are the central problems of architecture. The same thing can be said of software creation. You have to plan ahead what you want to do, and organize the sequences to take you from where you are to where you want to be. A successful way to achieve these in the
software engineering project context is what I have learned from this book. It will certainly be a valuable addition on my bookshelf, and I shall keep a copy of this book to hand for reference and to dip in from time to time. ]]>2006-7---0T05: 1:00-08:00MDA Explainedhttp://www.codegeneration.net/br_review.php?id=338Publisher's page: http://www.awprofessional.com/title/032119442X
MDA, according to the authors in the preface of MDA Explained, “… could very well be the next major step forward in the way software is being developed.” Richard Soley, Chairman and CEO of the Object Management Group, painted a very optimistic scenario of MDA in his article, saying MDA will integrate many business functions from Space to Manufacturing to HealthCare?, and the domains within them. This made me all pumped up to read this book, and to learn the secrets. But my enthusiasm was a bit tempered when I remembered Fred Brooks saying in The Mythical Man Month that “there is no silver bullet”, and of the claims of other software movements that have come and gone or still around in various guises, such as OOP, Software Product Lines, Patterns, Extreme Programming, etc. But I went to this book hoping to learn the secrets of MDA and its claim to revolutionize software development/engineering.
This book provides a good description of MDA, its phases and its development life cycle, which are a combination of the traditional waterfall development cycle plus their outputs in terms of Platform Independent Model, the Platform Specific Model, and code.
The book describes a concrete scenario, the Rosa’s Breakfast Service, where MDA is applied to developing the ordering system for this company. It applies the MDA framework to the analysis, design, and development of Rosa’s Breakfast System. This went on for many chapters with detailed comments of how MDA could be applied to each stage of developing this system. This is very good as it gives somebody wanting to learn and apply MDA to see how this could be done. It is also good for the code generation developer/user as it describes how the outputs, i.e. the models, are converted to code automatically by tools.
From reading this book, I have my doubts whether MDA would revolutionize software development. As a person who have used UML before, I find it very difficult, with the tools out there, to turn my UML diagrams into the complete solutions for MDA to work, i.e. too much pain to get a little mileage. MDA has been touted to provide platform independence, but we have been here before a la Java, .NET, CORBA, etc? MDA treats your platform as your entire programming environment. This is simply too all-encompassing for simple software jobs. Also attempts to create a platform-independence framework are fraught with problems due to its semantics not being appropriate to the many domains it is targeting. In addition, there are problems with the interchange format used to exchange models in MDA, the XML Metadata Interchange (XMI). The XML generated is dependent on UML’s language definition. This means that the XMI serialization of a UML 1.4 –defined model cannot be understood by a UML 2.0 implementation. Also, there are different definitions of the various XMI versions. For example, there is XMI 1.0 serialization of a model in UML 1.4, an XMI 1.1 serialization of the same model, and so on and so forth. All these make using and adopting MDA confusing.
Overall, if you want to learn MDA, this book provides a good start, but if you expect MDA to solve all your software development problems, or a significant portion, you will be disappointed. ]]>2005-4---0T29: 2:00-08:00Requirements-Led Project Management
http://www.codegeneration.net/br_review.php?id=337Publisher's page: http://www.awprofessional.com/title/0321180623
There is some great content in this book, and the writing style is fun and engaging. But at the same time the book often goes here and there with lots of extraneous information, which while interesting, is also distracting.
The book covers conventional project management in a compelling and interesting way, and offers practical experienced based insights. Based on that I would give it five stars. The centering of the management process around requirements is a great idea. And the use of lo-fi prototypes is genius. So there is great content in here. But, unfortunately the distracting content and the sub-par quality of the illustrations leads me to give it a four out of five.
Still, if you are looking for a way to break out of the mold of your current development process. And you are looking for something that could lead to a more compelling product design for your customer. You may find the answer you are looking for in this book.
This is an ideal introduction to the TeX line of text formatting tools. It starts with a high level overview of the toolset. Then dives into document construction, then into tables, lists, mathematical formatting, and into user constructions and extensions for bibliographies, as well as other topics. PDF and Postscript formatting is covered. As well as AMS-TeX which is more extensions or mathematical formatting.
On the downside the substance of the text is only two-thirds of the book. Appendices make up the rest. Which necessarily means that the coverage is a little more terse than you would expect for a book this size.
That being said, this is still an excellent introduction to the TeX set of tools for anyone who is just starting out.
]]>2005-1---0T10: 2:00-08:00Definitive Guide to Project Managementhttp://www.codegeneration.net/br_review.php?id=335Publisher's page: http://www.phptr.com/title/0273663976
This is an excellent walkthrough and summary of project management principles. The book is organized into three major sections; an introduction, a project management process, and a specifications development strategy. The second section is excellent. The chapters are ordered in terms of workflow and the advice is clear and pragmatic. The third section is excellent as well.
I've never seen a project management book as focused and well organized as this one. An excellent book for managers looking to better manage their projects, or for engineers looking for books to give management that will move projects up from CMM level 0.
]]>2005-1---0T10: 2:00-08:00Programming Windows Securityhttp://www.codegeneration.net/br_review.php?id=334Publisher's page: http://www.awl.com/cseng
This book does an excellent job of explaining Windows security at both the architectural and code levels. It's well written, even to the point of being entertaining at some points. Which is a lot to say for a security book.
The book covers topics at a remarkable depth without feeling overwhelming. Though it's light on strict reference material (which is easily made up with the MSDN) it still has reference value because of the deep level at which subjects are covered. In particular, his coverage of network authentication is excellent. Which is fantastic because this is such a frustrating issue in practice.
Definitely worth a look for anyone who wants to understand Windows security APIs at a deep level. ]]>2005-1---0T10: 2:00-08:00LaTeX Companion - 2nd Editionhttp://www.codegeneration.net/br_review.php?id=333Publisher's page: http://www.awprofessional.com/title/0201362996
This is an amazing piece of work. It's obviously a well refined second edition where the authors have listened to the readers and understand how to present this very deep information in a lightweight informative way. I can't imagine any more material that could be poured into this book. Which isn't to say that the book is a dumping ground of material, what is in there is all well organized and integrated.
What's more, the formatting of the book itself stands as an example of design to be aspired to.
This is a phenomenal piece of work. It gets my highest recommendation. This is a fantastic book for anyone who uses TeX seriously. For those looking to start with TeX you should probably AW's Guide To LaTeX? as well as this book.
This is a screenshot heavy walkthrough of Linux installation and use of the KDE shell and various GUI applications. Most pages have several screenshots with smatterings of text explaining each one. There is some coverage of shell access at the end of the book. But the book is primarily focused on applications like OpenOffice?, Write, Gimp and the other GUI applications. ]]>2005-1---0T10: 2:00-08:00Just Java 2
http://www.codegeneration.net/br_review.php?id=331Publisher's page: http://www.phptr.com/title/0131482114
This is a tour guide through the main Java APIs. It starts with a language walkthrough then goes on through the basics of objects and onto the APIs. Sections like XML, JDBC and others are covered at a fairly high level. The basics are covered by using example problem solutions. There isn't much for reference, but you wouldn't expect it from this book.
The coverage of the new features in the language, especially generics, is well integrated. I suppose the time of the dedicated Java 1.5 features book is over and now the new versions of the Java introductory books will include all of these new features.
A solid all-in-one walkthrough of the Java language and the basic APIs. Though myself I would buy two books. One on the Java language only, and another on the foundation classes.
The first section of this book, which explores the Java language and object orientation in depth is excellent. After that the book goes into Swing, applets (is anyone doing them anymore?), and then into debugging and file I/O. Funny, I would have thought that both of the final chapters would have been pushed forward. Certainly file I/O should go before Swing, right?
Frankly, I think too much time was spent on Swing. The book turned into a reasonably in-depth introduction to Swing and event oriented programming. When it probably should have gone into threading, regular expressions, file I/O and other fundamentals. The quality of the language discussion saved this book for me. ]]>2005-1---0T10: 2:00-08:00