一、形式化方法.
• 形式化方法研究如何把(具有清晰的数学基础的)严格性(描述形式、技术和过程等)融入软件开发的各个阶段:
• Specification(规范):采用具有严格定义的形式和语义的记法形式,描述软件设计(和实现).
• Reasoning and Analysis(推理和分析):对形式化规范进行分析和推理,确定它们的各种静态和动态性质–规范是否具有一致性和完整性,其中有没有矛盾,有没有遗漏?–运行中不会出现某些不能容忍的状态(死锁、活锁等)–找出其中的错误和缺陷等.
• Refinement(精化):从抽象的高层描述出发,严格保语义地推导出更接近实现的包含更多细节的规范,最终得到正确实现了高层规范的可运行程序(逐步求精技术的严格化,另一些软件技术也可以看作精化).
形式化的实践:
• 近些年人们报告了许多采用形式化方法支持的软件系统开发实例,特别是 各种安全攸关和生命攸关的系统。例如:
– 交通工具(汽车、飞机等)的控制系统
– 交通指挥调度控制系统,自动化运输系统
– 核电站控制系统
• 一些软件和计算机规范中采用形式化方法的描述。例如:
–RBAC 2004 规范中采用了形式化规范语言Z描述
–W3C的WSDL 2.0规范(Z描述,2005),W3C的XQuery 1.0 and XPath 2.0 Formal Semantics(结构化操作语义,2005)
–原因:采用朴素的非形式方式,规范中常常存在许多漏洞,存在许多不一致的或者不准确的地方
• 用形式化方法研究各种复杂的系统问题
–研究各种网络规范和安全规范
–研究程序设计语言和其他复杂的软件规范的形式化模型和语义
–基于形式化模型的程序分析工具在Windows 2000发布版本的源代码中 找出了数以万计的错误和漏洞
二、推荐阅读书籍-《大象-thinking in UML》
正如Booch所说的一样,从本质上讲 面向过程 和 面向对象 是一个古已有之的 认识论 的问题。
之所以面向对象会兴起,是应为这种 认识论 能够帮助我们构造更为复杂的系统来解释越来越复杂的现实世界。
认识到这一点,我们就应该知道比掌握具体的技术更为重要的是掌握认识论所采用的方法和分析过程。
只有掌握了方法才能自如地使用这些技术工具。
这个世界的本质是由对象组成的,平时看上去相互无关的独立对象在不同的驱动和规则下体现出不同的运动过程,然后这些过程便展现出来我们这个生动的世界。
在面向过程的眼中,世界的一切都不是孤立的,是相互紧密联系在一起,缺一不可,相互影响,互相作用,并形成一个具有严格因果律的小系统;
而更多的小系统组成了更大的系统,所有的小系统之间的联系也是紧密和不可分割的。
面向对象思想其实并不复杂,但是对于习惯了以过程方法来认识这个世界的朋友来说完全理解和接受面向对象思想却是不容易的。
如果您真的打算学习面向对象的方法,那么恐怕您得接受这个世界时分割开来的这个事实,并且相信只有在特定的场景下,孤立对象之间进行了某些信息交换才表现出我们所看到的那样一个过程。