
<opts>
<isrc>keybd</isrc>
<iname>INPUT</iname>
<iecho>yes</iecho>
<odest>screen</odest>
<oname>OUTPUT</oname>
<onewl>lf</onewl>
<cfmt>~\n</cfmt>
<citer>1</citer>
<cdisp>nolist</cdisp>
<rtype>fmt</rtype>
<rfmt>\n\N\n\T\n</rfmt>
<rall>yes</rall>
<starg>UseCase</starg>
<srpl></srpl>
<scount>1</scount>
<sout>yes</sout>
<nfmt>general</nfmt>
<ndec>2</ndec>
<nang>degrees</nang></opts>
<cell>
<cname>AddOns</cname>
<text>>StateDiagrams
>ProcessDiagrams
>InteractionDiagram</text></cell>
<cell>
<cname>AnalysisModel</cname>
<text>Go through use cases, abstracting all of the objects neded to satisfy the requirements, and the relationships between them.
   Interface objects define interfaces to actors.
   Entity objects model problem domain objects.
   Use one control objet per use case.</text></cell>
<cell>
<cname>AnAnalysisAndDesignPlan</cname>
<text>This plan combines elements of Jacobson's requirements analysis, with Booch's design descriptions.

See >BasicPlan for a description of the basic elements of an analysis and design plan.

See >AddOns for a list of tools that could be used as needed.

See >PlanDeliverables for a summary of the deliverable items in the plan.

See >PlanBenefits for benificial features of the plan.

See >PlanDrawbacks for the downside.</text>
<script>Thanks to MJ Shuh for insisting that her project must have a use case analysis.  Otherwise I wouldn't have discovered Jacobsen's methods.
</script></cell>
<cell>
<cname>ApproachesToAnalysisAndDesign</cname>
<text>"Older Approaches"
     >Unstructured
     >Hatley_Pirbhai
     >Ward_Mellor

"Newer Approaches"
    >Booch
    >Schlaer_Mellor
    >Jacobsen
    >CoadYourdon
    >Yourdon
    >WaldenNerson</text></cell>
<cell>
<cname>BasicPlan</cname>
<text>Analysis
     >UseCases        -- give example
     >UserAndCommInterfaces
     >ObjectModel
     >AnalysisModel     -- example

Design
     >ClassOverview   --example
     >ClassDefinitionAndInterfaces  -- static view  -- ex.
     >ObjectInteractionScenarios -- dynamic views  --ex.
</text></cell>
<cell>
<cname>Booch</cname>
<text>Strong on design.
Surveys existing techniques for identifying objects and classes.</text>
<script>Object Oriented Analysis and Design, Second Edition
Grady Booch, Benjamin/Cummings Publishing Co.</script></cell>
<cell>
<cname>ClassDefinitionAndInterfaces</cname>
<text>Detailed definitions of each class, including:
      detailed descriptions of encapsulated data elements,
      data types of encapsulated data, 
      argument and return types of methods,
      detailed description of methods, suitable for coding.</text></cell>
<cell>
<cname>ClassesAndObjects</cname>
<text>Object -- A run time program unit that has state, behavior, and identity.  State is a description of the values of data encapsulated by the object.  Behavior is the collection of methods which access and/or change the state of the object.  Identity is what distinguishes one object from another.  An object is capable of receiving and acting upon messages from each of its methods.

Class -- A specification in a programming language of the permissable states and behavior of one or more objects.

We can think of the class as the means of defining and abstract data type, with its accessing functions and encapsulated data, and an object as an instance variable of the class.</text></cell>
<cell>
<cname>ClassOverview</cname>
<text>A textual or graphical overview of the classes necessary to implement a solution to the requirements, including:

      Class names
      Brief description of class purpose
     Attribute, or data names
     Service or method names
     Connections to other classes, including:
            associations &amp;  using relationships
            inheritance relationships
            generalization relationships
</text></cell>
<cell>
<cname>CoadSays</cname>
<text>Look for structures, other systems, devices, things or events remembered, roles played, operational procedures, sites, organizational units.

