收藏 分享(赏)

软件工程---课程与考试中心.ppt

上传人:无敌 文档编号:642592 上传时间:2018-04-16 格式:PPT 页数:119 大小:454.02KB
下载 相关 举报
软件工程---课程与考试中心.ppt_第1页
第1页 / 共119页
软件工程---课程与考试中心.ppt_第2页
第2页 / 共119页
软件工程---课程与考试中心.ppt_第3页
第3页 / 共119页
软件工程---课程与考试中心.ppt_第4页
第4页 / 共119页
软件工程---课程与考试中心.ppt_第5页
第5页 / 共119页
点击查看更多>>
资源描述

1、软件工程,周志钊,软件结构化设计,需求分析阶段所形成的数据流图、数据字典是软件总体设计的基础。软件总体设计是后续开发步骤及软件维护工作的基础。,软件设计任务,从工程管理的角度来看,软件设计分两步完成。 概要设计,将软件需求转化为数据结构和软件的系统结构。 详细设计,即过程设计。通过对结构表示进行细化,得到软件的详细的数据结构和算法。,软件设计方法,软 件 设 计 基 础,说明与评审,总体设计的任务(步骤),概要地回答系统应如何实现,包括以下任务为每个可选的方案准备一份流程图,列出系统组成的物理元素,进行效益分析,制定实现方案的进度,选择最佳方案。为最佳方案进行软件结构设计。进行必要的数据库设计

2、。分布式系统的网络设计。制定测试计划、设计文档和评审。,软件结构设计,基于SD的软件结构设计以模块为基础,在设计阶段以需求分析的结果为依据,从实现的角度将分析结果映射为模块,并组成模块的层次结构。具体步骤如下:,软件结构设计,(1)将一个复杂系统按功能划分成模块。(2)确定每个模块的功能。(3)确定模块间的调用关系。(4)确定模块间的接口,即模块间传递的信息。(5)评价模块结构划分的质量。,数据库设计,数据库设计是指数据存储文件的设计,包括以下三个方面:概念设计。用E-R模型来表示概念模型,该模型可作为数据库设计的主要依据。逻辑设计。将概念模型转换成DBMS的关系模型,定义数据项、类型、长度、

3、相互关系物理设计。设计数据存储的物理细节,如存储结构、存取方法、索引建立等。,数据库设计,数据库设计步骤:,系统网络设计,网络系统设计包括网络方案的选取,网络系统配置,网络负载与容量分析,网络互连结构及通信介质的选择,拓扑结构的设计,网络应用模式及网络操作系统的选型,网络协议的选择,网络管理,远程用户等工作。,编写概要设计阶段的文档,概要设计阶段完成时应编写以下文档: 概要设计说明书 数据库设计说明书 用户手册 制定初步的测试计划,概要设计文档,概要设计说明(包括系统实现方案和软件模块结构)用户手册(根据总体设计阶段的结果,编写的初步的用户操作手册)测试计划(包括测试策略、测试方案、预测的测试

4、结果、测试进度计划等)详细的实现计划数据库设计结果,总体设计评审,按国标GB 8576-88的计算机软件产品开发文件编制指南规定,制定“总体设计说明书”、“数据库设计说明书”等。对设计是否完整实现需求中规定的功能、性能要求,设计方案的可行性、关键处理及内外部接口定义的正确性、有效性及各部分的一致性进行评审。,在详细设计过程中,需要完成的工作是: 确定软件各个组成部分内的算法以及各部分的内部数据组织 选定某种过程的表达形式来描述各种算法。 进行详细设计的评审,详细设计,软件设计基础,自顶向下,逐步细化 软件结构 程序结构 结构图 模块化 抽象化 信息隐蔽,见书p5152,3.2.1节,设计基本原

