《软件工程原理》讲义-03ppt课件_第1页
《软件工程原理》讲义-03ppt课件_第2页
《软件工程原理》讲义-03ppt课件_第3页
《软件工程原理》讲义-03ppt课件_第4页
《软件工程原理》讲义-03ppt课件_第5页
已阅读5页,还剩89页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、软件工程原理第三章 软件设计3.1 软件设计的概念3.2 功能独立性3.3 构造化设计方法3.4 过程设计.3.1 软件设计的概念软件设计的根本目的是用比较笼统概括的方式确定目的系统如何完成预定的义务,即软件设计是确定系统的物理模型。从技术观念来看,软件设计包括数据设计、体系构造设计、接口设计、过程设计。数据设计将实体关系图中描画的对象和关系,以及数据字典中描画的详细数据内容转化为数据构造的定义。.体系构造设计定义软件系统各主要成份之间的关系。接口设计根据数据流图定义软件内部各成份之间、软件与其它协同系统之间及软件与用户之间的交互机制。过程设计那么是把构呵斥份转换成软件的过程性描画。.将分析模

2、型转换为设计数据字典数据流图实体关系图形状转换图加工规格说明控制规格说明数据对象描述过程设计接口设计体系构造设计数据设计.从工程管理角度来看,软件设计分两步完成:概要设计和详细设计。概要设计将软件需求转化为软件体系构造确定系统级接口全局数据构造或数据库方式。详细设计确立每个模块的实现算法和部分数据构造用适当方法表示算法和数据构造的细节.软件设计是后续开发步骤及软件维护任务的根底。假设没有设计,只能建立一个不稳定的系统构造。设计编码测试维护测试编码维护有软件设计 没有软件设计.软件设计既是过程又是模型。设计过程是一系列的迭代步骤,使设计人员可以描画目的系统的各个侧面。设计模型首先描画目的系统的整

3、体架构,然后逐渐细化架构得到构造每个细节的指点原那么,从而得到系统的一系列不同的视图。良好的设计原那么可为设计过程导航。衡量设计过程的技术原那么:设计必需实现分析模型中描画的一切显式需求,必需满足用户希望的一切隐式需求。衡量软件设计的原那么.对于开发者和未来的维护者而言,设计必需是可读的、可了解的,使得未来易于编程、易于测试、易于维护。设计应该给出软件的全貌,包括从实现角度可看到的数据、功能、行为。衡量设计模型的技术原那么设计模型应该是一个分层构造。该构造:运用可识别的设计方式搭建系统构造。用显示良好设计特征的构件构成。可以用演化的方式实现。设计该当模块化。.设计该当包含数据、体系构造、接口和

4、构件模块的明晰的视图。设计该当根据将要实现的对象和数据方式导出适宜的数据构造。设计该当建立具有独立功能特征的构件。设计该当建立可以降低模块与外部环境之间复杂衔接的接口。设计模型该当经过运用软件需求信息所驱动的可反复的方法导出。Davis的软件设计原那么设计应具有可跟踪性,能回溯到软件需求;.设计不用每次都从头做起,可以复用已有的设计方式和数据方式。设计该当减少软件与现实世界中问题的“智力间隔,尽量逼近问题领域的构造;设计应具有一致性和集成性。整个系统应具有一致的风格和格式,具有良好的接口。设计结果应能顺应未来能够的变卦;设计不是编码,编码也不是设计。设计模型的笼统级别比源代码高。在编码级别上独

5、一的设计决策是补充一些实现细节。.设计应具有容错性和异常处置才干。对于异常数据、事件、操作条件等可以平滑处置。在建立设计方案时就应能评价设计质量,而不是在系统编码之后。应坚持设计评审,减少概念性语义性的错误。1)设计应遵照笼统化的原那么,包含数据笼统和过程笼统。软件设计的主要手段.过程笼统 是指在软件设计中将处置过程的实现细节隐藏在数据笼统中,可以直接经过模块接口运用这些处置操作。数据笼统 是指采用笼统数据类型表示数据,实现数据封装,使得运用者可经过接口运用数据而不用关怀数据构造的实现。设计应遵照自顶向下、逐渐细化的原那么,建立一个层次的构造。将软件体系构造自顶向下,对过程细节和数据细节从笼统

