软件工程讲义-03

上传人:lcm****801 文档编号:88626610 上传时间:2019-05-05 格式:PPT 页数:46 大小:301KB
返回 下载 相关 举报
软件工程讲义-03_第1页
第1页 / 共46页
软件工程讲义-03_第2页
第2页 / 共46页
软件工程讲义-03_第3页
第3页 / 共46页
软件工程讲义-03_第4页
第4页 / 共46页
软件工程讲义-03_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《软件工程讲义-03》由会员分享,可在线阅读,更多相关《软件工程讲义-03(46页珍藏版)》请在金锄头文库上搜索。

1、1,软件工程 第三章 软件设计,授课老师:清华大学计算机系 殷人昆 password qhdxjsjx,2,软件设计的概念,软件设计的基本目标是用比较抽象概括的方式确定目标系统如何完成预定的任务,即软件设计是确定系统的物理模型。 从技术观点来看,软件设计包括软件结构设计、数据设计、接口设计、过程设计。 从工程管理角度来看,软件设计分两步完成:概要设计和详细设计。,3,4,概要设计将软件需求转化为软件体系结构、确定系统级接口、全局数据结构或数据库模式。 详细设计确立每个模块的实现算法和局部数据结构,用适当方法表示算法和数据结构的细节。,5,数据设计将实体关系图中描述的对象和关系,以及数据字典中

2、描述的详细数据内容转化为数据结构的定义。 体系结构设计定义软件系统各主要成份之间的关系。 接口设计根据数据流图定义软件内部各成份之间、软件与其它协同系统之间及软件与用户之间的交互机制。 过程设计则是把结构成份转换成软件的过程性描述。,6,衡量设计的技术原则: 设计出来的结构应是分层结构。 设计应当模块化。 设计应当包含数据抽象和过程抽象。 设计应当建立具有具有独立功能的模块。 设计应当建立能够降低模块与外部环境之间复杂连接的接口。 设计应能根据软件需求信息,建立可驱动可复用的方法。,衡量设计的原则,7,模块独立性,用两个准则度量模块独立性,即模块间的耦合和模块的内聚。 内聚性:内聚是一个模块内

3、部各个元素彼此结合的紧密程度的度量。 耦合性: 耦合是模块间互相连接的紧密程度的度量,它取决于各个模块之间接口的复杂度、调用方式以及哪些信息通过接口。,8,耦合性,模块独立性,模块间的耦合,9,模块内聚,内聚性,模块独立性,10,结构化设计方法,基本概念,结构化设计(structured design,SD)是一种面向数据流的设计方法,它可以与SA方法衔接。 结构化设计的基本思想是将系统设计成由相对独立、功能单一的模块组成的结构。,11,信息流的类型,在需求分析阶段,面向数据流的SA方法产生数据流图DFD。 在系统设计阶段,面向数据流的SD方法将DFD转换成程序结构图。 信息流的定义:DFD中

4、从系统的输入数据流到系统的输出数据流的一连串连续变换。 DFD信息流的分类:变换流与事务流。,12,变换流,工作原理 信息沿着输入通路进入系统,同时将信息的外部形式转换成内部表示,然后通过变换中心(也称主加工)处理,再沿着输出通路转换成外部形式离开系统。具有这种特性的信息流称为变换流。 组成 变换流型DFD可以分成: 输入变换(主加工)输出,13,事务流,工作原理 信息沿着输入通路到达一个事务中心,事务中心根据输入信息(即事务)的类型在若干个动作序列(称为活动流)中选择一个来执行,这种信息流称为事务流。 特征 事务流有明显的事务中心,各活动流以事务中心为起点呈辐射状流出。,14,变换分析,变换

5、分析是从变换流型的DFD导出系统结构图 步骤 确定输入流和输出流,孤立出变换中心; 第一级分解:设计模块结构的顶层和第一层; 第二级分解:设计中、下层模块。,15,1)确定输入流和输出流, 孤立出变换中心,变换分析的第一步,16,2)第一级分解: 设计模块结构的顶层和第一层,变换流型DFD可映射成下图所示的系统结构图: 顶层模块:其功能就是整个系统的功能; 输入控制模块:接收所有的输入数据; 变换控制模块:实现输入到输出的变换; 输出控制模块:产生所有的输出数据。,17,3)第二级分解:设计中、下层模块,输入控制模块的分解:从变换中心的边界开始,沿着每条输入通路,把输入通路上的每个加工映射成输

6、入控制模块的一个低层模块。 输出控制模块的分解:从变换中心的边界开始,沿着每条输出通路,把输出通路上的每个加工映射成输出控制模块的一个低层模块。 变换控制模块的分解:变换控制模块通常没有通用的分解方法,应根据DFD中变换部分的实际情况进行设计。,18,事务分析,事务分析是从事务流型DFD导出系统结构图。 步骤: 确定事务中心和每条活动流的流特性 将事务流型DFD映射成高层的系统结构 进一步分解,19,1)确定事务中心和每条活动流的流特性,右图为事务流型DFD的一般形式。 事务中心(图中的T): 位于活动流的起点, 活动流从该点成辐射状流出。 活动流:是信息流, 可以是变换流 也可以是另一事务流

7、。 事务流型的DFD的组成: 输入流事务中心若干条活动流,20,右图为事务流型DFD的高层结构形式。 顶层模块:其功能就是整个系统的功能。 接收模块:接收输入数据,对应输入流。 发送模块:调度模块, 控制下层的所有活动模块。 活动流模块:对应活动流, 是该活动流映射成的 结构图中的顶层模块。,2)将事务流型DFD映射成高层系统结构,顶层模块,接收,发送,活动流1,活动流2,活动流n,事务流型DFD的高层系统结构,21,3)进一步分解,接收模块:类同于变换分析中输入控制模块的分解。 活动流模块:根据其流特性(变换流或事务流)进一步采用变换分析或事务分析进行分解。,22,SD方法的设计步骤,复查并