5、理,模块化:模块:又称构件,是能够单独命名并独立地完成一定功能的程序语句的集合。例如高级语言中的过程、函数、子程序等都可作为模块。模块化是软件的一个重要属性。模块化的特性提供了人们处理复杂的问题的一种方法,同时也使得软件能够被有效地管理。,模块化,有两个函数:C (x)表示问题x的复杂程度;E (x)表示解决问题x所需要的工作量(时间)。 对于两个问题P1和P2,如果:C(P1)C(P2) 则:E(P1)E(P2) 公式:C(P1P2)C(P1)C(P2) E(P1P2)E(P1)E(P2) 单独解决问题P1和P2所需的工作量之和,比把P1和P2合起来作为一个问题来解决时所需的工作量要少。 (

6、此为分治的基础),模块化与软件成本,成本/模块, 模块:模块用矩形框表示,并用模块的名字标记它。,模块化, 模块的调用关系和接口:模块之间用单向箭头联结,箭头从调用模块指向被调用模块。, 模块间的信息传递:当一个模块调用另一个模块时,调用模块把数据或控制信息传送给被调用模块,以使被调用模块能够运行。而被调用模块在执行过程中又把它产生的数据或控制信息回送给调用模块。, 在模块A的箭头尾部标以一个菱形符号,表示模块A有条件地调用另一个模块B。当一个在调用箭头尾部标以一个弧形符号,表示模块A反复调用模块C和模块D。,程序的系统结构图,模块独立性 模块独立性, 是指软件系统中每个模块只涉及软件要求的具

7、体的子功能, 而和软件系统中其它的模块的接口是简单的 例如, 若一个模块只具有单一的功能且与其它模块没有太多的联系, 则称此模块具有模块独立性 一般采用两个准则度量模块独立性。即模块间耦合和模块内聚。,耦合是模块之间的互相连接的紧密程度的度量。 内聚是模块功能强度(一个模块内部各个元素彼此结合的紧密程度)的度量。 模块独立性比较强的模块应是高内聚低耦合的模块。,模块的耦合,1.非直接耦合 两个模块中任一个,都不依赖于对方能独立工作。,模块的耦合,2.数据耦合两个模块间通过参数交换信息,而信息仅限于数据。,模块的耦合,3.控制耦合 当模块A向模块B所传递的信息控制了B的内部逻辑。,模块的耦合,4

8、.特征耦合 被调用模块可使用的数据多于其实际需要的数据。,模块的耦合,5.外部耦合若干模块均与同一个外部环境关联。如:I/O、格式、通信协议6.公共耦合 两个或多个模块都和同一个公共数据域有关。,模块的耦合,7.内容耦合 一个模块和另一个模块的内部属性有关(运行程序和内部数据)。,模块A中TRC:模块B中GO TO TRC,“耦合模块”的性能比较,模块的耦合,设计模块时,应以数据耦合为主,辅以控制耦合,消除公共耦合和内容耦合。,模块的耦合,例4-2:两个模块间通过全局变量、全局数据结构、通讯缓冲区和数据库文件等进行数据交换称为 。 A内容耦合B控制耦合 C数据耦合D公共耦合,模块的耦合,例4-

9、3:当模块之间需要传递的参数较少时, 类型较好。 A内容耦合B控制耦合 C数据耦合D公共耦合,模块的内聚,模块的内聚,模块的内聚,模块的内聚,“内聚模块”的性能比较,内聚性与模块独立性的关系,软件设计原则,1.提高模块独立性 争取低耦合、高内聚(增加内聚 减少耦合)2. 模块规模适中: 50150条语句,过大不易理解;太小则接口开销过大。注意分解后不应降低模块的独立性。,软件设计原则,3. 选择适当的深度、宽度、扇出和扇入,软件设计原则,深度 = 分层的层数。过大表示分工过细。宽度 = 同一层上模块数的最大值。过大表示系统复杂度大。扇出 = 一个模块直接调用控制的模块数。 3 fan-out

10、9扇入 = 直接调用该模块的模块数 在不破坏独立性的前提下,fan-in 大的比较好。,软件设计原则,扇出过多,表示本模块过分复杂,缺少中间层。,扇入数大比较好,说明本模块为上层多个模块共享,重用率高。但不能把无关的功能凑在一起,降低内聚。,软件设计原则,4、作用域在控制域内 控制域,M的控制域为 M,A,B,C, 作用域:A中的一个判定所影响的模块。,软件设计原则,5、降低接口的复杂程度:接口简单、含义明确,便于实现、测试、维护。接口复杂可能表明模块的独立性差。6、单出单入,避免内容耦合。7、模块功能可预测 相同输入必产生相同输出。反例:模块中使用全局变量或静态变量,则可能导致不可预测。,模

11、块接口举例,例4-4:求一元二次方程根的程序模块。 模块1:Quad-Root (TBL,X) 其中使用数组TBL传递方程系:TBL(1)=A,TBL(2)=B,TBL(3)=C;数组X返回方程的根。 模块2: Quad-Root (A,B,C,ROOT1,ROOT2) 对模块1而言,TBL,X意义不明确,而模块2简单明了,与模块功能一致,接口复杂程度较低。,软件结构图,软件结构图是软件系统的模块层次结构,反映了整个系统的功能实现,即将来程序的控制层次体系。同一个问题。可以设计、划分、组织不同的软件结构。软件结构图(Structure Chart, SC),软件结构图,结构图的符号(1)方框代

