书籍详情
软件开发的形式化工程方法:结构化+面向对象+形式化
作者:(日)刘少英 著
出版社:清华大学出版社
出版时间:2008-08-01
ISBN:9787302183174
定价:¥45.00
购买这本书可以去
内容简介
《软件开发的形式化工程方法:结构化+面向对象+形式化》首次开创了一个新技术,即形式化工程方法,把传统的形式化方法和软件工程有机结合起来。它提供了一个严密、系统、有效的软件开发方法,其实用性超过了目前所有形式化方法。这正好可以满足学术界、软件工程类学生对学习形式化工程方法和SOFL的迫切需求。《软件开发的形式化工程方法:结构化+面向对象+形式化》通俗易懂,实例丰富,可满足读者即学即用的需要。书中对软件开发中的形式化工程方法进行了介绍和讨论,内容涵盖SE 2004中关于“软件的形式化方法”的知识点,主要包括:有限状态机、Statechart、Petri网、通信顺序进程、通信系统演算、一阶逻辑、程序正确性证明、时态逻辑、模型检验、2、VDM和Larch等。《软件开发的形式化工程方法:结构化+面向对象+形式化》可作为计算机、软件工程等专业高年级本科生或研究生的教学用书,也可供相关领域的研究人员和工程技术人员参考。
作者简介
Shaoying Liu 教授,著名计算机专家,日本法政大学教授,上海交通大学和上海大学客座教授。早年在西安交通大学获得学士和硕士学位,后在英国曼彻斯特大学获得博士学位。现为IEEE计算机学会复杂性技术委员会副主席,IEEE计算机学会、ACM、日本软件科学与技术学会成员。多年来,在计算机科学的许多领域,包括形式化方法及理论、软件开发方法学、软件检查、软件测试、可靠复杂计算机系统以及智能软件工程环境等方面做出了重要贡献。目前在著名国际杂志及仁义发表学术论文80多篇,出版研究专著4部。
目录
1 Introduction
1.1 Software Life Cycle
1.2 The Problem
1.3 Formal Methods
1.3.1 What Are Formal Methods
1.3.2 Some Commonly Used Formal Methods
1.3.3 Challenges to Formal Methods
1.4 Formal Engineering Methods
1.5 What Is SOFL
1.6 A Little History of SOFL
1.7 Comparison with Related Work
1.8 Exercises
2 Propositional Logic
2.1 Propositions
2.2 Operators
2.3 Conjunction
2.4 Disjunction
2.5 Negation
2.6 Implication
2.7 Equivalence
2.8 Tautology, Contradiction, and Contingency
2.9 Normal Forms
2.10 Sequent
2.11 Proof
2.11.1 Inference Rules
2.11.2 Rules for Conjunction
2.11.3 Rules for Disjunction
2.11.4 Rules for Negation
2.11.5 Rules for Implication
2.11.6 Rules for Equivalence
2.11.7 Properties of Propositional Expressions
2.12 Exercises
3 Predicate Logic
3.1 Predicates
3.2 Quantifiers
3.2.1 The Universal Quantifier
3.2.2 The Existential Quantifier
3.2.3 Quantified Expressions with Multiple Bound Variables
3.2.4 Multiple Quantifiers
3.2.5 de Morgan's Laws
3.3 Substitution
3.4 Proof in Predicate Logic
3.4.1 Introduction and Elimination of Existential Quantifiers
3.4.2 Introduction and Elimination of Universal Quantifiers
3.5 Validity and Satisfaction
3.6 Treatment of Partial Predicates
3.7 Formal Specification with Predicates
3.8 Exercises
4 The Module
4.1 Module for Abstraction
4.2 Condition Data Flow Diagrams
4.3 Processes
4.4 Data Flows
4.5 Data Stores
4.6 Convention for Names
4.7 Conditional Structures
4.8 Merging and Separating Structures
4.9 Diverging Structures
4.10 Renaming Structure
4.11 Connecting Structures
4.12 Important Issues on CDFDs
4.12.1 Starting Processes
4.12.2 Starting Nodes
4.12.3 Terminating Processes
4.12.4 Terminating Nodes
4.12.5 Enabling and Executing a CDFD
4.12.6 Restriction on Parallel Processes
4.12.7 Disconnected CDFDs
4.12.8 External Processes
4.13 Associating CDFD with a Module
4.14 How to Write Comments
4.15 A Module for the ATM
4.16 Compound Expressions
4.16.1 The if-then-else Expression
4.16.2 The let Expression
4.16.3 The case Expression
4.16.4 Reference to Pre and Postconditions
4.17 Function Definitions
4.17.1 Explicit and Implicit Specifications
4.17.2 Recursive Functions
4.18 Exercises
5 Hierarchical CDFDs and Modules
5.1 Process Decomposition
5.2 Handling Stores in Decomposition
5.3 Input and Output Data Flows
5.4 The Correctness of Decomposition
5.5 Scope
5.6 Exercises
6 Explicit Specifications
6.1 The Structure of an Explicit Specification
6.2 Assignment Statement
6.3 Sequential Statements
6.4 Conditional Statements
6.5 Multiple Choice Statements
6.6 The Block Statement
6.7 The While Statement
6.8 Method Invocation
6.9 Input and Output Statements
6.10 Example
6.11 Exercises
7 Basic Data Types
7.1 The Numeric Types
7.2 The Character Type
7.3 The Enumeration Types
7.4 The Boolean Type
7.5 An Example
7.6 Exercises
8 The Set Types
8.1 What Is a Set
8.2 Set Type Declaration
8.3 Constructors and Operators on Sets
8.3.1 Constructors
8.3.2 Operators
8.4 Specification with Set Types
8.5 Exercises
9 The Sequence and String Types
9.1 What Is a Sequence
9.2 Sequence Type Declarations
9.3 Constructors and Operators on Sequences
9.3.1 Constructors
9.3.2 Operators
9.4 Specifications Using Sequences
9.4.1 Input and Output Module
9.4.2 Membership Management System
9.5 Exercises
10 The Composite and Product Types
10.1 Composite Types
10.1.1 Constructing a Composite Type
10.1.2 Fields Inheritance
10.1.3 Constructor
10.1.4 Operators
10.1.5 Comparison
10.2 Product Types
10.3 An Example of Specification
10.4 Exercises
11 The Map Types
11.1 What Is a Map
11.2 The Type Constructor
11.3 Operators
11.3.1 Constructors
11.3.2 Operators
11.4 Specification Using a Map
11.5 Exercises
12 The Union Types
12.1 Union Type Declaration
12.2 A Special Union Type
12.3 Is Function
12.4 A Specification with a Union Type
12.5 Exercises
13 Classes
13.1 Classes and Objects
13.1.1 Class Definition
13.1.2 Objects
13.1.3 Identity of Objects
13.2 Reference and Access Control
13.3 The Reference of a Current Object
13.4 Inheritance
13.4.1 What Is Inheritance
13.4.2 Superclasses and Subclasses
13.4.3 Constructor
13.4.4 Method Overloading
13.4.5 Method Overriding
13.4.6 Garbage Collection
13.5 Polymorphism
13.6 Generic Classes
13.7 An Example of Class Hierarchy
13.8 Example of Using Objects in Modules
13.9 Exercises
14 The Software Development Process
14.1 Software Process Using SOFL
14.2 Requirements Analysis
14.2.1 The Informal Specification
14.2.2 The Semi-formal Specification
14.3 Abstract Design
14.4 Evolution
14.5 Detailed Design
14.5.1 Transformation from Implicit to Explicit Specifications
14.5.2 Transformation from Structured to Object-Oriented Specifications
14.6 Program
14.7 Validation and Verification
14.8 Adapting the Process to Specific Applications
14.9 Exercises
15 Approaches to Constructing Specifications
15.1 The Top-Down Approach
15.1.1 The CDFD-Module-First Strategy
15.1.2 The CDFD-Hierarchy-First Strategy
15.1.3 The Modules and Classes
15.2 The Middle-out Approach
15.3 Comparison of the Approaches
15.4 Exercises
16 A Case Study - Modeling an ATM
16.1 Informal User Requirements Specification
16.2 Semi-formal Functional Specification
16.3 Formal Abstract Design Specification
16.4 Formal Detailed Design Specification
16.5 Summary
16.6 Exercises
17 Rigorous Review
17.1 The Principle of Rigorous Review
17.2 Properties
17.2.1 Internal Consistency of a Process
17.2.2 Invariant-Conformance Consistency
17.2.3 Satisfiability
17.2.4 Internal Consistency of CDFD
17.3 Review Task Tree
17.3.1 Review Task Tree Notation
17.3.2 Minimal Cut Sets
17.3.3 Review Evaluation
17.4 Property Review
17.4.1 Review of Consistency Between Process and Invariant
17.4.2 Process Consistency Review
17.4.3 Review of Process Satisfiability
17.4.4 Review of Internal Consistency of CDFD
17.5 Constructive and Critical Review
17.6 Important Points
17.7 Exercises
18 Specification Testing
18.1 The Process of Testing
18.2 Unit Testing
18.2.1 Process Testing
18.2.2 Invariant Testing
18.3 Criteria for Test Case Generation
18.4 Integration Testing
18.4.1 Testing Sequential Constructs
18.4.2 Testing Conditional Constructs
18.4.3 Testing Decompositions
18.5 Exercises
19 Transformation from Designs to Programs
19.1 Transformation of Data Types
19.2 Transformation of Modules and Classes
19.3 Transformation of Processes
19.3.1 Transformation of Single-Port Processes
19.3.2 Transformation of Multiple-Port Processes
19.4 Transformation of CDFD
19.5 Exercises
20 Intelligent Software Engineering Environment
20.1 Software Engineering Environment
20.2 Intelligent Software Engineering Environment
20.3 Ways to Build an ISEE
20.3.1 Domain-Driven Approach
20.3.2 Method-Driven Approach
20.3.3 Combination of Both
20.4 ISEE and Formalization
20.5 ISEE for SOFL
20.5.1 Support for Requirements Analysis
20.5.2 Support for Abstract Design
20.5.3 Support for Refinement
20.5.4 Support for Verification and Validation
20.5.5 Support for Transformation
20.5.6 Support for Program Testing
20.5.7 Support for System Modification
20.5.8 Support for Process Management
20.6 Exercises References
A Syntax of SOFL
A.1 Specifications
A.2 Modules
A.3 Processes
A.4 Functions
A.5 Classes
A.6 Types
A.7 Expressions
A.8 Ordinary Expressions
A.8.1 Compound Expressions
A.8.2 Unary Expressions
A.8.3 Binary Expressions
A.8.4 Apply Expressions
A.8.5 Basic Expressions
A.8.6 Constants
A.8.7 Simple Variables
A.8.8 Special Keywords
A.8.9 Set Expressions
A.8.10 Sequence Expressions
A.8.11 Map Expressions
A.8.12 Composite Expressions
A.8.13 Product Expressions
A.9 Predicate Expressions
A.9.1 Boolean Variables
A.9.2 Relational Expressions
A.9.3 Conjunction
A.9.4 Disjunction
A.9.5 Implication
A.9.6 Equivalence
A.9.7 Negation
A.9.8 Quantified Expressions
A.10 Identifiers
A. 11 Character
A. 12 Comments
Index
1.1 Software Life Cycle
1.2 The Problem
1.3 Formal Methods
1.3.1 What Are Formal Methods
1.3.2 Some Commonly Used Formal Methods
1.3.3 Challenges to Formal Methods
1.4 Formal Engineering Methods
1.5 What Is SOFL
1.6 A Little History of SOFL
1.7 Comparison with Related Work
1.8 Exercises
2 Propositional Logic
2.1 Propositions
2.2 Operators
2.3 Conjunction
2.4 Disjunction
2.5 Negation
2.6 Implication
2.7 Equivalence
2.8 Tautology, Contradiction, and Contingency
2.9 Normal Forms
2.10 Sequent
2.11 Proof
2.11.1 Inference Rules
2.11.2 Rules for Conjunction
2.11.3 Rules for Disjunction
2.11.4 Rules for Negation
2.11.5 Rules for Implication
2.11.6 Rules for Equivalence
2.11.7 Properties of Propositional Expressions
2.12 Exercises
3 Predicate Logic
3.1 Predicates
3.2 Quantifiers
3.2.1 The Universal Quantifier
3.2.2 The Existential Quantifier
3.2.3 Quantified Expressions with Multiple Bound Variables
3.2.4 Multiple Quantifiers
3.2.5 de Morgan's Laws
3.3 Substitution
3.4 Proof in Predicate Logic
3.4.1 Introduction and Elimination of Existential Quantifiers
3.4.2 Introduction and Elimination of Universal Quantifiers
3.5 Validity and Satisfaction
3.6 Treatment of Partial Predicates
3.7 Formal Specification with Predicates
3.8 Exercises
4 The Module
4.1 Module for Abstraction
4.2 Condition Data Flow Diagrams
4.3 Processes
4.4 Data Flows
4.5 Data Stores
4.6 Convention for Names
4.7 Conditional Structures
4.8 Merging and Separating Structures
4.9 Diverging Structures
4.10 Renaming Structure
4.11 Connecting Structures
4.12 Important Issues on CDFDs
4.12.1 Starting Processes
4.12.2 Starting Nodes
4.12.3 Terminating Processes
4.12.4 Terminating Nodes
4.12.5 Enabling and Executing a CDFD
4.12.6 Restriction on Parallel Processes
4.12.7 Disconnected CDFDs
4.12.8 External Processes
4.13 Associating CDFD with a Module
4.14 How to Write Comments
4.15 A Module for the ATM
4.16 Compound Expressions
4.16.1 The if-then-else Expression
4.16.2 The let Expression
4.16.3 The case Expression
4.16.4 Reference to Pre and Postconditions
4.17 Function Definitions
4.17.1 Explicit and Implicit Specifications
4.17.2 Recursive Functions
4.18 Exercises
5 Hierarchical CDFDs and Modules
5.1 Process Decomposition
5.2 Handling Stores in Decomposition
5.3 Input and Output Data Flows
5.4 The Correctness of Decomposition
5.5 Scope
5.6 Exercises
6 Explicit Specifications
6.1 The Structure of an Explicit Specification
6.2 Assignment Statement
6.3 Sequential Statements
6.4 Conditional Statements
6.5 Multiple Choice Statements
6.6 The Block Statement
6.7 The While Statement
6.8 Method Invocation
6.9 Input and Output Statements
6.10 Example
6.11 Exercises
7 Basic Data Types
7.1 The Numeric Types
7.2 The Character Type
7.3 The Enumeration Types
7.4 The Boolean Type
7.5 An Example
7.6 Exercises
8 The Set Types
8.1 What Is a Set
8.2 Set Type Declaration
8.3 Constructors and Operators on Sets
8.3.1 Constructors
8.3.2 Operators
8.4 Specification with Set Types
8.5 Exercises
9 The Sequence and String Types
9.1 What Is a Sequence
9.2 Sequence Type Declarations
9.3 Constructors and Operators on Sequences
9.3.1 Constructors
9.3.2 Operators
9.4 Specifications Using Sequences
9.4.1 Input and Output Module
9.4.2 Membership Management System
9.5 Exercises
10 The Composite and Product Types
10.1 Composite Types
10.1.1 Constructing a Composite Type
10.1.2 Fields Inheritance
10.1.3 Constructor
10.1.4 Operators
10.1.5 Comparison
10.2 Product Types
10.3 An Example of Specification
10.4 Exercises
11 The Map Types
11.1 What Is a Map
11.2 The Type Constructor
11.3 Operators
11.3.1 Constructors
11.3.2 Operators
11.4 Specification Using a Map
11.5 Exercises
12 The Union Types
12.1 Union Type Declaration
12.2 A Special Union Type
12.3 Is Function
12.4 A Specification with a Union Type
12.5 Exercises
13 Classes
13.1 Classes and Objects
13.1.1 Class Definition
13.1.2 Objects
13.1.3 Identity of Objects
13.2 Reference and Access Control
13.3 The Reference of a Current Object
13.4 Inheritance
13.4.1 What Is Inheritance
13.4.2 Superclasses and Subclasses
13.4.3 Constructor
13.4.4 Method Overloading
13.4.5 Method Overriding
13.4.6 Garbage Collection
13.5 Polymorphism
13.6 Generic Classes
13.7 An Example of Class Hierarchy
13.8 Example of Using Objects in Modules
13.9 Exercises
14 The Software Development Process
14.1 Software Process Using SOFL
14.2 Requirements Analysis
14.2.1 The Informal Specification
14.2.2 The Semi-formal Specification
14.3 Abstract Design
14.4 Evolution
14.5 Detailed Design
14.5.1 Transformation from Implicit to Explicit Specifications
14.5.2 Transformation from Structured to Object-Oriented Specifications
14.6 Program
14.7 Validation and Verification
14.8 Adapting the Process to Specific Applications
14.9 Exercises
15 Approaches to Constructing Specifications
15.1 The Top-Down Approach
15.1.1 The CDFD-Module-First Strategy
15.1.2 The CDFD-Hierarchy-First Strategy
15.1.3 The Modules and Classes
15.2 The Middle-out Approach
15.3 Comparison of the Approaches
15.4 Exercises
16 A Case Study - Modeling an ATM
16.1 Informal User Requirements Specification
16.2 Semi-formal Functional Specification
16.3 Formal Abstract Design Specification
16.4 Formal Detailed Design Specification
16.5 Summary
16.6 Exercises
17 Rigorous Review
17.1 The Principle of Rigorous Review
17.2 Properties
17.2.1 Internal Consistency of a Process
17.2.2 Invariant-Conformance Consistency
17.2.3 Satisfiability
17.2.4 Internal Consistency of CDFD
17.3 Review Task Tree
17.3.1 Review Task Tree Notation
17.3.2 Minimal Cut Sets
17.3.3 Review Evaluation
17.4 Property Review
17.4.1 Review of Consistency Between Process and Invariant
17.4.2 Process Consistency Review
17.4.3 Review of Process Satisfiability
17.4.4 Review of Internal Consistency of CDFD
17.5 Constructive and Critical Review
17.6 Important Points
17.7 Exercises
18 Specification Testing
18.1 The Process of Testing
18.2 Unit Testing
18.2.1 Process Testing
18.2.2 Invariant Testing
18.3 Criteria for Test Case Generation
18.4 Integration Testing
18.4.1 Testing Sequential Constructs
18.4.2 Testing Conditional Constructs
18.4.3 Testing Decompositions
18.5 Exercises
19 Transformation from Designs to Programs
19.1 Transformation of Data Types
19.2 Transformation of Modules and Classes
19.3 Transformation of Processes
19.3.1 Transformation of Single-Port Processes
19.3.2 Transformation of Multiple-Port Processes
19.4 Transformation of CDFD
19.5 Exercises
20 Intelligent Software Engineering Environment
20.1 Software Engineering Environment
20.2 Intelligent Software Engineering Environment
20.3 Ways to Build an ISEE
20.3.1 Domain-Driven Approach
20.3.2 Method-Driven Approach
20.3.3 Combination of Both
20.4 ISEE and Formalization
20.5 ISEE for SOFL
20.5.1 Support for Requirements Analysis
20.5.2 Support for Abstract Design
20.5.3 Support for Refinement
20.5.4 Support for Verification and Validation
20.5.5 Support for Transformation
20.5.6 Support for Program Testing
20.5.7 Support for System Modification
20.5.8 Support for Process Management
20.6 Exercises References
A Syntax of SOFL
A.1 Specifications
A.2 Modules
A.3 Processes
A.4 Functions
A.5 Classes
A.6 Types
A.7 Expressions
A.8 Ordinary Expressions
A.8.1 Compound Expressions
A.8.2 Unary Expressions
A.8.3 Binary Expressions
A.8.4 Apply Expressions
A.8.5 Basic Expressions
A.8.6 Constants
A.8.7 Simple Variables
A.8.8 Special Keywords
A.8.9 Set Expressions
A.8.10 Sequence Expressions
A.8.11 Map Expressions
A.8.12 Composite Expressions
A.8.13 Product Expressions
A.9 Predicate Expressions
A.9.1 Boolean Variables
A.9.2 Relational Expressions
A.9.3 Conjunction
A.9.4 Disjunction
A.9.5 Implication
A.9.6 Equivalence
A.9.7 Negation
A.9.8 Quantified Expressions
A.10 Identifiers
A. 11 Character
A. 12 Comments
Index
猜您喜欢