6、到详细,逐层细化,直到用编程言语的语句可以实现为止。.设计该当遵照模块化的原那么。每个模块可独立地开发、测试,最后组装成完好的程序。其出发点是本着将一种复杂问题“分而治之的原那么。其目的是使程序的构造明晰,容易阅读、了解、测试、修正。Meyer的良好模块设计方法的规范模块可分解性 可将系统按问题子问题分解的原那么分解成系统的模块层次构造;模块可组装性 可利用已有的设计构件组装成新系统,不用一切从头开场。.模块可了解性 一个模块可不参考其他模块而被了解;模块延续性 对软件需求的一些微小变卦只导致对某个模块的修正而整个系统不用大动;模块维护 将模块内出现异常情况的影响范围限制在模块内部;设计应遵照

7、信息隐蔽的原那么。Patnas主张在开发时,将每个程序的成分隐藏在模块内,定义每一个模块时尽能够少地显露其内部的处置。.每个模块的实现细节对于其它模块是隐蔽的,未来修正软件时偶尔引入错误所呵斥的影响就可以局限在一个或几个模块内部,不致涉及到软件的其它部分。在可预见未来能够修正的场所,信息隐蔽可以提高软件的可修正性、可测试性和可移植性。.3.2 功能独立性功能独立性是笼统、模块化和信息隐蔽的直接产物。假设一个模块可以独立于其他模块被编程、测试和修正,那么该模块具有功能独立性。1978年Myers提出用两个准那么来度量功能独立性,即模块间的耦合和模块的内聚。内聚性:内聚是一个模块内部各个元素彼此结

8、合的严密程度的度量。耦合性: 耦合是模块间相互衔接的严密程度的度量,它取决于各个模块之间接口的复杂度、调用方式以及哪些信息经过接口。.非直接 数据 标志 控制 外部 公共 内容 耦合 耦合 耦合 耦合 耦合 耦合 耦合耦合性功能独立性模块间的耦合模块之间耦合性越强,功能独立性越差,这样构成的模块构造界面不好。.非直接耦合(Nondirect Coupling)两个模块之间没有直接关系,它们之间的联络完全是经过主模块的控制和调用来实现的。非直接耦合的模块独立性最强。主模块ABCEFGXYZ.数据耦合 (Data Coupling)一个模块访问另一个模块时,彼此之间是经过简单数据参数 (不是控制参

9、数、公共数据构造或外部变量) 来交换输入、输出信息的。p0 (x0, y0) p1 (x1, y1)数据耦合 LINE ( x0, y0, x1, y1).标志耦合 (Stamp Coupling)一组模块经过参数表传送记录信息,就是标志耦合。这个记录是某一数据构造的子构造,而不是简单变量。p0 (x0, y0) p1 (x1, y1)标志耦合 LINE ( p0, p1).控制耦合 (Control Coupling)假设一个模块经过传送开关、标志、名字等控制参数,明显地控制选择另一模块的功能,就是控制耦合。FlagFlagf1f2fn.外部耦合External Coupling一组模块都访

10、问同一全局简单变量而不是同一全局数据构造,而且不是经过参数表传送该全局变量的信息,那么称之为外部耦合。公共耦合Common Coupling假设一组模块都访问同一个公共数据环境,那么它们之间的耦合就称为公共耦合。公共的数据环境可以是全局数据构造、共享的通讯区、内存的公共覆盖区等。.公共耦合的复杂程度随耦合模块的个数添加而显著添加。假设只是两模块间有公共数据环境,那么公共耦合有两种情况。松散公共耦合和严密公共耦合。common公共数据区ABcommon公共数据区AB松散的公共耦合严密的公共耦合.假设发生以下情形,模块之间就是内容耦合:一个模块直接访问另一个模块的内部数据;一个模块不经过正常入口转