12、表模块,框内注明模块的名字或主要功能。(2)方框之间的大箭头或直线表示模块的调用关系。(3)带注释的小箭头表示模块调用时传递的信息及其方向。尾部加空心圆的小箭头表示传递数据信息,加实心圆的小箭头表示传递控制信息。,软件结构图,软件结构图基本符号,软件结构图的模块调用,软件结构图示例,软件结构图示例,设计基本原理,抽象:抽取各个事物本质的共同的基本的特征和行为,暂时忽略它们之间的细节和差异。一般采用分层次抽象的方法来控制软件开发过程的复杂性。当用模块化方法解决问题时,可以提出不同层次的抽象(Level of Abstraction)。,设计基本原理,抽象,例4.1 开发一个CAD软件的三个抽象层

13、次。抽象层次I. 对问题的术语表述。 该软件包括一个计算机绘图界面,显示图形及数字化界面,实现直线、折线、园及各种几何图形的绘画、几何计算及所有剖面图和辅助视图。,抽象,抽象层次II. 软件任务需求的描述。CAD Software Tasks User interaction task; 2-D drawing creation task; Graphics display task; Drawing file management task;End,抽象,抽象层次III. 程序过程表示。以“创建二维图形任务”为例PROCEDURE 2-D drawing creation REPEAT UN

14、TIL ( drawing creation task terminates )Do while (digitizer interaction occurs) digitizer interface task; Determine drawing request case: Line drawing task; Circle drawing task; End,END REPETITION;,END PROCEDURE.,抽象,数据抽象: 在不同层次上描述数据对象的细节,定义与该数据对象相关的操作。例如:在CAD软件中,定义叫做drawing的数据对象,可将其规定为一个抽象数据类型,定义它的内

15、部细节为:,抽象,数据对象: TYPE drawing IS STRUCTURE DEFINED number IS STRING LENTH(12); geometry DEFINED notes IS STRING LENTH(256); bom DEFINED END drawing TYPE;,抽象,数据抽象drawing本身由另外一些数据抽象构成,如geometry, bom。定义drawing的抽象数据类型后,可引用它来定义其它数据对象。,blueprint IS INSTANCE OF drawing; 或 schematic IS INSTANCE OF drawing;,信息

16、隐藏,模块所包含的信息(过程和数据)对于其他模块来说应该是隐蔽的。也就是说,模块应当被这样规定和设计,使得包含在模块中的信息(过程或数据)对于其它不需要这些信息的模块来说,是不能访问的,或者说是“不可见”的。,信息隐藏,信息隐蔽对于软件的测试与维护都有很大的好处。因为对于软件的其它部分来说,绝大多数数据和过程都是隐蔽的,这样,在修改期间由于疏忽而引入的错误所造成的影响就可以局限在一个或几个模块内部,不至波及到软件的其他部分。,信息隐藏,模块内所含信息对那些不需要这些信息的模块不可访问,每个模块只完成一个相对独立的特定功能。,模块独立性(Module independence) 好设计的关键:每

17、个模块完成一个相对独立的子功能,并且与其它模块间的接口简单。,独立性的度量:耦合(Coupling)&内聚(Cohesion),HIPO图,HIPO( hierarchy plus input-process-output ) 是在层次结构图的基础上的一种描述每个模块输入、输出和模块内部处理(数据加工)功能的工具。由以下两部分组成:1.层次结构图-H图 描述整个系统的设计结构以及各类模块之间的关系;2.IPO图描述了某个特定模块内部的处理过程和输入/输出关系。,HIPO图,销售管理系统的H图,HIPO图,HIPO图适合于描绘软件的层次结构,特别适合于在自顶向下设计时使用。在HIPO图里除顶层之

18、外,每个方框里都加编号。编号的规律是,每个处理的下层处理的编号在其上层编号后加“.”号及序号,序号可用数字也可用英文字母表示。,HIPO图,例:确定能否供货模块的IPO图,结构化设计,结构化设计是以结构化分析的数据流图为基础,将数据流图按一定步骤映射成软件结构。与结构化分析相衔接,构成了完整的结构化分析、设计技术,是目前使用最广泛的软件设计方法之一。亦即面向数据流的设计方法。,数据流的类型,数据流图分为变换型和事务型两类。根据信息系统模型,信息一般以外部形式进入系统,通过系统处理后,离开系统。变换型数据流图是由输入、变换(处理)、输出三部分组成。变换型数据流图中数据的处理过程大致可分为3步,即

