软件开发方法综述(精)
五、面向对象的软件开发方 法 (续)
自顶向下的分解
与Yourdon方法按功能分解不同,在OMT中 通常按服务 (Service)来分解。 服务是具有共同目标的相关功能的集合,如 I/O处理、图形处理等。 这种分解通常很明确,而这些子系统的进一 步分解因有较具体的系统模型为依据,也相 对容易。 所以OMT也具有自顶向下方法的优点,即能 有效地控制模块的复杂性,同时避免了 Yourdon方法中功能分解的困难和不确定性。
软件开发方法综述
60年代中期开始爆发了众 所周知的软件危机。为了 克服这一危机,在1968、 1969年连续召开的两次著 名的NATO会议上提出了 软件工程这一术语,并在 以后不断发展、完善。与 此同时,软件研究人员也 在不断探索新的软件开发 方法。
一、Parnas方法
D. Parnas在1972年最早提出了软件开 发方法 Parnas的方法针对的是可维护性和可 靠性方面存在着严重问题
ICASE的最终目标
七、ICASE(续)
在应用最成熟的数据库领域,目前已 有能实现全部自动生成的应用软件,如 MSE公司的Magic系统。它只要求软件 开发人员填写一系列表格(相当于要求 软件实现的各种功能),系统就会自动 生成应用软件。它不仅能节省90%以上 的软件开发和维护的工作量,而且还能 将应用软件的开发工作转交给熟练的用 户。
六、可视化开发方法 (续)
可视化开发是软件开发方式上的一场革 命,它使软件开发从专业人员的手中解 放出来,对缓解80年代中后期爆发的 应用软件危机有重大作用。
七、ICASE(Integrated Computer-Aided Software Engineering)
早在1982年美国国防部就提出了 STARS工程,希望建立一个“用以支 持需求定义、程序生成以及软件维护等 软件生存期全部活动的,并把它们集成 在一起的整个体系”。
四、问题分析法PAM(续)
PAM方法的具体步骤是:从输入、输出数据 结构导出基本处理框;分析这些处理框之间 的先后关系;按先后关系逐步综合处理框, 直到画出整个系统的PAD图。 从上述步骤中可以看出,这一方法本质上是 综合的自底向上的方法,但在逐步综合之前 已进行了有目的的分解,这个目的就是充分 考虑系统的输入、输出数据结构。
八、软件重用和组件连接
软件重用(Reuse)又称软件复用或软 件再用。早在1968年的NATO软件工程 会议上就已提出可复用库的思想。 1983年,Freeman对软件重用给出件系统的过程中,对已存 在的软件人工制品的使用技术。
八、软件重用和组件连接 (续)
二、Yourdon方法(续)
Yourdon方法是80年代使用最广泛的软件开发 方法。 它首先用结构化分析(SA)对软件进行需求 分析,然后用结构化设计(SD)方法进行总 体设计,最后是结构化编程(SP)。 这一方法不仅开发步骤明确,SA、SD、SP相 辅相成,一气呵成,而且给出了两类典型的软 件结构(变换型和事务型),便于参照,使软 件开发的成功率大大提高,从而深受软件开发 人员的青睐。
五、面向对象的软件开发方 法 (续)
可维护性大大改善
在OMT之前的软件开发方法都是基于功能分 解的 ,但从本质上讲,基于功能分解的软件 是不易维护的。因为功能一旦有变化都会使 开发的软件系统产生较大的变化,甚至推倒 重来。 OMT的基础是目标系统的对象模型,而不是 功能的分解。功能是对象的使用,它依赖于 应用的细节,并在开发过程中不断变化。由 于对象是客观存在的,因此当需求变化时对 象的性质要比对象的使用更为稳定,从而使 建立在对象结构上的软件系统也更为稳定。
二、Yourdon方法
1978年,E.Yourdon和L.L.Constantine 提出了结构化方法,即SASD方法,也 可称为面向功能的软件开发方法或面向 数据流的软件开发方法。 1979年Tom DeMarco对此方法作了进 一步的完善。
数据对 象说明 E-R 图 DD STD图 控制说明 加工说 明 DFD 图
五、面向对象的软件开发方 法 (续)
OMT彻底实现了PAM没有完全实现的 目标 OO技术在需求分析、可维护性和可靠 性这三个软件开发的关键环节和质量指 标上有了实质性的突破 ,彻底地解决 了在这些方面存在的严重问题,从而宣 告了软件危机末日的来临。(?)
五、面向对象的软件开发方 法 (续)
软件重用的三个发展方向
七、ICASE(续)
ICASE的进一步发展
与其它软件开发方法的结合,如与面向对象 技术、软件重用技术结合,以及智能化的ICASE。近几年已出现了能实现全自动软件开 发的ICASE。 实现应用软件的全自动开发,即开发人员只 要写好软件的需求规格说明书,软件开发环 境就自动完成从需求分析开始的所有的软件 开发工作,自动生成供用户直接使用的软件 及有关文档。
五、面向对象的软件开发方法 (续)
OMT的基础是对象模型 每个对象类由数据结构(属性)和操作(行 为)组成,有关的所有数据结构(包括输入、 输出数据结构)都成了软件开发的依据。 因此Jackson方法和PAM中输入、输出数据结 构与整个系统之间的鸿沟在OMT中不再存在。 OMT不仅具有Jackson方法和PAM的优点, 而且可以应用于大型系统。 更重要的是,在Jackson方法和PAM方法中, 当它们的出发点———输入、输出数据结构 (即系统的边界)发生变化时,整个软件必 须推倒重来。但在OMT中系统边界的改变只 是增加或减少一些对象而已,整个系统改动 极小。
信息隐蔽原则:在概要设计时列出将来 可能发生变化的因素,并在模块划分时 将这些因素放到个别模块的内部。 第二条原则是在软件设计时应对可能发 生的种种意外故障采取措施。
一、Parnas方法(续)
Parnas对软件开发提出了深刻 的见解。遗憾的是,他没有给 出明确的工作流程。所以这一 方法不能独立使用,只能作为 其它方法的补充。
五、面向对象的软件开发方 法 (续)
更重要的是OMT彻底解决了软件的可维护性。
在OO语言中,子类不仅可以继承父类的属性 和行为,而且也可以重载父类的某个行为 (虚函数)。利用这一特点,我们可以方便 地进行功能修改:引入某类的一个子类,对 要修改的一些行为(即虚函数或虚方法)进 行重载,也就是对它们重新定义。由于不再 在原来的程序模块中引入修改,所以彻底解 决了软件的可修改性,从而也彻底解决了软 件的可维护性。 OO技术还提高了软件的可靠性和健壮性。
五、面向对象的软件开发方 法 (续)
需求分析彻底
传统的软件开发方法不允许在开发过程中用 户的需求发生变化 (为此发展了原型模型) OMT彻底解决了这一问题。因为需求分析过 程已与系统模型的形成过程一致,开发人员 与用户的讨论是从用户熟悉的具体实例(实 体)开始的。开发人员必须搞清现实系统才 能导出系统模型,这就使用户与开发人员之 间有了共同的语言,避免了传统需求分析中 可能产生的种种问题。
六、可视化开发方法
可视化开发是上个世纪90年代软件界最大的 热点之一 Windows提供了可视化开发的应用程序设计 接口API(Application Programm ing Interface)(包含了600多个函数 ) Borland C++推出了Object Windows编程 (它将API的各部分用对象类进行封装,提供 了大量预定义的类,并为这些定义了许多成 员函数。 )
S
I Co
S
B
C
B C
Bo
B*
C
A=
A=
B
A=B
三、面向数据结构的软件开 发方法(续)
Warnier方法
1974年,J.D.Warnier提出的软件开发 方法与Jackson方法类似。差别有三点:
• 一是它们使用的图形工具不同,分别使用 Warnier图和Jackson图; • 另一个差别是使用的伪码不同; • 第三个是最主要的差别即在构造程序框架 时,Warnier方法仅考虑输入数据结构,而 Jackson方法不仅考虑输入数据结构,而 且还考虑输出数据结构。
六、可视化开发方法 (续)
可视开发工具应提供两大类服务。
一类是生成图形用户界面及相关的消息响应 函数。 另一类服务是为各种具体的子应用的各个常 规执行步骤提供规范窗口,它包括对话框、 菜单、列表框、组合框、按钮和编辑框等, 以供用户挑选。
由于要生成与各种应用相关的消息响应函数, 因此,可视化开发只能用于相当成熟的应用 领域,如目前流行的可视化开发工具基本上 用于关系数据库的开发。
七、ICASE(续)
系统集成方式经历了三代
第一代:数据交换方式
• 早期CASE采用的集成方式:点到点的数据转换
第二代 :公共用户界面方式
• 第二代CASE在一致的界面下调用众多不同的工具
第三代:信息中心库方式
• 它不仅提供数据集成(1991年IEEE为工具互连提 出了标准P1175)和控制集成(实现工具间的调 用),还提供了一组用户界面管理设施和一大批工 具,如垂直工具集(支持软件生存期各阶段,保证 生成信息的完备性和一致性)、水平工具集(用于 不同的软件开发方法)以及开放工具槽。
T F
F
P A B
P B
T
P
Selective
A
B
THEN ELSE
Selective
四、问题分析法PAM (续)
PAM方法的另一个优点是使用PAD图。 这是一种二维树形结构图,是到目前为 止最好的详细设计表示方法之一,远远 优于N-S图和PDL语言。 这一方法在日本较为流行,软件开发的 成功率也很高。由于在输入、输出数据 结构与整个系统之间同样存在着鸿沟, 这一方法仍只适用于中小型问题。