11、到另一模块内部;两个模块有一部分程序代码重迭(只能够出如今汇编言语中);一个模块有多个入口。内容耦合 (Content Coupling). c AB进入另一模块内部模块代码重叠ABentry1 entry2 模块多个入口.模块内聚巧合 逻辑 时间 过程 通讯 信息 功能内聚 内聚 内聚 内聚 内聚 内聚 内聚内聚性功能独立性模块内聚性越强,功能独立性越好,对于构成的模块构造有比较好的作用。要求模块构造到达高内聚,低耦合。.一个模块中各个部分都是完成某一详细功能必不可少的组成部分,或者说该模块中一切部分都是为了完成一项详细功能而协同任务,严密联络,不可分割的。那么称该模块为功能内聚模块。功能内

12、聚模块的功能独立性最强。功能内聚 (Functional Cohesion).这种模块完成多个功能,各个功能相互独立但都在同一数据构造上操作,每一项功能有一个独一的入口点。这个模块将根据不同的要求,确定该执行哪一个功能。由于这个模块的一切功能都是基于同一个数据构造符号表,因此,它是一个信息内聚的模块。信息内聚模块可以看成是多个功能内聚模块的组合,并且到达信息的隐蔽。信息内聚 (Informational Cohesion).初始化插入删除查找修正符 号 表.假设一个模块内各功能部分都运用了一样的输入数据,或产生了一样的输出数据,那么称之为通讯内聚模块。通常,通讯内聚模块是经过数据流图来定义的。

13、模块内各个功能是严密相连的。通讯内聚 (Communication Cohesion).打印检验结果读文件文件计算A计算B合并修正文件新文件A结果B结果加工记录.运用流程图做为工具设计程序时,假设流程图太大,可以把流程图中的某一部分划出组成模块,就得到过程内聚模块。例如,把流程图中的循环部分、断定部分、计算部分分成三个模块,这三个模块都是过程内聚模块。过程内聚Procedural Cohesion.时间内聚又称为经典内聚。这种模块大多为多功能模块,但模块的各个功能的执行与时间有关,通常要求一切功能必需在同一时间段内执行。例如,初始化模块和终止模块就是时间内聚模块。时间内聚Classical C

14、ohesion.这种模块把几种相关的功能组合在一同,每次被调用时,由传送给模块的断定参数来确定该模块应执行哪一种功能。写一个记录读一个记录断定调用模块被调用模块逻辑内聚Logical Cohesion.当几个模块内正好有一段代码是一样的,将它们抽取出来构成单独的模块,即巧合内聚模块。这种模块没有独立功能,各部分之间没有联络,或联络很松散。巧合内聚Coincidental CohesionABCM STORE REC() TO N READ MASTER FILE ADD 1 TO x .构造化设计structured design,SD是一种面向数据流的设计方法,它可以与SA方法衔接。构造化设

15、计是基于模块化、自顶向下细化、构造化程序设计等程序设计技术根底上开展起来的。根本思想是将系统设计成由相对独立、功能单一的模块组成的构造。该方法实施的要点是:首先研讨、分析和审查数据流图。 从软件3.3 构造化设计方法.的需求规格阐明中弄清数据流加工的过程,对于发现的问题及时处理。然后根据数据流图确定数据处置的类型。典型的类型有两种:变换型和事务型。针对两种不同类型分别进展分析处置。由数据流图推导出系统的初始构造图。利用一些启发式原那么改良系统初始构造图,直到得到符合要求的构造图为止。修正和补充数据字典。制定测试方案。.在系统构造图中的模块传入模块 从下属模块获得数据,经过某些处置, 再将其传送

