第3讲基本设计与设计_第1页
第3讲基本设计与设计_第2页
第3讲基本设计与设计_第3页
第3讲基本设计与设计_第4页
第3讲基本设计与设计_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

20232023530日作成--10-大连海事大学计算机学院软件工程争论室蒋 波软件设计阶段要解决的问题是“Howtodo”的问题。就是说,需将整个系统划分出系统的物理组成元素(程序、文件、DB、人工过程、文档)。模块化划分、确定每一个模块的功能、规定每一个模块的接口及调用关系、确定全局数据构造等;具体设计的主要工作是为每一个模块设计其实现细节并确定各个局部数据构造。且制定测试打算。定软件构造。一根本设计(总体设计)依据需求分析的根底设想可供选择的方案;逐个设想可供选择的方案,并不评价各种方案的优劣。选取合理的方案;本钱和效益分析、实现系统的进度打算等。FP推举最正确方案;的执行打算。功能分解;构造设计:确定组成各功能效劳的模块以及模块与模块之间的关系。过程设计:确定每个模块的内部处理过程。据流的设计方法中,这个过程承受细化数据流图的方法实施。易懂的。功能分解导致数据流图的进一步细化,同时还应当用IPO简要描述细化后每个处理的算法。设计软件构造;的调用关系。(举例说明层次图或构造图的例子)。以面对数据流的设计方法为例具体介绍该过程。设计数据库构造;模式设计;子模式设计;完整性与安全性设计;优化。制定测试打算;可测试性。书写文档;完成以下文档的书写:/效益分IPO参照关系等等。用户手册:修改在系统分析阶段所形成的用户手册。具体实施打算:里程表,软件工程治理的进度治理工具。优化方法,数据字典等。审查与复审:技术人员的技术审查与治理人员的复审。软件设计的概念和原理模块化:将简单功能进展分解的过程。问题的要求。设函数C(x)定义问题x的简单程度,函数E(x)确定解决问题x需要的工作量(时间)。对于PP1 2C(P)>C(P)1 2E(PE(P1 2依据人类解决一般问题的阅历,另一个好玩的规律是C(P+P)>C(P)+C(P)1 2 1 2也就是说,假设一个问题由P1

和P两个问题组合而成,那么它的简单程序大于分别考虑每2个问题时的简单程度之和。综上所述,得到下面的不等式E(P+P)>E(P)+E(P)1 2 1 2了呢。事实上,当模块数目增加时每个模块的规模将减小,开发单个模块需要的本钱(工作量)抽象以概括的方式表达问题的解法;在较低抽象层次承受更过程化的方法,把面对问题的术语和面向实现的术语结合起来表达问题的解法;最终,在最低的抽象层次用可以直接实现的方式表达问题的解法。软件工程过程的每一步都是对软件解法的抽象层次的一次精化。在可行性争论阶段,软件当我们由总体设计向具体设计过渡时,抽象的程度也就随之削减了;最终,当源程序写出来以后也就到达了抽象的最低层。计重用软件的根底信息隐蔽和局部化将与模块相关联属性局限在模块的内部,尽量削减模块间的联系。信息隐蔽原理指出:应当这样设计和确定模块,使得一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的。模块独立的概念是模块化、抽象、信息隐蔽和局部化概念的直接结果。换句话说,期望这样设计软件构造,使得每个模块完成一个相对独立的特定子功能,并且和其他模块之间的关系很简洁。的软件比较简洁开发出来。这是由于能够分割功能而且接口可以简化,当很多人分工合作开发同一个软件时,这个优点尤其重要。其次,独立的模块比较简洁测试和维护。这是由于相对说来,修改设计和程序需要的工作量比较小,错误传播范围小,需要扩大功能时能够“插入”模块。总之,模块独立是好设计的关键,而设计只是打算软件质量的关键环节。模块的独立程度可以由两个定性标准度量,这两个标准分别称为内聚和耦合。耦合衡量不同模块彼此间相互依靠(连接)的严密程度;内聚衡量一个模块内部各个元素彼此结合的严密程度。以下分别具体阐述。模块独立及其度量耦合衡量不同模块彼此相互依靠的严密程度的一种度量内聚衡量模块内部各个元素彼此结合的严密程度的一种度量(7非直接耦合两个模块没有直接的联系,相互都不依靠于对方而能独立地工作;数据耦合两个模块借助于参数表传递简洁数据;标记耦合两个模块借助于参数表传递数据构造的一局部;掌握耦合两个模块间传递的信息中包含有用于掌握模块内部规律的掌握信息;外部耦合模块与软件以外的环境有关;公共耦合多个模块引用同一全局数据区的模式;内容耦合两个模块间消灭了以下状况之一:一个模块访问另一个模块的内部数据;一个模块不通过正常的入口转到另一个模块的内部;两个模块有一局部程序代码重叠(汇编语言程序)自上而下,其耦合程度越来越强。(7偶然内聚一个模块完成一组任务,这组任务彼此间即使有关系,其关系也是松散的;规律内聚一个模块完成规律上相关的一组任务;瞬时内聚一个模块所包含的任务必需在同一时间间隔内执行(如初始化模块);过程内聚一个模块的处理元素是相关的,而且必需按特定的次序执行;使用同一输入数据);挨次内聚一个模块的处理元素是相关的且必需挨次执行;功能内聚一个模块完成一个单一的功能,模块中的各局部在此目标下协同工作且都是完成这一功能不行缺少的;自上而下,其内聚程度越来越强。软件设计的原则满足信息隐蔽原则;尽量做到高内聚、低耦合;模块的大小适中,以完成一个相对独立的功能为宜;模块的调用深度不宜过大;模块的扇入应尽量大,而扇出不宜过大;设计单入口和单出口的模块;模块的作用域应在掌握域之内;模块的作用域定义为受该模块内一个判定影响的全部模块的集合。例如:MXAGYMXAGYBCDEF模块M的掌握域为{M,A,B,C,D,E,F}AAG那就不满足这个原理了。这样做的害处是:首先,这样的构造使得软件难于理解。其次,为了AGAAGM,再由MG。这个标记是掌握信息而不是数据,因此将使模块间消灭掌握耦合。AMGA现实,另一方面应当使软件构造能最好地表达问题原来的构造。模块的功能应当是可以推测的。功能可推测是指对于一样的输入,应当得到一样的输出。图形工具(参见邓书P40-45)1〕HIPO构造图面对数据流的设计方法(构造化程序设计方法)SASD图(StructureChart-SC)来描述程序构造。DFD;DFD依据数据流类型分别实施变换分析或事务分析;精化DFD事务精化DFD事务变换数据流类型区分事务中心和数据承受通路区分输入流和输出流映射成事务构造映射成变换构造事务分析变换分析用软件设计原则精化软件构造导出接口描述和全局数据构造不合格复查合格具体设计例子变换分析确定输入流和输出流,孤立出变换中心;第一级分解;其次级分解。事务分析确定事务中心和每条活动流信息;将事务流型DFD映射成高层的程序构造;进一步分解。二.具体设计1〕2〕3〕4〕GOTO具体设计工具1〕3〕PAD判定表(参见邓书P45)判定树(参见邓书P45)PDL(ProcessDesignLanguage)具体设计说明书概要功能说明;画面格式设计与说明;数据关联图;输入/输出数据项的具体描述;处理功能规律说明(流程图等);画面迁移(功能规律关系的反映)。具体设计说明书例子(参见附加资料)三、Jackson方法Jackson2070JSP(JacksonStructuredProgramming)80JSD(JacksonSystemDevelopment)。80,JacksonJSD。JSD活动挨次组合构成的进程,建立系统模型,最终实现该模型。产生JSP方法是一种面对数据构造,以数据驱动的程序设计方法。它是 20世纪70年月由计较简洁的数据处理系统时特别便利当设计比较简单的程序时常常遇到输入数据可能有错、条件不能预先测试和数据构造冲突等问题。为了抑制这个困难,与J.R.Cameron共同开发出了JSD方法,增加了一系列比较简单的关心技术,使之适合于大型系统的开发。它以大事为驱动,是基于进程模型的。根本思想程序和数据的亲热关系可追溯到计算技术的起源,把程序看成数据,把数据看成程序,在构造来推导出程序构造。在很多领域中,存在着明显的层次信息构造,层次数据组织常常和使用这些数据的程序格外相像,数据的构造格外精彩地指示了程序的构造。面对数据构造的设计方法就是利用这些构造作为开发软件的根底。设计和数据构造的关系数据构造影响软件构造和过程,程序加工的是数据,程序表述的算法在很大程度上依靠于作为根底的数据构造。如记录、表及构造等类型的数据,重量与重量之间是一种挨次构造,程序处理必定是挨次的掌握构造;数组、文件每个重量占据的空间一样大且连续存放,程序处理必定是循环的掌握构造;变体记录、联合等类型的数据是一种选择掩盖的构造,程序处理必定是分支的掌握构造;数据构造分层次(如文件由很多记录组成),程序构造也必定分层。因此,数据构造不但影响程序的构造,也影响着程序的处理过程。所以70M.JacksonJacksonJ.WarnierWarnierSDJSP面对数据流的设计(SD(JSP的,都试图将数据表示转换成软件表示,不同之处在于面对数据构造的设计不利用数据流图,输出的数据构造,按肯定的规章映射成软件的过程描述,最终目标是生成软件过程的描述,即程序构造,而不是软件的体系构造。而SD系构造的描述,即软件模块的层次构造。JSP出相应的程序构造。JSP时,难于应用。当数据构造发生变化时,程序构造也发生变化,一般是总体上用SDJSPJSP方法seq,itersel-altJacksonJackson问题的数据构造。Jackson挨次、选择和重复三种,因此,规律数据构造也只有这三种。挨次构造挨次构造的数据由一个或多个数据元素组成,每个元素按确定次序消灭一次。如图9.1(a)中的A是一个挨次构造,指出根本成份B,C,D挨次组成。留意,这里的A并非模块,它既可以是数据(表示数据构造时),又可以是程序(表示程序构造时),而B,C,DAYourdon选择构造9.1(bAB,CD重复构造ABCDABOCODABCDABOCODOAB*挨次构造; (b)选择构造; (c)重复构造图9.1JacksonJackson便于表示层次构造,是对构造进展自顶向下分解的有力工具。形象直观可读性好。既能表示数据构造也能表示程序构造(由于程序构造也只有上述三种根本类型)。Jackson4行包括零件号、零件名及数量等3个数据项,用Jackson构造图表示该事务文件的数据构造。9.29.2Jackson纲要规律JacksonJackson图表示的程序构造转换为语言表示。(1)挨次构造:AseqBCDAend选择构造:Asel1Balt2Calt3DAend重复构造:条件BAend开发步骤JSP5分析并确定输入数据和输出数据的规律构造,并用Jackson图描绘这些数据构造。找出输入数据构造和输出数据构造中有对应关系的数据单元。所谓有对应关系是指有序和次数都一样才可能有对应关系)。用以下3条规章从描绘数据构造的Jackson图导出描绘程序构造的Jackson图;它们对应的处理框在程序构造图中所处的层次与它们之中在数据构造图中层次低的那个对应)。它们画上对应的处理框。它们画上对应的处理框。列出全部操作和条件(包括选择条件和重复完毕条件),并把它们安排到程序构造图的适当位置。用纲要规律表示程序。JSP现举例说明JSP方法设计过程。问题陈述某仓库存放多种零件(如P1,P2,„„),每个零件的每次进货、发货都有一张卡片作出记录,每月依据这样一叠卡片打印一张月报表。报表每行列出某种零件本月库存量的净变化。用JSP建立输入、输出数据构造建立输入、输出数据构造的步骤如下:输入数据:依据问题陈述,同一种零件的进货、发货状态不同,每月登记有假设干张卡Jackson9.3(a)。9.3*)的月报表,它由表头和表体两局部组成,表体中有很多行,一个零件的净变化占一行,其输出数据构造的Jackson图为图9.3(b)。找出输入、输出数据构造中有对应关系的单元月报表由输入文件产生,有直接的因果关系,因此顶层的数据单元是对应的。表体的每一行数据由输入文件的每一个“零件组”计算而来,行数与组数一样,且行的排列次序与组的排9.3某仓库系统输入、输出数据构造输入数据构造;(b)输出数据构造;(c)输出表导出程序构造找出对应关系后,依据以下规章导出程序构造:对于输入数据构造与输出数据构造中的数理框,无对应关系的数据单元,各画一个处理框。依据以上规章,画出的程序构造图如图9.4所示。Jackson定挨次执行的处理中不允许混有重复执行和选择执行的处理。增加了这样一个框,使符合该规定,同时也提高了构造图的易读性。9.4某仓库系统程序构造列出并安排操作与条件当位置,就可得到完整的程序构造图。本问题的根本操作列出如下:A、终止 B、翻开文件 C、关闭文件 D、打印字符行 E、读一张卡 F、产生行完毕符 G、累计进货量 H、累计发货量 I、计算净变化 J、置零件组开头标志列出条件如下:I(l):输入条件未完毕I(2):零件组未完毕S(3):进发货标志9.59.5安排操作后的程序构造图9.5E(读一张卡)放在翻开文件之后,同时在处理完一张卡片后再读一次。用纲要规律写出程序Jackson都看作是下层处理框及安排在上面的操作组成。seq翻开文件读一张卡seqend置零件组开头标志seqsel累计进货量累计发货量读一张卡打印字符行endseq计算净变化换行置零件组开头标志由零件组产生输出行end关闭文件终止end操作不正确或者构造图不正确,都难以写出它的纲要规律。构造冲突问题JSP发货的日期挨次排列,这样“零件组”与“行”就不对应了。输入数据与输出数据构造找不到构成一个系统的整体。例如有一个卡片文件,存放一个矩阵,每张卡片包含矩阵的一行元素。要求按列打印该矩是次序冲突。解决的方法是构造两个程序构造,分别解决输入和输出的问题,在输入和输出之间增加一个分类程序,将输入产生的按行排列的矩阵转换成按列排列的矩阵,然后再输出。这个按列排列的矩阵即为中间数据构造或中间文件。JSDJSDJSDJSDJSPJSP9.2JSP数据构造和输出数据构造的对应复合而成程序构造的,但当要开发的系统格外浩大时,输入数JSP构造无法形成,因而它只是一种程序设计方法,只适用于小型程序的开发。JSD分而治之的原则分别为一些独立的、彼此无关联的、构造简洁的输入数据流和一些独立的、彼此无关联的输出数据流,其中每一简洁的输出数据流仅关联于少数几个简洁的输入数据流。这样,一个错综简单的浩大问题就转化为多个互不关联的独立的小型程序开发问题,这些小型程序在开发时不会JSP确定实体观世界行为进展自然划分,将系统输入数据流分别为多个彼此独立的输入数据流,其中每种独输出数据流的分别,JSD建立挨次进程JSDJSD的挨次进程,模拟系统主题中客观实体的行为,建立系统主题的计算机仿真模型,为产生系统输出数据的软件系统中的功能进程供给所需的输入数据。挨次进程、功能进程和它们之间数据标计算机环境中有效、便利运行的软件系统。述特别强调操作之间的时序性,所以它应用于时序特点较强的系统,包括数据处理系统和一些实时掌握系统。JSD方法的特点建立现实世界的模型,确定用户的功能需求。现实世界的模型和用户功能需求之间是是较稳定的。所以,JSD络描述现实世界的模型,这里“进程”概念与操作系统中的“进程”术语类似。JSD其操作语义是确定的,所以原则上可以执行,即承受人工或自动的手段,可以从需求直接建立JSD步骤中间续进展。JSD现实和系统XX人、才、物等;系统是通过开发活动试图获得的目标,如XX后系统将嵌入到现实中投入运行。明显,系统是现实的一个模型,它反映现实中发生的动作。挨次进程现实中的实体及其按时序执行的动作的表述就是挨次进程。现实中有实体存在,如银行系统中,有帐户实体。每个实体按某种时序执行动作,每个实体有各自的属性,属性因动作的发生而随时变化。如帐户甲770072200500可以用一组挨次进程组成的网络构成现实的一个模型。进程间的联系JSD流方式或状态向量方式联系,前者通常用于实体向另一个进程发送数据,后者通常用于一个进程读另一进程的内部状态,状态向量就是指一个进程的全部内部状态。模型和功能由于模型反映了现实,所以系统功能可以在模型的根底上描述。功能通常是系统应当输出9.3.3JSD56阶段。实体动作步围,即定义系统所感兴趣的客观世界域。员(动作挨次有上班、送菜单、送饭菜、清理及下班)、会计和厨师等。实体构造步。JacksonJackson餐厅业务中有顾客进程、会计进程等.会计进程如图9.6所示。图9.6 会计进程初步模型步初步模型步是用挨次进程网络构成现实的模型,并把模型同现实联系起来以实现两者间的9.7会计进程的纲要规律是:readC;记帐:iterwhile(有费用发生)进餐费收入处理;alt原料费支出处理;alt费用处理endreadC;结帐end功能步功能步是在初始模型的根底上描述系统的功能,产生完善的系统说明图和完善的纲要规律。性能步定系统的响应时间。实现步软件系统说明转换为可在目标计算机环境中有效、便利运行的软件系统。JSD问题陈述计算机在每天工作完毕时产生一天中游客总的租船次数和总的租船时间的报告。实体:游客实体标识符:游客姓名动作:租船。动作属性:船编号、租用时间(开头时间)输出:租船总次数总的租船时间T=T+∑还船时间-∑租船时间实体构造步9.89.8实体构造初始模型步用系统说明图来描述初始模型如图9.9所示。系统说明图即为挨次进程网络。9.9系统说明图功能步1seqsession_time:=0;readC;seqendreadC;seq还船时间;end职员进程iterseqreadREQ;totaltime:=0;number:=0;getCV;处理租船iterwhile(notend_of_CVs)totaltime:=totaltime+session_time;number:=number+1;getCV;endwr

温馨提示

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

评论

0/150

提交评论