欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    软件设计方法.ppt

    • 资源ID:2912537       资源大小:798.50KB        全文页数:186页
    • 资源格式: PPT        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    软件设计方法.ppt

    软件设计的目标和任务软件设计原理模块独立性软件体系结构描绘软件结构的图形工具面向数据流的结构化设计方法详细设计,软件设计方法,软件设计的目标和任务,根据用信息域表示的软件需求,以及功能和性能需求,进行系统设计结构设计 过程设计数据设计,系统设计确定系统的具体实现方案。数据设计侧重于数据结构的定义。结构设计定义软件系统各主要成份之间的关系。过程设计是把结构成份转换成软件的过程性描述。在编码步骤,根据这种过程性描述,生成源程序代码,然后通过测试最终得到完整有效的软件。,开发阶段的信息流,程序模块,测试,编码,系统设计,信息域需求,功能与性能需求,数据设计,过程设计,结构设计,组装好的有效的软件,软件设计是后续开发步骤及软件维护工作的基础。如果没有设计,只能建立一个不稳定的系统结构,软件设计任务,从工程管理的角度来看,软件设计分两步完成。总体设计,将软件需求转化为数据结构和软件的系统结构。详细设计,即过程设计。通过对结构表示进行细化,得到软件的详细的数据结构和算法。,软件设计过程,1.制定规范在进入软件开发阶段之初,首先应为软件开发组制定在设计时应该共同遵守的标准,以便协调组内各成员的工作。包括:,阅读和理解软件需求说明书,确认用户要求能否实现,明确实现的条件,从而确定设计的目标,以及它们的优先顺序 根据目标确定最合适的设计方法 规定设计文档的编制标准 规定编码的信息形式,与硬件,操作系统的接口规约,命名规则,2.软件系统结构的总体设计,基于功能层次结构建立系统。采用某种设计方法,将系统按功能划分成模块的层次结构 确定每个模块的功能 建立与已确定的软件需求的对应关系 确定模块间的调用关系 确定模块间的接口 评估模块划分的质量,3.处理方式设计,确定为实现系统的功能需求所必需的算法,评估算法的性能确定为满足系统的性能需求所必需的算法和模块间的控制方式 周转时间 响应时间 吞吐量 精度确定外部信号的接收发送形式,4.数据结构设计,确定软件涉及的文件系统的结构以及数据库的模式、子模式,进行数据完整性和安全性的设计确定输入,输出文件的详细的数据结构结合算法设计,确定算法所必需的逻辑数据结构及其操作确定对逻辑数据结构所必需的那些操作的程序模块(软件包),限制和确定各个数据设计决策的影响范围若需要与操作系统或调度程序接口所必须的控制表等数据时,确定其详细的数据结构和使用规则数据的保护性设计 防卫性设计:在软件设计中就插入自动检错,报错和纠错的功能,一致性设计:保证软件运行过程中所使用的数据的类型和取值范围不变 在并发处理过程中使用封锁和解除封锁机制保持数据不被破坏冗余性设计:针对同一问题,由两个开发者采用不同的程序设计风格不同的算法设计软件,当两者运行结果之差不在允许范围内时,利用检错系统予以纠正,或使用表决技术决定一个正确结果。,5.可靠性设计,可靠性设计也叫做质量设计在运行过程中,为了适应环境的变化和用户新的要求,需经常对软件进行改造和修正。在软件开发的一开始就要确定软件可靠性和其它质量指标,考虑相应措施,以使得软件易于修改和易于维护。,6.编写概要设计阶段的文档,概要设计阶段完成时应编写以下文档:概要设计说明书 数据库设计说明书 用户手册 制定初步的测试计划,7.概要设计评审,可追溯性:确认该设计是否复盖了所有已确定的软件需求,软件每一成份是否可追溯到某一项需求接口:确认该软件的内部接口与外部接口是否已经明确定义。模块是否满足高内聚和低耦合的要求。模块作用范围是否在其控制范围之内风险:确认该设计在现有技术条件下和预算范围内是否能按时实现,实用性:确认该设计对于需求的解决方案是否实用技术清晰度:确认该设计是否以一种易于翻译成代码的形式表达可维护性:确认该设计是否考虑了方便未来的维护质量:确认该设计是否表现出良好的质量特征,各种选择方案:看是否考虑过其它方案,比较各种选择方案的标准是什么限制:评估对该软件的限制是否现实,是否与需求一致其它具体问题:对于文档、可测试性、设计过程.等进行评估,5.2 软件设计原理,自顶向下,逐步细化 软件结构 程序结构 结构图 模块化 抽象化 信息隐蔽,自顶向下,逐步细化,将软件的体系结构按自顶向下方式,对各个层次的过程细节和数据细节逐层细化,直到用程序设计语言的语句能够实现为止,从而最后确立整个的体系结构。,软件结构,软件结构包括两部分。程序的模块结构和数据的结构软件的体系结构通过一个划分过程来完成。该划分过程从需求分析确立的目标系统的模型出发,对整个问题进行分割,使其每个部分用一个或几个软件成份加以解决,整个问题就解决了,程序结构,程序结构表明了程序各个部件(模块)的组织情况,是软件的过程表示。,结构图,结构图反映程序中模块之间的层次调用关系和联系:它以特定的符号表示模块、模块间的调用关系和模块间信息的传递,模块:模块用矩形框表示,并用模块的名字标记它。,模块的调用关系和接口:模块之间用单向箭头联结,箭头从调用模块指向被调用模块。,模块间的信息传递:当一个模块调用另一个模块时,调用模块把数据或控制信息传送给被调用模块,以使被调用模块能够运行。而被调用模块在执行过程中又把它产生的数据或控制信息回送给调用模块,在模块A的箭头尾部标以一个菱形符号,表示模块A有条件地调用另一个模块B。当一个在调用箭头尾部标以一个弧形符号,表示模块A反复调用模块C和模块D。,程序的系统结构图,模块化,软件系统的模块化是指整个软件被划分成若干单独命名和可编址的部分,称之为模块。这些模块可以被组装起来以满足整个问题的需求。把问题子问题的分解与软件开发中的系统子系统或系统模块对应起来,就能够把一个大而复杂的软件系统划分成易于理解的比较单纯的模块结构。,抽象化,软件系统进行模块设计时,可有不同的抽象层次。在最高的抽象层次上,可以使用问题所处环境的语言概括地描述问题的解法。在较低的抽象层次上,则采用过程化的方法。,(1)过程的抽象在软件工程中,从系统定义到实现,每进展一步都可以看做是对软件解决方法的抽象化过程的一次细化。在软件需求分析阶段,用“问题所处环境的为大家所熟悉的术语”来描述软件的解决方法。在从概要设计到详细设计的过程中,抽象化的层次逐次降低。当产生源程序时到达最低抽象层次。,例:开发一个CAD软件的三层抽象,抽象层次.用问题所处环境的术语来描述这个软件:该软件包括一个计算机绘图界面,向绘图员显示图形,以及一个数字化仪界面,用以代替绘图板和丁字尺。所有直线、折线、矩形、圆及曲线的描画、所有的几何计算、所有的剖面图和辅助视图都可以用这个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(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 DEFIND 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;,信息隐蔽,信息隐蔽是指,每个模块的实现细节对于其它模块来说是隐蔽的。也就是说,模块中所包含的信息(包括数据和过程)不允许其它不需要这些信息的模块使用。,5.2.5模块的独立性,模块,又称“组件”、“构件”。一般采用两个准则度量模块独立性。即模块间耦合和模块内聚若一个模块只具有单一的功能且与其它模块没有太多的联系,则称此模块具有模块独立性模块具有三个基本属性:功能:即指该模块实现什么功能,做什么事情。逻辑:即描述模块内部怎么做。状态:即该模块使用时的环境和条件。,耦合:对一个软件结构内不同模块之间互连程度的度量 内聚:标志一个模块内各个元素彼此结合的紧密程度 模块独立性强的模块应是高内聚低耦合的模块,应该设计这种模块。,模块间的耦合,非直接耦合(Nondirect Coupling)两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的。非直接耦合的模块独立性最强。,数据耦合(Data Coupling)一个模块访问另一个模块时,彼此之间是通过参数 交换信息,而且交换的仅仅是数据。标记耦合(Stamp Coupling)一组模块通过参数表传递记录信息,就是标记耦合。这个记录是某一数据结构的子结构,而不是简单变量。,控制耦合(Control Coupling)如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能,就是控制耦合。,外部耦合(External Coupling)一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。公共耦合(Common Coupling)若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。,公共耦合的复杂程度随耦合模块的个数增加而显著增加。若只是两模块间有公共数据环境,则公共耦合有两种情况。松散公共耦合和紧密公共耦合。,内容耦合(Content Coupling)如果发生下列情形,两个模块之间就发生了内容耦合(1)一个模块直接访问另一个模块的内部数据;(2)一个模块不通过正常入口转到另一模块内部;(3)两个模块有一部分程序代码重迭(只可能出现在汇编语言中);(4)一个模块有多个入口。,c,模块内聚,功能内聚(Functional Cohesion)一个模块中各个部分都是完成某一具体功能必不可少的组成部分,或者说该模块中所有部分都是为了完成一项具体功能而协同工作,紧密联系,不可分割的。则称该模块为功能内聚模块。,信息内聚(Informational Cohesion)这种模块完成多个功能,各个功能都在同一数据结构上操作,每一项功能有一个唯一的入口点。这个模块将根据不同的要求,确定该执行哪一个功能。由于这个模块的所有功能都是基于同一个数据结构(符号表),因此,它是一个信息内聚的模块。,信息内聚模块可以看成是多个功能内聚模块的组合,并且达到信息的隐蔽。即把某个数据结构、资源或设备隐蔽在一个模块内,不为别的模块所知晓。,通信内聚(Communication Cohesion)如果一个模块内各功能部分都使用了相同的输入数据,或产生了相同的输出数据,则称之为通信内聚模块。通常,通信内聚模块是通过数据流图来定义的。,过程内聚(Procedural Cohesion)使用流程图做为工具设计程序时,把流程图中的某一部分划出组成模块,就得到过程内聚模块。例如,把流程图中的循环部分、判定部分、计算部分分成三个模块,这三个模块都是过程内聚模块。,时间内聚(Classical Cohesion)时间内聚又称为经典内聚。这种模块大多为多功能模块,但模块的各个功能的执行与时间有关,通常要求所有功能必须在同一时间段内执行。例如初始化模块和终止模块。,逻辑内聚(Logical Cohesion)这种模块把几种 相关的功能组合 在一起,每次被 调用时,由传送 给模块的判定参 数来确定该模块 应执行哪一种功 能。,巧合内聚(Coincidental Cohesion)巧合内聚(偶然内聚)。当模块内各部分之间没有联系,或者即使有联系,这种联 系也很松散,则称这种模 块为巧合内 聚模块,它 是内聚程度 最低的模块。,软件体系结构,软件体系结构的三要素是程序构件(模块)的层次结构、构件之间交互的方式,以及数据的结构。,软件系统常出现下列体系结构,数据流系统:这种结构中的每一个组成成份都有一套输入和输出数据,都依输入数据处理输出结果的方式工作。进行数据变换的构件叫做过滤器,把数据从一个过滤器的输出导入到另一个过滤器的输入,就叫做管道。各个过滤器相互独立,每一个过滤器对它的上游或下游的过滤器的情况是不知道的。这种结构的优点是:数据流程设计明确,直接支持复用,系统容易维护和升级,可以进行某些性能分析(如流量、死锁等),容易支持并行计算。,调用返回系统:在层次结构中,每一层都只与上下相邻的两层通信。每一层在利用下层基础服务的条件下,为上层提供服务。最典型的例子就是OSI7层网络协议。这种结构的优点是:提供逐步抽象的编程支持,支持复用及系统升级。缺点是:不是所有的系统都适合于建成层次结构,不能提供最佳性能。,独立构件系统:这种结构的特点是事件的发出者不必知道对该事件的具体处理过程。它的优点是:提供了强大的可复用性支持。如事件驱动系统。数据为中心的系统:数据库,5.4 描绘软件结构的图形工具,层次图:描述软件的层次结构和模块调用关系。层次图和层次方框图的区别HIPO图,5.5面向数据流的结构化设计方法,面向数据流的结构化设计方法(SD)面向数据结构的设计方法面向对象的设计,简介三种软件设计方法,结构化设计方法是基于模块化、自顶向下细化、结构化程序设计等程序设计技术基础上发展起来的。利用映射把数据流图变换成软件结构。而前面学过的系统流程图,重点在描述物理系统的构成,状态转换图是表示状态转换的,ER图是描述数据对象关系的。该方法实施的要点是:建立数据流的类型:变换流?事务流?指明流的边界。即输入、处理、输出的界限。将数据流图映射到程序结构。,首先研究、分析和审查数据流图。从软件的需求规格说明中弄清数据流加工的过程,对于发现的问题及时解决。然后根据数据流图决定问题的类型。,SD粗略设计步骤(6步),由数据流图推导出系统的初始结构图。利用一些启发式原则来改进系统的初始结构图,直到得到符合要求的结构图为止。修改和补充数据词典。制定测试计划。,预备知识:在系统结构图中的模块,传入模块 从下属模块取得数据,经过某些处理,再将其传送给上级模块。它传送的数据流叫做逻辑输入数据流。传出模块 从上级模块获得数据,进行某些处理,再将其传送给下属模块。它传送的数据流叫做逻辑输出数据流。,变换模块 它从上级模块取得数据,进行特定的处理,转换成其它形式,再传送回上级模块。它加工的数据流叫做变换数据流。协调模块 对所有下属模块进行协调和管理的模块。,变换型系统结构图(变换流),变换型数据处理问题的工作过程大致分为三步。相应于此,变换型系统结构图由输入、中心变换和输出等三部分组成。,事务型系统结构图(事务流),它接受一项事务,根据事务处理的特点和性质,选择分派一个适当的处理单元,然后给出结果。在事务型系统结构图中,事务中心模块按所接受的事务的类型,选择某一事务处理模块执行。各事务处理模块并列。每个事务处理模块可能要调用若干个操作模块,而操作模块又可能调用若干个细节模块。,变换分析,变换分析方法由以下4步组成:重画数据流图;区分有效(逻辑)输入、有效(逻辑)输出和中心变换部分;进行一级分解,设计上层模块;进行二级分解,设计输入、输出和中心变换部分的中、下层模块。,事务分析,在很多软件应用中,存在某种作业数据流,它可以引发一个或多个处理,这些处理能够完成该作业要求的功能。这种数据流就叫做事务。与变换分析一样,事务分析也是从分析数据流图开始,自顶向下,逐步分解,建立系统到结构图。,事务分析过程,识别事务源利用数据流图和数据词典,从问题定义和需求分析的结果中,找出各种需要处理的事务。通常,事务来自物理输入装置。有时,设计人员还必须区别系统的输入、中心加工和输出中产生的事务。,规定适当的事务型结构在确定了该数据流图具有事务型特征之后,根据模块划分理论,建立适当的事务型结构。识别各种事务和它们定义的操作。从问题定义和需求分析中找出的事务及其操作所必需的全部信息,对于系统内部产生的事务,必须仔细地定义它们的操作。,注意利用公用模块在事务分析的过程中,如果不同事务的一些中间模块可由具有类似的语法和语义的若干个低层模块组成,则可以把这些低层模块构造成公用模块。对每一事务,或对联系密切的一组事务,建立一个事务处理模块;如果发现在系统中有类似的事务,可以把它们组成一个事务处理模块。,对事务处理模块规定它们全部的下层操作模块 对操作模块规定它们的全部细节模块变换分析是软件系统结构设计的主要方法。一般,一个大型的软件系统是变换型结构和事务型结构的混合结构。所以,我们通常利用以变换分析为主,事务分析为辅的方式进行软件结构设计。,5.6 小结 软件模块结构的改进,模块功能的完善化 消除重复功能 模块的作用范围应在控制范围之内 尽可能减少高扇出结构 避免或减少使用病态联接 模块的大小要适中 设计功能可预测的模块 软件包应满足设计约束和可移植性 使用黑箱技术停止模块功能分解的原则,模块功能的完善化一个完整的模块应当有以下几部分:执行规定的功能的部分;出错处理的部分。当模块不能完成规定的功能时,必须回送出错标志,出现例外情况的原因。如果需要返回数据给它的调用者,在完成数据加工或结束时,应当给它的调用者返回一个状态码。,消除重复功能,改善软件结构 完全相似:在结构上完全相似,可能只是在数据类型上不一致。此时可以采取完全合并的方法。局部相似:找出其相同部分,分离出去,重新定义成一个独立的下一层模块。还可以与它的上级模块合并。,模块的作用范围应在控制范围之内模块的控制范围包括它本身及其所有的从属模块。模块的作用范围是指模块内一个判定的作用范围,凡是受这个判定影响的所有模块都属于这个判定的作用范围。如果一个判定的作用范围包含在这个判定所在模块的控制范围之内,则这种结构是简单的,否则,它的结构是不简单的。,尽可能减少高扇出结构,随着深度增大扇入。如果一个模块的扇出数过大,就意味着该模块过分复杂,需要协调和控制过多的下属模块。应当适当增加中间层次的控制模块。,避免或减少使用病态联接应限制使用如下三种病态联接:直接病态联接 即模块A直接从模块B内部取出某些数据,或者把某些数据直接送到模块B内部。,公共数据域病态联接 模块A和模块B通过公共数据域,直接传送或接受数据,而不是通过它们的上级模块。这种方式将使得模块间的耦合程度剧增。它不仅影响模块和模块,而且影响与公共数据域有关联的所有模块。,通信模块联接 即模块A和模块B通过通信模块TABLEIT传送数据。从表面看,这不是病态联接,因为模块和模块B都未涉及通信模块TABLEIT 的内部。然而,它们之间的通信(即数据传送)没有通过它们的上级模块。从这个意义上讲,这种联接是病态的。,模块的大小要适中模块的大小,可以用模块中所含语句的数量的多少来衡量。把模块的大小限制在一定的范围之内。通常规定其语句行数在50100左右,保持在一页纸之内,最多不超过500行。,设计功能可预测的模块,但要避免过分受限制的模块 一个功能可预测的模块,不论内部处理细节如何,但对相同的输入数据,总能产生同样的结果。但是,如果模块内部蕴藏有一些特殊的鲜为人知的功能时,这个模块就可能是不可预测的。对于这种模块,如果调用者不小心使用,其结果将不可预测。,如果一个模块的局部数据结构的大小、控制流的选择或者与外界(人、硬软件)的接口模式被限制死了,则很难适应用户新的要求或环境的变更。为了能够适应将来的变更,软件模块中局部数据结构的大小应当是可控制的,控制流的选择对于调用者来说,应当是可预测的。而与外界的接口应当是灵活的。,软件包应满足设计约束和可移植性为了使得软件包可以在某些特定的环境下能够安装和运行,对软件包提出了一些设计约束和可移植的要求。例如,设计约束有时要求一个程序段在存储器中覆盖自身。当这种情况出现时,设计出来的软件程序结构不得不根据重复程度、访问频率、调用间隔等等特性,重新加以组织。,设计的后处理,为每一个模块写一份处理说明为每一个模块提供一份接口说明确定全局数据结构和局部数据结构指出所有的设计约束和限制进行概要设计的评审进行设计的优化(如果需要和可能的话),6 详细设计,在详细设计阶段,要决定各个模块的实现算法,并精确地表达这些算法。详细设计工具可以分为以下三类:图形工具 表格工具 语言工具,6.3 过程设计工具,程序流程图程序流程图也称为程序框图,程序流程图使用五种基本控制结构是:,程序流程图的标准符号,示例,循环的标准符号 注解的使用,多出口判断,N-S图,N-S图也叫做盒图。五种基本控制结构由五种图形构件表示。,示例,N-S图的嵌套定义形式,盒图特点,功能域明确,即一个特定控制结构的作用域明确。盒图没有箭头,因此不允许随意转移控制。容易确定局部和全局数据的作用域。容易表现嵌套关系,也可以表示模块的层次结构。,PAD也设置了五种基本控制结构的图式,并允许递归使用。,问题分析图(PAD),PAD描述的示例,对应于增量型循环结构for i:=n1 to n2 step n3 do在PAD中有相应的循环控制结构,PAD的扩充控制结构,PAD的特点,使用表示结构化控制结构的PAD符号所设计出来的程序必然是结构化程序它描述的程序结构清楚,图中最左面的竖线是程序的主线,即第一层结构。随着程序层次的增加,PAD图逐渐向右延伸,每增加一个层次,图形向右扩展一条竖线。PAD图中竖线的总条数就是程序的层次数。它是树型结构的图形,程序从图中最左竖线上端的节点开始执行,自上向下,从左到右既可表示逻辑结构,也可描述数据结构支持逐步求精的方法。,判定表,判定表用于表示程序的静态逻辑在判定表中的条件部分给出所有的两分支判断的列表,动作部分给出相应的处理要求将程序流程图中的多分支判断都改成两分支判断,无多分支判断结构,建立判定表的步骤,列出与一个具体过程(或模块)有关的所有处理。列出过程执行期间的所有条件(或所有判断)。将特定条件取值组合与特定的处理相匹配,消去不可能发生的条件取值组合。将右部每一纵列规定为一个处理规则,即对于某一条件取值组合将有什么动作。,判断树,当判断表中的数据元素增加时,判断表的简洁程度下降判断树比判断表更直观,但不如判断树简洁分支持续对最终画出的判断树有影响。也是二分支结构,PDL(Program Design Language),PDL是一种用于描述功能模块的算法设计和加工细节的语言。称为设计程序用语言。它是一种伪码。伪码的语法规则分为“外语法”和“内语法”。PDL具有严格的关键字外语法,用于定义控制结构和数据结构,同时它的表示实际操作和条件的内语法可使用自然语言的词汇。,示例:拼词检查程序,PROCEDURE spellcheck IS BEGIN split document into single words lood up words in dictionary display words which are not in dictionary create a new dictionary END spellcheck,PDL的特点,提供全部结构化控制结构、数据说明和模块特征。能对PDL正文进行结构分割,使之变得易于理解。为了区别关键字,规定关键字一律大写,其它单词一律小写。或者规定关键字加下划线,或者规定它们为黑体字。,内语法使用自然语言来描述处理特性。内语法比较灵活,只要写清楚就可以,不必考虑语法错,以利于人们可把主要精力放在描述算法的逻辑上。有数据说明机制,包括简单的(如标量和数组)与复杂的(如链表和层次结构)的数据结构。有子程序定义与调用机制,用以表达各种方式的接口说明。,使用PDL语言,逐步求精:,PROCEDURE spellcheckBEGIN-*split document into single wordsLOOP get next word add word to word list in sortorder EXIT WHEN all words processedEND LOOP-*look up words in dictionaryLOOP 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 list 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,HIPO图,HIPO最初只用做文档编写的格式要求,随后发展成比较有名的软件设计手段。HIPO图采用功能框图和PDL来描述程序逻辑,它由两部分组成:可视目录表和IPO图。可视目录表给出程序的层次关系,IPO图则为程序各部分提供具体的工作细节。,可视目录表:由体系框图、图例、描述说明三部分组成。体系框图。又称层次图(H图),是可视目录表的主体,用它表明各个功能的隶属关系。它是自顶向下逐层分解得到的,是一个树形结构。它的顶层是整个系统的名称和系统的概括功能说明;第二层把系统的功能展开,分成了几个框;第二层功能进一步分解,就得到了第三层、第四层,直到最后一层。每个框内都应有一个名字,用以标识它的功能。还应有一个编号,以记录它所在的层次及在该层次的位置。,图例。每一套HIPO图都应当有一个图例,即图形符号说明。附上图例,不管人们在什么时侯阅读它都能对其符号的意义一目了然。描述说明。它是对层次图中每一框的补充说明,在必须说明时才用,所以它是可选的。描述说明可以使用自然语言。,盘存销售系统工作流程图,IPO图:IPO图为层次图中每一功能框详细地指明输入、处理及输出。通常,IPO图有固定的格式,图中处理操作部分总是列在中间,输入和输出部分分别在其左边和右边。由于某些细节很难在一张IPO图中表达清楚,常常把IPO图又分为两部分,简单概括的称为概要IPO图,细致具体一些的称为详细IPO图。概要IPO图用于表达对一个系统,或对其中某一个子系统功能的概略表达,指明在完成某一功能框规定的功能时需要哪些输入,哪些操作和哪些输出。,对应H图上1.1.0框的概要IPO图,在概要IPO图中,没有指明输入处理输出三者之间的关系,用它来进行下一步的设计是不可能的。故需要使用详细IPO 图以指明输入处理输出三者之间的关系,其图形与概要IPO图一样,但输入、输出最好用具体的介质和设备类型的图形表示。下图是销售盘存系统中对应于1.1.2框的一张详细IPO图。,利用HIPO进行迭代式细化设计 在软件设计时,解决设计问题通常需要经历一个认识逐步发展的过程,并且对一些问题还要经过反复的考虑才可能达到比较满意的设计效果。我们称此为迭代式细化设计。HIPO能很好地适应这一要求。下图是利用HIPO进行迭代式细化设计的示意图。从图中可看到,把可视目录表和IPO图结合起来,反复交替地使用它们,可使得设计工作逐步深化,最终取得完满的设计结果。其实这正是自顶向下,逐步求精的结构化程序设计思想。,利用HIPO进行迭代式细化设计,HIPO有自己的特点。首先,这一图形表达方法容易看懂。其次,HIPO的适用范围很广。事实上,画可视目录表就是与概要设计密切相关的工作。如果利用它仅仅表达软件要达到的功能,则是需求分析中描述需求的很好的工具。因为HIPO是在开发过程中的表达工具,所以它又是开发文档的编制工具。开发完成后,HIPO图就是很好的文档,而不必在设计完成以后,专门补写文档。,6.4 面向数据结构的设计方法 Jackson方法,Jackson方法是一种典型的面向数据结构的分析与设计方法。早期的Jackson方法用于小系统的设计,称之为Jackson结构程序设计方法,简称JSP方法。它是按输入、输出和内部信息的数据结构进行软件设计的,即把数据结构的描述映射成程序结构描述。,若数据结构有重复性,则对应程序一定有循环控制结构;若数据结构具有选择性,则对应程序一定需要有判定控制结构,以此揭示数据结构和程序结构之间的内在关系,设计出反映数据结构的程序结构。,JSP方法的的三步曲是信息 数据结构 程序结构,这三步曲减少了设计决策上的盲目性。但是,当把JSP方法用于大系统设计时,就会出现大量复杂的难以对付的结构冲突。因此,促使M.J.Jackson提出了JSD方法,即Jackson系统开发方法。,(1)JSD方法的步骤,Jackson系统开发方法把分析的重点放在构造与系统相关联的现实世界,并建立现实世界的信息域的模型上。它实际上是支持软件分析与设计的一组连续的技术步骤。而且,JSD方法的最终目标是生成软件的过程性描述,没有特别考虑程序模块化结构,模块只是作为过程的副产品而出现,没有特别强调模块独立性。使用JSD方法的步骤如下:,实体动作分析:从问题的简单描述中,选出软件系统要产生和运用的实体(人、物或组织),以及现实世界作用于实体上的动作(事件)。实体从名词中选出,动作从动词中选出。当然,只有与问题求解直接有关的实体和动作才能被选出做进一步的分析。实体结构分析:把作用于实体的动作或由实体执行的动作,按时间发生的先后次序排序,并用一个层状的Jackson结构图表示。定义初始模型:把实体和动作表示成一个过程性的模型,定义模型与现实世界的联系。模型系统的规格说明可用系统规格说明图来表示。,功能描述:详细说明与已定义的动作相对应的功能。决定系统时间特性:对进程调度特性进行评价和说明。实现:设计组成系统的硬件和软件。JSD方法的前三步属于需求分析阶段,后三步属于软件设计阶段。,(2)Jackson程序设计方法JSP,JSP的本质就是:“问题应当被分解为可以用三种结构形式表示的构件的层次结构。”Jackson所说的“结构形式”就是指顺序、选择和重复,实际上,它们就是过程性构造,并成为结构化程序设计方法基础。,数据结构表示法Jackson提出的数据结构表示有三种基本的构造类型,数据结构组合表示,Jackson图实质是对层次方框图的一种细化。它和描绘软件结构的层次图有区别。Jackson图中的方框不代表模块,Jackson图表现的是组成关系,即一个方框中包含的操作仅仅由它下层框中的那些操作组成,不表示调用方法。这也是Jackson图和程序流程图,盒图,PAD图的区别。,下面用一个信用卡记账的例子具体说明。信用卡记账系统的输入数据结构是两个实际的账册,它们对应的两个输入文件如图所示。,对应输入文件的输入数据结构在左侧。,对应输入文件的输入数据结构在左侧。,两个实际输入账册都按顾客号码进行登录,所以输入文件也是以顾客号码组织记录的。,信用卡记账系统的输出记账报告,根据输入和输出数据结构的对应关系建立的输出文件,从层次性的输入和(或)输出数据结构可以直接推导出程序或进程的过程性表示。例如从上图所示的输出文件的Jackson数据结构图所导出的程序结构如下图所示。,最后,利用Jackson给出的三种图解来表示程序或进程的执行逻辑。这种图解类似于程序设计语言,实际上它是一种伪码表示。三种基本控制结构的图解如下所示。,在给出程序的过程性描述时,还需要添加一些必要的可执行操作。对于上例中“处理顾客数据”部分,给出过程性描述如下:,PROCESS_CUST_DATA seq open PAY_FILE;open CUST_M_FILE;分别打开支付文件和顾客主文件 PROCESS_CNO_GROUP iter until eof:PAY_FILE;处理顾客号码组 read PAY_FILE;读支付文件一个记录 PROCESS_CNO;读顾客主文件一个记录,找老结余 PROCESS_PAY_RECORD iter until end:CNO_GROUP;处理顾客号码组中每个支付记录 write report line;写出报告行 compute total payments;计算总支付额 read PAY_FILE;读支付文件下一个记录 PROCESS_PAY_RECORD end;一位顾客数据处理完,(3)结构冲突,Jackson把结构冲突定义为三种类型。顺序冲突 顺序冲突是指在输入数据结构和输出数据结构中,输入数据与输出数据的顺序冲突。,例如,仓库存放多种零件P1,P2,每个零件的每次变动(收或发)都有一张卡片做记录。库存管理系统的输入数据结构是一叠卡片组成的文件。文件包括许多零件组,每个零件组又包括许多卡片(变动记录),每张卡片又分别可以是“收”或“发”,图4.22(b)。输出数据结构是月报表,见图4.22(a)。表中列出每种零件的净变化,一种零件的净变化占一行,见图4.22(c)。月报表来自输入文件,所以它们之间有很好的对应性。,月报表每一行的内容来自输入文件的每一个零件组,行数与零件组个数相同,排列顺序一致(均按零件号递增次序排列)。这样输入数据与输出数据在内容、数量、顺序上的对应性找到了,也就等于理解了用户所需加工要求,因而很容易导出对应的程序结构。如果卡片不是按零件组分组,而是按“发”或“收”的日期排列,这样输入数据结构与输出数据结构就找不到上述的对应关系。这种情形就是“顺序冲突”。,边界冲突 在输入与输出数据结构中,虽然输入数据与输出数据的顺序相同,但分解不一样。,多重穿插冲突在输入与输出数据结构中,输入数据与输出数据的顺序相同,而且处于同一程序段中,就象绳索穿绕一样。这些数据并行运行,同时在输入文件中重叠在一起。,为了解决上述的结构冲突,Jackson提出了定义中间数据结构来解决冲突的方法。它可归纳成以下4点:利用数据结构图来定义输入数据结构的特性;将输入数据结构的元素分解,构造成中间数据结构;描述输出数据结构的特性;根据中间数据结构,构造输出数据结构.,这就需要两套程序结构,一个是把输入数据结构转换成中间数据结构;另一个是把中间数据结构转换成输出数据结构。Myers提出了一种叫做“程序变换”或“多道穿插”的方法,用以解决冲突。即设计两个子程序,它们既能单独执行,又能并发执行。这样,中间数据结构也可以不要,而使用一个单记录缓冲区来代替它。,例如,用卡片按行输入一个矩阵文件,要求按列打印该矩阵,图4.23(a)表明这个例子的输入、输出数据结构。从图中可见,卡片文件和打印文件之间存在着对应关系,但行和列的内容不符,行选择和列选择的次序不同。因此,没有办法从这个结构图上构造出相应的程序结构。这就是所谓的结构冲突。,设计规格说明与设计评审,软件设计规格说明的大纲如下表所示。每一个编号的段落描述了设计模型的不同侧面。在设计人员细化他们的软件设计时,就可以逐步完成各章节内容的编写。,.体系结构设计 A.数据流与控制流复审 B.导

    注意事项

    本文(软件设计方法.ppt)为本站会员(laozhun)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开