Code Quality: The Open Source Perspective
My new book Code Quality: The Open Source Perspective got published, three years after I started writing it. The book owes more to open source software than any of the books dealing with Linux, PHP, Apache, Perl or any other book covering a specific technology.
I originally planned the book as a second volume of my previous, well received, book Code Reading: The Open Source Perspective. This happened when I reached a point where not all the material I wanted to include in Code Reading could fit in it. However, feedback I got after the publication of Code Reading convinced me that the appeal of a second volume dealing with the understanding of assembly code, hardware interfaces, compilers, and other specialized coding techniques would be limited. Therefore, I decided to scrap the second volume, and adopt the same approach (a text where all examples come from real-world open source systems) in a different book dealing with code quality. Using the ISO/IEC 9126 standard as a guide, I could go through the software quality characteristics (functionality, reliability, efficiency, maintainability, and portability) and discuss them in the context of specific program code.
Restricting yourself to real-world examples can be frustrating. It is a lot easier to think of a toy example that shows a given concept, than to locate actual code that demonstrates it. I often found myself spending more than a day to locate code for one simple example, or analyzing code to obtain a chart to illustrate a principle. Moreover, in the case of the chapter dealing with security I then had to spend even more time to understand how a specific exploit could target the vulnerable code. Nevertheless, I think the approach was worthwhile. By dealing with real-world code, I pruned away a few quality concepts for which I could not find real-world examples; these were probably (and demonstrably) not worth covering. Even better, while perusing code I found other elements that were important and were not often mentioned in the literature. Clearly, as professionals we owe a lot to the open source software community. Not only do we have in our hands numerous excellent free software systems, but also a wonderful new way to discuss programming concepts and techniques.Read and post comments, or share through