易之航
武汉商学院,武汉(430000)
E-main:yzh2000@vip.qq.com
摘要 :本文针对计算机软件2大开发方法:结构化方法和面向对象方法的互补与融合进行了研究,使二者才实际操作中更具协调性、有效性,同时对两大方法进行了梳理、对比,对学习软件开发方法具有一定参考价值。论文给出了最终结论:在实际软件开发中,UML与结构化方法各有优劣,但可以采二者之长,避其之短,开发人员应根据待开发软件的特点,选择适宜的开发方法。
关键词 :UML,面向对象,结构化方法

1. 结构化与UML建模特性对比

结构化方法脱胎于传统工业项目控制方法,开发者从中达到启发,将模块化思想引入系统开发中 。该方法追求将待开发的软件项目不断细化,自顶向下分解成一个个模块,每个模块再细致入微的分解为各个功能,最后将每个小部分的局部程序组装起来,就是最后的软件成品。由此可见,结构化方法能精准地契合用户需求,实现软件开发的流水化作业,但为此带来的缺点是,软件被过度分解后,各部分的开发人员难以协同工作,当下层的模块开发完毕后,还需要足够的时间进行磨合,只有通过了下层测试,才能往上一层进行后续的软件开发,这无疑拉大了软件的开发周期。不仅如此,归因于自顶向下的结构化设计,软件不可能对新增需求做出较大妥协。开发者必须在项目初期就制定好整个开发计划,包括可能遭遇的突发情况,这对于开发团队的专业素养提出了极高的要求。
面向对象方法是以面向对象思想为指导进行系统开发的一类方法的总称。这类方法以对象为中心,以类和继承为构造机制来抽象现实世界,并构建相应的软件系统 。该方法是计算机编程技术发展到一定高度后的新型方法,其主旨在于符合人类认识世界的客观角度,即将万事万物划分为对象与属性。这是一种认知角度,更是一种抽象方法,它使得开发人员不再将目光聚焦于随时会产生变动的动作过程,而是抽象出动作影响的双方,然后根据行为主体的一系列属性,封装出单独的对象。同时,对于同一类对象,向上可以继续抽象出其所属的类,类向下也可以发展出新的对象,对象与类之间靠继承关系维持。当然,面向对象方法也由于其特性产生一些缺陷,面对大型的复杂系统时,对于面向对象开发方法如何真正使描述问题的问题空间与实现解法的解空间在结构上一致,以及建立一个好的类层次结构关系是有相当难度的 。
这里,为便于理解结构化方法与面向对象方法的经典特征,以“人打狗”这一情形为例:
图1 结构化方法建模示例 基于软件开发的结构化分析方法与面向对象分析方法的融合使用 - 图1图2 面向对象方法建模示例

2. 结构化与UML集成建模方法

在系统建模过程中,结构化方法讲究“分而治之”,将一个复杂的系统开发管理分解成了单个 的、可实现的小步骤。而UML由于思想的特异性,更符合人类“嗜图如命”的大脑,它的目标是将抽象的系统进行逻辑交互模式的可视化,以便于开发人员理解项目需求和系统架构。
将结构化方法与UML融合使用,并不意味着二者是包含(⊆)或混合(mix)的关系,而是各取所需,扬长避短。例如,传统的软件开发方法,往往将数据与捆绑在其身上的操作行为分开,这会造成问题空间与解空间在结构上难以保持一致,分析、设计和实现三个方面僵硬过度 。为避免这种情况,采用面向对象的分析方法,将拆解功能转化为拆解对象,如此一来,数据与其捆绑的操作一起出现,从而构成类与对象这一组合。而当系统结构层次复杂,功能多样时,面向对象方法对于软件体系结构的抽象描述就不够细致,无法表现出软件本质,继而直接影响到软件的可靠性。
因此,在实际的软件开发中,我认为,要将结构化方法与UML结合使用,且达到普适化的效果,需采用如下流程:
(1)明确软件系统需求,这一点需要结合软件服务对象的从业经历制定;
(2)根据目标需求,以结构化的分析方法,将系统划分为各个功能模块,所有模块汇聚在一起,即为目标系统的静态模型。
(3)对于每一个功能模块,采用UML抽象出其对象,包括该对象的属性与方法。同时,记录该功能模块内不同对象的交互方式。
(4)对于所有抽象出的对象进行归纳总结,通过聚类的思想,找出同属一类的对象,如此,便得到了体系结构中的抽象类。
(5)对于类与类之间的连接与信息传递,映射回结构化划分的软件体系结构,设计相应的连接件。