19、输入数据、变换数据和输出数据。,变换型数据流图,面向数据流的设计方法,将变换型数据流图映射为软件结构图的方法将数据流图的输入、变换和输出部分分别转换为输入、变换和输出模块;在输入、变换和输出模块之上增加总控模块,以调度这3个模块,协调完成任务。 转换后的软件结构图如图所示:,面向数据流的设计方法,总控模块的工作过程如下: 调用输入模块,获取输入数据; 调用加工模块,将获取的输入数据传给加工模块,获取加工模块加工好的数据; 调用输出模块,将获取的加工好的数据传给输出模块,由输出模块输出该数据。,事务型数据流图,事务型数据流图有一个明显的事务中心,它接受一项事务,根据该事务的特点和性质,选择分配一

20、个适当的处理单元,然后输出结果。所以,事务型数据流图由接受事务、事务中心和若干处理单元输出结果部分组成,如图所示。,面向数据流的设计方法,将事务型数据流图映射为软件结构图的方法是:将数据流图中的各个部分转换成软件结构图中的相应模块;增加调度模块,让它调度n个处理单元;让事务中心模块调度接受事务、调度和输出结果模块。,面向数据流的设计方法,转换后的软件结构图如图所示:调用接受事务模块,接受一项事务;调用调度模块选择分配处理单元,获取处理结果;调用输出模块输出结果。,面向数据流的设计方法,例4-5:变换映射,面向数据流的设计方法,确定数据流图中含有变换型特征还是事务型特征。来自教务员的统计数据通过

21、3.6加工输入到计算机中,访问学生档案库,对访问的数据进行变换后再通过3.5加工输出给教务员,存在输入部分、输出部分和中心变换部分,显然,该数据流图是变换型的。,面向数据流的设计方法,区分输入流、输出流和中心变换部分,即标明流的边界。首先确定输入和输出部分的边界,剩下的就是变换部分。在上步中确定了数据流图是变换型的,接下来的工作就是将这3部分划分出来。该数据流图的边界划分如图所示:,面向数据流的设计方法,面向数据流的设计方法,第一层分解:进行一级“因子化”分解,设计顶层和第一层模块。,面向数据流的设计方法,第二层分解:进行二级“因子化”分解,设计中、下层模块。自顶向下,逐层细化,为每一个输入模

22、块、输出模块、变换模块设计它们的从属模块。,采用优化方法,改进系统的初始结构图,直到符合要求。,面向数据流的设计方法,例4-6:事务映射,面向数据流的设计方法,确定数据流图中含有变换型特征还是事务型特征。事务流应映射到包含一个输入分支和一个分类事务处理分支的程序结构上。输入分支结构的开发与变换流的方法类似。分类事务处理分支结构包含一个调度模块,它调度和控制下属的操作模块。本例中所得的软件结构图如图所示。,面向数据流的设计方法,程序逻辑结构的描述,详细设计阶段主要采用结构化程序设计方法(Structured Programming,SP),与SA和SD方法相衔接。当前流行的表示程序逻辑结构的方式

23、有3种:图形描述 程序流程图、N-S图及PAD图语言描述 过程设计语言PDL表格描述判定表及判定树,程序逻辑结构的描述,程序逻辑结构的描述,程序流程图(Program Flow Chart)又称为程序框图。,程序逻辑结构的描述,例4-7:在对某科课程的成绩统计各分数段的人数时,程序流程图可如图表示,程序流程图的标准符号,循环的标准符号 注解的使用,多出口判断,程序逻辑结构的描述,盒图也称为N-S图。这种表达方式取消了流程线,它强迫程序员以结构化方式思考和解决问题。,第一个任务第二个任务第三个任务,顺序结构,else部分,then部分,条件,F,T,if-then-else结构,do-while

24、部分,循环条件,循环结构,程序逻辑结构的描述,在N-S图中,相应规定了5种图形构件:,程序逻辑结构的描述,例4-8:根据例4-7所示的流程图画出相应的N-S图。,示例,示例,N-S图的嵌套定义形式,程序逻辑结构的描述,当问题很复杂时,N-S图可能很大,可用分层N-S图表示,如图所示。,程序逻辑结构的描述,PAD(Problem Analysis Diagram,问题分析图),是日本日立公司提出的用结构化程序设计思想表现程序逻辑结构的图形工具。现在已被ISO认可。,PAD也设置了五种基本控制结构的图式,并允许递归使用。,问题分析图(PAD),对应于增量型循环结构for i := n1 to n2

