首页 百科知识 抽象与求精

抽象与求精

时间:2022-10-09 百科知识 版权反馈
【摘要】:即由自然抽象语言求精为抽象的软件工程的图表描述,而这些图表又可继续求精为具体的过程描述,直到过程描述求精为某种源程序代码,一个软件问题的求精过程完成。通过求精,不断细化数据流图的表示,直到能够准确、完整地描述问题需求。

4.2.1 抽象与求精

一、抽象

抽象是人类认识客观世界中复杂现象的强有力的思维工具。抽象就是抽取出事物的本质特性而暂时忽略其实现细节。例如,在数据流图的设计过程中,软件分析人员可以首先用一个加工来抽象地表示软件系统,而软件的本质是实现对输入数据的处理,并生成输出数据的加工,在抽象该加工的同时,软件分析人员可以暂时忽略其内部实现细节。因为,人类思维能力存在一定的极限,即不能同时并行分析和处理多个目标对象,而需要采用一种层次化的方式来构造和精化它,故在数据流图的分析过程中,软件分析人员还需要不断地对顶层加工进行分层和细化,逐步揭示软件的内部实现细节。

当考虑对软件问题的结构化解法时,可以有若干个抽象层次。抽象的最高层是采用软件问题环境所使用的语言,以概括的方式(自然语言)叙述问题的解法;而在较低抽象层次则采用过程化的方式(程序流程图、盒图等)叙述问题的解法;最后,在最低抽象层次采用软件实现的方式(源程序、伪代码等)给出问题的解法。

例如,要开发一个CAD软件,在开发过程中对其进行多个层次的抽象。

首先,抽象层次最高层:用软件问题环境所使用的语言对软件进行概述:

CAD软件包含一个绘图交互界面和绘图工具条,用户在绘图交互界面上完成二维图形的绘制,而绘图工具条则包含了直线、折线、圆、曲线、颜色填充等图形元素,用户在绘制完图形之后可以保存绘图为绘图文件。

接着,降低抽象层次,用过程化的方式对软件的任务需求进行描述,CAD软件包含的子任务:

◇完成与用户交互的子任务。

◇完成二维图形绘制的子任务。

◇完成图形化显示的子任务。

◇完成对绘制文件的管理子任务。

最后,进一步降低抽象层次,用近乎软件实现的方式伪代码来描述上一个抽象层次中“完成二维图形绘制的子任务”。

Procedure 2-D drawing creation

Begin

 Repeat until(二维图形绘制任务结束)

 Begin

 接受所绘图形的命令

 Case line:绘制直线

  Rectangle:绘制矩形

  ......//绘制其他图形的选择语句,同上,故省略

 end

end

软件设计中抽象的原理同样适用。因为,软件结构也是一个自顶向下的层次结构,位于层次结构顶层的模块控制了系统的主要功能并影响全局,其抽象等级最高。而位于层次结构底层的模块则实现了具体的数据处理,其抽象等级最低,它们被上层模块所控制。故在软件结构的设计过程中可遵循抽象原理,逐层设计软件的模块,最终形成完整的层次结构描述的软件结构。

抽象的思想还可应用到数据结构的设计过程中,同学们可举出若干数据抽象的例子。

二、求精

求精是人类解决复杂问题时所采用的基本方法。求精的本质就是“集中精力解决主要问题而推迟对问题细节的考虑”。因为,人类的认知同样受限于思维能力,即在某一段时间内只能把注意力集中在(7+/-2)个知识块上(这是著名的Miller法则),所以,逐步求精就可帮助软件分析和设计人员首先把精力集中在与当前开发阶段最相关的那些知识块上,而暂时忽略其内部的实现细节。而细节的分析和设计则通过自顶向下的方式逐步获取,因此,求精也可称为逐步求精。

软件系统的开发也是一个逐步求精的过程。即由自然抽象语言求精为抽象的软件工程的图表描述,而这些图表又可继续求精为具体的过程描述,直到过程描述求精为某种源程序代码,一个软件问题的求精过程完成。需求分析中的分层数据流图也是逐步求精的典型例子。通过求精,不断细化数据流图的表示,直到能够准确、完整地描述问题需求。

在理解抽象和求精时需要注意:

◇抽象和求精均可在软件问题的不同层次进行。

◇抽象是忽略多余细节而强调有关细节的过程,求精则是强调多余细节的过程。

◇抽象和求精互补。降低了软件问题的抽象等级其实是提高了该问题的求精等级。

◇抽象和求精都是非常有用的软件分析和设计方法。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