资源描述
Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,11/7/2009,#,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,概念,含义,软件,程序、数据和文档,程序,软件开发人员依据用户需求开发的,用某种程序设计语言描述的,能够在计算机中执行的语句序列,数据,师程序能够正常操纵信息的数据结构,文档,与程序开发、维护和使用的有关资料,软件,(Software),是指包括,程序,、,数据,以及,相关文档,的完整组合。,国标定义:,与计算机系统的操作有关的计算机程序、规程、规则以及可能有的文件、文档及数据。,第1页,共67页。,软件工程,(Software Engineering),是在,20,世纪,60,年代末期提出的。这一概念的提出,其目的是倡导以工程的原理、原则和方法进行软件开发,以期解决当时出现的,“,软件危机,”,。,第2页,共67页。,表现,:,软件,需求,的增长得不到满足,软件开发,成本,和,进度,无法控制,软件,质量,难以保证,软件不可,维护,或维护程度非常低,软件成本不断提高,软件开发,生产效率,的提高赶不上硬件的发展和应用需求的增长,(7),软件通常缺少适当的,文档,资料,总之,可以将软件危机归结为,成本、质量和生产率,等问题,实际上几乎,所有软件,都在不同程度,上存在软件危机,.,软件危机,(,Software Crisis,),下一节,第3页,共67页。,5.1,软件工程的基本概念,形成,:,为了摆脱,软件危机,,北大西洋软件组织成员国软件工作者于,1968-1969,年,两次召开会议,认识早期软件开发中所存在的问题和产生问题的原因,提出软件工程的概念,.,目的,:,软件工程是指导计算机软件开发和维护的一门学科,,它应用计算机科学、数学和管理科学等原理,以及借鉴,传统工程,的原则和方法,来创建软件,从而达到提高质量、降低成本的目的。,软件工程:,是研究和应用如何以系统化的、规范的、可度量的方法去开发、运行和维护软件,即把,工程化,应用到软件上。,第4页,共67页。,软件工程是一门交叉学科,软件工程的主要研究内容,软件开发技术,:,软件开发方法学,软件开发过程,软件工具和软件工程环境,软件工程管理,:,软件管理学,软件经济学,软件心理学,软件工程所包含的内容不是一成不变的,,随着人们对软件系统的研制开发和生产的理解。,应用发展的眼光看待它。,第5页,共67页。,软件工程,一种层次化技术,工具,方法,过程,质量焦点,Software engineering layers,软件工程三个要素:,方法、工具、过程,第6页,共67页。,软件工程框架,可,用,性,性,性,确,正,合,算,选取适宜的开发模型,采用合适的设计方法,提供高质量的工程支持,重视软件工程的管理,基本过程,原则,目标,过,程,支,持,过,程,组,织,过,程,第7页,共67页。,软件生命周期,一,.,定义,:,(Software Life Cycle),软件产品从提出、实现、使用维护到停止使用的过程称为软件生命周期。,软件生命周期可以划分为,软件定义、软件开发和软件运行维护,三个时期,每个时期又进一步划分成若干个阶段。,第8页,共67页。,概要设计,可行性研究,与计划制定,需求分析,定义,阶段,详细设计,实现,测试,使用,开发,阶段,维护,运行维,护阶段,退役,确定开发目标和总的要求,给出功能、可靠性等可能方案,制定实施计划,.,对软件需求进行分析并给出详细定义,编写软件规格说明书及初步的用户手册,提交评审。,给出软件的结构、模块和功能的划分等,确定算法。编写概要设计、详细设计说明书和测试计划初稿。,源程序编码,把软件设计转换成计算机可以接受的程序代码。编写用户手册、操作手册和单元测试计划。,设计测试用例,检验软件各个组成部分。编写测试分析报告。,将已交付的软件投入运行,并在运行使用中不断地维护,根据新提出的需求进行必要而且可能的扩充和删改。,第9页,共67页。,第10页,共67页。,5.1.3 软件方法,1.,软件方法,(,1,)明确的工作步骤。,(,2,)具体的文档格式。,(,3,)确定的评价标准。,2.,软件工具:需求分析工具、编码工具、设计工具、编码工具、确认工具、维护工具。,第11页,共67页。,5.2 软件分析,1.,问题定义,2.,可行性研究,3.,需求分析,第12页,共67页。,5.2.2,结构化分析方法,需求分析与需求分析方法,需求阶段是软件开发的,关键,阶段。,需求分析的,任务,:,准确地,定义,未来系统的目标,确定为了满足用户的需求系统必须做什么。用,规范的形式准确地表达用户的,需求,。,第13页,共67页。,结构化分析阶段的工作,(,四方面,),:,需求获取,确定系统各方面需求,全面地提炼出系统的功能性与非功能性需求。,需求分析,编写需求,规格说明书,需求审评,对获取的需求分析和综合,给出系统解决方案和逻辑模型。,为用户、设计人员的交流提供方便,还可作为控制软件开发进程的依据。,复审需求分析阶段的工作,验证需求文档的一致性、可行性等。,第14页,共67页。,5.2.3,结构化分析方法,一、结构化分析方法,(Structure Analysis-SA),1.,定义,:,是面向,数据流,进行,需求分析,的方法,采用,自顶向下,逐层分解,,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。,办理取款手续的数据流图,储,户,检验,付款,登录,存折,帐卡,取款,信息,检验不合格,现款,付款信息,取款单,存折,第15页,共67页。,通过对用户的调查,以软件的需求为线索,,获取当前系统的具体模型,去掉具体模型中非本质因素,,抽象出当前系统的逻辑模型,根据计算机的特点分析当前系统与目标系统的差别,,建立目标系统的逻辑模型,完善目标系统并补充细节,,写出目标系统的软件需求规格说明,结构化分析的主要步骤,第16页,共67页。,二、结构化分析方法使用的常用工具,数据流图,(DFDData Flow Diagram,),数据字典,(DDData Dictionary),判定树,判定表,3.2.2,结构化分析方法,1.,数据流图,(DFD,Data Flow Diagram),(1),作用:,从数据传递和加工的角度,在,需求分析,阶段以,图形,的方式描述数据流从输入到输出的移动变换过程,为系统建立,逻辑模型,。,第17页,共67页。,储,户,检验,付款,登录,存折,帐卡,取款,信息,办理取款手续的,DFD,图,检验不合格,现款,付款信息,取款单,存折,第18页,共67页。,注意,数据流图与程序流程图中的箭头表示的内容相同么?,数据流图中的箭头表示的是,数据流,。,程序流程图中的箭头表示的是,控制流,。,两者有本质不同,不要混淆,第19页,共67页。,1.,数据流图,(DFD,Data Flow Diagram),(1),作用,:,二、结构化分析方法使用的常用工具,3.2.2,结构化分析方法,(2),数据流图中的基本图形符号意义,第20页,共67页。,可以是数据库文件或任何形式的数据组织。,数据加工,:,转换数据流的处理过程,外部实体,:,表示数据的源点或终点,即系统外部的实体。,数据流,:,在转换之间有向流动的数据项或数据集合,数据存储文件,:,箭头向内则表示写入文件 或查询文件,.,箭头向外则表示从文件中,读取,数据或得到查询结果,.,第21页,共67页。,数据流与数据加工之间的关系,第22页,共67页。,数据流图的层次结构,为了表达数据处理过程的数据加工情况,需要采用,层次结构,的数据流图。按照系统的层次结构进行,逐步分解,,并以分层的数据流图反映这种结构关系,能清楚地表达和容易理解整个系统。,在多层数据流图中,,顶层流图,仅包含一个加工,它代表被开发系统。它的,输入流,是该系统的输入数据,,输出流,是系统所输出数据,底层流图,是指其,加工不需再做分解,的数据流图,它处在最底层,中间层流图,则表示,对其上层父图的细化,。它的每一加工可能继续细化,形成子图。,第23页,共67页。,分层的数据流图,第24页,共67页。,基于,计算机,的系统,输入信息,输出信息,外部实体,外部实体,输入信息,外部实体,外部实体,外部实体,输出信息,输出信息,第25页,共67页。,结构化分析方法步骤示例,商店业务处理系统,首先确定系统的输入和输出,根据商店业务,画出,顶层数据流图,,以反映最主要业务处理流程,第26页,共67页。,结构化分析方法步骤示例,商店业务处理系统,顶层数据流图,第27页,共67页。,结构化分析方法步骤示例,商店业务处理系统,经过分析,商店业务处理的,主要功能,应当有,销售,、,采购,、,会计,三大项。,主要数据流输入的源点,和,输出终点,是,顾客,和,供应商,。,然后从输入端开始,根据商店业务工作流程,画出数据流流经的各加工框,逐步画到输出端,得到第一层数据流图,第28页,共67页。,第一层数据流图,第29页,共67页。,加细每一个加工框,销售细化,第30页,共67页。,采购细化,第31页,共67页。,2.,数据字典,(1),定义,是所有与系统相关的,数据元素,的一个有组织的列表,,以及精确、严格的,详细定义,。,(2),作用,对,DFD,中出现的被命名的图形元素的确切解释,,数据词典与数据流图配合,能清楚地表达数据处理的要求。,二、结构化分析方法使用的常用工具,3.2.2,结构化分析方法,第32页,共67页。,2.,数据字典,二、结构化分析方法使用的常用工具,3.2.2,结构化分析方法,(,3,)数据字典的组成,数据项:,是数据的最小单位;,数据结构:,是若干数据项的有意义的集合;,数据流:,可以是数据项,也可以是数据结构,表示某一个处理过程的输入或输出;,数据存储:,处理过程中存取的数据,常常是手工凭证、手工文档或计算机文件。,处理过程:,第33页,共67页。,(,4,)数据字典定义符号,符号,含 义,例 子,=,被定义为,+,与,x=a+b,,则表示,x,由,a,和,b,组成,x=a,b,,,则表示,x,由,a,或由,b,组成,或,重复,x=a,,,则表示,x,由,0,个,或多个,a,组成,(),可选,表示在两个,*,之间的内容为词条的注释,m,n,重复,x=3a8,,则表示,x,中至少出现,3,次,a,最多出现,8,次,*,*,注释符,x=(a),,,则表示,a,在,x,中出现,也可不出现,x=1.9(x,可取,1,到,9,中任意一个值,),.,连接符,第34页,共67页。,某程序设计语言规定,用户说明的标识符是长度不超过,8,个字符的字符串,其中第一个字符必须是字母字符,随后的字符既可以是字母字符也可以是数字字符。,标识符,=,字母字符,+,字母数字串,字母数字串,=0,字母或数字,7,字母或数字,=,字母字符数字字符,数据字典中定义数据例:,第35页,共67页。,增量方式和非增量方式区别是什么?那种更好?,白盒测试原则及测试用例,根据软件是否需要被执行,x=a,b,则表示 x 由 a 或由 b 组成,日“01”.,保证所测模块中每一独立路径至少执行一次,系统测试:,面向数据结构的设计方法,软件需求:解决“做什么”,姓名1字母8,例:若数据流图中有“员工登记单”数据存储文件,则在数据字典中此条目可描述为:,加细每一个加工框 销售细化,软件设计的方法的种类:,是所有与系统相关的数据元素的一个有组织的列表,以及精确、严格的详细定义。,设计阶段主要结果:模块说明书,是研究和应用如何以系统化的、规范的、可度量的方法去开发、运行和维护软件,即把工程化应用到软件上。,例:若数据流图中有,“,员工登记单,”,数据存储文件,则在数据字典中此条目可描述为:,员工登记单员工编号,姓名职务聘用日期,员工编号,“,0001,”,.,“,9999,”,姓名,1,字母,8,职务,5,字母,20,聘用日期年,+,月,+,日,年,“,00,”,.,“,99,”,月,“,01,”,.,“,12,”,日,“,01,”,.,“,31,”,第36页,共67页。,存折格式,第37页,共67页。,存折户名所号帐号开户日性质,(,印密,),1,存取行,50,户名,2,字母,24,所号“,001”.“999”,帐号“,00000001”.“99999999”,开户日年月日,性质“,1”.“6”,注:“,1”,表示普通户,“,5”,表示工资户等,印密“,0”,注:印密在存折上不显示,存取行日期(摘要)支出存入余额操作复核,第38页,共67页。,购,书,单,发票,领书,单,审查并,开发票,开领,书单,无效书单,学生,1,2,各班学生,用 书 表,举例:,学生,教材存量表,第39页,共67页。,数据流,条目说明举例,数据流名,:,购书单,别名,:,无,简述,:,学生购书时填写的项目,来源,:,学生,去向,:,加工,1“,审查并开发票”,组成,:,(,学号,),姓名书号数量,数据流量,:,1000,次,/,周,高峰值,:,开学期间,1000,次,/,天,第40页,共67页。,3.,判定树,使用判定树进行描述时,应分清哪些是判定的,条件,,哪些是判定的,结论,,并找出,判定条件之间的,从属关系、并列关系、选择关系,根据它们构造判定树。,优点:,更加直观,易于理解和使用,二、结构化分析方法使用的常用工具,3.2.2,结构化分析方法,第41页,共67页。,检,查,发,货,单,金额,$500,金额,$500,欠款,60,天,不,发出批准书,欠款,60,天,发货单,发出批准书、,欠款,60,天,发出批准书、,发货单及赊欠报告,欠款,60,天,发出批准书、,发货单,以“检查发货单”为例,第42页,共67页。,用判定树表示计算行李费的算法,第43页,共67页。,4.,判定表,(1),使用条件:,当数据流图中的加工要依赖于,多个,逻辑条件的取值时,(,该加工的一组动作是由于某一组条件取值的组合而引发的,),,使用判定表描述比较适宜,.,(2),判定表的组成,(,四部分,),:,基本条件,:,各种可能的条件,条件项,:,各种可能的条件组合,基本动作,:,所有的操作,动作项,:,对应的条件组合下所选的操作,二、结构化分析方法使用的常用工具,3.2.2,结构化分析方法,第44页,共67页。,第45页,共67页。,以“检查发货单”为例,第46页,共67页。,验证软件的功能和性能及其他特性是否满足了需求规格说明中确定的各种需求,以及软件配置是否完全正确。,软件工具和软件工程环境,可以是数据库文件或任何形式的数据组织。,数据结构:是若干数据项的有意义的集合;,这一概念的提出,其目的是倡导以工程的原理、原则和方法进行软件开发,以期解决当时出现的“软件危机”。,(2)中级职称且教学评估优秀的奖励800元,教学效果评估合格的奖励500元;,印密“0”注:印密在存折上不显示,软件工程管理:软件管理学,(2)具体的文档格式。,可能地多发现程序中的错误,x=a,b,则表示 x 由 a 或由 b 组成,数据流与数据加工之间的关系,1,2,3,4,5,6,职称,高,高,中,中,初,初,评估结果,优秀,合格,优秀,合格,优秀,合格,1000,800,500,0,某学校对教职工拟定奖励策略如下:(,1,)高级职称且教学评估优秀的奖励,1000,元,教学效果评估合格的奖励,800,元;(,2,)中级职称且教学评估优秀的奖励,800,元,教学效果评估合格的奖励,500,元;(,3,)初级职称且教学评估优秀的奖励,500,元。要求画出奖励策略的判断表。,举例,第47页,共67页。,3.3,结构化设计方法,3.3.1,软件设计过程及原则,软件需求:解决,“,做什么,”,软件设计:解决,“,怎么做,”,软件设计的任务,:,映射,问题结构,(,软件需求,),软件结构,从软件需求规格说明书出发,形成软件的具体设计方案。,第48页,共67页。,设计阶段主要结果:模块说明书,模块说明书,(,1,)模块结构图,(,2,)模块的功能说明,5.3,软件设计,第49页,共67页。,软件设计过程:,编码,测试,设计,信息描述,功能描述,行为描述,其他需求,总体结构设计,数据设计,过程设计,程序模块,集成并确,认的软件,-,-,软件开发阶段,的信息流,3.3,结构化设计方法,3.3.1,软件设计过程及原则,第50页,共67页。,3.3.2,结构化设计方法,1.,软件设计的方法,:,开发阶段,设计软件时所使用的方法,注意区别:,结构化分析方法是,定义阶段,需求分析过程中所使用的方法,。,2.,软件设计的方法的种类,:,结构化设计方法,面向数据结构的设计方法,面向对象的设计方法,第51页,共67页。,3.3.2,结构化设计方法,3.,结构化设计方法,(SD-Structured Design),结构化设计方法是基于,模块化,、,自顶向下,细化、结构化程序设计等程序设计技术基础发展起来的。,基本思想:,将软件设计成由相对独立且具有单一功能的模块组成的结构,,分为,概要设计,和,详细设计,两个阶段,.,结构化设计过程的,概要设计,阶段的描述工具是:,结构图,(,SC-Structure Chart,),第52页,共67页。,概要设计也称为,结构设计,或,总体设计,,主要任务是把系统的功能需求分配给软件结构,形成软件的,模块结构,图,如图,3.3.2,结构化设计方法,第53页,共67页。,结构化设,计的,目的,使,程序的结构,尽可能反,映要解决的,问题的结构,结构化设,计的,任务,把需求分析得到的,数据流图,DFD,变换为,系统结构图,(,SC),。,结构化设计的目的与任务,3.3.2,结构化设计方法,第54页,共67页。,5.4,软件测试,软件测试的目的与原则,软件测试,是为了,发现错误,而执行程序的过程。或者说,软件测试是根据软件开发各阶段的规格说明和程序 内部结构而精心设计的一批测试用例(即输入数据及预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误的过程,。,为了发现尽可能多的缺陷,不是为了说明软件中没有缺陷,第55页,共67页。,测试目的:,可能地多,发现,程序中的错误,测试用例,的选择原则,:,选择发现错误可能性大的数据,3.4,软件测试,软件测试的目的与原则,第56页,共67页。,软件测试准则,(,六点,),:,(1),所有测试都应追溯到需求。,(2),严格执行测试计划,排除测试的随意性。,(3),充分注意测试中的群集现象。,80,的缺陷聚集在,20,的模块中,(4),程序员应避免检查自己的程序。,(5),穷举测试不现实。,(6),妥善保存测试计划、测试用例、和最终分析报告等。,第57页,共67页。,软件测试方法,研究内容:,如何用最少的测试用例集合来测试出程序中更多的潜在错误。,关键技术:,如何进行彻底的测试,如何设计测试用例等。,测试分类:,根据软件是否需要被执行,按照功能划分,静态测试,动态测试,黑盒测试,白盒测试,第58页,共67页。,也叫,玻璃盒测试,、,结构,测试或,逻辑驱动,测试,对软件的过程性细节做细致的检查。这一方法是把测试对象看作一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,来设计或选择测试用例,,对程序所有逻辑路径,进行测试。,白盒测试,是在,程序内部,进行,主要用于完成软件内部操作的验证。,2.,白盒,测试,通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。因此白盒测试又称为,结构测试或逻辑驱动测试,。,白盒测试,第59页,共67页。,白盒测试,的原则,保证所测模块中每一独立路径至少执行一次,保证所测模块所有判断的每一分支至少执行一次,保证所测模块每一循环都在边界条件和一般条件下至少各执行一次,验证所有内部数据结构的有效性,白盒测试局限性,:,是,穷举路径,测试,贯穿程序独立路径数是天文数字,即使每条路径都经过了测试,仍可能有未发现错误。,白盒测试的主要方法:逻辑覆盖测试、基本路线测试,白盒测试原则及测试用例,第60页,共67页。,白盒测试用例设计,:,逻辑覆盖测试:以程序内部的逻辑结构为基础的测试用例设,计技术。,程序中的,逻辑表示,有:判断、分支、条件等几种表示方式。,发现错误,的能力,标 准,含 义,1(,弱,),语句覆盖,每条语句至少执行一次,2,判定覆盖,每一判定至少都能获得一次,”,真值,”,和,”,假值,”,的机会,3,条件覆盖,对于每个判定中所包含的若干个条件中的每一个条件都取得,“,真,”,和,“,假,”,两个不同的结果,4,判定,/,条件覆盖,同时满足判定覆盖和条件覆盖的要求,5(,强,),条件组合覆盖,求出判定中所有条件的各种可能组合,值,每一可能的条件组合至少执行一次,逻辑覆盖测试的标准,第61页,共67页。,也叫,功能测试,或数据,驱动,测试,被测软件看作一个,不透明,的黑盒子,在,软件接口,处进行,完成功能的验证。,黑盒测试,完全不考虑程序内部的逻辑结构和内部特性,。,黑盒测试,(Black Box Testing),3.,黑盒测试、,黑盒测试原则及测试用例,黑盒测试方法是在程序接口上进行测试,主要是为了发现以下错误,:,1),是否有不正确或遗漏了的功能,?,2),在接口上,输入能否正确地接受,?,能否输出正确的结果,?,3),是否有数据结构错误或外部信息,(,例如数据文件,),访问错误,?,4),性能上是否能够满足要求,?,5),是否有初始化或终止性错误,?,第62页,共67页。,软件测试的实施,软件测试的实施主要有三个步骤:,1.,模块测试,2.,联合测试,3.,验收,部件,代码,部件,代码,单元测试,单元测试,单元测试,部件,代码,集成测试,性能测试,确认测试,系统测试,安装测试,设计,规格说明,系统,功能需求,其他,软件需求,用户需求,规格说明,用户,环境,集成后,的模块,被接受,的系统,在使用中的系统,测试后,的模块,第63页,共67页。,1.,单元测试:,技术:,静态分析和动态测试,说明:,单个模块通常不是独立的程序,不能运行。必须在真实或模拟环境下进行。模拟环境中为被测模块设计和搭建驱动模块和桩模块。,驱动模块:,相当于被测模块的主程序。它接收测试数据,并传给被测模块,输出实际测试结果。,桩模块:,用于代替被测模块调用的其他模块,仅做少量的数据操作,不必将子模块的所有功能带入。,也称,模块测试,,对模块,(,软件设计最小单位,),进行正确性检验的测试,以期尽早发现各模块内部可能存在的各种错误。,驱动模块,桩模块,1,被测模块,桩模块,2,桩模块,3,黑盒,or,白盒?,第64页,共67页。,2.,集成测试:,也称,组装测试,,把模块在按照设计要求组装起来的同时进行测试,主要目的是发现与接口有关的错误。,采用方式,(,模块组装成程序,),:两种,(1),非增量方式,(2),增量方式,自顶向下,自低向上,混合增量,通常采用黑盒,增量方式和非增量方式区别是什么?那种更好?,第65页,共67页。,3.,确认测试:,验证软件的功能和性能及其他特性是否满足了需求规格说明中确定的各种需求,以及软件配置是否完全正确。,实施:,先用黑盒测试,验证被测软件是否满足需求规格说明确认的标准。再复审保证软件配置齐全。,4.,系统测试:,将通过测试确认的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、人员等其他系统元素组合在一起,在实际运行环境下对计算机系统进行一系列的集成测试和确认测试。,目的:,是在,真实的,系统工作环境下检验软件是否能与系统正确连接,发现软件与系统需求不一致的地方。,第66页,共67页。,在软件已经交付使用后,为了改正错误或满足需要而修改软件的过程。,软件维护:,软件维护类型:,正确性维护、适应性维护,完善性维护、预防性维护,第67页,共67页。,
展开阅读全文