3. 结构化与UML的元素映射关系

结构化程序设计采用自顶向下、逐步求精的设计方法,各个模块通过“顺序、选择、循环”的控制结构进行连接,并且只有一个入口、一个出口。而在UML中,以类为主体,每个类具有其属性与方法。类上可有父类,下可有子类,子类在继承父类的属性与方法的基础上,可重写,也可扩充。在这里,对它们之间的映射关系做出如下约束:
(1)结构化设计的原则可归结为程序=(数据)+(算法),而UML中对象的属性即为数据,其方法,或者说动作,就是对数据的调用,也即算法。更进一步的说,对象作为一个整体也是数据,因此设计多个对象的数据交互也可映射为一种算法。
(2)结构化设计中的三大逻辑,顺序、选择、循环,在UML中也有所体现。这个体现不仅在于UML程序设计中也会用到这三个逻辑,更在于UML的基础构件中。在UML中,各个类之间存在关联、继承(泛化)、依赖、组合、聚合五种关系。

  1. 1. UML程序设计中,同样遵循顺序逻辑,即对象不能凭空产生,先创建才能使用,且按照先后出现的顺序执行。
  2. 1. 继承关系可以看做结构化设计中的一种选择。例如,运输工具类可分为船、车、飞机、坐骑四个子类。其中车可对应诸多车型的对象。因此, 如果对象属于车,则该对象为交通工具。
  3. 1. 依赖关系在两种模式中均有体现。程序化设计中,函数内可以嵌套函数;在UML中,一个对象的方法同样可以以其他对象作为参数进行调用。
  4. 1. 组合与聚合可作为一类进行分析,因为组合是一种关系强烈的聚合。在结构化设计中,某些组件生来就是为其他的一个或多个组件服务的,那当被服务的组件消失后,该组件就毫无意义。这也是UML中组合的定义。

(3)系统就是将构件与连接件进行有机的组合。在结构化程序中,所有的函数通过主函数被调用,以顺序、选择、循环的方式进行运行后,就是一个系统。而在UML中,诸多的类按照其功能服务被分为一个个的包。类与类之间通过对象传递信息,包与包之间通过类传递信息,所有的包结构一起构成了一个系统。
基于上述的约束条件,在实际的软件开发中,就可以将结构化程序设计与UML统一建模语言协同使用,相辅相成。

4. ICU应急辅助决策系统的开发研究

加强医疗科 (intensive care unit, ICU) 是危重病医学的临床基地,其目标是在各种危重患者发生单个或多个器官出现功能衰竭时,及时针对病因给予积极治疗,以延缓和恢复患者的生命 。对ICU医师而言,时间就是生命。其次,危重病人的诊断常常在 应急的情况下进行的,它不同于一般疾病的诊断最大特点:必须在证据不充分的条件下,实时地作出尽可能可靠的诊断。

4.1 结构化分析系统总体架构

鉴于上述 ICU 医疗诊断的复杂性,本文利用新一代专家系统中多专家系统协同工作的原理,采用面向对象的黑板集成模型实现ICU医疗辅助诊断系统的分析和设计 。多专家协同工作的思想如下:应用大系统的分解协调方法,将 ICU监测专家系统按危重病人的病型故障树分成几个小专家系统,相当于ICU 的多个专家。各个小专家系统主要针对某种危重病人,其结构可根据自身的特点有所不同。对于并发危重病人,可在调度系统的协调下,并行启动多个相关的子专家系统 ,相当于多个专家会诊。采用多专家协同系统 ,可减轻整个系统分析和设计的难度,同时在一定程度避免传统专家系统的不足,扩大整个系统的解题能力。关于系统的实时要求,需借助并行技术和实时技术,合理设计医学知识库,选择合理的推理方法。
image.png
图3 ICU应急辅助决策系统