8、细化数据流图; 确定DFD的信息流类型(变换流或事务流); 根据流类型分别实施变换分析或事务分析; 根据系统设计的原则对系统结构图进行优化。,23,系统结构图的基本符号,24,25,数据:模块之间传送的数据用带空心圆的箭头表示,并在旁边标上数据名。 控制信息:控制信息与数据的主要区别是前者只反映数据的某种状态。,26,变换型系统结构,27,事务型系统结构,28,混合系统结构,29,变换设计是软件系统结构设计的主要方法。 一般,一个大型的软件系统是变换型结构和事务型结构的混合结构。所以,我们通常利用以变换设计为主,事务设计为辅的方式进行软件结构设计。,30,模块功能完善化 一个完整的模块应当有以

9、下几部分: 执行规定的功能部分; 出错处理的部分; 函数在完成数据加工或结束时,应当给它的调用者返回一个状态码。 消除重复功能,改善软件结构 模块的作用范围应在控制范围之内,改进系统结构的启发式原则,31,尽可能减少高扇出结构。 避免或减少使用病态联接。 直接病态联接 公共数据域病态联接 通信模块病态联接 模块的大小要适中。 设计功能可预测的模块,32,系统总体结构设计,根据系统分析的要求和组织的实际情况,对新系统的总体结构形式和可利用的资源进行大致设计,这是一种宏观、总体上的设计和规划。 系统总体设计的主要内容: 系统结构设计原则 子系统划分 系统模块结构设计 数据存储设计,33,子系统划分

10、,划分原则 子系统要具有相对独立性 子系统之间数据的依赖性尽量小 子系统划分的结果应使数据冗余较小 子系统的设置应考虑今后管理发展的需要 子系统的划分应便于系统分阶段实现 子系统的划分应考虑到各类资源的充分利用,34,子系统结构设计 子系统结构设计的任务: 确定划分后的子系统模块结构,并画出模块结构图。 子系统结构设计考虑以下几个问题: 每个子系统如何划分成多个模块。 如何确定子系统之间、模块之间传送的数据及其调用关系。 如何评价并改进模块结构的质量。 如何从数据流图导出模块结构图。,35,系统模块结构设计,模块:组成系统的基本单位,系统中任何一个处理功能都可以看成是一个模块。 特点:可以组合

11、、分解和更换。 分类标准:根据模块功能具体化程度划分 分类:逻辑模块和物理模块 逻辑模块:在系统逻辑模型中定义的处理功能。 物理模块:即逻辑模块的具体化,可以是,36,一个计算机程序、子程序或若干条程序语句,也可以是人工过程的某项具体工作。 模块的四要素: 输入和输出:模块的输入来源和输出去向都是同一个调用者,即一个模块从调用者那里取得输入,进行加工后再把输出返回给调用者。 处理功能:模块把输入转换成输出所作工作。,37,内部数据:仅供该模块本身引用的数据。 程序代码:用来实现模块功能的程序。 模块特性 外部特性:反映了模块的外貌,即前两个要素,结构化设计考虑外部特性。 内部特性:即后两个要素

12、,其具体实现在系统实施阶段完成。,38,数据存储设计,数据结构组织和数据库或文件设计: 根据数据的不同用途、使用要求、统计渠道、安全保密性等,来决定数据的整体组织形式、表或文件的形式,以及决定数据的结构、类别、载体、组织方式、保密级别等。 任务: 建立数据的整体关系结构、数据资源分布 确定数据的安全保密性:一般有4种不同方式(只读、只写、删除、修改)。,39,在过程设计阶段,要决定各个模块的实现算法,并精确地表达这些算法。 对每个模块规定的功能以及算法的设计,给出适当的算法描述: 图形工具:程序流程图, N-S ,PAD, HIPO 表格工具:判定表 语言工具: PDL , HIPO,过程设计

13、(详细设计),40,1) 程序流程图,顺序型,选择型,先判断 重复型,后判断 重复型,多分支选择型,41,2) N-S 图,顺序型,选择型(1),选择型(2),先判断重复型,后判断重复型,多分支选择型,42,3) 问题分析图 (PAD),选择型,顺序型,多分支选择型,先判断重复型,后判断重复型,43,4) PDL (Program Design Language),PDL是一种用于描述功能模块的算法设计和加工细节的语言。称为设计程序用语言。它是一种伪码。 伪码的语法规则分为“外语法”和“内语法”。 PDL具有严格的关键字外语法,用于定义控制结构和数据结构,同时它的表示实际操作和条件的内语法可使

14、用自然语言的词汇。,44,示例: 拼词检查程序,PROCEDURE spellcheck BEGIN -* split document into single words LOOP get next word add word to word list in sortorder EXIT WHEN all words processed END LOOP -* look up words in dictionary LOOP get word from word list,45,IF word not in dictionary THEN -* display words not in di

15、ctionary display word prompt on user terminal IF user response says word OK THEN add word to good word list ELSE add word to bad word list ENDIF ENDIF EXIT WHEN all words processed END LOOP,46,-* create a new words dictionary dictionary : merge dictionary and good word list END spellcheck,为了区别关键字,规定关键字一律大写,其它单词一律小写。 内语法使用自然语言来描述处理特性。内语法比较灵活,只要写清楚就可以,不必考虑语法错,以利于人们可把主要精力放在描述算法的逻辑上。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号