软件设计方法.ppt
《软件设计方法.ppt》由会员分享,可在线阅读,更多相关《软件设计方法.ppt(186页珍藏版)》请在三一办公上搜索。
1、软件设计的目标和任务软件设计原理模块独立性软件体系结构描绘软件结构的图形工具面向数据流的结构化设计方法详细设计,软件设计方法,软件设计的目标和任务,根据用信息域表示的软件需求,以及功能和性能需求,进行系统设计结构设计 过程设计数据设计,系统设计确定系统的具体实现方案。数据设计侧重于数据结构的定义。结构设计定义软件系统各主要成份之间的关系。过程设计是把结构成份转换成软件的过程性描述。在编码步骤,根据这种过程性描述,生成源程序代码,然后通过测试最终得到完整有效的软件。,开发阶段的信息流,程序模块,测试,编码,系统设计,信息域需求,功能与性能需求,数据设计,过程设计,结构设计,组装好的有效的软件,软
2、件设计是后续开发步骤及软件维护工作的基础。如果没有设计,只能建立一个不稳定的系统结构,软件设计任务,从工程管理的角度来看,软件设计分两步完成。总体设计,将软件需求转化为数据结构和软件的系统结构。详细设计,即过程设计。通过对结构表示进行细化,得到软件的详细的数据结构和算法。,软件设计过程,1.制定规范在进入软件开发阶段之初,首先应为软件开发组制定在设计时应该共同遵守的标准,以便协调组内各成员的工作。包括:,阅读和理解软件需求说明书,确认用户要求能否实现,明确实现的条件,从而确定设计的目标,以及它们的优先顺序 根据目标确定最合适的设计方法 规定设计文档的编制标准 规定编码的信息形式,与硬件,操作系
3、统的接口规约,命名规则,2.软件系统结构的总体设计,基于功能层次结构建立系统。采用某种设计方法,将系统按功能划分成模块的层次结构 确定每个模块的功能 建立与已确定的软件需求的对应关系 确定模块间的调用关系 确定模块间的接口 评估模块划分的质量,3.处理方式设计,确定为实现系统的功能需求所必需的算法,评估算法的性能确定为满足系统的性能需求所必需的算法和模块间的控制方式 周转时间 响应时间 吞吐量 精度确定外部信号的接收发送形式,4.数据结构设计,确定软件涉及的文件系统的结构以及数据库的模式、子模式,进行数据完整性和安全性的设计确定输入,输出文件的详细的数据结构结合算法设计,确定算法所必需的逻辑数
4、据结构及其操作确定对逻辑数据结构所必需的那些操作的程序模块(软件包),限制和确定各个数据设计决策的影响范围若需要与操作系统或调度程序接口所必须的控制表等数据时,确定其详细的数据结构和使用规则数据的保护性设计 防卫性设计:在软件设计中就插入自动检错,报错和纠错的功能,一致性设计:保证软件运行过程中所使用的数据的类型和取值范围不变 在并发处理过程中使用封锁和解除封锁机制保持数据不被破坏冗余性设计:针对同一问题,由两个开发者采用不同的程序设计风格不同的算法设计软件,当两者运行结果之差不在允许范围内时,利用检错系统予以纠正,或使用表决技术决定一个正确结果。,5.可靠性设计,可靠性设计也叫做质量设计在运
5、行过程中,为了适应环境的变化和用户新的要求,需经常对软件进行改造和修正。在软件开发的一开始就要确定软件可靠性和其它质量指标,考虑相应措施,以使得软件易于修改和易于维护。,6.编写概要设计阶段的文档,概要设计阶段完成时应编写以下文档:概要设计说明书 数据库设计说明书 用户手册 制定初步的测试计划,7.概要设计评审,可追溯性:确认该设计是否复盖了所有已确定的软件需求,软件每一成份是否可追溯到某一项需求接口:确认该软件的内部接口与外部接口是否已经明确定义。模块是否满足高内聚和低耦合的要求。模块作用范围是否在其控制范围之内风险:确认该设计在现有技术条件下和预算范围内是否能按时实现,实用性:确认该设计对
6、于需求的解决方案是否实用技术清晰度:确认该设计是否以一种易于翻译成代码的形式表达可维护性:确认该设计是否考虑了方便未来的维护质量:确认该设计是否表现出良好的质量特征,各种选择方案:看是否考虑过其它方案,比较各种选择方案的标准是什么限制:评估对该软件的限制是否现实,是否与需求一致其它具体问题:对于文档、可测试性、设计过程.等进行评估,5.2 软件设计原理,自顶向下,逐步细化 软件结构 程序结构 结构图 模块化 抽象化 信息隐蔽,自顶向下,逐步细化,将软件的体系结构按自顶向下方式,对各个层次的过程细节和数据细节逐层细化,直到用程序设计语言的语句能够实现为止,从而最后确立整个的体系结构。,软件结构,
7、软件结构包括两部分。程序的模块结构和数据的结构软件的体系结构通过一个划分过程来完成。该划分过程从需求分析确立的目标系统的模型出发,对整个问题进行分割,使其每个部分用一个或几个软件成份加以解决,整个问题就解决了,程序结构,程序结构表明了程序各个部件(模块)的组织情况,是软件的过程表示。,结构图,结构图反映程序中模块之间的层次调用关系和联系:它以特定的符号表示模块、模块间的调用关系和模块间信息的传递,模块:模块用矩形框表示,并用模块的名字标记它。,模块的调用关系和接口:模块之间用单向箭头联结,箭头从调用模块指向被调用模块。,模块间的信息传递:当一个模块调用另一个模块时,调用模块把数据或控制信息传送
8、给被调用模块,以使被调用模块能够运行。而被调用模块在执行过程中又把它产生的数据或控制信息回送给调用模块,在模块A的箭头尾部标以一个菱形符号,表示模块A有条件地调用另一个模块B。当一个在调用箭头尾部标以一个弧形符号,表示模块A反复调用模块C和模块D。,程序的系统结构图,模块化,软件系统的模块化是指整个软件被划分成若干单独命名和可编址的部分,称之为模块。这些模块可以被组装起来以满足整个问题的需求。把问题子问题的分解与软件开发中的系统子系统或系统模块对应起来,就能够把一个大而复杂的软件系统划分成易于理解的比较单纯的模块结构。,抽象化,软件系统进行模块设计时,可有不同的抽象层次。在最高的抽象层次上,可
9、以使用问题所处环境的语言概括地描述问题的解法。在较低的抽象层次上,则采用过程化的方法。,(1)过程的抽象在软件工程中,从系统定义到实现,每进展一步都可以看做是对软件解决方法的抽象化过程的一次细化。在软件需求分析阶段,用“问题所处环境的为大家所熟悉的术语”来描述软件的解决方法。在从概要设计到详细设计的过程中,抽象化的层次逐次降低。当产生源程序时到达最低抽象层次。,例:开发一个CAD软件的三层抽象,抽象层次.用问题所处环境的术语来描述这个软件:该软件包括一个计算机绘图界面,向绘图员显示图形,以及一个数字化仪界面,用以代替绘图板和丁字尺。所有直线、折线、矩形、圆及曲线的描画、所有的几何计算、所有的剖
10、面图和辅助视图都可以用这个CAD软件实现。,抽象层次.任务需求的描述。CAD SOFTWARE TASKS user interaction task;2-D drawing creation task;graphics display task;drawing file management task;end.在这个抽象层次上,未给出“怎样做”的信息,不能直接实现。,抽象层次.程序过程表示。以2-D(二维)绘图生成任务为例:PROCEDURE:2-D drawing creation REPEAT UNTIL(drawing creation task terminates)DO WHILE
11、(digitizer interaction occurs)digitizer interface task;DETERMINE drawing request CASE;line:line drawing task;rectangle:rectangle drawing task;circle:circle drawing task;,(2)数据抽象在不同层次上描述数据对象的细节,定义与该数据对象相关的操作。例如,在CAD软件中,定义一个叫做drawing的数据对象。可将drawing规定为一个抽象数据类型,定义它的内部细节为:,TYPE drawing IS STRUCTURE DEFIN
12、D number IS STRING LENGTH(12);geometry DEFIND notes IS STRING LENGTH(256);BOM DEFIND END drawing TYPE;,数据抽象drawing本身由另外一些数据抽象,如geometry、BOM(bill of materials)构成定义drawing的抽象数据类型之后,可引用它来定义其它数据对象,而不必涉及drawing的内部细节例如,定义:blue-print IS INSTANCE OF drawing;或 schematic IS INSTANCE OF drawing;,信息隐蔽,信息隐蔽是指,每个
13、模块的实现细节对于其它模块来说是隐蔽的。也就是说,模块中所包含的信息(包括数据和过程)不允许其它不需要这些信息的模块使用。,5.2.5模块的独立性,模块,又称“组件”、“构件”。一般采用两个准则度量模块独立性。即模块间耦合和模块内聚若一个模块只具有单一的功能且与其它模块没有太多的联系,则称此模块具有模块独立性模块具有三个基本属性:功能:即指该模块实现什么功能,做什么事情。逻辑:即描述模块内部怎么做。状态:即该模块使用时的环境和条件。,耦合:对一个软件结构内不同模块之间互连程度的度量 内聚:标志一个模块内各个元素彼此结合的紧密程度 模块独立性强的模块应是高内聚低耦合的模块,应该设计这种模块。,模
14、块间的耦合,非直接耦合(Nondirect Coupling)两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的。非直接耦合的模块独立性最强。,数据耦合(Data Coupling)一个模块访问另一个模块时,彼此之间是通过参数 交换信息,而且交换的仅仅是数据。标记耦合(Stamp Coupling)一组模块通过参数表传递记录信息,就是标记耦合。这个记录是某一数据结构的子结构,而不是简单变量。,控制耦合(Control Coupling)如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能,就是控制耦合。,外部耦合(External Coupli
15、ng)一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。公共耦合(Common Coupling)若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。,公共耦合的复杂程度随耦合模块的个数增加而显著增加。若只是两模块间有公共数据环境,则公共耦合有两种情况。松散公共耦合和紧密公共耦合。,内容耦合(Content Coupling)如果发生下列情形,两个模块之间就发生了内容耦合(1)一个模块直接访问另一个模块的内部数据;(2)一个模块不通过正常入口转到另一
16、模块内部;(3)两个模块有一部分程序代码重迭(只可能出现在汇编语言中);(4)一个模块有多个入口。,c,模块内聚,功能内聚(Functional Cohesion)一个模块中各个部分都是完成某一具体功能必不可少的组成部分,或者说该模块中所有部分都是为了完成一项具体功能而协同工作,紧密联系,不可分割的。则称该模块为功能内聚模块。,信息内聚(Informational Cohesion)这种模块完成多个功能,各个功能都在同一数据结构上操作,每一项功能有一个唯一的入口点。这个模块将根据不同的要求,确定该执行哪一个功能。由于这个模块的所有功能都是基于同一个数据结构(符号表),因此,它是一个信息内聚的模
17、块。,信息内聚模块可以看成是多个功能内聚模块的组合,并且达到信息的隐蔽。即把某个数据结构、资源或设备隐蔽在一个模块内,不为别的模块所知晓。,通信内聚(Communication Cohesion)如果一个模块内各功能部分都使用了相同的输入数据,或产生了相同的输出数据,则称之为通信内聚模块。通常,通信内聚模块是通过数据流图来定义的。,过程内聚(Procedural Cohesion)使用流程图做为工具设计程序时,把流程图中的某一部分划出组成模块,就得到过程内聚模块。例如,把流程图中的循环部分、判定部分、计算部分分成三个模块,这三个模块都是过程内聚模块。,时间内聚(Classical Cohesi
18、on)时间内聚又称为经典内聚。这种模块大多为多功能模块,但模块的各个功能的执行与时间有关,通常要求所有功能必须在同一时间段内执行。例如初始化模块和终止模块。,逻辑内聚(Logical Cohesion)这种模块把几种 相关的功能组合 在一起,每次被 调用时,由传送 给模块的判定参 数来确定该模块 应执行哪一种功 能。,巧合内聚(Coincidental Cohesion)巧合内聚(偶然内聚)。当模块内各部分之间没有联系,或者即使有联系,这种联 系也很松散,则称这种模 块为巧合内 聚模块,它 是内聚程度 最低的模块。,软件体系结构,软件体系结构的三要素是程序构件(模块)的层次结构、构件之间交互的
19、方式,以及数据的结构。,软件系统常出现下列体系结构,数据流系统:这种结构中的每一个组成成份都有一套输入和输出数据,都依输入数据处理输出结果的方式工作。进行数据变换的构件叫做过滤器,把数据从一个过滤器的输出导入到另一个过滤器的输入,就叫做管道。各个过滤器相互独立,每一个过滤器对它的上游或下游的过滤器的情况是不知道的。这种结构的优点是:数据流程设计明确,直接支持复用,系统容易维护和升级,可以进行某些性能分析(如流量、死锁等),容易支持并行计算。,调用返回系统:在层次结构中,每一层都只与上下相邻的两层通信。每一层在利用下层基础服务的条件下,为上层提供服务。最典型的例子就是OSI7层网络协议。这种结构
20、的优点是:提供逐步抽象的编程支持,支持复用及系统升级。缺点是:不是所有的系统都适合于建成层次结构,不能提供最佳性能。,独立构件系统:这种结构的特点是事件的发出者不必知道对该事件的具体处理过程。它的优点是:提供了强大的可复用性支持。如事件驱动系统。数据为中心的系统:数据库,5.4 描绘软件结构的图形工具,层次图:描述软件的层次结构和模块调用关系。层次图和层次方框图的区别HIPO图,5.5面向数据流的结构化设计方法,面向数据流的结构化设计方法(SD)面向数据结构的设计方法面向对象的设计,简介三种软件设计方法,结构化设计方法是基于模块化、自顶向下细化、结构化程序设计等程序设计技术基础上发展起来的。利
21、用映射把数据流图变换成软件结构。而前面学过的系统流程图,重点在描述物理系统的构成,状态转换图是表示状态转换的,ER图是描述数据对象关系的。该方法实施的要点是:建立数据流的类型:变换流?事务流?指明流的边界。即输入、处理、输出的界限。将数据流图映射到程序结构。,首先研究、分析和审查数据流图。从软件的需求规格说明中弄清数据流加工的过程,对于发现的问题及时解决。然后根据数据流图决定问题的类型。,SD粗略设计步骤(6步),由数据流图推导出系统的初始结构图。利用一些启发式原则来改进系统的初始结构图,直到得到符合要求的结构图为止。修改和补充数据词典。制定测试计划。,预备知识:在系统结构图中的模块,传入模块
22、 从下属模块取得数据,经过某些处理,再将其传送给上级模块。它传送的数据流叫做逻辑输入数据流。传出模块 从上级模块获得数据,进行某些处理,再将其传送给下属模块。它传送的数据流叫做逻辑输出数据流。,变换模块 它从上级模块取得数据,进行特定的处理,转换成其它形式,再传送回上级模块。它加工的数据流叫做变换数据流。协调模块 对所有下属模块进行协调和管理的模块。,变换型系统结构图(变换流),变换型数据处理问题的工作过程大致分为三步。相应于此,变换型系统结构图由输入、中心变换和输出等三部分组成。,事务型系统结构图(事务流),它接受一项事务,根据事务处理的特点和性质,选择分派一个适当的处理单元,然后给出结果。
23、在事务型系统结构图中,事务中心模块按所接受的事务的类型,选择某一事务处理模块执行。各事务处理模块并列。每个事务处理模块可能要调用若干个操作模块,而操作模块又可能调用若干个细节模块。,变换分析,变换分析方法由以下4步组成:重画数据流图;区分有效(逻辑)输入、有效(逻辑)输出和中心变换部分;进行一级分解,设计上层模块;进行二级分解,设计输入、输出和中心变换部分的中、下层模块。,事务分析,在很多软件应用中,存在某种作业数据流,它可以引发一个或多个处理,这些处理能够完成该作业要求的功能。这种数据流就叫做事务。与变换分析一样,事务分析也是从分析数据流图开始,自顶向下,逐步分解,建立系统到结构图。,事务分
24、析过程,识别事务源利用数据流图和数据词典,从问题定义和需求分析的结果中,找出各种需要处理的事务。通常,事务来自物理输入装置。有时,设计人员还必须区别系统的输入、中心加工和输出中产生的事务。,规定适当的事务型结构在确定了该数据流图具有事务型特征之后,根据模块划分理论,建立适当的事务型结构。识别各种事务和它们定义的操作。从问题定义和需求分析中找出的事务及其操作所必需的全部信息,对于系统内部产生的事务,必须仔细地定义它们的操作。,注意利用公用模块在事务分析的过程中,如果不同事务的一些中间模块可由具有类似的语法和语义的若干个低层模块组成,则可以把这些低层模块构造成公用模块。对每一事务,或对联系密切的一
25、组事务,建立一个事务处理模块;如果发现在系统中有类似的事务,可以把它们组成一个事务处理模块。,对事务处理模块规定它们全部的下层操作模块 对操作模块规定它们的全部细节模块变换分析是软件系统结构设计的主要方法。一般,一个大型的软件系统是变换型结构和事务型结构的混合结构。所以,我们通常利用以变换分析为主,事务分析为辅的方式进行软件结构设计。,5.6 小结 软件模块结构的改进,模块功能的完善化 消除重复功能 模块的作用范围应在控制范围之内 尽可能减少高扇出结构 避免或减少使用病态联接 模块的大小要适中 设计功能可预测的模块 软件包应满足设计约束和可移植性 使用黑箱技术停止模块功能分解的原则,模块功能的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件设计 方法

链接地址:https://www.31ppt.com/p-2912537.html