Consider and Challange classes and objects based on following criteria:
    needed rememberance
    needed behavior
    (usually) multiple attributes
    (usually) more than one object in a class
    always applicable attributes
    domain-based requirements
    not merely derived results</text></cell>
<cell>
<cname>CoadYourdon</cname>
<text>Simplified Booch.  Has what has become a fairly standard class symbol.  We tried the approach, and it is not rich enough in diagramming for real time work.</text>
<script>Object Oriented Analysis
Peter Coad/Edward Yourdon
Yourdon Press, 1990</script></cell>
<cell>
<cname>CRCCards</cname>
<text>  3x5 card with class name, class responsibilities, and collaborators.</text></cell>
<cell>
<cname>Deliverables</cname>
<text>The deliverables can be constructed with CASE tools from Rational Software; or they may be produced with text and diagram editors, or with text and hypertext editors, according to the preference of the designer.
</text></cell>
<cell>
<cname>DomainAnalysis</cname>
<text>Model the problem domain, identify classes and objects that are common to all applications.</text></cell>
<cell>
<cname>GoalOfSeminar</cname>
<text>Pique Interest in OOAD among developers.
Illustrate a sample process.
Supply references for further study.</text></cell>
<cell>
<cname>GoalsOfAnalysisAndDesign</cname>
<text>For our purposes, the goals of analysis and design are:

1)  To create a specification of interacting software >ClassesAndObjects which utilize the target hardware to solve the problems posed by the product requirements.

2)  To demonstrate that the design satisfies the product requirements, and mitigates the hazards forseen.

3)  To communicate to developers the theory of operation of the software system designed.</text></cell>
<cell>
<cname>Hatley_Pirbhai</cname>
<text>Data and Control Flow, and State diagrams.</text>
<script>Strategies for Real-Time System Specification,
Derek J. Hatley and Imtiaz A. Pirbhai
Dorset House Publishing, 1988</script></cell>
<cell>
<cname>home</cname>
<text>OOAD stands for Object Oriented Analysis and Design.  This web outlines a seminar I will give on an improved software analysis and design process.

>GoalOfSeminar

>WhatIsAnalysisAndDesign

>WhatIsItsStartingPoint

>GoalsOfAnalysisAndDesign

>ApproachesToAnalysisAndDesign

>AnAnalysisAndDesignPlan

>Presentation</text></cell>
<cell>
<cname>InformalTextualDescription</cname>
<text>Underline nows and verbs to get objexts, attributes and services.</text></cell>
<cell>
<cname>InteractionDiagram</cname>
<text>Traces the execution of an object scenario.</text></cell>
<cell>
<cname>Jacobson</cname>
<text>Requirements Analysis is strongest feature, especially use case analysis as preliminary for identifying objects and interactions implied by requirements.</text>
<script>Object Oriented Software Engineering, Ivar Jacobson.</script></cell>
<cell>
<cname>ObjectInteractionScenarios</cname>
<text>These are graphical or textual descriptions of how the methods work together to accomplish the main use cases in the system.</text></cell>
<cell>
<cname>ObjectModel</cname>
<text>How to identify the problem domain objects:

>CRCCards
>InformalTextualDescription
Identify objects in use cases
>DomainAnalysis
>CoadSays
</text></cell>
<cell>
<cname>PlanBenefits</cname>
<text>Specific benefits of  process are:

1)  The use cases not only facilitate analysis, they are also input to the validation plan, and can be used to verify the design, as well as the finished product.

2) Compilation of the use cases overlaps with the user interface work.  Now the user interface work can serve multiple purposes...define the interface, and drive analysis.

3)  Requirements model work blends into design work without discontinuity, as in some methods.

4) Flexibility of required deliverables augmented as needed by addons.
</text></cell>
<cell>
<cname>PlanDeliverables</cname>
<text>Analysis
     UseCases        --text descriptions
     >UserAndCommInterfaces
     >ObjectModel
     AnalysisModel     -- graphical or text descr.

Design
     ClassOverview   --diagram or text
     ClassDefinitionAndInterfaces  -- diagram or text
     ObjectInteractionScenarios -- diagram or descr.
     State transitions, process descriptions, and interaction diagrams as needed.