25、 step n3 do在PAD中有相应的循环控制结构,PAD的扩充控制结构,程序逻辑结构的描述,过程设计语言PDL(Program Design Language) PDL是一种用于描述功能模块的算法设计和加工细节的语言,称为设计程序用语言。1结构 关键字 + 自然语言 允许自然语言(如英语)的词汇与某种结构化程序设计语言(如Pascal、C、Ada等)的语法结构交织在一起。,程序逻辑结构的描述,2.语法、关键字 (1)数据说明: TYPE (2)程序块: BEGIN END (3)子程序结构 PROCEDURE (4)基本控制结构: 顺序结构: 选择结构 IF-THEN-ELSE 重复型结构

26、:包括后测试型、先测试型、下标型三种: REPEAT UNTILL DO WHILE DO FOR 多路选择语句:CASE OF (5)输入/输出结构 READ/WRITE TO,程序逻辑结构的描述,一个PDL的原型,它可以建立在任意一个通用的结构化程序设计语言之上。基本成分包括:子程序定义、界面描述、数据说明、块结构、分支结构、循环结构和I/O结构。 数据说明的形式为: TYPE IS 其中: 局部变量或全局变量; 某个特定关键字(例如,SCALAR,ARRAY,LIST,STRING,STRUTURE等); 说明此处定义的变量在该过程或整个程序中应如何使用。,程序逻辑结构的描述,可进行抽象

27、数据类型的定义,例如 : TYPE table_1 IS INSTACE OF symbol_table 而symbol_table在另一处已定义如下: TYPE symbol_table IS STRUCTURE DEFINED,程序逻辑结构的描述,PDL的块结构描述一个过程元素,即一个块内的所有语句将作为一个整体执行,形式为 BEGIN END 该PDL的分支结构有if-then-else和case两种形式,分别为 IF THEN ELSE ENDIF,程序逻辑结构的描述,CASE OF WHEN SELECT WHEN SELECT WHEN SELECT DEFAULT:ENDCASE

28、,程序逻辑结构的描述,循环结构包括三类,表达形式分别为 : DO WHILE ENDWHILE REPEAT UNTIL ENDREPEAT DO FOR = ENDFOR,程序逻辑结构的描述,输入/输出说明部分常用的形式有 READ/WRITE TO 或 ASK ANSWER 后一种形式多用于人机交互部分的设计。,软件详细设计的基本任务,1、数据结构设计2、物理设计3、算法设计(用图形、表格、语言等工具进行模块处理过程的详细算法描述)4、界面设计5、其他设计(代码设计、输入/输出格式设计、网络设计)6、编写设计说明书,设计规格说明书示例,.作用范围 A. 系统目标 B. 硬件、软件和人机界

29、C. 主要的系统功能 D. 外部数据库定义 E. 主要的设计约束和限制 .文档 A. 现有的软件文档 B. 系统文档 C. 卖主(硬件的和软件的)的有关文档 D. 技术参考书,设计规格说明书示例,.设计描述 A.数据描述 1.数据流复审 2.数据结构复审 B. 导出的程序结构 C. 结构之间的界面,设计规格说明书示例,. 模块描述;针对每个模块给出 A. 处理过程陈述 B. 接口描述 C. 设计语言(或其他形式)描述 D. 引用的模块 E. 数据组织 F. 注释,设计规格说明书示例,.文件结构及全局数据 A. 外部文件结构 1.逻辑结构 2.逻辑记录描述 3.访问方式 B. 全局数据 C. 文

30、件与数据的交叉访问表.需求交叉访问矩阵,设计规格说明书示例,. 测试准备 A. 测试指南 B. 集成策略 C. 特殊考虑. 装配 A. 特殊的程序覆盖要求 B. 转换方面的考虑. 特别注释. 附录,设计规格说明的评审,为了确保文档的质量,还必须对设计文档进行评审。评审的目的在于及早发现设计中的缺陷和错误。评审包括软件总体结构、数据结构、结构之间的界面以及模块过程细节四个方面,重点考虑:软件结构能否满足需求?结构的形态是否合理?层次是否清晰?模块的划分是否遵循模块化和信息隐蔽的思想?系统的人机界面、各模块的接口以及出错处理是否恰当?模块的设计能否满足功能与性能要求?选择的算法与数据结构是否合理,能否适应编程语言,等等。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 经营企划

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报