世界的本质是由对象组成的,平时看上去相互无关的独立对象在不同的驱动力和规则下体现出不同的运动过程,然后这些过程便展现了我们找个生动的世界。
在面向过程眼中,世界一切都不是孤立的,他们相互紧密联系在一起,缺一不可,互相影响,互相作用,并形成一个具有严格因果律的小系统;而更多的小系统组成了更大的系统,所有小系统之间的关联也是紧密和不可分割的。
面向过程的分析方法是找到过程的起点,然后顺藤摸瓜,分析每一个部分,直至达到过程的终点。如图
DFD图
:表达了“(从上一步)输入数据——>(在这一步)功能计算——>(向下一步)输出数据”
由此发现,数据很重要。为了更好地管理数据,人们通过定义主键、外键等手段将数据之间的关系描绘出来,结构化地组织他们,利用关系理论,即数据库的三大范式来保证他们的完备性和一致性。
对关系型数据库起到了重要的促进作用,分析方法ER模型由此而生。
但随着需求复杂、系统越来越大、功能点越来越多,经常出现一份数据被多个过程分享,经常出现矛盾的数据需求。为了解决这个问题,IBM在20世纪70年代提出了UC矩阵,来求解功能和数据之间的依赖问题。
UC矩阵:将功能点和数据分别作为横纵坐标来组成一个二维矩阵,,在横纵坐标的每个交叉点上标记功能点对数据的需求,即U(use)和C(Create)。
标记完成后,对功能点位置和数据位置在各自坐标系上进行调整,调整的目标是尽量将C放在整个矩阵的对角线上,这时,各个功能点对数据的交叉依赖是最小的。
最后,再把相邻的一些功能点分组,由此来获得数据交叉依赖性最小,功能最紧密的子系统。
例如,在煤炭企业管理信息系统的子系统划分案例中,通过建立U/C矩阵、进行正确性检验、求解及子系统划分,最终将系统划分为经营决策、煤炭生产、运销、财务和人事等子系统,每个子系统具有高内聚和低耦合的特点,减少了子系统之间的信息依赖,提高了管理效率和经济效益。
UC矩阵尽管是一个有用的方法,但面向过程的困难并没有从根本上解决:
如今,SOA已经提上日程,IBM也提出了著名的口号:On-Demand Business(随需应变的商务)
因为构成一个系统的因素太多,要把所有可能的因素都考虑到,把所有因素的因果关系都分析清楚,再把这个过程模拟出来实在是太困难了。
我们的精力有限,计算能力有限,只能放弃对整个过程的了解,重新寻找一个方法,能够将复杂的系统转换为一个我们可以控制的小单元。
面向对象(Object Oriented,简称OO)方法将世界看做一个个相互独立的对象,相互之间并无因果关系。只有在某个外部力量的驱动下,对象之间才会根据某种规律相处传递信息。
这些交互构成了这个生动世界的一个“过程”。在没有外力的情况下,对象则保持着静止的状态。
面向对象是多个独立的对象通过某种外力驱动的,这些独立的独享有着一些奇怪的特性:
对象与它有着联系的身边的一小群伙伴,有这几种关系:
其他概念:
想要解决困难,需要:
UML就是来解决这些困难的
你今天OO了吗?
UML是一种建模语言,UML定义了一些建立模型所需要的、表达某种特定含义的基本元素,这些元素称为:元模型,例如用例、类等。
还定义了元模型互相之间关系的规则,以及如何用这些元素和规则绘制图形以建立模型来映射现实世界,这些规则和图形称为表示法和视图(view)
统一语言的意义:
解决可读性的问题
建立模型:
通过称之为概念化的过程 来建立适合计算机理解和实现的模型,这个模型称为:分析模型。
分析模型介于原始需求和计算机实现之间,是一种过渡模型。
绘制分析模型最主要的元模型:
狭义上说:边界就是界面,所有对计算机的操作都要通过计界面进行
广义上说:任何实物都分为里面和外面,他们之间的交互都需要一个边界。只有两个不同职责的簇之间的交互都需要一个边界,换句话说,边界决定了外面能对里面做什么事儿? 2. 实体类
原始需求中领域模型中的业务实体映射了现实世界中参与者完成业务目标时所涉及的事物。
这些实体类可以看做是业务实体的实例化结果 3. 控制类
采用控制类表述原始需求中的动态信息,即业务或用例场景中的步骤和活动。
设计模型的工作就是建造零件,组装汽车的过程。
实现类可以简单地从分析类映射而来
一般来说,可以遵循的规则有:
UML作为标准的面向对象建模语言,它需要再某个建模方法的知道下进行建模工作。
统一过程是这其中最为著名的额建模方法
RUP(Rational Unified Process)译为统一过程。
是一个采用了面向对象思想,使用UML作为软件分析设计语言,并且结合了项目管理、质量保证等许多软件工程知识综合而成的一个非常完整和庞大的软件方法。
统一过程和UML是不同的两个领域:
本文作者:Eric
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!