1、什么是形式化方法
形式化方法的出发点是数学逻辑方法,其目的是开发可靠的软件产品。从软件开发来讲,形式化方法目前并非软件开发的主流。从软件发展看,早期的软件是用于数值计算,程序语言侧重于函数和算法的描述,后来数据库的应用和数据结构逐渐变得重要。现在的软件更为复杂,因此,对象、组件、接口、通讯、开放等成为非常重要的概念。从软件工程方法来讲,有一套描述这些概念的办法,比如说用图形、表格、逻辑、自然语言等,交叉使用以描述一个系统的各个方面。因此换一个角度来考虑,我们也可以以目前常用的软件开发方法为出发点,研究怎样将这些方法形式化,使软件系统的描述精确化,以减少可能的误解所带来的问题;或以目前常用的软件开发过程为出发点,研究怎样在软件开发过程中增加一些形式化方法的应用,以提高软件的可靠性。
形式化方法可以分为形式化描述和建立在形式化描述基础之上的形式化开发。形式化的描述就是用形式化的语言(具有严格的语法语义定义的语言)做描述。形式化的软件开发,就是用形式化的语言来描述软件需求和特征,并且通过推理验证来保证最终的软件产品是否满足这些需求和具备这些特征。这样的验证当然得建立在严格的语法语义的基础之上的。在实际应用中,这是不容易做到的。形式化方法研究的目的就是希望能够提供更好的理论、方法和工具,扩大形式化方法的应用范围和使用价值。
2、推荐阅读《大象-thinking in UML》
这本书给了我以下几点启示:
1.UML是一种语言
语言是用来沟通的主要方式,包含了单词和语法,UML 的单词就是各种元素、视图和模型,语法就是建模的方法
语言最基本的功能是能清楚地表达和传递信息
2.UML采用的是面向对象的方法
面向对象是一种认知世界的方法,在面向对象方法里,一切有名字的东西都是对象
3.建模的实质是将现实世界抽象为模型
同样的事物在不同的世界观的人眼里会产生不同的结果,而这个世界观在建模里对应的是抽象角度一旦决定了抽象角度,就确定了一个目标
4.客户访谈技巧
一般来说系统分析员是计算机专家,习惯于从计算机角度来看问题;客户是业务专家,习惯身边的人也熟悉这个业务领域。
所以系统分析员需要改变自己的立场,了解业务是什么,还要弄清业务为什么。
5.需求获取
在对每个业务进行需求调研时候首先要明确该业务的边界,每个边界的划分则指明了需求分析的起点找到业务主角,访谈业务主角或者从业务主角的角度来看与系统的交互,就可以得到业务用例
6.需求分析
需求分析首先要找到关键概念,关键概念是指支撑起客户整个业务架构的那条主线,在UML方法里,就是由一些关键的业务用例构成
根据各个关键概念,梳理出相关的概念用例,获取概念模型每个概念模型表示一个功能,各个概念模型之间通过软件架构联系起来
7.系统分析和设计
将每个业务模型抽象为描述系统的模型,就得到了系统模型业务用例抽象为系统用例的基本方法有:映射、抽象、合并、拆分、演绎等
8.理论和实际
《大象》这本书尽管作者举了很多生动的例子,画了大量的图,但整体来说是依然是非常枯燥的。对于书中理论,抽象程度都比较高,专业的词汇也比较多,所以看下去真的很难
不过UML作为目前可视化建模语言的工业标准,其本身也源于面向对象分析和设计的方法
目的就是为了更清晰、简单的表达软件设计中的动态和静态信息,所以如果能结果实际项目来看会往往觉得豁然开朗的感觉,但强行去从概念理解往往会让自己更懵,另外我觉得uml的学习最大的成果是有这样一种思维方式,如何分析和设计一个系统,但真正在无比推崇“敏捷开发”的现在,我觉得uml很多时候还不如一个高真的axure更能传递清楚软件设计的信息。