版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章结构化设计本章要点结构化设计任务、工作内容及步骤总体设计的过程设计原则、启发规则面向数据流的设计方法详细设计任务及原则代码及用户界面设计基于组件的设计方法结构化设计说明书结构结构化设计概述结构化设计是面向数据流的传统软件开发方法,以数据流为中心构建软件的分析和设计模型。其工具:结构图---通过使用矩形和连接线来表示系统的不同模块以及其活动和子活动的工具。适用于变换型结构和事务性结构的目标系统。伪代码—自然语言和程序设计语言共同表示程序结构。结构化设计的任务任务:在设计阶段,主要是将需求分析阶段得到的DFD转换为软件结构和数据结构。目标:划分子系统并使子系统之间是高内聚低耦合的,从而提高软件的可理解性和可维护性。根据用信息域表示的软件需求,以及功能和性能需求,进行数据设计系统结构设计过程设计数据设计侧重于数据结构的定义。系统结构设计定义软件系统各主要成份之间的关系。过程设计则是把结构成份转换成软件的过程性描述。在编码步骤,根据这种过程性描述,生成源程序代码,然后通过测试最终得到完整有效的软件。开发阶段的信息流从工程管理的角度来看,软件设计分两步完成。
概要设计,将软件需求转化为数据结构和软件的系统结构。
详细设计,即过程设计。通过对结构表示进行细化,得到软件的详细的数据结构和算法。详细设计阶段概要设计阶段体系结构设计模块设计数据库设计用户界面设计需求开发实现与测试数据结构与算法设计系统设计过程示意图结构化设计的工作内容及步骤结构化设计的工作内容:结构化设计首先是根据数据流图类型将问题分析划分为事务型问题和(或)变换型问题,分别将它们映射成事务型或变换型结构图;然后对映射得到的结构图进行综合和评价改进;最后按照有关规范编写总体设计说明书进行复审。结构化设计的工作步骤图4-1所示结构化总体设计准则:模块化抽象与逐步求精信息隐蔽和局部化模块独立性目标:概括地回答系统应该如何实现。总体设计过程1.设计系统方案2.选取一组合理的方案3.推荐最佳实施方案4.功能分解5.软件结构设计6.数据库设计、文件结构的设计7.制定测试计划8.编写概要设计文档
(1)用户手册(2)测试计划(3)详细项目开发实现计划(4)数据库设计结果9.审查与复审概要设计文档设计原则软件系统的模块化是指整个软件被划分成若干单独命名和可编址的部分,称之为模块。这些模块可以被组装起来以满足整个问题的需求。抽象软件系统进行模块设计时,可有不同的抽象层次。在最高的抽象层次上,可以使用问题所处环境的语言概括地描述问题的解法。在较低的抽象层次上,则采用过程化的方法。信息隐蔽由parnas方法提倡的信息隐蔽是指,每个模块的实现细节对于其它模块来说是隐蔽的。也就是说,模块中所包含的信息(包括数据和过程)不允许其它不需要这些信息的模块使用。一致性整个软件系统(文档和程序)的各个模块均应使用一致的概念、符号、术语;接口一致;规格说明与系统行为一致;设计工具、方法和编码风格一致等。总体设计的启发规则将软件的体系结构按自顶向下方式,对各个层次的过程细节和数据细节逐层细化,直到用程序设计语言的语句能够实现为止,从而最后确立整个的体系结构。软件结构包括两部分。程序的模块结构和数据的结构软件的体系结构通过一个划分过程来完成。该划分过程从需求分析确立的目标系统的模型出发,对整个问题进行分割,使其每个部分用一个或几个软件成份加以解决,整个问题就解决了程序结构程序结构表明了程序各个部件(模块)的组织情况,是软件的过程表示。
结构图反映程序中模块之间的层次调用关系和联系:它以特定的符号表示模块、模块间的调用关系和模块间信息的传递①
模块:模块用矩形框表示,并用模块的名字标记它。②
模块的调用关系和接口:模块之间用单向箭头联结,箭头从调用模块指向被调用模块。③
模块间的信息传递:当一个模块调用另一个模块时,调用模块把数据或控制信息传送给被调用模块,以使被调用模块能够运行。而被调用模块在执行过程中又把它产生的数据或控制信息回送给调用模块。④
在模块A的箭头尾部标以一个菱形符号,表示模块A有条件地调用另一个模块B。当一个在调用箭头尾部标以一个弧形符号,表示模块A反复调用模块C和模块D。面向数据流的设计方法系统结构的两种典型形式:系统数据流的两种形式:变换型结构事务型结构变换型数据流事务型数据流变换中心输入输出变换型结构事务中心接受路径动作路径基本模型特征事务型结构由输入、变换中心和输出三部分组成具有在多种事务中选择执行某类事物的能力T
事务中心传入变换传出
大型系统DFD中,变换型和事务型结构往往共存变换流示意图信息流输入流输出流交换流外部表示内部表示系统结构图的组成传入模块─从下属模块取得数据,经过某些处理,再将其传送给上级模块。它传送的数据流叫做逻辑输入数据流。传出模块─从上级模块获得数据,进行某些处理,再将其传送给下属模块。它传送的数据流叫做逻辑输出数据流。变换模块─它从上级模块取得数据,进行特定的处理,转换成其它形式,再传送回上级模块。它加工的数据流叫做变换数据流。协调模块─对所有下属模块进行协调和管理的模块。ACBX,YZZACB21ACBDA根据内部判断决定是否调用BA按另一判定结果选择调用C或DABCA根据内在的循环重复调用B、C等模块27初始的SC主模块输入模块主加工模块输入模块事务控制模块接受模块动作发送模块动作1模块动作2模块动作3模块由变换分析产生由事务分析产生变换分析设计方法步骤:(1)区分传入、变换中心、传出部分,在DFD上标明分界线。BCADEQPRWUVabcedrpuwv变换中心传入部分传出部分(2)第一级分解(建立初始SC框架)
设计顶层和第一层模块。第一级分解的方法MCMTMAMEMCMTMAME第一层顶层c,ec,eu,wu,w传出模块中心变换模块事务分析任何情况下都可使用变换分析方法设计软件结构,但如数据流具有明显的事务特点时(有一个明显的事务中心),以采用事务分析方法为宜。步骤:(1)在DFD上确定事务中心、接收部分和发送部分。(2)画出SC框架,把DFD上的三部分分别映射为事务控制模块、接收模块和动作发送模块。(3)分解细化接收分支和发送分支,完成初始SC。32初始的SC主模块输入模块主加工模块输入模块事务控制模块接受模块动作发送模块动作1模块动作2模块动作3模块由变换分析产生由事务分析产生33事务分析的映射方法总控调度C路径B路径A路径A路径B路径C路径接收路径混合型分析在实际应用中,一些大型问题往往是两种混合在一起的混合型问题。对于混合型问题,一般以变换型问题为主,首先找出变换中心,设计出结构图的上层;然后根据数据流图的各部分具体类型分别映射得到它们的结构图。一般在设计阶段对软件结构进行优化。结构化总体设计的工具系统流程图表4-1HIPO图图4-19系统流程图符号:系统流程图的作用制作系统流程图的过程是系统分析员全面了解系统业务处理概况的过程,是分析员作进一步分析的依据。系统流程图是系统分析员、管理人员、业务操作人员相互交流的工具。系统分析员可直接再系统流程图上拟出可以实现计算机处理的部分。可利用系统流程图来分析业务流程的合理性。绘制注意事项物理部件的名称写在图形符号内,用以说明该部件的含义;系统流程图中不能出现控制流;用以表示信息流的箭头符号不需要标注名称。对于复杂的系统一般采用分层的方式进行描绘。39层次方框图层次方框图是用树形结构的一系列多层次的矩形框描述数据的层次结构。树形结构的顶层是一个单独的矩形框,代表完整的数据结构,下面的各层矩形框代表这个数据的子集,最底层的各个框代表组成这个数据的实际数据元素(不能再分隔的元素)。40某计算机公司全部产品的数据结构产品软件服务硬件系统软件处理设备应用软件软件服务硬件维修培训存储器处理机操作系统编译程序软件工具IPO表层次方框图值说明了软件由哪些模块组成及其控制层次结构,并未说明模块间的信息传递及模块内部的处理。因此需要借助IPO表。见p105表4-2。模块的结构设计模块包含的4种属性输入/出逻辑功能-表明模块能做什么事运行程序-如何用程序实现其逻辑功能内部数据-模块自己的数据理想模块的特点每个理想模块只解决一个问题;每个理想模块的功能都应该明确,易理解;理想模块之间的连接关系简单,具有独立性;由理想模块构成的系统,易理解、编程、测试、修改和维护。假设C(x)为描述问题x的复杂度的函数,E(x)为解决问题x的代价函数。根据经验,对于两个问题p1和p2,如果C(p1)>C(p2),那么E(p1)>E(p2)。进一步得出如下推论:
C(p1+p2)>C(p1)+C(p2)E(p1+p2)>E(p1)+E(p2)
因此推断,如果问题P能够分解为n个子问题,那么解决n个子问题的总代价肯定低于直接解决P的代价,因为P太复杂了,简直让人无从下手!44模块化与软件成本成本或工作量模块数量软件总成本接口成本成本/模块M最小成本区域模块独立性模块的独立性模块独立性,是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其它的模块的接口是简单的一般采用两个准则度量模块独立性。即模块间耦合性和模块内聚性具有独立的模块的软件比较容易开发出来独立的模块比较容易测试和维护耦合是模块之间的互相连接的紧密程度的度量。
内聚是模块功能强度(一个模块内部各个元素彼此结合的紧密程度)的度量。模块独立性比较强的模块应是高内聚低耦合的模块。48
非直接耦合(NondirectCoupling)
两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的。非直接耦合的模块独立性最强。49数据耦合(DataCoupling)
一个模块访问另一个模块时,彼此之间是通过简单数据参数
(不是控制参数、公共数据结构或外部变量)来交换输入、输出信息的。标记耦合(StampCoupling)
一组模块通过参数表传递记录信息,就是标记耦合。这个记录是某一数据结构的子结构,而不是简单变量。50控制耦合(ControlCoupling)
如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能,就是控制耦合。控制耦合往往是多余的,通常可用数据耦合来代替。51外部耦合(ExternalCoupling)
一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。公共耦合(CommonCoupling)
若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。52公共耦合的复杂程度随耦合模块的个数增加而显著增加。若只是两模块间有公共数据环境,则公共耦合有两种情况。松散公共耦合和紧密公共耦合。53内容耦合(ContentCoupling)
如果发生下列情形,两个模块之间就发生了内容耦合
(1)一个模块直接访问另一个模块的内部数据;
(2)一个模块不通过正常入口转到另一模块内部;
(3)两个模块有一部分程序代码重迭(只可能出现在汇编语言中);
(4)一个模块有多个入口。54
c
内容耦合是最高程度的耦合,应该坚决避免使用内容耦合(c)多入口模块55功能内聚
(FunctionalCohesion)
一个模块中各个部分都是完成某一具体功能必不可少的组成部分,或者说该模块中所有部分都是为了完成一项具体功能而协同工作,紧密联系,不可分割的。则称该模块为功能内聚模块。56信息内聚
(InformationalCohesion)
这种模块完成多个功能,各个功能都在同一数据结构上操作,每一项功能有一个唯一的入口点。这个模块将根据不同的要求,确定该执行哪一个功能。由于这个模块的所有功能都是基于同一个数据结构(符号表),因此,它是一个信息内聚的模块。5758信息内聚模块可以看成是多个功能内聚模块的组合,并且达到信息的隐蔽。即把某个数据结构、资源或设备隐蔽在一个模块内,不为别的模块所知晓。59通信内聚
(CommunicationCohesion)
如果模块中所有元素都使用同一个输入数据和(或)产生同一个输出数据,则称之为通信内聚模块。通常,通信内聚模块是通过数据流图来定义的。6061过程内聚(ProceduralCohesion)
使用流程图做为工具设计程序时,把流程图中的某一部分划出组成模块,就得到过程内聚模块。例如,把流程图中的循环部分、判定部分、计算部分分成三个模块,这三个模块都是过程内聚模块。62时间内聚(ClassicalCohesion)
时间内聚又称为经典内聚。这种模块大多为多功能模块,但模块的各个功能的执行与时间有关,通常要求所有功能必须在同一时间段内执行。例如初始化模块和终止模块。63逻辑内聚(LogicalCohesion)
这种模块把几种相关的功能组合在一起,每次被调用时,由传送给模块的判定参数来确定该模块应执行哪一种功能。64偶然内聚(CoincidentalCohesion)
当模块内各部分之间没有联系,或者即使有联系,这种联系也很松散,则称这种模块为偶然内聚模块,它是内聚程度最低的模块。数据存储设计常用三种数据存储管理:数据文件:由操作系统提供的存储形式,应用系统将数据按字节顺序存储,并定义如何以及何时检索数据。关系数据库:数据以表的形式存储在预先定义好的称为Schema的类型中。面向对象数据库:将对象和关系一起进行存储。数据存储文件设计过程文件的逻辑设计—总体设计阶段整理必需的数据元素分析数据间的关系确定文件的逻辑设计数据存储的物理设计—详细设计阶段理解数据存储文件的特性确定数据的存储媒体确定文件的组织形式确定文件的记录格式结构化详细设计详细设计目标:确定具体地实现所要求的系统,从而在编码阶段可以把这个描述直接翻译成某种程序设计语言书写的程序。算法设计数据结构设计物理设计其他设计编写详细说明书68算法设计用图形、表格、语言等工具将每个模块处理过程的详细算法描述出来数据结构设计对需求分析、概要设计确定的概念性数据类型进行确切的定义。物理设计对数据库进行物理设计,即确定数据库的物理结构其他设计根据软件系统的类型,进行如下设计:代码设计输入/出设计人机对话设计详细设计文档评审详细设计原则模块逻辑描述清晰易读、正确可靠采用结构化设计方法,改善系统的控制结构,降低程序的复杂度。少使用goto语句;使用单入口但单出口控制结构尽量使用三种控制结构利用信息隐蔽,确保模块的独立性
除非对效率有特殊的要求,程序编写要做到清晰第一,效率第二。不要为了追求效率而丧失了清晰性。事实上,程序效率的提高主要应通过选择高效的算法来实现结构化详细设计工具在过程设计阶段,要决定各个模块的实现算法,并精确地表达这些算法。表达过程规格说明的工具叫做详细设计工具,它可以分为以下三类:
图形工具表格工具语言工具程序流程图程序流程图也称为程序框图,是使用比较广泛的一种描述程序逻辑结构的工具,程序流程图使用五种基本控制结构是:程序流程图标准符号73N-S图N-S图也叫做盒图。五种基本控制结构由五种图形构件表示。74
PAD也设置了五种基本控制结构的图式,并允许递归使用。问题分析图(PAD)75判定表判定表用于表示程序的静态逻辑在判定表中的条件部分给出所有的两分支判断的列表,动作部分给出相应的处理要求将程序流程图中的多分支判断都改成两分支判断76建立判定表的步骤列出与一个具体过程(或模块)有关的所有处理。列出过程执行期间的所有条件(或所有判断)。将特定条件取值组合与特定的处理相匹配,消去不可能发生的条件取值组合。将右部每一纵列规定为一个处理规则,即对于某一条件取值组合将有什么动作。
77判定树(Decision决策树)
条件1
条件2
结果计
7-9,
订票量>20:
15%算
12月
订票量≤20:
5%折扣
1-6,
订票量>20:
30%量
10,11月
订票量≤20:
5%78PDL(ProgramDesignLanguage)PDL是一种用于描述功能模块的算法设计和加工细节的语言。称为设计程序用语言。它是一种伪码。伪码的语法规则分为“外语法”和“内语法”。PDL具有严格的关键字外语法,用于定义控制结构和数据结构,同时它的表示实际操作和条件的内语法可使用自然语言的词汇。79
PDL的特点提供全部结构化控制结构、数据说明和模块特征。能对PDL正文进行结构分割,使之变得易于理解。为了区别关键字,规定关键字一律大写,其它单词一律小写。或者规定关键字加下划线,或者规定它们为黑体字。内语法使用自然语言来描述处理特性。内语法比较灵活,只要写清楚就可以,不必考虑语法错,以利于人们可把主要精力放在描述算法的逻辑上。有数据说明机制,包括简单的(如标量和数组)与复杂的(如链表和层次结构)的数据结构。有子程序定义与调用机制,用以表达各种方式的接口说明。80详细设计工具的选择衡量准则是看其所产生的过程描述是否易于理解、复审和维护,过程描述能否自然地转换为代码,并保证设计与代码完全一致,其选择工具具有属性:模块化间接性易编辑可读性可维护性强制结构化自动产生报告数据表示逻辑验证可编码能力81数据代码设计代码的定义和作用数据代码是为了对数据进行识别、分类、排序等操作所使用的数字、文字或符号。其具有识别、分类和排序三项功能。代码的特性间接性保密性可扩充性持久性82数据代码设计的原则标准化唯一性可扩充性简单性规范性适应性另如果有两特征值则可选用逻辑值代码、数字、字母混用时注意区分相似的符号等用户界面设计-特性可使用性使用的简单性用户界面中的术语标准化和一致性拥有HELP帮助功能快速的系统响应和低的系统成本用户界面应具有容错能力灵活性算法的可隐可显性用户可以根据需要制定和修改界面方式能够按照用户的希望和需要,提供不同详细程度的系统响应信息与其它软件系统应有标准的界面为使用户界面具有一定的灵活性,需要付出代价,而且有可能降低软件系统的运行效率。复杂性和可靠性用户界面的规模和组织的复杂程度就是界面的复杂性。在完成预定功能的前提下,应使用户界面越简单越好。用户界面的可靠性是指无故障使用的间隔时间。用户界面应能保证用户正确、可靠地使用系统,保证有关程序和数据的安全性。85用户界面设计的任务分析这一部分工作应与软件系统的需求分析同步进行。它主要包括用户特性分析-外行、初学、熟练、专家用户工作分析记录有关系统的概念和术语确定界面类型等4个步骤。86用户界面设计原则用户控制界面一致性界面容错性界面美观性界面可适应性用户交互方式直接操作菜单选择命令表格填写自然语言信息显示及用户支持信息表示文本方式图形方式用户支持错误信息帮助系统89Jackson系统开发方法早期的Jackson方法用于小系统的设计,称之为Jackson结构程序设计方法,简称JSP方法。JSP方法的的三步曲是信息→数据结构→程序结构但是,当把JSP方法用于大系统设计时,就会出现大量复杂的难以对付的结构冲突。因此,促使M.J.Jackson提出了JSD方法,即Jackson系统开发方法。JSD方法对输入、输出数据结构明确的中小型系统特别有效,如商业应用中的文件表格处理。该方法也可与其它方法结合,用于模块的详细设计。90Jackson图
Jackson提出的数据结构表示有三种基本的构造类型
顺序结构选择结构重复结构
使用JSD方法的步骤如下:①实体动作分析:从问题的简单描述中,选出软件系统要产生和运用的实体(人、物或组织),以及现实世界作用于实体上的动作(事件)。实体从名词中选出,动作从动词中选出。当然,只有与问题求解直接有关的实体和动作才能被选出做进一步的分析。②实体结构分析:把作用于实体的动作或由实体执行的动作,按时间发生的先后次序排序,并用一个层状的Jackson结构图表示。
③定义初始模型:把实体和动作表示成一个过程性的模型,定义模型与现实世界的联系。模型系统的规格说明可用系统规格说明图SSD来表示。
④功能描述:详细说明与已定义的动作相对应的功能。
⑤决定系统时间特性:对进程调度特性进行评价和说明。
⑥实现:设计组成系统的硬件和软件。
JSD方法的前三步属于需求分析阶段,后三步属于软件设计阶段。92Warnier方法Warnier方法又称为逻辑地构造程序的方法,简称LCP(logicalconstructionofprograms)方法。Warnier方法的原理和Jackson方法类似,也是从数据结构出发设计程序,但是这种方法的逻辑更严格。J.D.Warnier提出的软件开发方法与Jackson方法类似。差别有三点:一是它们使用的图形工具不同,分别使用Warnier图和Jackson图;另一个差别是使用的伪码不同;最主要的差别是在构造程序框架时,Wa
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 江苏沭阳高级中学2025-2026学年高一下学期3月阶段检测化学试题(含解析)
- 江西赣州市会昌县2026年中考第二次模拟考试道德与法治(含解析)
- 2025年报关员《海关法规》真题解析选择题满分技巧配套
- 2021冀北电网研究生面试综合能力题题库及高分参考答案
- 2020滕州初中语文面试试讲易错点配套题库及答案
- 2023甘肃法宣在线刷题小程序配套试题及正确答案
- 2026年开发主管面试题及答案 3天突击专用 零基础也能面过管理岗
- 2024年恶意代码分析方向面试题及答案 技术大牛岗专属备考资料
- 2021徐州首创水务劳务派遣岗面试题库及参考答案
- 第2课时平面与平面垂直课件2025-2026学年高二下学期数学湘教版选择性必修第二册
- (2025版)血液净化模式选择专家共识解读
- 2026年北京市丰台区高三一模英语试卷(含答案)
- 2025上市公司股权激励100问-
- 急性心肌梗死并发心脏破裂的临床诊疗与管理
- 2026年国家队反兴奋剂准入教育考试试题及答案
- 第九章第一节压强课件2025-2026学年人教版物理八年级下学期
- 100以内看图写数专项练习题(每日一练共6份)
- 移动模架施工安全监理实施细则
- 2025-2026学年卖油翁教学设计初一语文
- 中兴新云2026年测评-B套题
- 2026年商丘职业技术学院单招职业技能测试题库带答案详解
评论
0/150
提交评论