B方法是建立在命题演算、谓词演算、等式和有序对、基本和派生的集合构造、二元关系、函数、广义交和并、有限性、自然数等操作基础之上的。B方法根据功能需求进行正确性验证,保证软件产品具有高可靠性、可移植性、可维护性。该方法使用AMN(Abstract Machine Notation)作为软件开发过程中的规约、设计及实现语言,AMN是Dijkstra的卫式命令语言的改进和扩展,在大型软件系统构造中,具有一种内置的结构化机制,另外,广义置换语言GSL(Generalized Substitution Language)提供AMN的形式语义,标识AM的操作,在GSL中引入定序和循环结构,并重写AMN中的操作以便更接近于可执行代码的控制结构,这样,B方法可以使程序和程序规格说明处于一个统一的数学框架下,以一种基于Zermelo-Frankel集合论的符号表示来书写,B方法采用集合论作为理论基础。
使用B方法开发时,首先需要建模,用B的表示来描述系统变量的主要状态、属性及其在操作中的转变,为系统的实现书写规格说明,在此基础上逐步求精,直到产生一个系统的完整实现。该方法通过一组计算机辅助工具支持规约到实现的全过程开发工作,是一种广谱语言。B-Toolkit包含自动及交互的理论证明工具、一套软件开发工具:AMN类型检验器,规约动画,证明法则生成器,规约和代码生成器。所有开发工具都由一个公共平台支持:B-Tool。最后。通过模式匹配和规则重写机制,对形式化对象生成程序。B语言中结构化的机制像其他面向对象方法一样,增强了信息隐藏和数据封装,严密的部件接口控制确保了大型开发中各个部件的独立开发。
B方法的主要思想
B包含一种“抽象机”的结构化机制,这种开发方法建立在数学理论基础上,还包括了广义替换、精化、软件的层次体系结构理论。AM是B方法中的一种基本的封装机制,类似于class,abstract data type,module,package,object等概念,涉及的一些重要思想:
数据规约:AM中的数据通过一组数学概念(诸如集合、关系、函数、序列、树等)说明,这些数据通过某些确定条件规定必须遵守的不变法规和不变式。
操作规约:通过不包含定序和循环的非执行的伪代码表示。每一条操作被描述为一个前置条件和一个原子行为,前置条件是此操作被激活的必要条件,原子行为通过广义置换方式来形式化表示。所有的原子行为符合不确定性选择策略。B方法建立在命题演算、谓词演算、等式和有序对、基本和派生的集合构造、二元关系、函数、广义交和并、有限性、自然数等操作基础之上。