16、给上级模块。它传送的数据流叫做逻辑输入数据流。传出模块 从上级模块获得数据,进展某些处置,再将其传送给下属模块。它传送的数据流叫做逻辑输出数据流。变换模块 它从上级模块获得数据,进展特定的处置,转换成其它方式, 再传送回上级模块。.协调模块 对一切下属模块进展协调和管理的模块。传入模块AA传出模块DD变换模块AB协调模块AABB.系统构造图的根本符号模块调用数据控制信息转接符号系统构造图的根本符号选择判别反复.模块调用例如(a) 调用(b) 判别调用(c) 循环调用.数据:模块之间传送的数据用带空心圆的箭头表示,并在旁边标上数据名。控制信息:控制信息与数据的主要区别是前者只反映数据的某种形状。

17、模块间的数据传送AB(a)xyz查职工简历读人事文件(b)职工号简历数据无此职工.数据处置的类型 在需求分析阶段,面向数据流的SA方法产生数据流图DFD。在软件设计阶段,面向数据流的SD方法将DFD转换成程序构造图。数据处置即为在DFD中从系统的输入数据流到系统的输出数据流所阅历的一连串延续变换。数据处置的类型分为变换流型与事务流型。 .变换流 数据沿着输入通路进入系统,经过一系列数据变换,将数据的外部方式转换成对应的内部表示,然后经过变换中心也称主加工处置,再沿着输出通路转换成外部方式分开系统。具有这种特性的数据流称为变换流。变换流型DFD可以分成: 输入变换中心主加工输出 输入数据C变换数

18、据CD输出数据D.相应于获得数据、变换数据、给出数据,变换流型系统构造图由输入、变换中心和输出等三部分组成。主模块B变换成C输入B输出CA变换成B输入AC变换成D输出DAABBBCCCDD.事务流 数据沿着输入通路到达一个事务中心,事务中心根据输入数据即事务的类型在假设干个动作称为活动流中选择一个来执行,这种数据流也称为事务流。事务流有明显的事务中心,各活动流以事务中心为起点呈辐射状流出。在事务流型系统构造图中,事务中心模块按所接受的事务的类型,选择某一事务活动流处置模块执行。各事务处置模块并列。.事务中心分派模块输出结果事务1输入作业信息事务2事务3事务4作业信息作业信息结果结果操作1操作2

19、操作3操作4操作5操作6细节1细节2细节3细节4细节5细节6.变换分析 变换分析从变换流型的数据流图导出系统构造图.步骤重画数据流图;区分有效逻辑输入、有效逻辑输出和变换中心部分;进展一级分解,设计模块构造的顶层和第一层模块;进展二级分解,设计输入、输出和中心变换部分的中、下层模块。.1. 重画数据流图平铺为了建立系统构造,将数据流图平铺开来,物理输入画在左侧,物理输出画在右侧。假设一个外部实体既是物理输入又是物理输出,那么两侧都要画出它。ABBCEGGHDFCDEABCDEFGH物理输入物理输出.2. 确定逻辑输入、逻辑输出和变换中心部分变换中心是程序的中心功能,它的输入是逻辑输入,它的输出

20、为逻辑输出。变换中心ABBCEGGHDFCDEABCDEFGH物理输入物理输出逻辑输入逻辑输出.3. 第一级分解:设计模块构造的顶层和第一层顶层模块:其功能就是整个系统的功能;输入控制模块:接纳一切的输入数据;变换控制模块:实现输入到输出的变换;输出控制模块:产生一切的输出数据。顶层模块变换控制输出控制输入控制.变换中心ABBCEGGHDFCDEABCDEFGH物理输入物理输出逻辑输入逻辑输出主模块C D,E输入C输出D输出ECCD,EDE逻辑输入变换中心逻辑输出.4. 第二级分解:设计中、下层模块输入控制模块的分解:从变换中心的边境开场,沿着各输入通路,把输入通路上的每个加工映射成输入控制模

21、块的一个低层模块。输出控制模块的分解:从变换中心的边境开场,沿着各输出通路,把输出通路上的每个加工映射成输出控制模块的一个低层模块。变换控制模块的分解:变换控制模块通常没有通用的分解方法,应根据数据流图中变换部分的实践情况进展设计。.输出HG HABBCEGGHDFCD,EABCDEFGH物理输入物理输出主模块CD,E输入C输出D输出ECCD,EDE输入BBBCBC输入AABABA输出GE G输出FDFDFFEGGGHH.输出HG HABBCEGGHDFCD,EABCDEFGH物理输入物理输出主模块CD,E输入C输出D输出ECCD,EDE输入BBBCBC输入AABABA输出GE G输出FDFD