</text></cell>
<cell>
<cname>PlanDrawbacks</cname>
<text>Use case analysis can get quite complicated and time consuming.  Bill part of overhead to V&amp;V, since it is input to the validation plan.  Use CASE tool or database for repository.

It may take longer to arrive at the appropriate set of abstractions than it would with a top down, structured analysis.  On the other hand the abstractions are likely to be more robust.</text></cell>
<cell>
<cname>Presentation</cname>
<text>Present each piece of the plan, and illustrate it with examples as you go.</text></cell>
<cell>
<cname>ProcessDiagrams</cname>
<text>A simple flow chart of the main loop of all the processes employed by the system.</text></cell>
<cell>
<cname>ProposedMethodology</cname>
<text>Analysis begins with >UseCase, generates a >RequirementsObjectModel.   UseCase database used to create validation plan, and do user interface work.

In the design phase, develop a StaticSystemView, ObjectInteractionDiagrams or scenarios for significant interactions.  Do a detailled class specification (including interfaces)

Verify the design against the UseCase analysis.
</text></cell>
<cell>
<cname>Schlaer_Mellor</cname>
<text>Analysis id data modeling.
Design is strong on state machines.
</text>
<script>Object Lifecycles, 1992 Prentice Hall
Object-Oriented Systems Analysis, 1988 Prentice Hall
Sally Schlaer and Stepher J. Mellor
</script></cell>
<cell>
<cname>SomethingToTry</cname></cell>
<cell>
<cname>StateDiagrams</cname>
<text>Describes the sequence of states through which objects go in the normal course of processing.  These diagrams or hypertext descriptions would be used to describe in detail the action or interaction  of  methods within a class.</text></cell>
<cell>
<cname>Unstructured</cname>
<text>In unstructured Analysis and Design, you stew around in the requirements until the creative process happens.  Then you start coding.
</text>
<script>Not Documented</script></cell>
<cell>
<cname>UseCases</cname>
<text>Present Use Cases from Ivar's Book</text></cell>
<cell>
<cname>WaldenNerson</cname>
<text>These guys survey the OOAD literature, and then describe a software development process description called BON (Business Object Notation), which has 9 parts:

DelineateSystemBorderline
ListCandidateClasses
SelectClassesAndGroupIntoClusters
DefineClasses
SketchSystemBehaviors
DefinePublicFeatures
RefineSystem
Generalize
CompleteAndReviewSystem
</text>
<script>Seamless Object-Oriented Software Architecture
Kim Walden &amp; Jean-Marc Nerson, Prentice Hall,1995
</script></cell>
<cell>
<cname>Ward_Mellor</cname>
<text>Analysis is data and control flow.
Design is Structure Charts, State Diagrams, and Data Relationship Modeling.
</text>
<script>Structured Development for Real-Time Systems, Vol. 1,2,3
1985,Yourdon Press(Prentice Hall)</script></cell>
<cell>
<cname>WhatIsAnalysisAndDesign</cname>
<text>Analysis and design is that period between the time the problem is stated, and the time the solution is described.

Typically, there is some kind of creative process  that happens during this period. It results in an inkling of how to solve the stated problems.

Analysis is the work that happens before the creative process.  Design is what happens after the creative process.


---------------------------------------------
According to Booch:

In analysis we seek to model the world by discovering the classes and objects that form the vocabulary of the problem domain.

In design, we invent the abstractions and mechanisms that provide the behavior that the model requires.</text></cell>
<cell>
<cname>WhatIsItsStartingPoint</cname>
<text>The starting point of analysis and design is the manner in which the problem is stated.

Usually there is some kind of list of requirements.
You might have an old system to examine.
There may be discussions with users.
Frequently ther is a workshop (QFD)</text></cell>
<cell>
<cname>Yourdon</cname>
<text>This is Yourdon's improvement on CoadYourdon.  It is like CoadYourdon with a nod to state machines.</text>
<script>Object-Oriented System Design
Edward Yourdon,Yourdon Press, 1994</script></cell></eof>