Wednesday, July 20, 2011

Coder to Developer: Tools and Strategies for Delivering Your Software by Mike Gunderloy : Chapter 2

The author talks about how to organize project in three different ways:
  • Architectural perspective addresses the overall shape of the application
  • Project perspective addresses the construction of the application
  • The staged delivery perspective addresses the release of the application
The author then provides definition of architecture with two common elements:
  1. Highest level breakdown of a system into parts
  2. Decisions that are hard to change
The author then provides three stages of software construction:
  1. Architectural stage involves important decisions
  2. Design stage involves detailed plans for writing the application
  3. Implementation stage involves writing code
The author then draws architecture of its Download Tracker application. The author then talks about UML and tools that can be used to model architecture in form of UML.

The author talks about design patterns and how they help at architecture level. The author then talks about three methods of coding a large project:
  1. Breadth-First: In this method, the entire skeleton of the application is built without any details. The author enlists following advantages and disadvantages of the approach:
    • This method ensures that everything in architecture is covered.
    • It demonstrates overall flow of application early in coding cycle.
    • Looking at the skeleton, customer's expectation for schedule may become unrealistic.
    • A team of developers are difficult to manage in this approach.
  2. Depth-First: In this approach, one part of the application is completely developed before moving on to anything else. The author enlists following advantages and disadvantages for the approach:
    • The developer can focus on just one piece of code for its issues.
    • A team of developers can work on separate components.
    • Architecture will not be tested till late in the development cycle.
    • The complete application flow cannot be determined till the end of the development.
  3. Mixed Models: The author suggests to take a mixed approach since most products have some UI component which can be developed using breadth-first approach and the rest of the components can be developed using depth-first approach.
The author then talks about three cornered trade-off representing product, cost and time. The author then discusses several approaches such as:
  • The Beta-Test approach: This is used by Microsoft where there are several targets like
    • Alpha
    • Beta 1
    • Beta 2
    • Release Candidate
    • Release
  • The XP approach: This involves making a series of small releases with high quality bar. Releases are spaced close to one another with very small functionality added above the previous release.
The author emphasizes the fact that product in three cornered trade-off represents not just features but quality too. Releasing a product full of bugs is a sure-shot way to lose customers.

No comments:

Post a Comment