4.2 面向对象的黑板集成模型

  • 总调度器:

在面向对象的黑板模型中,总调度器是问题求解的总控制结构,包含领域描述、任务分解、冲突消解、假设合成、解释和数据库生成等功能。

  • 领域描述:

描述危重病人的病史和临床表现,产生候选的假设集。

  • 任务分解:

根据领域描述,选择需要调用的黑板模型。

  • 冲突消解:

在系统的工作过程中,各黑板模 型之间难免会发生冲突,总调度器对其进行协调和综合处理,如综合评价、冲突裁决、多数表决和加权平均等。

  • 数据库生成:

生成各种动态数据库,包括任务数据库、假说数据库及全局数据库等。

image.png
图4 面向对象的黑板集成模型
每个黑板部分分为四个信息层,即病人信息层、初诊层、确诊层和治疗措施层,对应的知识源随危重病型的不同而不同。同样,各黑板模型的调度模块和监督模块也突出各专科医生的思维特点。知识源是又众多相对独立的对象组成,不仅包含事实、规则等描述性知识,而且还有过程性知识。

5. 小结

在日益严重的软件危机中,人们开始意识到软件开发也是需要工程管控的。因此,先辈们开始从整体上思考软件开发的方法,软件生命周期理论正是此阶段人们思考的结果。一个软件从诞生到消亡是要经历一个完整的过程的,而程序编写仅仅是其中的一小部分。在目前没有行业统一的建模标准下,本文给出了一种结合结构化方法与UML协同设计软件体系结构的思路,使其互补互助,协同共济,并在医疗系统开发领域得到了认证。然而不论采用何种开发方法,都必须完成一系列性质各异的任务,包括“做什么?”“怎样做?”“如何完善?”等 。因此,任何建模手段,都是为了扫清需求盲点,而建模思维的创新,也是需要未来不断求索才能得知的。

参考文献
[1]孙焱,赵璐.主流系统开发方法比较分析[J].通讯世界,2016(21):219-220.
[2]程少良.关于面向对象和结构化两种软件开发方法创新规律的探讨[J].电子技术与软件工程,2013(23):92.
[3]汪寒昊,谢加胜,邢跃.软件开发方法——结构化方法与面向对象方法比较[J].科技信息,2011(13):77-78.
[4]阴杰.面向对象开发方法与结构化系统开发方法的继承发展关系[J].科技情报开发与经济,2009,19(18):116-118.
[5]盛昭瀚,赵卫东,何建敏,杜雪寒.ICU应急辅助决策系统的开发研究[J].系统工程学报,2000(03):223-230.
[6]任健,洪长剑.结构化设计在桥梁设计中的应用[J].交通世界,2020(33):62-63.
[7]杭琤,徐宇红,秦丽丽,管华琴,繆艳翎.结构化护理总值班交班信息系统的构建及应用[J].江苏卫生事业管理,2020,31(09):1215-1217.
[8]魏红娟.结构化与面向对象方法相结合的《软件工程》教学方法与研究[J].内江科技,2012,33(12):96+138.
[9]陈华杰. 基于结构匹配的UML模型查询[D].南京大学,2012.

Integrated use of structured Analysis method and object-oriented Analysis method based on Software Development

Yi Zhihang
Wuhan Business University,Wuhan(430000)
Abstract :This paper studies the complementarity and integration of the two major development methods of computer software: structured method and object-oriented method, which makes them more coordinated and effective in actual operation. at the same time, the two methods are combed and compared. it has a certain reference value for learning software development methods. The paper gives the final conclusion: in the actual software development, UML and structured methods have their own advantages and disadvantages, but they can take their advantages and disadvantages, and developers should choose appropriate development methods according to the characteristics of the software to be developed.
Keywords :UML, Object-Oriented, Structured Approach