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)
買這商品的人也買了...
-
$450$360 -
$590$466 -
$560$437 -
$350$231 -
$750$638 -
$860$731 -
$480$379 -
$5,220$4,959 -
$1,010$960 -
$650$514 -
$650$429 -
$1,590$1,511 -
$700$686 -
$690$545 -
$2,200$2,090 -
$438Head First 2D Geometry (水漬不影響閱讀可以接受再下單)
-
$1,500$1,425 -
$680$537 -
$480$379 -
$880$695 -
$834$792 -
$680$537 -
$600$468 -
$850$671 -
$780$616
相關主題
商品描述
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.
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.
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.
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.
Summary.
Things to Do.
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.
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.
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.
Invariants and Inheritance.
Designing Superclasses with Guarded Postconditions.
Two Kinds of Inheritance.
Summary.
Things to Do.
Superclasses and Subclasses.
Redefining Contracts.
Eiffel Syntax.
Summary.
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.
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.
Some Costs and Limitations of Contracts.
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.
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.
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.
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.
Dictionaries.
Java Without iContract.
Precondition Testing.
Things to Do.
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.
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.
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.
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 的合約。
到目前為止的故事。
執行時檢查。
可信的文件。
總結。
備忘錄。
待辦事項。
客戶管理器範例。
一些問題。
CUSTOMER_MANAGER 的合約。
到目前為止的故事。
執行時檢查。
可信的文件。
總結。
備忘錄。
待辦事項。
2. 合約設計的基本原則。
本章介紹。
堆疊。
分開命令和查詢。
命名慣例。
分開基本查詢和衍生查詢。
指定命令如何影響基本查詢。
在不變式中捕捉不變屬性。
類別及其合約。
基本查詢是堆疊的概念模型。
六項原則。
待辦事項。
堆疊。
分開命令和查詢。
命名慣例。
分開基本查詢和衍生查詢。
指定命令如何影響基本查詢。
在不變式中捕捉不變屬性。
類別及其合約。
基本查詢是堆疊的概念模型。
六項原則。
待辦事項。
3. 應用六項原則。
本章介紹。
字典。
分離和分類特徵。
後置條件。
前置條件。
不變式。
DICTIONARY 的完整合約級視圖。
總結。
待辦事項。
字典。
分離和分類特徵。
後置條件。
前置條件。
不變式。
DICTIONARY 的完整合約級視圖。
總結。
待辦事項。
4. 建立合約支援—不可變列表。
本章介紹。
對線性結構的支援。
合約涉及表達式。
不可變列表。
不可變列表的合約。
總結。
待辦事項。
對線性結構的支援。
合約涉及表達式。
不可變列表。
不可變列表的合約。
基本查詢。
創建命令。
衍生查詢計數。
衍生查詢 precedes。
衍生查詢項目。
衍生查詢相等。
衍生查詢子列表。
創建命令。
衍生查詢計數。
衍生查詢 precedes。
衍生查詢項目。
衍生查詢相等。
衍生查詢子列表。
總結。
待辦事項。
5. 將六項原則應用於 QUEUE。
本章介紹。
佇列。
移除特徵的合約。
將計數設為衍生特徵。
初始化特徵的合約。
頭部特徵的合約。
put 特徵的合約。
更多衍生查詢。
總結。
待辦事項。
佇列。
移除特徵的合約。
將計數設為衍生特徵。
初始化特徵的合約。
頭部特徵的合約。
put 特徵的合約。
更多衍生查詢。
總結。
待辦事項。
6. 合約設計與繼承。
本章介紹。
超類別和子類別。
重新定義合約。
不變式與繼承。
設計具有保護後置條件的超類別。
兩種繼承。
總結。
待辦事項。
超類別和子類別。
重新定義合約。
Eiffel 語法。
總結。
總結。
不變式與繼承。
設計具有保護後置條件的超類別。
兩種繼承。
總結。
待辦事項。
7. 框架規則。
本章介紹。
變更規範和框架規則。
使用不可變列表的 put 框架規則。
使用「Forall」的 put 框架規則。
框架規則的種類。
待辦事項。
附錄:有關預處理器的更多資訊。
變更規範和框架規則。
使用不可變列表的 put 框架規則。
使用「Forall」的 put 框架規則。
框架規則的種類。
待辦事項。
附錄:有關預處理器的更多資訊。
8. 合約設計的好處。
本章介紹。
好處的種類。
更好的設計。
提高可靠性。
更好的文件。
更容易的除錯。
支援重用。
合約設計與防禦性程式設計。
合約的一些成本和限制。
好處的種類。
更好的設計。
提高可靠性。
更好的文件。
更容易的除錯。
支援重用。
合約設計與防禦性程式設計。
防禦程式對抗不必要的輸入。
加固例程。
防禦性程式設計。
加固例程。
防禦性程式設計。
合約的一些成本和限制。
9. 觀察者框架的合約。
本章介紹。
觀察者框架。
不可變集合。
附加和分離觀察者。
通知(對一個觀察者)。
通知(對所有觀察者)。
性能問題。
框架規則。
隱私。
待辦事項。
觀察者框架。
不可變集合。
附加和分離觀察者。
通知(對一個觀察者)。
通知(對所有觀察者)。
性能問題。
框架規則。
隱私。
待辦事項。
10. 滿足前置條件。
本章介紹。
範例。
滿足和測試前置條件。
測試與檢查。
簡單的計數器類別。
使用者對程式的看法。
程式的內部結構。
程式的行為。
一個小細節。
總結。
待辦事項。
範例。
滿足和測試前置條件。
測試與檢查。
簡單的計數器類別。
使用者對程式的看法。
程式的內部結構。
程式的行為。
一個小細節。
總結。
待辦事項。
11. Java 範例。
本章介紹。
為什麼選擇 Java?
佇列。
字典。
沒有 iContract 的 Java。
前置條件測試。
待辦事項。
為什麼選擇 Java?
佇列。
基本查詢 size()。
基本查詢 get()。
衍生查詢 head()。
衍生查詢 isEmpty()。
衍生查詢 shallowCopy()。
構造函數 Queue。
命令 put。
命令 remove。
總結。
基本查詢 get()。
衍生查詢 head()。
衍生查詢 isEmpty()。
衍生查詢 shallowCopy()。
構造函數 Queue。
命令 put。
命令 remove。
總結。
字典。
名稱。
不變式。
基本查詢。
一個衍生查詢。
命令。
構造函數。
可能的類別集合。
不變式。
基本查詢。
一個衍生查詢。
命令。
構造函數。
可能的類別集合。
沒有 iContract 的 Java。
前置條件測試。
待辦事項。
12. 合約分析。
本章介紹。
一個使用案例。
分析模型中的合約。
withdrawCash 使用案例的合約。
從分析到設計。
問題領域和系統模型。
物件約束語言。
總結。
一個使用案例。
分析模型中的合約。
withdrawCash 使用案例的合約。
從分析到設計。
問題領域和系統模型。
物件約束語言。
總結。
參考文獻。
索引。