1 / 28

Software Design Methodologies: UML in Action

Software Design Methodologies: UML in Action. Dr. Mohamed Fayad, J.D. Edwards Professor Department of Computer Science & Engineering University of Nebraska, Lincoln Ferguson Hall, P.O. Box 880115 Lincoln, NE 68588-0115 http://www.cse.unl.edu/~fayad. Lesson 3: Analysis Heuristics. 2.

lars
Download Presentation

Software Design Methodologies: UML in Action

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Software Design Methodologies: UML in Action Dr. Mohamed Fayad, J.D. Edwards Professor Department of Computer Science & Engineering University of Nebraska, Lincoln Ferguson Hall, P.O. Box 880115 Lincoln, NE 68588-0115 http://www.cse.unl.edu/~fayad ISISTAN Research Institute – Tandil, Argentina

  2. Lesson 3: Analysis Heuristics 2 ISISTAN Research Institute – Tandil, Argentina -- M.E. Fayad

  3. Lesson Objectives • Overview of previous lectures. • Understand the analysis heuristics • Go Beyond the Problem Domain • Speculate About Likely Changes • Separate General Functionality from Specific Policy • Object should have Cohesive Interfaces • Objects Should Be Intelligent Agents • Objects Should Export Services • Avoid “Object Machismo” 3 ISISTAN Research Institute – Tandil, Argentina -- M.E. Fayad

  4. RA Design Code Test Deploy Overview: Life Cycle • What • How • Build • Test • Use • What is the customer really wants? • How – the best solution • How do we construct (implement) the system • Test - Are customer requirements testable? - Does the how logically follow from what? - Does the built system do what it is suppose to do? • How do we enhance &/or repair the built system? 4 ISISTAN Research Institute – Tandil, Argentina -- M.E. Fayad

  5. Analysis Design What is the problem? How to solve the problem? Problem Space Solution Space Mostly “one” Problem Many Solutions Overview: Analysis vs. Design 5 ISISTAN Research Institute – Tandil, Argentina -- M.E. Fayad

  6. Practical Concrete Action Can be measured Repeatable Tailorable Must be documented Hierarchical Specify who, what, when, how and ignore the why? Overview: Process Properties 6 ISISTAN Research Institute – Tandil, Argentina -- M.E. Fayad

  7. Simple Complete (most likely to be correct) Stable to technological changes Testable Easy to understand Visual or graphical Overview: Model Properties 7 ISISTAN Research Institute – Tandil, Argentina -- M.E. Fayad

  8. A system structure is based on the “Real World”, “locks in” today’s problem domain relationships. This makes it difficult to adapt the system to future requirements. Look for relationships and generalizations that transcend the current problem domain Ask “What is it?” Heuristic #1: Go Beyond the Problem Domain 8 ISISTAN Research Institute – Tandil, Argentina -- M.E. Fayad

  9. Build these into the analysis model Developing an adaptable architecture does not happen just because you are using OOD and/or C++ (any more than extensibility or reuse occur automatically) Heuristic #1: Go Beyond the Problem Domain • Generalize Early & Generalize Vigorously 9 ISISTAN Research Institute – Tandil, Argentina -- M.E. Fayad

  10. The “Real World” is the best model of today but it only hints at what tomorrow will bring Basic for speculation Changing user requirements Changing customer base Competitive products changing technology Heuristic #2: Speculate About Likely Changes 10 ISISTAN Research Institute – Tandil, Argentina -- M.E. Fayad

  11. Build the analysis model so it can adapt to these likely changes You do not have to be 100% correct. Developing an adaptable architecture does not happen just because you are using OOD and/or C++ (any more than extensibility or reuse occur automatically) – Exs: Hooks, HotSpots, Design Patterns Heuristic #2: Speculate About Likely Changes 11 ISISTAN Research Institute – Tandil, Argentina -- M.E. Fayad

  12. Place general functionality in entity objects (class) Entity object (class) will now be more reusable. Place specific policy in control objects (active class) Policy is localized so that it is easier to introduce changes to this policy Heuristic #3: Separate General Functionality from Specific Policy 12 ISISTAN Research Institute – Tandil, Argentina -- M.E. Fayad

  13. Conservation of Policy There is no way to eliminate or ignore all policy The policy will be in the delivered system All we can do is structure the policy so that it is easy to adapt and change it. Heuristic #3: Separate General Functionality from Specific Policy • Mechanism Rich & Policy Free 13 ISISTAN Research Institute – Tandil, Argentina -- M.E. Fayad

  14. Heuristic #3: Illustrated Example – The Problem Calculator State Tax File System Federal Tax 14 Forms ISISTAN Research Institute – Tandil, Argentina -- M.E. Fayad

  15. Heuristic #3: Illustrated Example – The Solution State Tax MRPR Federal Tax MRPR Forms MRP+ Calculator MRPF 15 File System MRPF ISISTAN Research Institute – Tandil, Argentina -- M.E. Fayad

  16. In the “Real World”, a remote Controller for home electronics may have 50 buttons for controlling your TV, VCR, Stereo , and others. Modeling this controller as a single, real-life object will not be adaptable to future changes. Heuristic #4: Objects Should Have Cohesive Interfaces 16 ISISTAN Research Institute – Tandil, Argentina -- M.E. Fayad

  17. It may be better to: First model each different set of operations as a separate object with a strongly cohesive interface. Model the combined functionality as a separate object that uses other objects. Result is more adaptable and reusable Heuristic #4: Objects Should Have Cohesive Interfaces • Do One Thing 17 ISISTAN Research Institute – Tandil, Argentina -- M.E. Fayad

  18. Intelligent (Responsible) Objects Incorporate important knowledge Incorporate knowledge that is difficult to produce, find, or replicate Know how to synthesize knowledge Heuristic #5: Objects Should Intelligent Agents 18 ISISTAN Research Institute – Tandil, Argentina -- M.E. Fayad

  19. Agents are capable of (limited) autonomous behavior Know that they are supposed to do, and they do. Work best with limited supervision. Adapt to their environment Know how to delegate work to other objects Heuristic #5: Objects Should Intelligent Agents 19 ISISTAN Research Institute – Tandil, Argentina -- M.E. Fayad

  20. Agents are capable of (limited) autonomous behavior Know how to find objects to which they can delegate work Have the information they need or know where to get the information or know where to get information on getting information or can interpret information given to them. Are highly adaptable, extensible, and reusable Are expensive to design and build Heuristic #5: Objects Should Intelligent Agents 20 ISISTAN Research Institute – Tandil, Argentina -- M.E. Fayad

  21. Objects that only export attributes or data must be manipulated by clients. (aka. “dead data”) Objects that only export basic operations require clients to direct and supervise all activity (aka. “stupid objects”) Objects that export services make life easier for their clients: Server selects the best way to perform the service Server finds and manages the resources Heuristic #6: Objects Should Export Services 21 ISISTAN Research Institute – Tandil, Argentina -- M.E. Fayad

  22. Services should define “What” not “How” Can “Drive to Work” be replaced by “Get to Work” Enhances extensibility Enhances reusability Distributes intelligence Heuristic #6: Objects Should Export Services 22 • Move Complexity From the Clients to the Servers ISISTAN Research Institute – Tandil, Argentina -- M.E. Fayad

  23. Heuristic #6: Stack Example Stack Implementations Type Stack push ( ) DLL pop ( ) SLL length ( ) Stack Interfaces ARY empty ( ) HT full ( ) 23 ISISTAN Research Institute – Tandil, Argentina -- M.E. Fayad

  24. Object machismo Equating the value of an object with how big and/or complex it is (e.g., Lines of Code, # of methods, or complexity of algorithms it uses). Macho objects tend to be central controllers that are difficult to design, difficult to understand, have to much policy, are hard to extend, and low reuse potential. Heuristic #7: Avoid “Object Machismo” 24 ISISTAN Research Institute – Tandil, Argentina -- M.E. Fayad

  25. The value of an object is based on many factors Does it do something useful Does it have a simple and clean interface Does it have well-specific behavior Does it model an essential quality of the system Can it be composed with other objects to perform more complex tasks. Heuristic #7: Avoid “Object Machismo” 25 ISISTAN Research Institute – Tandil, Argentina -- M.E. Fayad

  26. The value of an object is also based on other objects: An object perfectly suited for one model may be totally wrong in another model The object must be placed in context to see whether or not it is a good and valuable object. Heuristic #7: Avoid “Object Machismo” • A Valuable Object Works and Plays Well with Others. 26 ISISTAN Research Institute – Tandil, Argentina -- M.E. Fayad

  27. Explain the following statements: 1. Objects should be intelligent agents 2. Mechanism rich and policy free 3. A valuable object works and plays well with others 4. Analysis model should not be too elaborate or too formal Explain how to build an analysis model Explain how do you make the analysis model more adaptable Discussion Questions 27 ISISTAN Research Institute – Tandil, Argentina -- M.E. Fayad

  28. Define: Guidelines Heuristics What do you think of these heuristics A designer should distribute system intelligence uniformly among the top level classes in the system. A designer should have 4.6 top level classes per 1,000 lines of code. Eliminate classes that are outside the system Questions for the Next Lecture 28 ISISTAN Research Institute – Tandil, Argentina -- M.E. Fayad

More Related