Thursday, December 16, 2010

Code Complete by Steve McConnell : Chapter 2

The author emphasizes on metaphors or models or analogies that help one understand a poorly understood topic. The author provides examples of the wave theory of light and the kinetic theory of gases which were analogous to a similar theory of sound and billiard ball model respectively. The author warns against over-extending any analogy citing the example of "ether", the medium that was supposed to be propagating light the way air propagates sound.

Author feels a metaphor is much nearer to heuristics than algorithm.

Author points out that the software engineering is a younger field (was a younger field in 1994 when the book was written but not now) and does not have standard set of metaphors.

The author provides four metaphors to better understand software construction:
  1. Software Penmanship: Writing a software is like writing a letter. Just throw as many drafts in wastebasket as required before the final letter comes up.
  2. Software Farming: Consider growing software as planting seeds and growing crops.
  3. Software Oyster Farming: Software creation is incremental just like how oyster makes a pearl by adding small amount of calcium carbonate.
  4. Software Construction: Author finds this metaphor to be the most powerful. A lot of parallels can be drawn between building a house and building a large software.
On an average for a 750,000-line system, about 6000 pages of functional specs would be required.

Wednesday, December 15, 2010

Code Complete by Steve McConnell : Preface and Chapter 1

Preface



The author highlights following points:
  • There is a large gap between the quality of best and average software engineering practice.
  • It takes 5 to 15 years for a research development to make its way into commercial practice.
  • The book helps a programmer write high quality software quickly and with fewer problems.
  • The book focuses on implementation part of software development life cycle and therefore it is useful to experienced or self-taught programmers as well as fresh graduates.
  • The techniques in the book fills the void after introductory and advanced programming texts.
  • Software construction accounts for about 80 percent of the effort on small projects and 50 percent for medium projects.
  • Software construction accounts for 75 percent of errors on small projects and 50 to 75 percent for medium and large projects.
  • There was no comparable book available when the book was written.


Chapter 1


The author highlights following points:
  • Software construction includes not just coding and debugging but also some detailed design and unit testing.
  • Software construction is important because:
    1. Average programmer has a lot of scope to improve productivity with a focus on construction
    2. Software construction is a large part of software development
    3. Software construction is a pivotal part of software development
    4. Software construction's product, the source code, is the only accurate description of the software.