规范(Specification)
- 规范的例子
- 不同开发者,开发同一软件 –> 开发文档
- 不同用户,使用同一软件 –> 使用文档
- 不同软件,调用同一个库 –> 应用程序接口
- 不同应用程序,相互通信 –> 通信协议
- 规范应该具有如下性质
- 严格性(Rigor)
- 抽象性(Abstraction)
- 简洁性(Simplicity)
抽象数据类型
- 抽象数据类型(Abstract Data Type,ADT)类似于有限自动机和正则表达式中的确定有限自动机(Deterministic Finite Automaton,DFA)
- 为输入字母表
- 为输出字母表
- 为状态集,为初态
- 为转移映射
- 为输出映射
- 一个简单的数据库(Database)应用
- 用集合来存储元素
- 插入(Insert)元素、删除(Delete)元素
- 一次性读取(Read)所有元素
- 由于数据库存储的元素有限,故我们考虑幂集中的有限集合
- (ADT)集合
- ,
-
-
- 一个简单的即时消息(Instant Message,IM)应用
- 用大小为的滑动窗口来表示屏幕上显示的消息
- 消息从旧到新显示,最多为条
- 发送消息为写(Write),显示消息为读(Read)
- (ADT)大小为的滑动窗口
- ,
-
-
更新、查询
- ADT有两种基本操作——更新(Update)、查询(Query)
- (ADT)集合
- Insert、Delete为更新
- Read为查询
- (ADT)大小为的滑动窗口
- Write为更新
- Read为查询
- (ADT)集合
- 一般来说,我们希望更新、查询是分离的。然而,队列(Queue)的Pop既是更新,也是查询,所以我们需要将Pop分解为Remove、Head