形式化方法在古代就有运用了,而在现代逻辑中又有了进一步的发展和完善。这种方法特别是在数学、计算机科学、人工智能等领域得到广泛的运用。它能精确地揭示各种逻辑规律,制定相应的逻辑规则,使各种理论体系更加严密。同时也能正确地训练思维并提高思维的抽象能力。在计算机科学和软件工程领域,形式化方法是基于数学的特种技术,特别适合于软件和硬件系统的描述、开发以及验证。将形式化方法用于软件和硬件设计,是希望能够像其它工程学科一样,使用适当的数学分析来提高设计的可靠性和健壮性。
根据表达能力,形式化方法可以分为五类:
1)基于模型的方法:通过明确定义状态和操作来建立一个系统模型(使系统从一个状态转换到另一个状态)。用这种方法虽可以表示非功能性需求(诸如时间需求),但不能很好地表示并发性。如:Z语言,VDM,B方法等。
2)基于逻辑的方法:用逻辑描述系统预期的性能,包括底层规约、时序和可能性行为。采用与所选逻辑相关的公理系统证明系统具有预期的性能。用具体的编程构 造扩充逻辑从而得到一种广谱形式化方法,通过保持正确性的细化步骤集来开发系统。如:ITL(区间时序逻辑),区段演算(DC),hoare 逻辑,WP演算,模态逻辑,时序逻辑,TAM(时序代理模型),RTTL(实时时序逻辑)等。
3)代数方法:通过将未定义状态下不同的操作行为相联系,给出操作的显式定义。与基于模型的方法相同的是,没有给出并发的显式表示。如:OBJ, Larch族代数规约语言等。
4)过程代数方法:通过限制所有容许的可观察的过程间通信来表示系统行为。此类方法允许并发过程的显式表示。如:通信顺序过程(CSP),通信系统演算 (CCS),通信过程代数(ACP),时序排序规约语言(LOTOS),计时CSP(TCSP),通信系统计时可能性演算(TPCCS)等。论文网
5)基于网络的方法:由于图形化表示法易于理解,而且非专业人员能够使用,因此是一种通用的系统确定表示法。该方法采用具有形式语义的图形语言,为系统开发和再工程带来特殊的好处。如 Petri图,计时Petri图,状态图等。
1.3 论文的主要工作
由于使用自然语言描述存在不精确,模糊,不准确和不一致的问题,因此本论文旨在通过使用形式化的代数规约语言来描述OpenStack中各组件提供的服务,以精确描述OpenStack的服务接口。
1.4 论文的组织形式
本文第一部分对OpenStack和形式化方法进行简介,第二部分分别描述OpenStack的四大组件,详细地说明OpenStack具体能够实现的功能和实现的方式,第三部分给出代数规约语言Sofia的基本框架,并应用Sofia代数规约语言描述OpenStack云计算提供的服务,最后是结论部分。
2.OpenStack概述
2.1 计算项目NOVA
OpenStack Compute (Nova)是一套控制器,用于为单个用户或使用群组启动虚拟机实例。它同样能够用于为包含着多个实例的特定项目设置网络。OpenStack Compute在公共云处理方面堪与Amazon EC2相提并论,而在私有云方面也毫不逊色于VMware的产品。在公共云中,这套管理机制将提供预制的镜像或是为用户创建的镜像提供存储机制,这样用户就能够将镜像以虚拟机的形式启动。
首先介绍OpenStack的计算项目Nova涉及的一些基本概念:server,flavor,image,reboot,rebuild和resize。其中server是计算项目中的虚拟机器实例,flavor和image是建立server的必要元素。Flavor是server一个可用的硬件配置,每个flavor都有一个独一无二的磁盘空间,记忆容量和CPU使用优先权的组合。Image是用来创建或者重构一个server的文件集合,操作预置的提供一组预先构建的OS镜像。Reboot操作允许完成一个指定的服务的软或硬重启,软启动情况下,操作系统将会重启,这样允许对所有程序的正常关闭,而硬重启则是等同于服务的电源重启。Rebuild操作将原服务上的数据移到指定的镜像上,其中,服务说明和所有的IP地址都保持相同。Resize操作将一个原本就存在的服务转换成一个不同风格的,实质上是对服务大小的放缩。