Design by Contract by Example (Paperback)

Richard Mitchell, Jim McKim

  • 出版商: Addison Wesley
  • 出版日期: 2001-10-22
  • 售價: $1,910
  • 貴賓價: 9.5$1,815
  • 語言: 英文
  • 頁數: 256
  • 裝訂: Paperback
  • ISBN: 0201634600
  • ISBN-13: 9780201634600
  • 相關分類: 軟體工程
  • 立即出貨(限量) (庫存=4)

買這商品的人也買了...

相關主題

商品描述

Table of Contents

Foreword.
Preface.

1. A First Taste of Design by Contract.

About This Chapter.
The Customer Manager Example.
Some Questions.
A Contract for CUSTOMER_MANAGER.
The Story So Far.
Runtime Checking.
Trustworthy Documentation.
Summary.
An Aide Memoire.
Things to Do.


2. Elementary Principles of Design by Contract.

About This Chapter.
Stacks.
Separate Commands and Queries.
Naming Conventions.
Separate Basic Queries and Derived Queries.
Specify How Commands Affect Basic Queries.
Capture Unchanging Properties in Invariants.
The Class and Its Contract.
The Basic Queries Are a Conceptual Model of Stacks.
The Six Principles.
Things to Do.


3. Applying the Six Principles.

About This Chapter.
Dictionaries.
Separating and Categorizing Features.
Postconditions.
Preconditions.
Invariant.
A Complete, Contract-Level View of DICTIONARY.
Summary.
Things to Do.


4. Building Support for Contracts—Immutable Lists.

About This Chapter.
Support for Linear Structures.
Contracts Involve Expressions.
Immutable Lists.
A Contract for Immutable Lists.
The Basic Queries.
The Creation Command.
The Derived Query Count.
The Derived Query Preceded_by.
The Derived Query Item.
The Derived Query is_equal.
The Derived Query Sublist.

Summary.
Things to Do.


5. Applying the Six Principles to QUEUE.

About This Chapter.
Queues.
A Contract for the Remove Feature.
Making Count a Derived Feature.
A Contract for the Initialize Feature.
A Contract for the Head Feature.
A Contract for the put Feature.
More Derived Queries.
Summary.
Things to Do.


6. Design by Contract and Inheritance.

About This Chapter.
Superclasses and Subclasses.
Redefining Contracts.
Eiffel Syntax.
Summary.

Invariants and Inheritance.
Designing Superclasses with Guarded Postconditions.
Two Kinds of Inheritance.
Summary.
Things to Do.


7. Frame Rules.

About This Chapter.
Change Specifications and Frame Rules.
Frame Rules for put Using Immutable Lists.
Frame Rules for put Using “Forall” .
Kinds of Frame Rules.
Things to Do.
Appendix: More About the Preprocessor.


8. Benefits of Design by Contract.

About This Chapter.
Kinds of Benefits.
Better Designs.
Improved Reliability.
Better Documentation.
Easier Debugging.
Support for Reuse.
Design by Contract and Defensive Programming.
Defending a Program Against Unwanted Input.
Bulletproofing a Routine.
Defensive Programming.

Some Costs and Limitations of Contracts.


9. Contracts for an Observer Framework.

About This Chapter.
The Observer Framework.
Immutable Sets.
Attaching and Detaching Observers.
Notification (For One Observer).
Notification (For All Observers).
A Performance Issue.
Frame Rules.
Privacy.
Things to Do.


10. Fulfilling a Precondition.

About This Chapter.
The Examples.
Fulfilling and Testing a Precondition.
Testing Versus Checking.
A Simple Counter Class.
The User's View of the Program.
The Internal Structure of the Program.
The Program's Behavior.
A Minor Detail.
Summary.
Things to Do.


11. Java Examples.

About This Chapter.
Why Java?
Queues.
The Basic Query size().
The Basic Query get().
The Derived Query head().
The Derived Query isEmpty().
The Derived Query shallowCopy().
The Constructor Queue.
The Command put.
The Command remove.
Summary.

Dictionaries.
Names.
The Invariant.
The Basic Queries.
A Derived Query.
The Commands.
The Constructor.
A Possible Set of Classes.

Java Without iContract.
Precondition Testing.
Things to Do.


12. Analysis by Contract.

About This Chapter.
A Use Case.
Contracts in Analysis Models.
A Contract for the withdrawCash Use Case.
From Analysis to Design.
Problem Domain and System Models.
The Object Constraint Language.
Summary.


Bibliography.
Index.

商品描述(中文翻譯)

目錄

前言。

前言。


1. 設計契約的初次嘗試。

本章概述。

客戶管理範例。

一些問題。

CUSTOMER_MANAGER 的契約。

到目前為止的故事。

運行時檢查。

可信賴的文件。

摘要。

輔助記憶。

待辦事項。



2. 設計契約的基本原則。

本章概述。

堆疊。

分離命令和查詢。

命名慣例。

分離基本查詢和衍生查詢。

指定命令如何影響基本查詢。

在不變性中捕獲不變的屬性。

類和其契約。

基本查詢是堆疊的概念模型。

六個原則。

待辦事項。



3. 應用六個原則。

本章概述。

字典。

分離和分類功能。

後置條件。

前置條件。

不變性。

DICTIONARY 的完整契約級別視圖。

摘要。

待辦事項。



4. 建立契約支援-不可變列表。

本章概述。

支援線性結構。

契約涉及表達式。

不可變列表。

不可變列表的契約。
基本查詢。

創建命令。

衍生查詢 Count。

衍生查詢 Preceded_by。

衍生查詢 Item。

衍生查詢 is_equal。

衍生查詢 Sublist。



摘要。

待辦事項。



5. 將六個原則應用於 QUEUE。

本章概述。

隊列。

移除功能的契約。

使 Count 成為衍生功能。

初始化功能的契約。

頭部功能的契約。

放置功能的契約。

更多衍生查詢。

摘要。

待辦事項。



6. 設計契約和繼承。

本章概述。

超類和子類。

重新定義契約。
Eiffel 語法。

摘要。



不變性和繼承。

使用保護後置條件設計超類。

兩種類型的繼承。

摘要。

待辦事項。



7. 框架規則。

本章概述。

更改規格和框架規則。

使用不可變列表的 put 框架規則。

使用“Forall” 的 put 框架規則。

框架規則的種類。

待辦事項。

附錄:有關預處理器的更多信息。



8. 設計契約的好處。

本章概述。

好處的種類。

更好的設計。

提高可靠性。

更好的文檔。

更容易調試。

支援重用。

設計契約和防禦性編程。
保護程序免受不需要的輸入。

使程序防彈。

防禦性編程。



契約的一些成本和限制。



9. 觀察者框架的契約。

本章概述。

觀察者框架。

不可變集合。

附加和分離觀察者。

通知(對於單個觀察者)。

通知(對於所有觀察者)。

性能問題。

框架規則。

隱私。

待辦事項。

<```