22、FFEGGGHH.事务分析事务分析是从事务流型数据流图导出系统构造图。步骤:确定事务中心和每条活动流的流特性 将事务流型数据流图映射成高层的系统构造进一步分解 .1. 确定事务中心和各活动流的流特性 右图为事务流型DFD的普通方式。事务中心图中的T:位于活动流的起点,活动流从该点成辐射状流出。活动流:可为变换流可为事务流事务流型的DFD的组成:输入流事务中心假设干条活动流 T输入流事务流活动流.右图为事务流型DFD的高层构造方式。顶层模块:其功能就是整个系统的功能。接纳模块:接纳输入数据。分派模块:调度模块,控制下层的一切活动模块。事务模块:对应活动流,是该活动流映射成的。 2. 将事务流型D

23、FD映射成高层系统构造顶层模块分派接纳事务1事务2事务n.3. 进一步分解接纳模块:类同于变换分析中输入控制模块的分解。活动流模块:根据其流特性变换流或事务流进一步采用变换分析或事务分析进展分解。 .模块设计的原那么在选择模块设计的次序时,必需对一个模块的全部直接下属模块都设计完成之后,才干转向另一个模块的下层模块的设计。运用“黑盒技术: 在设计当前模块时,先把该模块的一切下层模块定义成“黑盒,在设计中利用它们时暂不思索其内部构造和实现。在这一步定义好的“黑盒,在下一步就可以对它们进展设计和加工。最后,全部“黑盒的内容和构造应完全被确定。.在设计下层模块时,应思索模块的耦合和内聚问题,以提高初

24、始构造图质量。模块划分时,一个模块的直接下属模块普通在 5 个左右。假设直接下属模块超越 10 个,可设立中间层次。假设出现以下情况,就停顿模块分解:模块不能再细分为明显的子义务;分解成用户提供的模块或库函数;模块接口是输入输出设备传送的信息;模块不宜再分解得过小。.变换分析是软件系统构造设计的主要方法。普通,一个大型的软件系统是变换型构造和事务型构造的混合构造。所以,我们通常利用以变换分析为主,事务分析为辅的方式进展软件构造设计。.abdpqrsbac1d分派模块事务控制qrs接受通路p.模块功能完善化 一个完好的模块该当有以下几部分:执行规定的功能的部分;出错处置的部分。当模块不能完成规定

25、的功能时,必需回送出错标志,出现例外情况的缘由。假设需求前往数据给它的调用者,在完成数据加工或终了时, 该当给它的调用者前往一个形状码。改良系统构造的启发式原那么.消除反复功能,改善软件构造完全类似:在构造上完全类似,能够只是在数据类型上不一致。此时可以采取完全合并的方法。部分类似:找出其一样部分,分别出去,重新定义成一个独立的下一层模块。还可以与它的上级模块合并。.R1R2XY类似部分R1R2XYR1+R2XYX+R1Y+R2R1Y+R2X不可取开关太多.模块的作用范围应在控制范围之内模块的控制范围包括它本身及其一切的从属模块。模块的作用范围是指模块内一个断定的作用范围,凡是受这个断定影响的

26、一切模块都属于这个断定的作用范围。假设一个断定的作用范围包含在这个断定所在模块的控制范围之内,那么这种构造是简单的,否那么,它的构造是不简单的。.尽能够减少高扇出构造 假设一个模块的扇出数过大,就意味着该模块过分复杂,需求协调和控制过多的下属模块。该当适当添加中间层次的控制模块。PPP1P2.防止或减少运用病态联接直接病态联接公共数据域病态联接通讯模块病态联接ABcommonABTABLEITABABxxxx(a) 直接病态联接(b) 公共数据域 病态联接(c) 通讯模块 病态联接.模块的大小要适中。设计功能可预测的模块 一个功能可预测的模块, 不论内部处置细节如何,但对一样的输入数据,总能产

