Wednesday, June 15, 2011

Code Complete by Steve McConnell : Chapter 27

The author talks about system integration in this chapter. The author provides a list of benefits of careful integration.

The author then discusses two different approaches of integration:
  1. Phased Integration: In this approach all the routines are designed, coded, tested and debugged and then are combined to create the system which is then tested and debugged. Only for tiny programs, this approach seems better.
  2. Incremental Integration: In this approach, a small functional part of the system, called skeleton, is developed, tested and debugged and then is expanded one routine at a time. The author compares this approach with a snowball. The author also points out several benefits of using this approach, such as, errors are easy to locate, short development schedule, etc...
The author then describes following incremental integration strategies:
  1. Top-down integration: There are several advantages and disadvantages of this approach:
    • The control logic of the system is tested relatively early and frequently.
    • A partially working system can be made available early
    • The performance issues in low-level routines can bubble to the top of the system
    • A lot of stub routines need to be written
    • Top-down integration is not possible in object oriented design
  2. Bottom-up integration: It offers several advantages and disadvantages:
    • Errors are easier to locate
    • No bubbling of issues from bottom to top
    • Since major, high level system interfaces are integrated last, the conceptual design problems are not discovered until later.
    • Design of the whole system needs to be complete before the integration starts.
  3. Sandwich integration: It is a combination of top-down and bottom-up integration.
  4. Risk-oriented integration: In this approach, risk associated with each routine is identified and the routines with higher risk are are implemented first.
  5. Feature-oriented integration: One feature is added at a time to the system in this approach.
The author then discusses about evolutionary delivery approach in which the program is produced and delivered at successive levels of completeness. There are several benefits of this approach:
  1. Integration takes care of itself
  2. Product shipping cycles are shorter
  3. Customer satisfaction is built into a process
  4. Project status is easier to assess
  5. Estimation error is reduced
  6. Development and testing resources are evenly distributed
  7. Morale improves
  8. Project completion is more likely
  9. Improves overall code quality
  10. Less documentation is required in code
The author also provides following limitations of the approach:
  1. It requires more planning
  2. It requires more technical overhead
  3. It is sometimes used to justify incomplete requirements, design etc...

No comments:

Post a Comment