理解软件设计过程抽象与逐步求精复习过程.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《理解软件设计过程抽象与逐步求精复习过程.ppt》由会员分享,可在线阅读,更多相关《理解软件设计过程抽象与逐步求精复习过程.ppt(79页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 软软 件件 工工 程程理解软件设计过程抽象与逐步求精 软软 件件 工工 程程8.1 8.1 软件设计基本概念软件设计基本概念 8.1.1 8.1.1 软件设计过程软件设计过程一般认为,软件开发阶段由一般认为,软件开发阶段由设计、编码和测试设计、编码和测试三个基本活动组成,其中三个基本活动组成,其中“设计设计”活动是获取活动是获取高质量、低耗费、易维护软件的一个最重要环高质量、低耗费、易维护软件的一个最重要环节。节。需求分析阶段获得的需求规格说明书包括对将需求分析阶段获得的需求规格说明书包括对将要实现的系统在信息、功能和行为等各个方面要实现的系统在信息、功能和行为等各个方面的描述,这是软件设计
2、的基础。对此不论采用的描述,这是软件设计的基础。对此不论采用何种软件设计方法都将产生何种软件设计方法都将产生:系统的总体结构设计(系统的总体结构设计(architectural design););系统的数据设计(系统的数据设计(data design););系统的过程设计(系统的过程设计(procedural design)。)。软软 件件 工工 程程8.1.1 8.1.1 软件设计过程软件设计过程图图8-1-1 开发阶段的信息流开发阶段的信息流功能描述功能描述行为描述行为描述其他需求其他需求程序程序模块模块总体结构设计总体结构设计设计设计编码编码信息描述信息描述过程设计过程设计数据设计数据
3、设计集集成成并并确确认认的软件的软件测试测试 软软 件件 工工 程程8.1.1 8.1.1 软件设计过程软件设计过程软件设计也可看作将需求规格说明逐步转换为软件设计也可看作将需求规格说明逐步转换为软件源代码的过程。软件源代码的过程。从工程管理的角度软件设计可分为概要从工程管理的角度软件设计可分为概要(preliminary)设计和详细()设计和详细(detail)设计两大步)设计两大步骤。骤。概要设计概要设计是根据需求确定软件和数据的总体框是根据需求确定软件和数据的总体框架,架,详细设计详细设计是将其进一步精化成软件的算法是将其进一步精化成软件的算法表示和数据结构。表示和数据结构。而在技术上,
4、概要设计和详细设计又由若干活而在技术上,概要设计和详细设计又由若干活动组成,除总体结构设计、数据结构设计和过动组成,除总体结构设计、数据结构设计和过程设计外,许多现代应用软件,还包括一个独程设计外,许多现代应用软件,还包括一个独立的界面设计活动。立的界面设计活动。软软 件件 工工 程程8.1.2 抽象与逐步求精抽象与逐步求精抽象抽象是控制复杂性的基本策略。是控制复杂性的基本策略。“抽象抽象”要求要求人们将注意力集中在某一层次上考虑问题,而人们将注意力集中在某一层次上考虑问题,而忽略那些低层次的细节。忽略那些低层次的细节。软件设计过程应当是在软件设计过程应当是在不同抽象级别上不同抽象级别上考虑和
5、考虑和处理问题的过程。最初,应在最高抽象级别上,处理问题的过程。最初,应在最高抽象级别上,用面向问题域的语言叙述用面向问题域的语言叙述“问题问题”,概括,概括“问问题解题解”的形式,而后不断地具体化,不断地用的形式,而后不断地具体化,不断地用面向过程的语言描述问题,最后,在最低的抽面向过程的语言描述问题,最后,在最低的抽象级别上给出可直接实现的象级别上给出可直接实现的“问题解问题解”,即程,即程序。序。软软 件件 工工 程程8.1.2 8.1.2 抽象与逐步求精抽象与逐步求精软件工程过程的每一步都是对较高一级抽象的解作一次进一软件工程过程的每一步都是对较高一级抽象的解作一次进一步具体化的描述。
6、步具体化的描述。v在系统定义阶段,软件系统被描述为基于计算机的大系统的在系统定义阶段,软件系统被描述为基于计算机的大系统的一个组成部分;一个组成部分;v在软件规划和需求分析阶段,软件用问题域约定的习惯用语在软件规划和需求分析阶段,软件用问题域约定的习惯用语表达;表达;v从概要设计过渡到详细设计时,抽象级再一次降低;从概要设计过渡到详细设计时,抽象级再一次降低;v编码完成后达到了抽象的最低级。编码完成后达到了抽象的最低级。在上述由高级抽象到低级抽象的转换过程中,伴随着一连串在上述由高级抽象到低级抽象的转换过程中,伴随着一连串的过程抽象和数据抽象。的过程抽象和数据抽象。过程抽象把完成一个特定功能的
7、动作序列抽象为一个过程名过程抽象把完成一个特定功能的动作序列抽象为一个过程名和参数表;和参数表;数据抽象把一个数据对象的定义(或描述)抽象为一个数据数据抽象把一个数据对象的定义(或描述)抽象为一个数据类型名。类型名。软软 件件 工工 程程【例【例8.1】考虑适用于低级】考虑适用于低级CAD的图形软件包的图形软件包抽象抽象 该该CAD软件系统配有能与绘图员进行软件系统配有能与绘图员进行可视化通信的图形界面,能用鼠标代替绘图工可视化通信的图形界面,能用鼠标代替绘图工具,画各种直线和曲线;能完成所有几何计算具,画各种直线和曲线;能完成所有几何计算以及所有截面视图和辅助视图的设计。图形设以及所有截面视
8、图和辅助视图的设计。图形设计的结果存在图形文件中,图形文件可包含几计的结果存在图形文件中,图形文件可包含几何的、正文的和其他各种补充设计信息。何的、正文的和其他各种补充设计信息。显而易见,在这一抽象级别上,用问题域本身显而易见,在这一抽象级别上,用问题域本身的术语来描述问题的解。的术语来描述问题的解。软软 件件 工工 程程【例【例8.1】考虑适用于低级】考虑适用于低级CAD的图形软件包的图形软件包抽象抽象 CAD软件任务;软件任务;用户界面子任务;用户界面子任务;创建二维图形子任务;创建二维图形子任务;显示图形子任务;显示图形子任务;管理图形文件子任务;管理图形文件子任务;end CAD.在在
9、这这一一抽抽象象级级别别上上,给给出出了了组组成成CAD软软件件任任务务的的所所有有主主要要子子任任务务,尽尽管管术术语语已已与与问问题题域域有有所所不同,但仍然不是实现所用的语言。不同,但仍然不是实现所用的语言。软软 件件 工工 程程【例【例8.1】考虑适用于低级】考虑适用于低级CAD的图形软件包的图形软件包抽象抽象(仅以(仅以“创建二维图形子任务创建二维图形子任务”为例)为例)PROCEDURE 创建二维图形创建二维图形 REPEAT UNTIL DO WHILE 数字仪接口任务;数字仪接口任务;判断作图请求:判断作图请求:线:画线任务;线:画线任务;圆:画圆任务;圆:画圆任务;END;软
10、软 件件 工工 程程【例【例8.1】考虑适用于低级】考虑适用于低级CAD的图形软件包的图形软件包 DO WHILE 键盘接口任务;键盘接口任务;选择分析或计算:选择分析或计算:辅助视图:辅助视图任务;辅助视图:辅助视图任务;截面视图:截面视图任务;截面视图:截面视图任务;END;END REPEAT;END PROCEDURE.软软 件件 工工 程程【例【例8.1】考虑适用于低级】考虑适用于低级CAD的图形软件包的图形软件包在这一抽象级别上,给出了初步的过程性表示,在这一抽象级别上,给出了初步的过程性表示,此时所有术语都是面向软件(比如采用此时所有术语都是面向软件(比如采用do while结构
11、)并且模块结构也开始明朗。求结构)并且模块结构也开始明朗。求精过程还可继续下去,直至产生源代码。精过程还可继续下去,直至产生源代码。软软 件件 工工 程程数据抽象数据抽象数数据据抽抽象象与与过过程程抽抽象象一一样样,能能使使设设计计者者按按不不同同的详细程度表示数据对象。的详细程度表示数据对象。仍仍以以CAD软软件件为为例例,我我们们可可定定义义一一个个称称为为drawing(图)的数据对象:(图)的数据对象:TYPE drawing IS STRUCTURE DEFINED number IS STRING LENTH(12);geometry DEFINED notes IS STRING
12、 LENTH(256);bom DEFINEDEND drawing TYPE;软软 件件 工工 程程数据抽象数据抽象在在此此,drawing被被表表示示为为一一种种结结构构,其其各各个个组组成成部部件件本本身身又又可可为为某某种种数数据据抽抽象象,比比如如geometry(几几何何图图形形)和和bom。一一旦旦抽抽象象数数据据类类型型drawing定定义义完完毕毕,即即可可用用类类型型名名直直接接说说明明数数据据对对象象,而而不不必必涉涉及及其其内内部部构构造造的的细细节节,例例如,可用语句如,可用语句:blueprint IS INSTANCE OF drawing;或或 schemati
13、c IS INSTANCE OF drawing;说明说明blueprint和和schematic具有具有drawing的一切特性。的一切特性。blueprint蓝图,蓝图,schematic简(略)图。简(略)图。软软 件件 工工 程程数据抽象数据抽象在抽象数据类型的定义中可以附加一组操作的在抽象数据类型的定义中可以附加一组操作的定义,用以确定在此类数据对象上可进行的操定义,用以确定在此类数据对象上可进行的操作。以抽象数据类型作。以抽象数据类型drawing为例,可以定义擦为例,可以定义擦除(除(erase)、存储()、存储(save)、分类()、分类(catalog)和)和拷贝(拷贝(co
14、py)等操作。)等操作。许多程序设计语言都提供了对抽象数据类型的许多程序设计语言都提供了对抽象数据类型的支持,支持,Ada 的程序包机制是对数据抽象和过程的程序包机制是对数据抽象和过程抽象的双重支持抽象的双重支持 软软 件件 工工 程程逐步求精逐步求精关于关于“逐步求精逐步求精”,N.Wirth曾经做过如下说曾经做过如下说明:明:“我们对付复杂问题的重要办法是抽象,因此,我们对付复杂问题的重要办法是抽象,因此,对一个复杂的问题不应该立即用计算机指令、对一个复杂的问题不应该立即用计算机指令、数字和逻辑符号来表示,而应该用较自然的抽数字和逻辑符号来表示,而应该用较自然的抽象语言来表示,从而得出抽象
15、程序。抽象程序象语言来表示,从而得出抽象程序。抽象程序对抽象的数据进行某些特定的运算并用某些合对抽象的数据进行某些特定的运算并用某些合适的记号(可能是自然语言)来表示。对抽象适的记号(可能是自然语言)来表示。对抽象程序做进一步分解,进入下一个抽象层次,重程序做进一步分解,进入下一个抽象层次,重复这一精化过程直到程序能被计算机接受为止。复这一精化过程直到程序能被计算机接受为止。这时的程序可能是用某种高级语言或机器指令这时的程序可能是用某种高级语言或机器指令书写的。书写的。”软软 件件 工工 程程过程求精与数据求精过程求精与数据求精因因为为求求精精的的每每一一步步都都是是用用更更为为详详细细的的描
16、描述述替替代代上上一一层层次次的的抽抽象象描描述述,所所以以在在整整个个设设计计过过程程中中产产生生的的,具具有有不不同同详详细细程程度度的的各各种种描描述述,组组成成了了系系统统的的层层次次结结构构。层层次次结结构构的的上上一一层层是是下下一一层的抽象,下一层是上一层的求精。层的抽象,下一层是上一层的求精。在过程求精的同时自然伴随着数据的求精,无在过程求精的同时自然伴随着数据的求精,无论是过程还是数据,每一步细化都蕴涵着某些论是过程还是数据,每一步细化都蕴涵着某些设计决策,因此设计人员必须掌握一些基本的设计决策,因此设计人员必须掌握一些基本的准则,比较各种可能的候选方案。准则,比较各种可能的
17、候选方案。软软 件件 工工 程程8.1.3 模块化与信息隐藏模块化与信息隐藏软软件件总总体体结结构构(下下一一节节讨讨论论)体体现现了了模模块块化化思思想想,即即把把软软件件划划分分为为可可独独立立命命名名和和编编制制的的部部件件,每每个个部部件件称称为为一一个个模模块块,当当把把所所有有模模块块组组装装到到一起时,便可获得满足问题需要的一个解。一起时,便可获得满足问题需要的一个解。“模块化是唯一对软件中的程序进行智能化管模块化是唯一对软件中的程序进行智能化管理的一个属性理的一个属性”。软软 件件 工工 程程8.1.3 模块化与信息隐藏模块化与信息隐藏假设:假设:函数函数C(X)问题问题X的复
18、杂性;的复杂性;函数函数E(X)求解问题求解问题X需要花费的工作量(时间);需要花费的工作量(时间);对于问题对于问题P1和和P2,如果,如果:C(P1)C(P2)则有则有:E(P1)E(P2)结论:解决一个复杂问题总比解决一个简单问题耗费结论:解决一个复杂问题总比解决一个简单问题耗费 更多的工作量。更多的工作量。同时同时 有:有:C(P1+P2)C(P1)+C(P2)结论:由结论:由P1、P2组合而成的问题的复杂性往往比考虑组合而成的问题的复杂性往往比考虑 单个问题复杂性的和更大。单个问题复杂性的和更大。于是有:于是有:E(P1+P2)E(P1)+E(P2)软软 件件 工工 程程8.1.3
19、模块化与信息隐藏模块化与信息隐藏图图8-1-2 模块与软件耗费模块与软件耗费最小成本最小成本区域区域MO软件总成本软件总成本用于接口的成本用于接口的成本每个模块成本之和每个模块成本之和模块总数模块总数成本或成本或工作量工作量 软软 件件 工工 程程1 1信息隐蔽信息隐蔽信息隐蔽原理告诉我们,模块应该设计得使其信息隐蔽原理告诉我们,模块应该设计得使其所含信息(过程和数据)对于那些不需要这些所含信息(过程和数据)对于那些不需要这些信息的模块不可访问;每个模块只完成一个相信息的模块不可访问;每个模块只完成一个相对独立的特定功能;模块之间仅仅交换那些为对独立的特定功能;模块之间仅仅交换那些为完成系统功
20、能必须交换的信息,即模块应该独完成系统功能必须交换的信息,即模块应该独立。显然,模块独立的概念是模块化、抽象、立。显然,模块独立的概念是模块化、抽象、信息隐蔽和局部化等诸多概念的直接结果。信息隐蔽和局部化等诸多概念的直接结果。软软 件件 工工 程程信息隐蔽原理的好处信息隐蔽原理的好处它不仅支持模块的并行开发,而且还可减少测它不仅支持模块的并行开发,而且还可减少测试和后期维护的工作量。因为测试和维护阶段试和后期维护的工作量。因为测试和维护阶段不可避免地要修改设计和代码,模块对大多数不可避免地要修改设计和代码,模块对大多数数据和过程处理细节的隐蔽可以减少错误向外数据和过程处理细节的隐蔽可以减少错误
21、向外传播。此外,整个系统欲扩充功能亦只需传播。此外,整个系统欲扩充功能亦只需“插插入入”新模块,原有的多数模块无须改动。新模块,原有的多数模块无须改动。软软 件件 工工 程程2 2内聚度(内聚度(cohesioncohesion)内聚度是前述信息隐蔽和局部化概念的自然扩内聚度是前述信息隐蔽和局部化概念的自然扩展,它标志一个模块内部各成分彼此结合的紧展,它标志一个模块内部各成分彼此结合的紧密程度。密程度。内聚度按其高低程度可分为七级,内聚度越高内聚度按其高低程度可分为七级,内聚度越高越好。越好。软软 件件 工工 程程1 1)偶然性内聚)偶然性内聚低级内聚低级内聚偶然性内聚(偶然性内聚(coinc
22、idental cohesion)。是指一个模块内各成分)。是指一个模块内各成分为完成一组功能而组合在一起,它们相互之间即使有关系,也为完成一组功能而组合在一起,它们相互之间即使有关系,也很松散。常见的偶然性内聚情形是,当程序员写完一个程序后很松散。常见的偶然性内聚情形是,当程序员写完一个程序后发现有一组语句多处出现,于是为节省内存便将这组语句单独发现有一组语句多处出现,于是为节省内存便将这组语句单独组成一个模块。组成一个模块。XYZW 软软 件件 工工 程程2 2)逻辑性内聚)逻辑性内聚低级内聚低级内聚如果一个模块完成的诸任务逻辑上相关,则称之为逻如果一个模块完成的诸任务逻辑上相关,则称之为
23、逻辑性内聚(辑性内聚(logical cohesion)例如:一个模块产生所有与类型无关的输出,即为逻辑例如:一个模块产生所有与类型无关的输出,即为逻辑性内聚。性内聚。又如:模块又如:模块X、Y分别调用分别调用A、B,A、B相似,将其合并相似,将其合并为模块为模块AB,模块,模块AB即为逻辑性内聚。即为逻辑性内聚。XYSABXYSAB 软软 件件 工工 程程3)时间性内聚时间性内聚低级内聚低级内聚如果一个模块包含的诸任务必须在同一时间段如果一个模块包含的诸任务必须在同一时间段内执行(例如一个初始化模块),则称之为时内执行(例如一个初始化模块),则称之为时间性内聚(间性内聚(temporal c
24、ohesiontemporal cohesion)。)。以上三种内聚形式通常认为是低级内聚。以上三种内聚形式通常认为是低级内聚。软软 件件 工工 程程4 4)过程性内聚)过程性内聚中级内聚中级内聚过程性内聚(过程性内聚(procedural cohesion)模块的过程性内聚度是指,模块内成分彼此相模块的过程性内聚度是指,模块内成分彼此相关,并且必须按特定的次序执行;关,并且必须按特定的次序执行;过程内聚模块的各组成功能由控制流联结在一过程内聚模块的各组成功能由控制流联结在一起。起。软软 件件 工工 程程5 5)通信性内聚度)通信性内聚度中级内聚中级内聚通信性内聚(通信性内聚(communic
25、ational cohesion)。)。模块的通信性内聚度是指,模块中各成分都将对数模块的通信性内聚度是指,模块中各成分都将对数据结构的同一区域进行操作,以达到通信的目的。据结构的同一区域进行操作,以达到通信的目的。例如,模块例如,模块A的处理单元是由同一数据文件的数据的处理单元是由同一数据文件的数据产生不同的表格产生不同的表格模块模块A从文件从文件FILE读出数据读出数据1.由数据产生报表一由数据产生报表一2.由数据产生报表二由数据产生报表二 软软 件件 工工 程程6 6)顺序性内聚)顺序性内聚 高级内聚高级内聚顺序性内聚(顺序性内聚(sequential cohesion)。如果一个模块内
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 理解 软件设计 过程 抽象 逐步 复习
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内