%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% OOPSLA 1999 WORKSHOP 13 EVAULATING OO DESIGN WORKSHOP NOTES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Participants: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Robert Biddle robert@mcs.vuw.ac.nz Victoria University, Wellington, New Zealand Rick Mercer mercer@cs.arizona.edu University of Arizona Eugene Wallingford wallingf@cs.uni.edu University of Northern Iowa, USA Joe Bergin berginf@pace.edu Pace University, New York, USA Ole Monrad monrad@acm.org Michael Trachtman michael@eloquence.com Eloquence Inc., Maryland, USA Richard Thomas r.thomas@qut.edu.au Queensland University of Technology, Australia Gregory Duval duval@nagra-kudelski.ch Nagra, Switzerland Michael Buri buri@nagra-kudelski.cg Nagra, Switzerland Sebastion Ojanguren ojangure@us.ibm.com IBM, USA AnaLucia Porthun porthun@casnav.mar.mil.br Brazilian Navy Renato Porthun renato@casnav.mar.mil.br Brazilian Navy Judy Mullins jmullins@cstp.umkc.edu University of Missouri (Kansas City), USA Sara Stoecklin stoeckli@CIS.FAMU.EDU Florida A&M University, USA Ben Frenkel famousben@hotmail.com University of Arizona, USA Andrew Wilt awilt@cs.arizona.edu University of Arizona, USA Samantha Kimsey kimsey@cs.arizona.edu University of Arizona, USA %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Transcipts of Posters: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Good Design vs. Bad Design -> Consequences Communication Flow (via use-case walkthroughs of many designs) Iterative Design XP = Extreme Programming %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1. Where the problem is 2. Why it is a problem 3. Example of bad consequences 4. Suggested Alternatives %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Earlier Evaluation? (Participatory Design) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Value Method Result Changeability Iteration Ripple-Effect Strawman Maintainability Scale Efficiency Communication Path Walkthrough Division of Labour Plug'n'Play Polymorphism Opportunity Present and Easy/Simple Future to Understand Program Correct %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Value Method Understandability Independent Questioning Heuristic: 1 service Functionality Use-case Functionality Walkthrough + Coverage Matrix Sequence Diagrams Usability Actor-Role involvement Generate Use-cases %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Value Method Functionality Analysis of Analysis Documents Understandability Design Matches Reverse Engineering of Analysis Analysis -> Understanding Sanity Check of Hotspot Analysis Domain Flexibility Requirements Understandability Identification of Pattern Reasonableness %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Value Method Testability Can I write a test-harness? Facade Present? Coupling and Cohesion Metrics Understandability Simple metrics Diagrams on single page Traceability (Functionality) Understandability %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Value Metrics With Reuse Re-invent the wheel? For Reuse Applicable to *known* other uses (or cheap) Identified Re-usability Opportunity Cost Model Checked Testability Design by Contract %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Design Rationale -> Decisions Made -> Tradeoffs Accepted -> Identify Flexibility (Provided and Ignored) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Advice for Design Evaluation * Values * Methods * Results Feedback and Grades Identify weaknesses and explain %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1st Cut -> functional -> understandable %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Value 1: Functionality Iterative? Meets Requirements (Testing Requirements?) [ Is this harder in OO?] * Use-case Walkthrough (Live?) * Check coverage - Collection of use-cases - Use-case x Reqs Matrix (from Analysis) - Scenarios with Sequence Diagrams 1. All user-cases? 2. Each correct behaviour? 3. Data capture of external data * Documents * User Interface * Potential Problems * Contracts * Design Traceable to Requirements: Reqs->Use-Cases->Checks * Deliverable: detailed coverage claim %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% * Iteration (length) * Role of Flexibility * Design for Change * Grading Inheritance * Data (Environmental?) * Evaluation in Midst of Design * Reuse For and With * Use-Case Walkthroughs *With Vigilance* * Etudes and Scaffolding -------- - Evaluation is not just OO - Look for Bad Design - Designers Documents - Deliverables - Analysis %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%