home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1993 #3 / NN_1993_3.iso / spool / comp / object / 5111 < prev    next >
Encoding:
Internet Message Format  |  1993-01-28  |  5.3 KB

  1. Xref: sparky comp.object:5111 comp.software-eng:5505 comp.lang.c++:20088
  2. Newsgroups: comp.object,comp.software-eng,comp.lang.c++
  3. Path: sparky!uunet!rational.com!thor!rmartin
  4. From: rmartin@thor.Rational.COM (Bob Martin)
  5. Subject: Re: How About Using Bootch for Analysis?
  6. Message-ID: <rmartin.728266476@thor>
  7. Sender: news@rational.com
  8. Organization: Rational
  9. References: <mmaccorm.68@fox.nstn.ns.ca>
  10. Date: Fri, 29 Jan 1993 00:14:36 GMT
  11. Lines: 97
  12.  
  13. mmaccorm@fox.nstn.ns.ca (Mike Mac Cormack) writes:
  14.  
  15. >1) Can you use Bootch for both analysis and design?  The first 3 steps of 
  16. >his method are almost identical to Coad/Yourdon's OOA.
  17.  
  18. The Booch notation and method are extremely well suited to OOA and OOD
  19. both.  However, the important thing is to understand what OOA and OOD
  20. are.
  21.  
  22. Analysis (Structured or OO) is the practice of converting a
  23. requirements document into a functional specification.  A requirements
  24. document is a list of behaviors required of the software product.
  25. Such a document is necessarily incomplete and even contradictory.  A
  26. functional specification is a detailed, precise and unambiguous
  27. statement of the behaviors of the software product.  (At least that's
  28. what it's supposed to be! :-)
  29.  
  30. OOA is the exploration of the *behavior* of the software product.
  31. (Which objects send what messages to which other objects and when)  OOD
  32. is the exploration of the static structure of the system (Who inherits
  33. from who, who contains who, who uses who) and how that static
  34. structure can be inserted into a physical environment (Multiple
  35. processors, operating systems, etc.)
  36.  
  37. Both of these tasks take place concurrently.  Although we start out
  38. doing mostly analysis type activities, we very rapidly begin doing
  39. some design like activities.  As the development progresses we slowly
  40. transition the ratio of analysis like activity to design like
  41. activity.  Thus, although OOA and OOD are different, there is no clear
  42. dividing line between them.  Instead there is a continuum between
  43. them.  It's like a spectrum, although Red is different from Orange,
  44. there is no clear dividing line between them.
  45.  
  46. The Booch notation is peculiarly adept at both the analysis parts and
  47. the design parts of this activity.  This is becuase it put equal
  48. weight on the dynamic and static modeling techniques.  Interestingly
  49. enough, many of the so-called OOA notations do not support *any*
  50. dynamic modeling, and so are not analysis tools at all.  They are more
  51. design like.
  52.  
  53. In the Booch notation, object diagrams are used to map out the flow of
  54. messages between objects.  This is a very important analysis activity.
  55. It is one of the best ways to identify what objects are in the model,
  56. and how they interact with each other.  Objects can't evolve in a
  57. vacuum.  They most evolve based on their association with other
  58. objects.  Thus, using the dynamic modelling provided by Booch's
  59. object diagrams turns out to be an excellent way to model and evolve
  60. objects.
  61.  
  62. Static modeling is also very important.  The static model describes
  63. the structure and relationships of your classes.  This is the
  64. progenitor of code.  Static structure cannot be developed in the
  65. absence of a dynamic model.  You have to know who your objects talk to
  66. in order to design the relationships between your classes.  
  67.  
  68. Booch's class diagrams are probably the most expressive notation
  69. (aside from code itself) for capturing the details of static
  70. structure.  They can start out abstract and incomplete.  As time goes
  71. on they can be fleshed out with many many adornments to capture design
  72. details at both the high and low levels.
  73.  
  74. While static structure is driven by the behavioral model, it also has
  75. a profound effect upon it.  Often you will alter your static model to
  76. deal with one requirment, and this will force you to change your
  77. dynamic model in another part of the design.  
  78.  
  79. When you are done, you wind up with a static model which supports a
  80. dynamic model.  The dynamic model is a set of behaviors which
  81. implements the behaviors from the requirements document.  So you have
  82. a clear path from the requirments document to the static structure.
  83. And it is the static structure that drives the most important aspects
  84. of the code.  
  85.  
  86. >3) How about using Coad/Yourdon for analysis and Bootch for design?  
  87.  
  88. One of the most significant disadvantages to Structured analysis and
  89. design is that they use different notations.  This forces a
  90. translation between analysis and design.  This keeps analysis and
  91. design separate.  And they belong together.
  92.  
  93. I strongly recommend that you use the same notation for analysis and
  94. design, and that you not separate your project into analysis and
  95. design phases.  Keep the analysis and design together, and even
  96. sprinkle a little coding in for good measure.  Do not manage your
  97. project in phases (Analysis, Design, Code, Test) etc.  Instead manage
  98. the project by slicing the project vertically in to the completion of
  99. several features or behaviors of the project.  Each vertical slice
  100. will require its own analysis, design, implementation and testing.
  101. When each vertical slice is done, you can use the knowledge gained
  102. about schedule and technology to help manage and complete the next
  103. one.
  104.  
  105. --
  106. Robert Martin       | Design Consulting    | Training courses offered:
  107. R. C. M. Consulting | rmartin@rational.com |  Object Oriented Analysis
  108. 2080 Cranbrook Rd.  | Tel: (708) 918-1004  |  Object Oriented Design
  109. Green Oaks, Il 60048| Fax: (708) 918-1023  |  C++
  110.