SA+OOA

 SA+OOA
                     何志丹
    许多书刊对面向对象大加赞美,好象面向对象大有“一统天下”之势。事实上我国软件业是“群雄割据”,其中最有实力的是面向对象的分析(ooa)和结构化分析(sa).这一点可以从2001年系统分析员考试得到佐证,当时的试题是写一种分析方法,写sa和ooa大约各占一半。其实这是必然的,因为ooa和sa都有各自的优点。
    1,从接受用户信息来看,sa显然比ooa优越得多。在sa中,系统分析员只需吃透用户需求,并抽象出功能,再加以处理,即可画出DFD(数据流程图),有了数据流程图,DD(数据字典)、DP(数据处理)就好完成了。在OOA中,系统分析先弄清用户的意图,再找有那些对象,再细化每个对象的属性和服务,再找联系和结构,显然用户的许多工作都没有被合理利用。
    2,从让用户复杳来看,SA显然也比OOA优越。DFD、DD、DP(无论是准形式化语言,判定树,还是判定表),都是傻瓜化的,只要用户不是文盲就可能以读懂。类图虽然也可能被用户读懂,但他无法判断是否符合自己的要求。
    3,从指导系统设计师的工作来看,OOA显然优于SA。用面向对象的方法,OOD的主要工作是细化OOA阶段的工作及数据库、界面等方面的考虑。显然OOD可以看成OOA的继续,他们间的交流应该说是没有障碍的。SD的模块图的根据是SA的DFD,但现在还不存在将DFD转化成模块图的工具。所以系统设计师还有许多工作要做,可以说是从零开始。
    4,从检查系统设计师的工作来看,OOA也是优于SA的。因为OOA、OOD的表达方式是一致的。模块图十分容易理解,但系统分析员要看SD是否符合自己的要求,还是要下一番工夫。
    5,从适应性来看,OOA是优于SA的。为了适应需求的不断变化,需求分析把最容易变化的因素隔离起来,另外要求各个单元成分之间的接口尽可能少。总之类,要把需求变化所引起的影响局部化。OOA对变化比较有弹性,主要原因是得益于封装原则。它以最稳定的成份——对象作为构成系统的基本单元,而把容易变化的成份——服务及属性封装在对象之中。属性及服务的变化主要影响到对象的内部,只通过有限的对外接口对外部发生影响,从而有效的限制了一处修改牵连的“波动效应”。
    6,从复用来看,OOA也是优于SA的。分析方法中与复用有关的因素主要有两个:基本成份的完整性与独立性。完整性指完整对应问题域中的事物,独立性指与其它成份的接口尽可能的少。显然这两方面SA是非常差的。OOA的类很适合作为一个可复用的构件。主要原因有两点:第一是类的完整性——它完整地描述了问题域中的一个客观事物,包括它的数据特征和行为特征。第二是它的独立性。它是一个独立的封装体,与外部只有很少的联系。一个软件如果缺少完整性,则复用的价值很小;如果缺少独立性则很不容易适应不同的系统。
    7,从冗余来看,OOA中,系统分析员采用“先松后紧”的原则,抽象了许多多余的类,不但加大了工作量,而且容易产生错误。要知道系统分析员的每一个错误都是灾难性的。
    综上所述,只有将两种分析方法结合起来,先SA再OOA,可以发挥各自的优点。其实OOA和SA并不是对立的,一个系统分析员对某个问题如果能画出DFD,那么他一定能画出类图。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值