Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 12: Rationale Management Overview: rationale management What is rationale? Why is it critical in software engineering? Representing rationale Authoring rationale State-of-the-practice Consensus building (WinWin) Consistency with goals (NFR Framework) Rapid knowledge construction (Compendium) Summary Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 2 What is rationale? Rationale is the reasoning that led to the system. Rationale includes: the issues that were addressed, the alternatives that were considered, the decisions that were made to resolve the issues, the criteria that were used to guide decisions, and the debate developers went through to reach a decision. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 3 Why is rationale important in software engineering? Many software systems result from a large number of decisions taken over an extended period of time. Evolving assumptions Legacy decisions Conflicting criteria -> high maintenance cost -> loss & rediscovery of information Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 4 Uses of rationale in software engineering Improve design support Avoid duplicate evaluation of poor alternatives Make consistent and explicit trade-offs Improve documentation support Makes it easier for non developers (e.g., managers, lawyers, technical writers) to review the design Improve maintenance support Provide maintainers with design context Improve learning New staff can learn the design by replaying the decisions that produced it Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 5 Overview: rationale management What is rationale? Why is it critical in software engineering? Representing rationale Authoring rationale State-of-the-practice Consensus building (WinWin) Consistency with goals (NFR Framework) Rapid knowledge construction (Compendium) Summary Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 6 Representing rationale: issue models Argumentation is the most promising approach so far: More information than document: captures trade-offs and discarded alternatives that design documents do not. Less messy than communication records: communication records contain everything. Issue models represent arguments in a semi-structure form: Nodes represent argument steps Links represent their relationships Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 7 Issues Issues are concrete problem which usually do not have a unique, correct solution. Issues are phrased as questions. input?:Issue How should the dispatcher input commands? Bernd Bruegge & Allen H. Dutoit display?:Issue How should track sections be displayed? Object-Oriented Software Engineering: Using UML, Patterns, and Java 8 Proposals Proposals are possible alternatives to issues. One proposal can be shared across multiple issues. input?:Issue addressed by addressed by text-based:Proposal The display used by the dispatcher can be a text only display with graphic characters to represent track segments. Bernd Bruegge & Allen H. Dutoit display?:Issue addressed by point&click:Proposal The interface for the dispatcher could be realized with a point & click interface. Object-Oriented Software Engineering: Using UML, Patterns, and Java 9 Consequent issue Consequent issues are issues raised by the introduction of a proposal. input?:Issue display?:Issue addressed by addressed by text-based:Proposal addressed by point&click:Proposal raises terminal?:Issue Which terminal emulation should be used for the display? Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 10 Criteria A criteria represent a goodness measure. Criteria are often design goals or nonfunctional requirements. input?:Issue addressed by addressed by text-based:Proposal raises display?:Issue meets addressed by point&click:Proposal meets terminal?:Issue fails fails usability$:Criterion The CTC system should have at least a 99% availability. Bernd Bruegge & Allen H. Dutoit availability$:Criterion The time to input commands should be less than two seconds. Object-Oriented Software Engineering: Using UML, Patterns, and Java 11 Arguments Arguments represent the debate developers went through to arrive to resolve the issue. Arguments can support or oppose any other part of the rationale. Arguments constitute the most part of rationale. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 12 Arguments (2) input?:Issue addressed by addressed by text-based:Proposal raises display?:Issue meets addressed by point&click:Proposal meets terminal?:Issue fails fails usability$:Criterion is opposed by availability$:Criterion is supported by availability-first!:Argument Point&click interfaces are more complex to implement than text-based interfaces. Hence, they are also more difficult to test. The point&click interface risks introducing fatal errors in the system that would offset any usability benefit the interface would provide. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 13 Resolutions Resolutions represent decisions. A resolution summarizes the chosen alternative and the argument supporting it. A resolved issue is said to be closed. A resolved issue can be re-opened if necessary, in which case the resolution is demoted. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 14 Resolutions (2) resolves text-based&keyboard :Resolution input?:Issue text-based:Proposal raises display?:Issue addressed by addressed by meets resolves addressed by point&click:Proposal meets terminal?:Issue fails fails usability$:Criterion is opposed by availability$:Criterion is supported by availability-first!:Argument Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 15 Overview: rationale management What is rationale? Why is it critical in software engineering? Representing rationale Authoring rationale State-of-the-practice Consensus building (WinWin) Consistency with goals (NFR Framework) Rapid knowledge construction (Compendium) Summary Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 16 Authoring Rationale When to capture rationale In meetings Real-time communications, clarifications, negotiations and resolutions Meeting minutes can be recorded in structured format, based on issue model Asynchronously Contextual information can be added in between meetings Project participants absent during meetings can read the minutes and post additional issues or options, which can be resolved offline When discussing change Change is inevitable – requirements change, assumptions change It is important to record the rationale not only for the original decision, but subsequent changes Rationale for change must be related back to past rationale After the fact Many project discussions are carried out informally The rationale behind the decisions resulting from these discussions should also be reconstructed and recorded. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 17 Authoring rationale Approaches Reconstruction Record-and-replay Byproduct of development methodology Incremental and semi automated structuring Challenges Lot of information to capture Disruptive for developers Formalizing knowledge is expensive Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 18 Record and replay example: meeting management Facilitator posts an agenda Discussion items are issues Participants respond to the agenda Proposed amendments are proposals or additional issues Facilitator updates the agenda and facilitates the meeting The scope of each discussion is a single issue tree Minute taker records the meeting The minute taker records discussions in terms of issues, proposals, arguments, and criteria. The minute taker records decisions as resolutions and action items. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 19 Centralized traffic control Trains S2 T1291> S3 Track circuits Signals Switches SW1 SW2 <T1515 S1 S4 CTC systems enable dispatchers to monitor and control trains remotely CTC allows the planning of routes and replanning in case of problems Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 20 Centralized traffic control (2) CTC systems are ideal examples of rationale capture: Long lived systems (some systems include 19th century relays) Extended maintenance life cycle Although not life critical, downtime is expensive Low tolerance for bugs Transition to mature technology needs careful planning Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 21 Record and replay example: database discussion agenda 3. Discussion I[1] Which policy for retrieving tracks from the database? I[2] Which encoding for representing tracks in transactions? I[3] Which query language for specifying tracks in the database request? Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 22 Record and replay example: database discussion I[1] Which policy for retrieving tracks from the database? Jim: How about we just retrieve the track specified by the query? It is straightforward to implement and we can always revisit it if it is too slow. Ann: Prefetching neighboring tracks would not be much difficult and way faster. Sam: During route planning, we usually need the neighbor tracks anyway. Queries for route planning are the most common queries. Jim: Ok, let’s go for the prefetch solution. We can revert to the simpler solution if it gets too complicated. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 23 Record and replay example: database discussion minutes 3. Discussion I[1] Which policy for retrieving tracks from the database? P[1.1] Single tracks! A- Lower throughput. A+ Simpler. P[1.2] Tracks + neighbors! A+ Overall better performance: during route planning, we need the neighbors anyway. {ref: 1/31 routing meeting} R[1] Implement P[1.2]. However, the prefetch should be implemented in the database layer, allowing use to encapsulate this decision. If all else fails, we will fall back on P[1.1]. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 24 Methodology by-product example: the Inquiry-Based Cycle Requirements Challenge Change Question ? D Answer ! Evolution Decide Reason . Discussion Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 25 Accessing rationale Browse & search Full text search allows to identify interesting nodes Issue model links allow the browsing of related issues quickly Passive & active design critique Rationale can be used by knowledge based critiques to evaluate a design Challenges Evolving terminology Navigation through a large flat space Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 26 Overview: rationale management What is rationale? Why is it critical in software engineering? Representing rationale Authoring rationale State-of-the-practice Consensus building (WinWin) Consistency with goals (NFR Framework) Rapid knowledge construction (Compendium) Summary Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 27 Consensus building Problem Any realistic project suffers the tension of conflicting goals Stakeholders come from different background Stakeholders have different criteria Example Stakeholders in requirements engineering Client: business process (cost and schedule) User: functionality Developer: architecture Manager: development process (cost and schedule) Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 28 Consensus building: WinWin Philosophy – making winners of key stakeholders is a necessary and sufficient condition for project success Incremental, risk-driven process Identification of stakeholders Identification of win conditions Conflict resolution Asynchronous groupware tool Stakeholders post win conditions Facilitator detects conflict Stakeholders discuss alternatives Stakeholders make agreements Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 29 Consensus building: Negotiation Model Taxonomy Category Win Condition involves Issue addresses Opt ion covers Bernd Bruegge & Allen H. Dutoit adopts Agreement Object-Oriented Software Engineering: Using UML, Patterns, and Java 30 Artifacts of Negotiation Model Win conditions – capture stakeholder goals and concerns with respect to a new system Issues – record conflicts among win conditions Options – alternative solutions to address issues Agreements – used to adopt an option, or if there were no conflicts, the win conditions are adopted. Taxonomy – links artifacts, acts as checklist for sufficient coverage Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 31 Consensus building: Process 2. Identify stakeholders’ win conditions 1. Identify stakeholders 3. Reconcile win conditions. Establish alternatives. 7. Review & commit 6. Validate 4. Evaluate & resolve risks. 5. Define solution Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 33 WinWin Tool Groupware tool for stakeholders to negotiate mutually satisfactory system specifications. Supports WinWin negotiation model Synchronous and asynchronous negotiations Additional tools support tradeoff analysis and risk identification and resolution A4 (Architecture Attribute Analysis Aid) – Architecture-based analysis of cost, schedule, performance and reliability. Rapide – Architecture tool for modeling and simulating systems and identifying problems (deadlocks, bottlenecks, etc.) in the architecture. COCOMO (Constructive Cost Model) II – Cost/schedule estimation tool. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 34 Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 36 Consistency with goals Problem Once multiple criteria have been acknowledged Find solutions that satisfy all of them Document the trade-offs that were made Example Authentication should be secure, flexible for the user, and low cost. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 38 Consistency with goals: NFR Framework NFR goal refinement NFRs are represented as goals in a graph Leaf nodes of the graph are operational requirements Relationships represent “help” “hurt” relationships One graph can represent many alternatives NFR evaluation Make and break values are propagated through the graph automatically Developer can evaluate different alternatives and compare them Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 39 Consistency with goals: Model X Flexibility Low cost _ + + Security AND _ Authent ication Confidentiality Integrity OR Account+PIN Finger Print Reader SmartCard+PIN Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 40 Consistency with goals: Process Elicit high-level goals Evaluate alternatives Refine into detailed goals Identify operational goals Bernd Bruegge & Allen H. Dutoit Identify goal dependencies Object-Oriented Software Engineering: Using UML, Patterns, and Java 41 Rapid knowledge construction Problem When a company is large enough, it doesn’t know what it does. Knowledge rarely crosses organizational boundaries Knowledge rarely crosses physical boundaries Example Identify resources at risk for Y2K and prioritize responses. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 43 Rapid knowledge construction: Compendium Meeting facilitation Stakeholders from different business units External facilitator Real-time construction of knowledge maps The focus of the meeting is a concept map under construction Map includes the issue model nodes and custom nodes (e.g., process, resource, etc.) Knowledge structuring for long term use Concept map exported as document outline, process model, memos, etc. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 44 Rapid knowledge construction: Knowledge Map Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 45 Nodes in the Knowledge Map Questions Ideas / answers Arguments – pros and cons Decisions Notes References Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 46 Rapid knowledge construction: Generating Document Templates Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 47 Questions, Options, Criteria Designed for capturing rationale after the fact, for long term use (e.g., quality assessment). QOC emphasizes systematic Question ? evaluation of options against criteria consequent question response positive assessment + Option ! Criterion $ negative assessment supports + objects-to - supports + objects-to - Argument . Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 50 Other issue models: Decision Representation Language is a good alternative for Alternative Decision Problem achieves Goal AchievesLink Claim denies denies supports is a result of Procedure Bernd Bruegge & Allen H. Dutoit Claim answers is an answering procedure for Object-Oriented Software Engineering: Using UML, Patterns, and Java supports presupposes raises Question 51 Summary Rationale can be used in project management To build consensus (WinWin) To ensure quality (NFR Framework) To elicit knowledge (Compendium) Other applications include Risk management Change management Process improvement Open issues Tool support User acceptance Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 52
© Copyright 2024