软件工程第08章.ppt
《软件工程第08章.ppt》由会员分享,可在线阅读,更多相关《软件工程第08章.ppt(79页珍藏版)》请在冰豆网上搜索。
课程名称:
软件工程课程名称:
软件工程第第13讲讲班班级:
级:
日日期:
期:
教教室:
室:
教学题目:
第教学题目:
第8章章软件设计基础。
软件设计基础。
8.1.18.1.3教学目的:
理解软件设计过程、抽象与逐步求精、教学目的:
理解软件设计过程、抽象与逐步求精、模块化与信息隐藏等概念。
模块化与信息隐藏等概念。
教学重点:
几个软件设计的基本概念。
教学重点:
几个软件设计的基本概念。
教学难点:
教学难点:
模块划分与软件损耗的关系。
模块划分与软件损耗的关系。
教教具:
多媒体教室、电子教案具:
多媒体教室、电子教案作作业:
业:
第第8章章软件设计基础软件设计基础软软件件设设计计阶阶段段的的工工作作是是以以需需求求分分析析阶阶段段的的成成果果为为前前提提和和基基础础的的,即即经经过过系系统统分分析析小小组组签签字字认认可可的的需需求求规规格格说说明明书书及及有有关关技技术术文文档档。
经经过过软软件件工工程程师师们们多多年年的的努努力力,一一些些软软件件设设计计技技术术、质质量量评评估估标标准准和和设设计计表表示示法法逐逐步步形形成成并并用用于于软软件工程实践。
件工程实践。
软件设计是软件工程的重要阶段。
软件设计过软件设计是软件工程的重要阶段。
软件设计过程是对程序结构、数据结构和过程细节逐步求程是对程序结构、数据结构和过程细节逐步求精、复审并编制文档的过程,本章讨论与软件精、复审并编制文档的过程,本章讨论与软件设计有关的主要概念。
设计有关的主要概念。
8.1软件设计基本概念软件设计基本概念8.1.1软件设计过程软件设计过程一般认为,软件开发阶段由设计、编码和测试一般认为,软件开发阶段由设计、编码和测试三个基本活动组成,其中三个基本活动组成,其中“设计设计”活动是获取活动是获取高质量、低耗费、易维护软件的一个最重要环高质量、低耗费、易维护软件的一个最重要环节。
节。
需求分析阶段获得的需求规格说明书包括对将需求分析阶段获得的需求规格说明书包括对将要实现的系统在信息、功能和行为等各个方面要实现的系统在信息、功能和行为等各个方面的描述,这是软件设计的基础。
对此不论采用的描述,这是软件设计的基础。
对此不论采用何种软件设计方法都将产生何种软件设计方法都将产生:
系统的总体结构设计(系统的总体结构设计(architecturaldesign););系统的数据设计(系统的数据设计(datadesign););系统的过程设计(系统的过程设计(proceduraldesign)。
)。
8.1.1软件设计过程软件设计过程图图8-1-1开发阶段的信息流开发阶段的信息流程序程序模块模块总体结构设计总体结构设计设计设计编码编码信息描述信息描述功能描述功能描述行为描述行为描述其他需求其他需求过程设计过程设计数据设计数据设计集集成成并并确确认认的软件的软件测试测试8.1.1软件设计过程软件设计过程软件设计也可看作将需求规格说明逐步转换为软件设计也可看作将需求规格说明逐步转换为软件源代码的过程。
软件源代码的过程。
从工程管理的角度软件设计可分为概要从工程管理的角度软件设计可分为概要(preliminary)设计和详细(设计和详细(detail)设计两大步设计两大步骤。
骤。
概要设计是根据需求确定软件和数据的总体框概要设计是根据需求确定软件和数据的总体框架,详细设计是将其进一步精化成软件的算法架,详细设计是将其进一步精化成软件的算法表示和数据结构。
表示和数据结构。
而在技术上,概要设计和详细设计又由若干活而在技术上,概要设计和详细设计又由若干活动组成,除总体结构设计、数据结构设计和过动组成,除总体结构设计、数据结构设计和过程设计外,许多现代应用软件,还包括一个独程设计外,许多现代应用软件,还包括一个独立的界面设计活动。
立的界面设计活动。
8.1.2抽象与逐步求精抽象与逐步求精l抽象是控制复杂性的基本策略。
抽象是控制复杂性的基本策略。
“抽象抽象”要求要求人们将注意力集中在某一层次上考虑问题,而人们将注意力集中在某一层次上考虑问题,而忽略那些低层次的细节。
忽略那些低层次的细节。
l软件设计过程应当是在不同抽象级别上考虑和软件设计过程应当是在不同抽象级别上考虑和处理问题的过程。
最初,应在最高抽象级别上,处理问题的过程。
最初,应在最高抽象级别上,用面向问题域的语言叙述用面向问题域的语言叙述“问题问题”,概括,概括“问问题解题解”的形式,而后不断地具体化,不断地用的形式,而后不断地具体化,不断地用面向过程的语言描述问题,最后,在最低的抽面向过程的语言描述问题,最后,在最低的抽象级别上给出可直接实现的象级别上给出可直接实现的“问题解问题解”,即程,即程序。
序。
8.1.2抽象与逐步求精抽象与逐步求精软件工程过程的每一步都是对较高一级抽象的解作一软件工程过程的每一步都是对较高一级抽象的解作一次进一步具体化的描述。
次进一步具体化的描述。
v在系统定义阶段,软件系统被描述为基于计算机的大在系统定义阶段,软件系统被描述为基于计算机的大系统的一个组成部分;系统的一个组成部分;v在软件规划和需求分析阶段,软件用问题域约定的习在软件规划和需求分析阶段,软件用问题域约定的习惯用语表达;惯用语表达;v从概要设计过渡到详细设计时,抽象级再一次降低;从概要设计过渡到详细设计时,抽象级再一次降低;v编码完成后达到了抽象的最低级。
编码完成后达到了抽象的最低级。
在上述由高级抽象到低级抽象的转换过程中,伴随着在上述由高级抽象到低级抽象的转换过程中,伴随着一连串的过程抽象和数据抽象。
一连串的过程抽象和数据抽象。
v过程抽象把完成一个特定功能的动作序列抽象为一个过程抽象把完成一个特定功能的动作序列抽象为一个过程名和参数表;过程名和参数表;v数据抽象把一个数据对象的定义(或描述)抽象为一数据抽象把一个数据对象的定义(或描述)抽象为一个数据类型名。
个数据类型名。
【例【例8.1】考虑适用于低级】考虑适用于低级CAD的图形软件包。
的图形软件包。
抽象抽象该该CAD软件系统配有能与绘图员进行可软件系统配有能与绘图员进行可视化通信的图形界面,能用鼠标代替绘图工具,视化通信的图形界面,能用鼠标代替绘图工具,画各种直线和曲线;能完成所有几何计算以及画各种直线和曲线;能完成所有几何计算以及所有截面视图和辅助视图的设计。
图形设计的所有截面视图和辅助视图的设计。
图形设计的结果存在图形文件中,图形文件可包含几何的、结果存在图形文件中,图形文件可包含几何的、正文的和其他各种补充设计信息。
正文的和其他各种补充设计信息。
显而易见,在这一抽象级别上,用问题域本身显而易见,在这一抽象级别上,用问题域本身的术语来描述问题的解。
的术语来描述问题的解。
【例【例8.1】考虑适用于低级】考虑适用于低级CAD的图形软件包。
的图形软件包。
抽象抽象CAD软件任务;软件任务;用户界面子任务;用户界面子任务;创建二维图形子任务;创建二维图形子任务;显示图形子任务;显示图形子任务;管理图形文件子任务;管理图形文件子任务;endCAD.在在这这一一抽抽象象级级别别上上,给给出出了了组组成成CAD软软件件任任务务的的所所有有主主要要子子任任务务,尽尽管管术术语语已已与与问问题题域域有有所所不同,但仍然不是实现所用的语言。
不同,但仍然不是实现所用的语言。
【例【例8.1】考虑适用于低级】考虑适用于低级CAD的图形软件包。
的图形软件包。
抽象抽象(仅以(仅以“创建二维图形子任务创建二维图形子任务”为例)为例)PROCEDURE创建二维图形创建二维图形REPEATUNTILDOWHILE数字仪接口任务;数字仪接口任务;判断作图请求:
判断作图请求:
线:
画线任务;线:
画线任务;圆:
画圆任务;圆:
画圆任务;END;【例【例8.1】考虑适用于低级】考虑适用于低级CAD的图形软件包。
的图形软件包。
DOWHILE键盘接口任务;键盘接口任务;选择分析或计算:
选择分析或计算:
辅助视图:
辅助视图任务;辅助视图:
辅助视图任务;截面视图:
截面视图任务;截面视图:
截面视图任务;END;ENDREPEAT;ENDPROCEDURE.【例【例8.1】考虑适用于低级】考虑适用于低级CAD的图形软件包。
的图形软件包。
l在这一抽象级别上,给出了初步的在这一抽象级别上,给出了初步的过程性表示,此时所有术语都是面过程性表示,此时所有术语都是面向软件(比如采用向软件(比如采用dowhile结构)并结构)并且模块结构也开始明朗。
求精过程且模块结构也开始明朗。
求精过程还可继续下去,直至产生源代码。
还可继续下去,直至产生源代码。
数据抽象数据抽象数数据据抽抽象象与与过过程程抽抽象象一一样样,能能使使设设计计者者按按不不同同的详细程度表示数据对象。
的详细程度表示数据对象。
仍仍以以CAD软软件件为为例例,我我们们可可定定义义一一个个称称为为drawing(图)的数据对象:
图)的数据对象:
TYPEdrawingISSTRUCTUREDEFINEDnumberISSTRINGLENTH(12);geometryDEFINEDnotesISSTRINGLENTH(256);bomDEFINEDENDdrawingTYPE;数据抽象数据抽象在在此此,drawing被被表表示示为为一一种种结结构构,其其各各个个组组成成部部件件本本身身又又可可为为某某种种数数据据抽抽象象,比比如如geometry(几何图形)和几何图形)和bom。
一一旦旦抽抽象象数数据据类类型型drawing定定义义完完毕毕,即即可可用用类类型型名名直直接接说说明明数数据据对对象象,而而不不必必涉涉及及其其内内部部构造的细节,例如,可用语句构造的细节,例如,可用语句:
blueprintISINSTANCEOFdrawing;或或schematicISINSTANCEOFdrawing;说说明明blueprint和和schematic具具有有drawing的的一一切切特性。
特性。
blueprint蓝图,蓝图,schematic简(略)图。
简(略)图。
数据抽象数据抽象l在抽象数据类型的定义中可以附加一组操作的在抽象数据类型的定义中可以附加一组操作的定义,用以确定在此类数据对象上可进行的操定义,用以确定在此类数据对象上可进行的操作。
以抽象数据类型作。
以抽象数据类型drawing为例,可以定义为例,可以定义擦除(擦除(erase)、)、存储(存储(save)、)、分类分类(catalog)和拷贝(和拷贝(copy)等操作。
等操作。
l许多程序设计语言都提供了对抽象数据类型的许多程序设计语言都提供了对抽象数据类型的支持,支持,Ada的程序包机制是对数据抽象和过程的程序包机制是对数据抽象和过程抽象的双重支持抽象的双重支持逐步求精逐步求精l关于关于“逐步求精逐步求精”,N.Wirth曾经做过如下说曾经做过如下说明:
明:
“我们对付复杂问题的重要办法是抽象,因此,我们对付复杂问题的重要办法是抽象,因此,对一个复杂的问题不应该立即用计算机指令、对一个复杂的问题不应该立即用计算机指令、数字和逻辑符号来表示,而应该用较自然的抽数字和逻辑符号来表示,而应该用较自然的抽象语言来表示,从而得出抽象程序。
抽象程序象语言来表示,从而得出抽象程序。
抽象程序对抽象的数据进行某些特定的运算并用某些合对抽象的数据进行某些特定的运算并用某些合适的记号(可能是自然语言)来表示。
对抽象适的记号(可能是自然语言)来表示。
对抽象程序做进一步分解,进入下一个抽象层次,重程序做进一步分解,进入下一个抽象层次,重复这一精化过程直到程序能被计算机接受为止。
复这一精化过程直到程序能被计算机接受为止。
这时的程序可能是用某种高级语言或机器指令这时的程序可能是用某种高级语言或机器指令书写的。
书写的。
”过程求精与数据求精过程求精与数据求精因因为为求求精精的的每每一一步步都都是是用用更更为为详详细细的的描描述述替替代代上上一一层层次次的的抽抽象象描描述述,所所以以在在整整个个设设计计过过程程中中产产生生的的,具具有有不不同同详详细细程程度度的的各各种种描描述述,组组成成了了