Introduction / Part 1: |
What is Rationale and Why Does It Matter? / 1: |
The Scope and Value of Rationale in Software Engineering / 1.1: |
Objectives of This Chapter / 1.1.2: |
A Rough Sketch of Research on Rationale / 1.2: |
Argumentative Approaches to Rationale / 1.2.1: |
Rationale Methods That Go Beyond Argumentation / 1.2.2: |
Why Rationale Matters / 1.3: |
The Usefulness of Rationale for Artifact Creation / 1.3.1: |
The Usefulness of Rationale for Software Engineering / 1.3.2: |
Summary and Conclusions / 1.4: |
What Makes Software Different / 2: |
Rationale for Software Artifacts versus Rationale for Physical ARtifacts / 2.1: |
The Roles of the Computer / 2.1.2: |
Comparison of the Roles of the Computer in the Lifecycles of Physical and Software Artifacts / 2.2.1: |
The Significance for Rationale Management in Software Engineering / 2.2.2: |
Iteration in Development / 2.3: |
The Role of Iteration in Different Types of Development / 2.3.1: |
Implications of Iteration for Rationale Management in Software Engineering / 2.3.2: |
Summary and Conclusion / 2.4: |
Rationale and Software Engineering / 3: |
Software Engineering / 3.1: |
Software Engineering Rationale / 3.1.2: |
Rationale and the Software Process / 3.1.3: |
Software Process Definition and Implementation / 3.2.1: |
Rationale and SE Process Decision-Making / 3.2.2: |
Rationale and Project Management / 3.3: |
Rationale and Software Development / 3.4: |
Why Capture Software Engineering Rationale? / 3.4.1: |
What are the Uses of Software Engineering Rationale? / 3.4.2: |
When can Software Engineering Rationale be Used in Software Development? / 3.4.3: |
How Can We Support Software Engineering Rationale Use in Software Development? / 3.4.4: |
Learning from Rationale Research in Other Domains / 3.5: |
Research on Rationale in other Domains / 4.1: |
Domain-Oriented Design Environments Using PHI / 4.1.2: |
PHIDIAS and JANUS / 4.2.1: |
Discussion / 4.2.2: |
Automating the Capture of Design Rationale with CAD / 4.3: |
The Rationale Capture Problem / 4.3.1: |
Solution Approach: Automating the Capture of Rationale / 4.3.2: |
Implementation: The Rationale Construction Framework / 4.3.3: |
Parameter Dependency Networks as Design Rationale / 4.3.4: |
The DRIVE System and Parameter Dependency Networks / 4.4.1: |
Case-Based Reasoning as Design Rationale / 4.4.2: |
From Automated Case-Based Reasoning to Case-Based Design Aids / 4.5.1: |
Decision-Making in Software Engineering / 4.5.2: |
General / 5.1: |
Objectives of this Chapter |
Decision-Making Problems / 5.2: |
Where Decisions Go Wrong / 5.2.1: |
Poor Decisions in Software / 5.2.2: |
Naturalistic Decision-Making / 5.3: |
Background / 5.3.1: |
The Recognition-Primed Decision Model / 5.3.2: |
Rationale as a Resource for Decision-Making / 5.4: |
Classical Decision-Making / 5.4.1: |
Naturalistic Decision-making / 5.4.2: |
Uses for Rationale / 5.5: |
Presentation of Rationale / 6: |
Codifying Rationale Semiformally / 6.1: |
The rationale for rationale notations / 6.2.1: |
Hypermedia Presentations of Rationale / 6.2.2: |
Using Semiformal Rationales / 6.2.3: |
Codifying Rationale Informally / 6.3: |
Directions / 6.4: |
Reusable Rationale Databases / 6.4.1: |
Multi-Scale Presentations of Rationale / 6.4.2: |
Integrated Presentation / 6.4.3: |
Evaluation / 6.5: |
Argumentation-Based Rationale / 7.1: |
Scenario-Based Rationale / 7.1.2: |
Evaluating the Rationale / 7.1.3: |
Completeness / 7.2.1: |
Correctness / 7.2.2: |
Evaluating the Decisions / 7.3: |
Comparing Alternatives / 7.3.1: |
Combining Inputs from Multiple Developers / 7.3.2: |
Handling Uncertainty / 7.3.3: |
Scenario-Based Evaluation / 7.4: |
Support for Collaboration / 7.5: |
Software Development as Collaborative Work / 8.1: |
Collaboration Is Inescapable / 8.2.1: |
Collaboration Entrains Challenges / 8.2.2: |
Collaboration Supports Rationale / 8.3: |
Collaboration Externalizes Rationales / 8.3.1: |
Software Development Communities of Practice / 8.3.2: |
Rationale Supports Collaboration / 8.4: |
Awareness / 8.4.1: |
Coordination / 8.4.2: |
Change Analysis / 8.5: |
Issues with Change in Software Development / 9.1: |
Types of Software Changes / 9.1.2: |
Functional Requirement Change / 9.2.1: |
Nonfunctional Requirement Change / 9.2.2: |
Changing Assumptions / 9.2.3: |
Structural Changes / 9.2.4: |
Defect Correction / 9.2.5: |
Change Impact Assessment / 9.3: |
Consistency Management / 9.4: |
Rationale and the Software Lifecycle / 9.5: |
Software Engineering Process / 10.1: |
Development Activities and Rationale / 10.1.2: |
Project Planning and Management / 10.2.1: |
Requirements / 10.2.2: |
Design / 10.2.3: |
Implementation / 10.2.4: |
Verification and Validation / 10.2.5: |
Maintenance / 10.2.6: |
Retirement / 10.2.7: |
Software Lifecycle Models / 10.3: |
Sequential Models / 10.3.1: |
Iterative Models / 10.3.2: |
Other Models / 10.3.3: |
Software Process Improvement / 10.4: |
CMM / 10.4.1: |
Personal Software Process / 10.4.2: |
Rationale and Requirements Engineering / 10.5: |
Requirements Engineering / 11.1: |
Obtaining Requirements / 11.1.2: |
Requirements Elicitation / 11.2.1: |
Achieving Consensus / 11.2.2: |
Requirements Inconsistency / 11.2.3: |
Requirements Prioritization / 11.2.4: |
Requirements Traceability / 11.3: |
Rationale and Nonfunctional Requirements / 11.4: |
Nonfunctional Requirement Categorization / 11.4.1: |
The NFR Framework / 11.4.2: |
SEURAT Argument Ontology and NFR Prioritization / 11.4.3: |
NFRs and Conflict Representation and Detection / 11.4.4: |
Goal-Based Requirements Engineering / 11.5: |
Goal-Based Requirements Analysis / 11.5.1: |
Goal-Oriented Requirements Engineering / 11.5.2: |
Relationship to Rationale / 11.5.3: |
Adapting to Changing Requirements / 11.6: |
Rationale and Software Design / 11.7: |
The Nature and Importance of Software Design Rationale / 12.1: |
Relating Rationale Approaches to Software Design Processes / 12.1.2: |
Decision-centric and Usage-centric Rationale Approaches / 12.2.1: |
Prescriptive and Descriptive Roles of Rationale Approaches / 12.2.2: |
Rationale for Design Space Analysis and Deeper Reflection / 12.2.3: |
Specific Approaches that Integrate Rationale into Software Design / 12.3: |
Rationale and Software Architecture / 12.3.1: |
Strategies for Fitting Rationale into Architectural Design Processes / 12.3.2: |
Rationale and Software Verification, Validation, and Testing / 12.4: |
Verification, Validation, and Testing / 13.1: |
Software Testing Issues / 13.1.2: |
Types of Software VV&T / 13.1.3: |
Inspection / 13.2.1: |
Unit Testing / 13.2.2: |
Integration Testing / 13.2.3: |
System Testing / 13.2.4: |
Rationale Support for Software VV&T / 13.3: |
Rationale and Testability / 13.3.1: |
Rationale and Test Case Prioritization / 13.3.2: |
Rationale, Testing, and Component Selection / 13.3.3: |
Software Testing Rationale / 13.4: |
Testing Rationale / 13.4.1: |
Uses for Testing Rationale / 13.4.2: |
Rationale and Software Maintenance / 13.5: |
Software Maintenance and Evolution / 14.1: |
Types of Software Maintenance / 14.1.2: |
Improving Maintainability / 14.3: |
Designing for Maintenance / 14.3.1: |
System Reengineering / 14.3.2: |
Software Maintenance Support / 14.4: |
Maintenance Prediction / 14.4.1: |
Impact Assessment / 14.4.2: |
Program Comprehension / 14.4.3: |
Maintenance Recovery / 14.4.4: |
Maintenance Rationale / 14.4.5: |
Rationale and Software Reuse / 14.5: |
Software Reuse / 15.1: |
Reuse: Concepts and Categories / 15.1.2: |
Types of Reuse / 15.2.1: |
Types of Rationale for Reuse / 15.2.2: |
Reusable Rationale / 15.2.3: |
Applying Rationale / 15.3: |
Rationale and Patterns / 15.3.1: |
Rationale and Component-Based Software Engineering / 15.3.2: |
Rationale and Software Product Lines / 15.3.3: |
Rationale and COTS-Based Software Engineering / 15.3.4: |
Frameworks for Rationale-Based Software Engineering / 15.4: |
A Conceptual Framework / 16: |
What a Conceptual Framework Should Do / 16.1: |
General Goals of Rationale Usage in Software Engineering / 16.1.2: |
Rationale: Types of Approaches, Specific Approaches, and Methods / 16.3: |
Decision-centric Rationale in Software Engineering / 16.4: |
Decision-Making in Rationale Approaches / 16.4.1: |
Question Answering in Software Engineering / 16.4.2: |
Using Decision-centric Rationale in the Full Spectrum of SER / 16.4.3: |
Usage-centric Rationale in Software Engineering / 16.5: |
Rationale and Iterative Software Development / 16.6: |
A Rationale-Based Account of Iterative Development / 16.6.1: |
Principles for Rationale Approaches to Support Iterative Development / 16.6.2: |
Supporting Iterative Development by Combining Decision-centric and Usage-centric Rationale / 16.6.3: |
Challenges to Rationale Usage / 16.7: |
Solving the Capture Problem / 16.7.1: |
Solving the Delivery Problem / 16.7.2: |
An Architectural Framework / 16.8: |
An Integrative Architecture for Rationale-Based Software Engineering / 17.1: |
The Need for an Integrative Approach to Rationale Management / 17.1.2: |
Representing and Integrating All Types of Software Engineering Rationale / 17.2.1: |
Alleviating the Capture and Delivery Problems / 17.2.2: |
Framework of an Integrative Architecture for Rationale Management in Software Engineering / 17.3: |
An Overview of the Framework / 17.3.1: |
Workings of the Rational Management System / 17.3.2: |
Integration with External Systems / 17.3.3: |
Rationale-Based Software Engineering: Summary and Prospect / 17.4: |
Rationale as an Aid to Software Engineering / 18.1: |
Summary of the Book / 18.1.2: |
The Challenges of Future Software Development / 18.3: |
Managing Change / 18.3.1: |
Managing the Increasing Scale, Complexity, and Longevity of Software Projects / 18.3.2: |
The Promise of Rationale-Based Software Engineering / 18.4: |
Rationale and the Management of Change / 18.4.1: |
Using Rationale to Manage the Increasing Scale, Complexity, and Longevity of Software Projects / 18.4.2: |
Challenges for Rationale-Based Software Engineering / 18.5: |
Addressing the Capture Problem / 18.5.1: |
Addressing the Delivery Problem / 18.5.2: |
Bibliography / 18.6: |
Glossary |
Index |