27、生同样的结果。但是,假设模块内部蕴藏有一些特殊的鲜为人知的功能时,这个模块就能够是不可预测的。对于这种模块,假设调用者不小心运用,其结果将不可预测。.保管当前标志恢复“以前标志标志?标志?功能不可预测的模块.在过程设计阶段,要决议各个模块的实现算法,并准确地表达这些算法。对每个模块规定的功能以及算法的设计,给出适当的算法描画:图形工具:程序流程图, N-S ,PAD, HIPO表格工具:断定表言语工具: PDL , HIPO3.5 过程设计详细设计.程序流程图ABABPA1P=1A2=2An=nTSPFFSPT顺序型选择型先判别反复型后判别反复型多分支选择型.gabfx1x4x5x6x2x3入

28、口hijcde出口流程图例如FFFFFTTTTTswitchdo-whiledo-whilewhile-do=1=2=3.N-S 图ABPFTABPFTAwhile-do PAdo-while PAP= 1 = 2 = nA1 A2 An顺序型选择型(1)选择型(2)先判别反复型后判别反复型多分支选择型.N-S图盒图例如do-while x6abx1TTFFx2x4f=1=2=3gido-while x5hdec while-do x6j.问题分析图 (PAD)S1SA1A2AnPPP=1=2=nwhile PSSS1S2S2until P选择型顺序型多分支选择型先判别反复型后判别反复型.PA

29、D例如while-do x3bfgx1ado-while x6jx4do-while x5hicdex2=1=2=3.PDL (Program Design Language)PDL是一种用于描画功能模块的算法设计和加工巧节的言语。称为设计程序用言语。它是一种伪码。伪码的语法规那么分为“外语法和“内语法。PDL具有严厉的关键字外语法,用于定义控制构造和数据构造,同时它的表示实践操作和条件的内语法可运用自然言语的词汇。.例如: 拼词检查程序PROCEDURE spellcheckBEGIN -* split document into single words LOOP get next wor

30、d 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. IF word not in dictionary THEN -* display words not in dictionary display word prompt on user terminal IF user response says word OK THEN add word to good word lis

31、t ELSE add word to bad word list ENDIF ENDIF EXIT WHEN all words processedEND LOOP. -* create a new words dictionary dictionary :merge dictionary and good word listEND spellcheck为了区别关键字,规定关键字一概大写,其它单词一概小写。内语法运用自然言语来描画处置特性。内语法比较灵敏,只需写清楚就可以,不用思索语法错,以利于人们可把主要精神放在描画算法的逻辑上。.断定表决策表用于表示程序的静态逻辑在决策表中的条件部分给出一

32、切的两分支判别的列表,动作部分给出相应的处置要求将程序流程图中的多分支判别都改成两分支判别.gabfx1x6x7x8x2x5入口hijcde出口FFFFFTTTTTswitchdo-whiledo-whilewhile-dox3x4FFFTTT无多分支判别构造.1234567891011121314x1TTTTTFFFFFFFFFx2TTTFFFFFFx3TTFFFFx4TTFFx5TFFx6TTTFFx7TFFx8TFTFTFTFTFTFaYYYYYYYYYYYYYYbYYYYYYYYYYYYYYcYdYYeYYfYYYYYgYYhYYiYYYjYYYYYY.HIPO图HIPO是1976年由 IBM 公司提出来的,图既是在开发过程中的表达工具,又是开发文档的编制工具。HIPO图采用功能框图和 PDL 来描画程序逻辑,它由两部分组成:层次图H图和IPO图。层次图给出程序的层次关系,IPO图为程序各部分提供详细的任务细节。.层次图 (H图) 阐明各个功能的隶属关系。它是自顶向下逐层分解得到的。最高一层是整个系统的称号和系统的概括功能

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论