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

    传统软件工程方法.ppt

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

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

    传统软件工程方法.ppt

    传统软件工程方法,李 宣 东 南京大学计算机科学与技术系,主要内容,传统软件工程方法面向对象软件工程(统一建模语言UML)软件过程、管理与质量,传统软件工程方法,问题定义需求分析概要设计详细设计编 码测 试维 护,基本概念,软件 计算机系统中的程序及其有关文件。程序 计算任务中的处理对象和处理规则的描述。文件 为了便于了解程序所需的资料说明。,基本概念,软件的作用用户与硬件的接口计算机系统的指挥者计算机系统结构设计的重要依据,基本概念,软件的发展过程第一阶段:从第一台计算机上的第一个程序的出现到实用的高级程序设计语言出现之前(1946-1956);第二阶段:从实用的高级程序设计语言出现到软件工程出现之前(1956-1968);第三阶段:软件工程(1968-)。,基本概念,软件的分类:系统软件支撑软件应用软件,基本概念,软件危机供求关系失调开发费用失控,进度拖延可靠性差难以维护,基本概念,产生软件危机的原因(软件本身的特点)软件开发进展情况较难衡量软件开发质量难以评价管理和控制软件开发过程相当困难软件没有“磨损”概念,软件维护通常意味着该进或修改原来的设计,基本概念,产生软件危机的原因(软件开发人员的错误观点)“有一个对目标的概括描述就足以着手编写程序了,许多细节可以在以后再补充”“所谓软件开发就是编写程序并设法使它运行”“用户对软件的要求不断变化,然而软件是柔软而灵活的,可以轻易地改动”“软件投入生产性运行以后需要的维护工作并不多,而且维护是一件很容易做的简单工作”,基本概念,软件工程应用计算机科学、数学及管理科学等原理,以工程化原则、方法解决软件问题的工程。其中,计算机科学、数学用于构造模型与算法,工程科学用于制定规范、设计范型、降低成本及确定权衡,管理科学用于计划、资源、质量、成本等管理。,基本概念,软件工程的基本内容:软件设计方法论软件工具软件工程标准和规范软件工程管理软件工程理论,基本概念,软件工程的基本原理:严格按照计划进行管理坚持进行阶段评审实行严格的产品控制采用现代的程序技术结果要能清晰地审计开发小组人员素质要好,数量不宜多要承认不断改善软件工程实践的必要性,基本概念,软件生存期(过程)模型:软件生存期是软件产品或系统一系列相关活动的全周期。从形成概念开始,经过研制,交付使用,在使用中不断增补修订,直到最后被淘汰,让位于新的软件产品的过程。对软件生存期的不同划分,形成了不同的软件生存期模型。,基本概念,瀑布式软件生存期模型强调阶段的划分及其顺序性、各阶段工作及其文档的完备性,是一种严格线性的、按阶段顺序的、逐步细化的开发模式。,定义,分析,设计,编码,测试,维护,基本概念,瀑布式软件生存期模型把软件开发过程划分成若干阶段,每个阶段的任务相对独立,便于不同人员分工协作,从而降低了整个软件开发工程的困难程度。在软件生存期的每个阶段都采用科学的管理技术和良好的方法与技术,而且每个阶段结束之前,都从技术和管理两个角度进行严格的审查,经确认之后才开始下一阶段的工作。,基本概念,瀑布式模型的特点:结构简单明了;历史较长、应用面广泛、为广大软件工作者所熟悉;已有与之配套的一组十分成熟的开发方法和丰富的支撑工具。确定了需求分析的绝对重要性,但是在实践中要想获得完善的需求说明是非常困难的;反馈信息慢。,基本概念,软件质量要素:正确性:软件产品准确执行软件规格说明中所规定的能力。健壮性:在异常条件下软件仍能运行的能力。可靠性:软件在给定的时间内和规定的环境条件下,按规格说明的规定成功地运行的概率。可靠性理解为正确性和健壮性之和。,问题定义,问题定义的关键任务是确切地定义用户要求解决的问题,也就是确定问题的性质、工程的目标和规模。可行性研究对软件进行分析与估算确定软件作用范围,问题定义,可行性研究:经济可行性技术可行性法律可行性不同的方案,问题定义,对软件进行分析与估算:确定软件的范围估算完成软件开发任务所需的资源估算软件的成本估算和安排软件开发项目的进度,问题定义,确定软件的作用范围:详细描述软件的任务和具体的要求,抱括软件的功能、性能、接口和可靠性等四个方面的内容。,问题定义,软件计划:范围(研制的目标,主要功能,其他特性,开发概况)资源(人力资源、硬件资源、软件资源、可用性资源窗口)成本进度安排,需求分析,软件需求分析是软件生存期的一个重要阶段,是软件开发项目得以成功的基础。其最根本的任务是确定为了满足用户的需要软件系统必须做什么。软件需求分析是一个不断发现和决定的过程,在此过程中,软件开发者和软件申请者(用户)同样起着重要的作用。在需求分析与说明过程中,需要大量交换意见,其间充满着传错信息和发生误解的可能性:“我知道你相信你明白了你认为我所说的是什么,但是我不能肯定你是否意识到你听到的并不是我所指的意思.”。,需求分析,软件需求分析实现以下几个目标:给出软件系统的数据流程图与数据结构,构造一个完全的系统逻辑模型;提出详细的功能说明确定设计限定条件,规定性能要求;密切与用户的联系,使用户明确自己的任务,以便实现上述两项目标。,需求分析,软件需求分析包括的工作:问题的认识 需求分析人员通过频繁与用户联系,充分理解用户提出的每一个功能与性能要求,从软件系统特征、软件开发全过程以及软件计划给出的资源和时间约束,来确定软件开发的总策略。评价与综合 需求分析人员必须求得数据的流程和数据结构,评价优缺点;结合用户要求,修改现行的系统,提出新系统的功能,加以细化;提出软件的约束条件、响应时间、存储条件等。,需求分析,软件需求分析包括的工作:建立需求说明书 软件需求说明书包含软件功能、性能、接口、有效性和逻辑模型的描述。为了证实软件能否被成功实现就要规定相应的检验标准,这些标准在软件开发期间将作为测试的依据。复审 由软件开发人员和用户共同对需求说明书进行严格的审查。,需求分析,软件需求分析人员应该具备的特征:善于领会一些抽象的概念,重新整理使之成为各种逻辑成分,并根据各种逻辑成分综合出问题的解决办法;善于从各种相互冲突或混淆的原始资料中吸取恰当的论据;能够理解用户的环境及领域知识;,需求分析,软件需求分析人员应该具备的特征:具备把系统的硬件和软件部分应用于用户环境的能力;具备良好的书面和口头形式进行讨论和交换意见的能力;具有“既能看到树木,又能看到森林”的能力。,需求分析,基本系统模型:软件系统的全部功能被表示成一个单一的信息变换过程:,软件系统,输入1,输入2,输入n,输出n,输出2,输出1,.,.,需求分析,需求分析,信息,信息流程,信息结构,出来的是什么进去的是什么中间如何变换,单个元件是什么怎样把它们安置在一起一组元件合在一起分类各组元件之间的关系,需求分析,结构化分析方法(SA)SA方法采用“抽象”和“分解”两个基本手段,用抽象模型的概念,按照软件内部数据传递、变换关系,由顶向下逐层分解,直到找到满足功能需要的所有可实现的软件元素为止。SA方法采用“分解”的方式来理解一个复杂系统,“分解”需要有描述手段,数据流程图就是作为描述信息流程和分解的手段而引入的。,需求分析,数据流程图:表示外部实体,代表数据源和数据池。表示加工,代表接收输入,经过变换,继而产生输出的处理过程。表示数据流,代表数据的流向和路径。表示数据存储,代表系统加工的数据所存储的地方。,需求分析,数据流程图的特点:可以表示任何一个系统(人工的、自动的、或混合的)中的数据流程;每个表示加工的圆圈可能需要进一步分解以求得对问题的全面理解;着重强调的是数据流程而不是控制流程。,需求分析,例:病员监视系统,病员监视系统,病员,护士,护士,病员病历,基本模型,病情信号,报告,警告信号,病历数据,请求提出报告,需求分析,本地监视,中央监视,报告产生,更新病历,护士,护士,病员,病员病历,病员的病情界限,警告信号,病员数据,请求报告,经过整理后的病员数据,病情信号,需求分析,分解病情信号,整理病员数据,检查是否超出界限,产生警告信号,时钟,整理后的病员 数据,日期时间,病员病情界限,体温,血压,脉搏,病员数据,警告信号,需求分析,推导数据流程图的简单准则:第一层数据流程图应当是基本的系统模型;应当仔细说明原始的输入/输出文件;所有箭头和圆圈均应当加上标注(使用有意义的名字);必须保持信息的连续性;每次只加工一个圆圈。,需求分析,数据字典数据流程图中,所有的图形元素都进行了命名,所有名字的定义集中起来就构成一本数据字典。数据字典最重要的用途是作为分析阶段的工具。在数据字典中建立的一组严密一致的定义有助于改进分析员和用户之间的通信,因此将消除许多可能的误解。对数据的这一系列严密一致的定义也有助于改进在不同的开发人员之间或者不同开发小组之间的通信。如果要求所有开发人员都根据公共的数据字典描述数据或设计模块,则能避免许多麻烦的接口问题。,需求分析,信息结构信息结构是各个数据成分之间逻辑关系的一种表示方法。数据结构决定信息的组织、存取方法、结合性程度以及不同的处理方案。典型的数据结构包括标量项、顺序向量、n维空间、链接表等。,需求分析,分层数据结构表示法:分层框图Warnier图,需求分析,分层框图分层框图把信息用多层方框按照树形结构组织起来。在结构的顶层,用一个方框代表整个结构。下面各层由表示不同信息类别的方框组成,它们可以看成是上一层方框的子集。在该图的最低一层,每个框包含单独的数据实体。,需求分析,XX公司销售产品,计算机软件,计算机服务,计算机硬件,存储器,备件,处理机,应用,系统,软件服务,培训,操作系统,编译程序,工具,编辑程序,测试驱动程序,设计辅助工具,.,.,.,.,.,.,.,.,.,.,.,.,.,需求分析,Warnier图Warnier图把信息表示成一种树形数据结构。可以规定某些信息种类或信息量是重复性的,也可以说明在某一种类中信息是有条件出现的。,需求分析,计算机系统,系统软件,应用软件,操作系统(P1),编译程序(P2),工 具,编 辑(P3),测试驱动(P4),设计辅助(P5),需求分析,软件需求说明书1.概述2.信息描述(1)数据流程图(2)数据字典(3)数据结构(4)系统接口说明(5)内部接口,需求分析,软件需求说明书3.功能说明(1)功能(2)处理说明(3)设计的限制4.检验标准(1)性能界限(2)测试种类(3)预期的软件响应(4)应考虑的特殊问题5.参考文献6.附录,需求分析,初步的用户手册 当确定了人机交互作用的软件需求后,准备一份初步的用户手册是作为对所要求文件的补充往往是有用的,这种手册将起到两个作用:手册的准备迫使分析人员从用户的角度来看待软件,从而及早考虑接口方面的人机环境工程。用户可以审查一个明确描述人机接口的实际文件。,需求分析,软件需求说明的审查审查需求的一致性审查需求的现实性审查需求的完整性和有效性,需求分析,软件需求说明审查中的问题:所规定的软件目标和任务与系统的目标和任务相符合吗?与所有系统成分的重要接口都已被描述了吗?研制项目的数据流程图、数据字典、数据结构充分确定了吗?图表都清楚吗?每个图表在不加补充说明的情况下能被理解吗?主要功能在规定的范围之内吗?每一种功能被充分说明了吗?,需求分析,软件需求说明审查中的问题:设计的限制条件是现实的吗?开发的技术风险是什么?考虑过软件需求的其他方案吗?检验标准是否详细?他们能否确认系统是成功的?有无遗漏、重复或不一致的地方?用户是否审查了初步的用户手册?软件计划中的估算是否需要修改?,需求分析,用于软件需求分析的工具,概要设计,软件设计是把软件需求变为软件的具体方案软件设计包括两个阶段:概要设计和详细设计概要设计根据软件需求所确定的信息流程或信息结构,导出软件的总体表示-软件结构或程序过程,概要设计,软件结构:软件结构是一种层次化的表示,其指出了由需求分析隐含地确定的某一问题的软件解法的各个元素(称之为模块)之间的相互控制关系软件结构的演变从确定问题开始,当该问题的每个部分用一个或多个软件加以解决以后,整个问题的解也就有了,概要设计,P3,P1,P2,P4,P5,S1,S2,S3,S4,S5,概要设计,软件结构的度量和术语:深度:表示控制的层数。宽度:表示控制(同一层次)总跨度。扇出数:指由一模块直接控制的其他模块的数目。扇入数:指有多少个模块直接控制一个给定的模块。上级模块下级模块,概要设计,程序过程:程序过程是用于描述每个模块的操作细节,是关于模块算法的详细描述,它应当包括处理的顺序、精确的判定位置、重复的操作以及数据组织和结构等。,概要设计,模块:模块是数据说明、可执行语句等程序对象的集合,是单独命名的并且可以通过名字来访问,例如过程、函数、子程序、宏、modula等。,概要设计,模块化:软件被划分成独立命名和可独立访问的被称作模块的构件,每个模块完成一个子功能,它们集成到一起满足问题需求。,概要设计,模块化论据: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),概要设计,软件总成本,集成成本,成本/模块,模块数量,成本或工作量,最小成本区域,M,概要设计,实现模块化的手段:抽象:抽出事物的本质特性而暂时不考虑它们的细节。信息隐蔽:应该这样设计和确定模块,使得一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不可访问的。,概要设计,模块独立性:模块独立是指开发具有独立功能而且和其它模块之间没有过多的相互作用的模块。模块独立的意义:功能分割,简化接口,易于多人合作开发同一软件;独立的模块易于测试和维护。,概要设计,模块独立程度的衡量标准:耦合性:对一个软件结构内不同模块间互连程度的度量。内聚性:标志一个模块内各个处理元素彼此结合的紧密程度,理想的内聚模块只做一件事情。,概要设计,耦合分类:无任何连接:两个模块中的每一个都能独立地工作而不需要另一个的存在(最低耦合)。数据耦合:两个模块彼此通过参数交换信息,且交换的仅仅是数据(低耦合)。控制耦合:两个模块之间传递的信息有控制成分(中耦合)。,概要设计,耦合分类:公共环境耦合:两个或多个模块通过一个公共环境相互作用:1.一个存数据,一个取数据(低耦合);2.都存取数据(低-中之间)。内容耦合:1.一个模块访问另一个模块的内部数据;2.两个模块有一部分程序代码重叠;3.一个模块不通过正常入口而转移的另一个的内部;4.一个模块有多个入口(意味着该模块有多个功能)。,概要设计,内聚分类:偶然内聚:一组任务关系松散(低)逻辑内聚:一组任务在逻辑上同属一类,例如均为输出(低)时间内聚:一组任务必须在同一段时间内执行(低),概要设计,内聚分类:信息内聚:模块内所有元素都引用相同的输入或输出数据集合(中)顺序内聚:模块中的每个元素都是与同一功能紧密相关,一个元素的输出是下一个元素的输入(高)功能内聚:一个模块完成一个且仅完成一个功能(高),概要设计,关于耦合性和内聚性的设计原则:力争尽可能弱的耦合性:尽量使用数据耦合,少用控制耦合,限制公共环境耦合的范围,完全不用内容耦合力争尽可能高的内聚性:力争尽可能高的内聚性,并能识别出低内聚性,概要设计,概要设计的启发式准则:改进软件结构,提高模块独立性模块规模应该适中(最好能写在一页纸上)大模块分解不充分;小模块使用开销大,接口复杂。尽量减少高扇出结构的数目,随着深度的增加争取更多的扇入 扇出过大意味着模块过分复杂,需要控制和协调过多的下级模块。一般来说,顶层扇出高,中间扇出少,低层高扇入。,概要设计,概要设计的启发式准则:模块的作用范围保持在该模块的控制范围内 模块的作用范围是指该模块中一个判断所影响的所有其它模块;模块的控制范围指该模块本身以及所有直接或间接从属于它的模块。力争降低模块接口的复杂程度 模块接口的复杂性是引起软件错误的一个主要原因。接口设计应该使得信息传递简单并且与模块的功能一致。,概要设计,概要设计的启发式准则:设计单入口单出口的模块 避免内容耦合,易于理解和维护。模块的功能应该可以预测 相同的输入应该有相同的输出,否则难以理解、测试和维护。,概要设计,设计方法:逐步精化-自顶向下设计方法结构化程序设计 结构化程序设计的基础建立在三种能够构成结构化程序的逻辑构造(顺序,选择,重复)上。面向数据的设计方法 面向数据流的设计 面向数据结构的设计面向对象的设计方法,概要设计,面向数据流的设计:面向数据流的设计方法把信息流映射成软件结构信息流的类型决定了映射的方法信息流有两种类型:变换流 事务流,概要设计,变换流:信息沿输入通路进入系统,同时由外部形式变换成内部形式。进入系统的信息通过变换中心,经过加工处理以后再沿着输出通路变换成外部形式离开系统。,概要设计,信息,外部表示,内部表示,时间,输入流,输出流,变换中心,概要设计,事务流:事务流的特点是数据沿着接收通路把外部世界的信息转换成一个事务项,然后,计算该事务项的值,根据它的值激励起多条活动通路中的一条数据流。发出多条通路的信息流中枢被称为“事务中心”。,概要设计,T,事务,事务中心,活动通路,概要设计,变换型分析第1步 复查基本系统模型。第2步 复查并精化数据流图。第3步 确定数据流图具有变换特性还是事务特性。第4步 确定输入流和输出流的边界,从而孤立出变换中心。,概要设计,变换型分析第5步 完成“第一级分解”。软件结构代表对控制的自顶向下的分配,所谓分解就是分配控制的过程。对于变换流,数据图将被映射成一个特殊的软件结构,这个结构控制输入、变换和输出信息等处理过程:位于软件结构最顶层的控制模块Cm协调下述从属的控制功能:(1)输入信息处理控制模块Ca,协调对所有输入数据的接收;(2)变换中心控制模块Ct,管理对内部形式的数据的所有操作;(3)输出信息控制模块Ce,协调输出信息的产生过程。,概要设计,Cm,Ct,Ca,Ce,概要设计,变换型分析第6步 完成“第二级分解”。把数据流图中的每一个处理映射成软件结构中一个适当的模块:从变换中心的边界开始沿着输入通路向外移动,把输入通路中每个处理映射成软件结构中Ca控制下的一个低层模块;然后沿输出通路向外移动,把输出通路中每个处理映射成直接或间接受Ce控制的一个低层模块;最后把变换中心内的每个处理映射成受Ct控制的一个模块。第7步 使用设计度量和启发式规则对得到的软件结构进一步精化。,概要设计,B,C,D,A,Cm,Ca,B,C,A,D,概要设计,事务型分析第1步 复查基本系统模型。第2步 复查并精化数据流图。第3步 确定数据流图具有变换特性还是事务特性。第4步 确定事务中心和每个活动通路的流程特征。,概要设计,事务型分析第5步 把数据流图映射成一个适合于事务处理的软件结构。第6步 对事务中心的结构和每个活动通路的结构进行分解、合并和改进。第7步 使用设计度量和启发式规则对得到的软件结构进一步精化。,概要设计,D,G,F,E,总控,E,调度,D,G,A-CTL,B-CTL,C-CTL,F,接收通路,C通路,B通路,A通路,概要设计,面向数据结构的设计:面向数据结构的设计方法用信息结构导出程序过程面向数据结构的设计过程分为如下几步:(1)分析数据结构的特性;(2)用一些基本类型(如:顺序,选择和重复)来描述数据;(3)把数据结构表示映射成软件的控制层次;(4)利用一组规则改进软件的层次结构;(5)最后得到软件的过程性描述。,概要设计,Jackson方法Jackson方法的精髓在于:应该把问题分解成仅用三种结构化形式(顺序,选择和重复)来表示的层次结构。Jackson方法包括一种数据结构符号和一组映射或转换步骤。,概要设计,Jackson图(数据结构符号):,A,A,A,C#,D#,B*,C,D,B#,B,顺序,重复,选择,A seq do B;do C;do D;A end,A iter do B;A end,A select do B;A or do C;A or do D;A end,概要设计,Jackson图的特点:便于表示层次结构,而且是对结构进行自顶向下分解的有力工具;形象直观,可读性好;既能表示数据结构,又能表示程序结构。,概要设计,建立程序结构例1:设计一个打印表格的程序。表格如下:,姓名,年龄,类别,状态,这里类别可以是“教师”或“学生”两种。“状态”一项,如果是教师则印出他的“工龄”,如果是学生则印出他的年级。,概要设计,表格,表头,表体,行*,姓名,年龄,类别,状态,工龄,年级,概要设计,产生表格,产生表头,产生表体,产生行*,产生工龄#,产生年级#,产生姓名,产生年龄,产生类别,产生状态,概要设计,建立程序结构例2:仓库中存放了多种零件,每种零件的每次变动(收到或发出)都有一张卡片作出记录,库存管理系统每月要根据这些卡片打印一张月报表,列出各种零件在这个月中库存量的净变化。,概要设计,零件组*,卡片*,发#,收#,月报表,表头,表体,行*,输入文件,概要设计,根据输入文件产生月报表,产生表头,产生表体,从零件组产生行*,处理文件,产生行,处理卡片*,处理发#,处理收#,概要设计,Jackson方法的基本步骤:(1)分析并确定输入数据和输出数据的逻辑结构,并用Jackson图描述这些数据结构;(2)找出输入数据和输出数据结构中有对应关系的数据单元。所谓对应关系是指有直接的因果关系,在程序中可以同时处理的数据单元(对于重复出现的数据单元必须重复的次数相同才可能有对应关系);,概要设计,Jackson方法的基本步骤:(3)用下述三条规则从描述数据结构的Jackson图导出描述程序结构的Jackson图:第一,为每对有对应关系的数据单元,按照它们在数据结构图中的层次在程序结构图的相应层次画一个处理框(注意,若这对数据单元在输入数据结构和输出数据结构中所处的层次不同,则和它们对应的处理框在程序结构图中所处的层次与它们之中在数据结构图中层次低的那个对应);第二,根据输入数据结构中剩余的每个数据单元所处的层次,在程序结构图中的相应层次分别为它们画上对应的处理框;第三,根据输出数据结构中剩余的每个数据单元所处的层次,在程序结构图中的相应层次分别为它们画上对应的处理框。,概要设计,Jackson方法的基本步骤:(4)列出所有操作和条件(包括分支条件和循环结束条件),并且把它们分配到程序结构图的适当位置。(5)用伪码标示程序。,概要设计,例:输入一个文件FIPT,此文件只包含三种记录类型T1、T2和T3,现在要对该文件作如下处理:(1)统计出现的第一个T1类型的记录前的记录总数(计数A);(2)显示第一个T1类型的记录;(3)显示最后一个记录,最后一个记录是在第一个T1类型的记录后的第一个T2类型的记录;(4)计算第一个T1类型的记录后的记录批数(一批记录指一串连续的T1类型的记录或一串连续的T3类型的记录(计数B);(5)统计在第一个T1类型的记录后出现的T1类型记录的总数(计数C);(6)计算在第一个T1类型的记录后的T3类型记录的批数(计数D)。,概要设计,FIPT,前缀,批数部分,T2,非T1*,批*,T1批#,T3批#,T1*,T3*,第一个T1,概要设计,处理FIPT,处理前缀,处理批数部分,处理T2,处理非T1*,处理批*,处理T1批#,处理T3批#,处理T1*,处理T3*,处理第一个T1,概要设计,列出所有的操作:(1)CA:=0(2)CB:=0(3)CC:=0(4)CD:=0(5)CA:=CA+1(6)CB:=CB+1(7)CC:=CC+1(8)CD:=CD+1(9)显示第一个T1记录(10)显示最后一个T1记录(11)显示所有计数器的内容(12)打开FIPT文件(13)关闭FIPT文件(14)终止运行(15)读FIPT文件记录,概要设计,处理FIPT,12151,处理前缀,处理非T1*,处理第一个T1,234,批数部分,处理T2,1113,14,处理批*,处理批部分,5,10,15,9,15,5,15,处理T1批#,处理T3批#,处理T1*,处理T3体,处理T3*,3,15,7,15,概要设计,设计方法比较:没有一种方法能够适用于所有的应用领域;设计“优劣程度”的评定标准,大都建立在不可证明的假设的基础之上;“设计”首先是解决问题的活动,而解决问题的过程和办法是因人而异的;方法是重要的,但只有在支撑环境中运用它们才能得到成功。,详细设计,详细设计是给出软件结构中各模块的内部过程描述模块的内部过程描述也就是模块内部的算法设计详细设计也既是要导出一种算法设计表示,由此可以直接而简单地导出程序代码,详细设计,详细设计的逻辑基础:使用结构化构造(即用顺序、选择和重复三种程序结构)表示程序过程,降低程序的复杂性,从而提高可靠性、易测试性和易维护性。,详细设计,详细设计工具对软件开发人员来说,提高软件开发效率对软件测试和维护人员来说,提供摆脱繁琐的程序代码,了解模块程序结构的途径,详细设计,详细设计工具:图形工具 将过程细节用图来表示,在图中,逻辑结构用具体的图形表示列表工具 利用表来表示过程细节,表列出了各种操作和相应的条件语言工具 用类语言(伪码)表示过程的细节,很接近编程语言,详细设计,图形工具:流程图方块图PAD图,详细设计,流程图方框表示处理步菱形表示逻辑判断箭头表示控制流 注意:用流程图表示过程细节时,要注意不要乱用箭头,否则会使结构不清晰,详细设计,S1,C4,C5,C3,C2,C1,S2,S3,S4,S5,N,Y,N,Y,N,N,N,Y,Y,Y,详细设计,流程图的主要缺点:流程图本质上不是逐步求精的好工具,它诱使程序员过早地考虑程序的控制流程,而不去考虑程序的全局结构。流程图中用箭头代表控制流,因此程序员不受任何约束,可以完全不顾结构程序设计的精神,随意转移控制。流程图不易表示数据结构。,详细设计,方块图(N-S图)研制方块图的目的是:既要制定一种图形工具,又不允许它违反结构化原则。方块图具有以下特点:(1)功能域(即某一具体构造的功能范围)有明确的规定,并且很只观地从图形表示中看出来;(2)想随意分支或转移是不可能的;(3)局部数据和全程数据的作用域可以很容易确定;(4)容易表示出递归结构。,详细设计,第一个任务,第二个任务,第三个任务,条件,F,T,ELSE部分,THEN部分,CASE条件,值1,值2,.,值n,CASE1部分,A,循环条件,Do-While 部分,Do-Until 部分,循环条件,调用子程序A,循环,顺序,IF-THEN-ELSE分支,CASE分支,详细设计,C1,C4,C5,N,Y,S1,S4,S2,S3,S5,N,N,Y,Y,C2,C3,详细设计,PAD图(Problem Analysis Diagram),P1,P2,P2,P1,Pn,P2,P1,.,X=,L1,L2,Ln,C,顺序,选择,CASE型选择,详细设计,WHILE C,UNTIL C,P,P,循环,语句标号,定义,def,详细设计,P1,P3,P2,P5,P4,P2,P6,P10,P8,UNTIL C3,P7,UNTIL C2,P9,def,C,C1,详细设计,WHILE C1,UNTIL C4,S5,S3,S1,S2,S4,C2,C3,C5,详细设计,PAD图的特点:使用表示结构化控制结构的PAD符号所设计出的程序必然是结构化程序。PAD图所描述的程序结构十分清晰,图中最左面的竖线是程序的主线,即第一层结构,随着程序层次的增加,PAD图逐渐向右延伸,每增加一个层次,图形向右扩展一条竖线,PAD图中的竖线的总条数就是程序的层次数。,详细设计,PAD图的特点:用PAD图表现程序逻辑,易读、易懂、易记,PAD图是二维树形结构的图形,程序从图中最左竖线上端的结点开始执行,自上而下,从左向右顺序执行,遍历所有结点。容易将PAD图转换成高级语言源程序,这种转换可用软件工具自动完成。,详细设计,PAD图的特点:既可以用于表示程序逻辑,也可用于描述数据结构。PAD图的符号具有支持自顶向下、逐步求精方法的作用。开始时设计者可以定义一个抽象的程序,随着设计工作的深入而用def符号逐步增加细节,直至完成详细设计。,详细设计,语言工具-PDL(Program Design Language)PDL具有严格的关键字外部语法,用于定义控制结构和数据结构;另一方面,PDL表示实际操作和条件的内容语法通常又是灵活自由的以便可以适应各种工程项目的需要。一般说来PDL是一种“混合”语言,它使用一种语言(通常是某种自然语言)的词汇,同时却使用另一种语言(某种结构化的程序设计语言)的语法。,详细设计,PDL应当具有以下特征:关键字应有固定语法,以便提供全部结构化构造、数据说明和模块化特性,并且使结构清晰和易读性好;一种自然语言的自由文法,用来描述处理特点;应有数据说明机制,应该包括既简单的数据结构(标量与数组),又包括复杂的数据结构(链表或层次结构);应有子程序定义与调用方法,用来表示各种方式的接口描述。,详细设计,设计工具应具有的属性:模块性、简明性、便于编辑、机器可读性、易维护性、强行结构化、自动处理、数据表示、逻辑验证、编程能力,详细设计,软件设计说明书1.范围(1)系统的目标和作为系统元素的软件的作用;(2)硬件、软件与人机接口;(3)主要的软件功能;(4)外部定义的数据库;(5)主要的设计约束与限制。,详细设计,软件设计说明书2.参考文档(1)现有的软件文档;(2)系统文档;(3)外购产品文档(硬件或软件);(4)技术参考资料。,详细设计,软件设计说明书3.设计说明(1)数据说明 信息流的复审 信息结构的复审(2)导出的软件结构(3)结构内的接口,详细设计,软件设计说明书4.模块(对每一个模块)(1)处理说明(2)接口说明(3)设计语言(或其他)的说明(4)使用的模块(5)数据的组织(6)注解,详细设计,软件设计说明书5.文件结构和全程数据(1)外部文件结构 逻辑结构 逻辑记录说明 存取方法(2)全程数据(3)文件和数据的交叉引用6.需求与模块的对照表,详细设计,软件设计说明书7.测试的准备 测试大纲 组装策略 专门的考虑8.装配 专门的程序覆盖考虑 转录考虑9.专门注解10.附录,详细设计,设计的复审软件的设计由管理方面的代表、技术开发方面的代表和其他有关人员(诸如用户、质量保障和软件支持者等)共同进行复审。对设计进行复审的明显好处是可以比较早地发现软件的缺陷,从而可以使每个缺陷在进行编程、测试和交付之前予以纠正,从而显著地降低随后的开发阶段和维护阶段的费用。设计复审包括正规的审查、非正规的审查和检查三种方式。,详细设计,设计复审的标准:易追溯性 该软件设计包括了软件需求规格说明的所有要求了吗?该软件的每个部件与某个具体的软件要求有关吗?风险 实现该设计会有很大风险吗?也就是说,没有技术性的突破该设计也能完成吗?实用性 该软件对软件要求所确定的问题是一种实用的解决办法吗?易维护性 该设计是否将导致一个便于维护的系统?质量 该设计具备一个“好”的软件应有的质量特征吗?接口 外部和内部的接口已经规定得足够明确了吗?技术清晰度 该设计的表达方式是否使它便于转化成程序?选择方案 考虑了其他设计方案了吗?采用什么标准来选择最后方案呢?限制 软件限制是否现实?与要求相符合吗?某些具体的问题 该软件便于人控制机器吗?便于测试吗?与其他系统部分相适应吗?有足够的文档吗?,详细设计,正规的复审通常是为了评价软件的结构和接口;这种类型的复审的特点在于:设计人员和复审人员都要认真的准备;有相当多的复审者参加,他们对该软件研制项目有不同程度的兴趣;管理方面和技术方面站得高,视野开阔;提供正式的设计文档;由通知到开会的时间间隔至少有两个星期。,详细设计,非正规的复审 所谓非正规的复审指的是从临时通知的碰头会到有关同事参加的比较有组织的复审这整个范围而言的,一般由通知到开会的时间间隔只有二至三天。,详细设计,设计的检查检查具有正规的复审和非正规的复审两方面的特点;从复审的形式与内容上看,检查方法是相当正规的-有专门的职责、活动安排、交付的文档、核对表以及管理办法等等,一切都是事先规定好的;然而,涉及到的人员以及他们的相互联系则是比较随便的,通常都以小组进行活动。,编 码,程序设计语言的性能和程序的编码风格,在很大程度上影响着软件的质量和维护性能。程序设计语言性能的讨论程序设计语言的分类与选择程序编码风格,编 码,程序设计语言性能的讨论软件心理学观点(1)一致性:表示语言使用符号的兼容程度、约束条件及语法和语义上的例外等等。(2)歧义性:歧义性导致程序员对程序理解的混乱。(3)简洁性:对用该语言编程的程序员必须记忆的信息量的衡量。(4)局部性和线性:人们的记忆和辨别能力分为联想和顺序两个方面。联想能使我们整体地记住和辨别某件东西。顺序记忆能从回忆序列中找出一个元素。局部性是语言的联想性;线性是语言的顺序性。,编 码,程序设计语言性能的讨论工程观点(1)使设计易于代码翻译;(2)编译程序的功效;(3)源代码的可移植性;(4)开发工具的可利用性;(5)源代码的可维护性。技术性能观点(1)复杂数据结构(2)实时系统(3)特殊应用领域,编 码,程序设计语言的分类(按语言抽象级别分类)低级语言:机器语言,汇编语言高级语言:与机器无关,实现性语言甚高级语言:高抽象级,有用以描述功能的成分,编 码,程序设计语言的分类(按应用领域分类)通用语言专用语言,编 码,程序设计语言的分类(按语言成分性质分类)顺序语言:只含顺序成分并发语言:含有并发成分分布式语言:考虑了分布式计算要求网络语言:考虑了网络计算要求,编 码,程序设计语言的分类(按作用方式分类)命令式语言:不论其描述“做什么”还是“怎样做”,相应描述的组成部分是命令式的,先做什么、后做什么都规定好了明确的次序。作用式语言:从相应的描述中不能明显看出其组成部分执行的先后次序。,编 码,程序设计语言的分类(按描述级别分类)功能性语言设计性语言实现性语言,编 码,程序设计语言的分类(按模拟客观世界的角度分类)对象式语言(面向对象语言)非对象式语言,编 码,程序设计语言的分类(按其它方式分类)函数式语言逻辑式语言,编 码,一般而言,衡量某种程序语言是否适合于特定的项目,应考虑下面一些因素:应用领域算法和计算复杂性软件运行环境用户需求中关于性能方面的需要数据结构的复杂性软件开发人员的知识水平可用的编译系统,编 码,编码风格在很大程度上影响着程序的易读性、易测试性和易维护性,鉴于软件的绝大部分成本消耗在测试和维护阶段,提倡好的编码风格,努力提高易测试性和易维护性极其重要。好的编码风格是在不影响性能的前提下,有效地编排和组织程序,以提高易读性和易维护性。,编 码,为了编制出清晰、紧凑、高效的程序,一般应依次考虑下列原则:(1)编制易于修改和维护的代码(2)编制易于测试的代码(3)必须将编程和编文档的工作统一起来(4)编程中采用统一的标准和约定,降低程序复杂性(5)限定每一层的副作用,减少耦合度(6)尽可能地复用,编 码,编码风格包括以下三个方面:代码文件数据说明语句结构,编 码,代码文件恰当的标识符适当的注解 序言性注解 功能性注解良好的程序视觉组织,编 码,数据说明的简单原则:数据说明的次序应该标准化;当多个变量同时被说明时,应当按字母顺序排列这些变量;若设计时使用了一个复杂的数据结构,则应该用注解说明用程序设计语言实现它的特点和方法。,编 码,语句结构要保持尽可能的简单,应遵循以下原则:程序要清晰直观,不要过于巧妙;用一定的原则指导控制结构的使用;(1)不用空THEN语句;(2)避免THEN-IF结构形式;(3)不要嵌套太深;(4)避免不必要的转移;(5)有原则地使用GOTO;(6)采用标准的结构形式弥补语言的不足。使用括号清晰地表示逻辑表达式和算术表达式;利用加空白或易读的符号来清晰地表示语句的内容;心理换位“如果这个程序不是我写的,我能看懂它吗?”,编 码,程序交互部分的设计指导原则:把计算机的内部特性掩盖起来不让用户看到;使程序穿上“防弹衣”,即保证程序不会被用户所破坏,用户不可能使程序走向不正常的结束;如果用户的请求会产生重大

    注意事项

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

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




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开