资源描述
,单击此处编辑母版标题样式,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,软件工程,Software Engineering,主讲:郑有才,单位,:,软件学院,(,软件工程研究所,),教材:实用软件工程,中 郑人杰 殷人昆 陶勇雷,清华大学出版社出版,1,软件工程(,教学内容),概述,第一章 软件工程概论,第二章 系统分析,第三章 软件需求分析,第四章 软件设计,第五章 用户界面设计,第六章 程序编码,第七章 软件测试,第八章 软件维护,第九章 软件工程标准化与软件文档,第十章 软件项目管理与计划,2,软件工程,参考书:,1.软件工程技术概论 中朱三元 等,2.软件工程 美,Shari Lawrence Pfleeger,全英,3.软件项目管理,美,Philip Metzger,中译,4.,软件开发的滑铁卢 美,Robert L.Glass,中译,5.,现代软件工程(上)管理技术篇,中周之英,科学出版社,6.,软件工程学教程,中,周苏 王文,科学出版社,3,软件工程(序一,),1 软件产业,软件产业是一个朝阳的、新兴的知识型产业。一个国家软件业的发达程度,同样体现了国家的综合国力,决定着国家未来的国际竞争地位。,目前,中国的软件企业正处于高速发展、急需规范管理并以项目为主导的环境中。企业每天所面对的不仅仅是几个越来越多的大型项目,而将是成百上千不断发生和进行的项目。产生这种变化的因素是多方面的,这包括客户需求的不断提高导致产品生命周期缩短;产品开发项目数量大增;新技术的引入;为了提高业务赢利能力,改进业务模式的项目大增等。在这种多项目并发、技术含量高、变化速度快、资源有限的环境下,如何对企业、项目、资源实施科学的管理,加强团队能力,实现软件企业生产的规模化、规范化、国际化,是当前我国软件业面临的最大挑战。,调查表明,大约70%的软件开发项目超出了估算的时间,大型项目平均超出计划时间20%到50%,90%以上的软件项目开发费用超出预算,并且项目越大,超出项目计划的程度越高。,4,软件工程(序二),1 软件产业(续),中国目前软件企业的落后状况,实际上已不是技术本身的问题,而是科学管理的问题,软件工程理论与软件项目管理的实际应用与经验,是我国软件企业急待学习和渴望的。中国软件业在各个层次上的管理问题,目前已经制约了中国软件走向国际化的进程。(以上观点出自:信息产业部电子信息产品管理司司长,中国软件行业协会副理事长 陈冲,)。,2 差距,根据印度全印软件服务公司协会统计,2000年至2001年度印度计算机软件出口额达到62亿美圆,比上一年度增长55%。在全球软件开发市场中占据份额为16.7%,出口软件在国际软件市场的占有率接近20%,仅次于美国。在世界银行对各国出口软件能力的调查中,印度软件的出口规模、质量、成本三项指标位居世界首位。比尔.盖茨曾宣称,未来的软件超级大国不是美国,不是日本,也不是欧洲,而是印度。欧洲的农牧业国家爱尔兰也充分抓住了世界信息技术发展的机遇,推动软件产业的发展,经过近10年的发展,其信息产业的发展水平已经走在了世界前列。,和印度比,我国的软件产业总产值只相当于印度的1/3,而软件出口额则只有印度的1/40。,(以上数据出自:北京现代卓越管理技术交流中心 陈勇强,)。,5,软件工程(序三),3 思考,西方发达国家在软件行业的发展初期也吃了重技术轻管理的苦头,付出了高昂的代价。如前所述,印度虽然综合国力并不很强,但软件行业也成为其支柱产业之一,成为世界公认的软件大国。中国如此之大,人才济济,为什么不能超过印度?本人认为除了国家应该在政策方面给予倾斜外,一个重要的方面就是软件行业自身如何提高软件项目管理水平?,4 解决,1)国家政策的倾斜:主要体现在三个方面,(1)自主软件,(2)软件企业的税收优惠,(3)软件管理层人才的培养-35所软件学院,2)软件项目管理水平的提高,最原始的,也是最有效的-软件工程和管理人才的培养,6,第一章 软件工程概述(1),1.1 软件的定义,软件是程序、数据及其相关文档的集合,。,程序:按事先设计的功能和性能要求执行的指令序列。,数据:使程序能正常操纵信息和正确运行的的数据结构。,文档:与程序开发、维护和使用有关的图文资料。,1.2 软件的特点,1.软件是一种逻辑实体,而不是具体的物理实体。具有抽象性。,无法看到软件的形态,必须通过观察、分析、思考、判断了解它的,功能、性能和其它特性。,2.,软件没有明显的生产过程。可复制性。,引发的问题:软件的质量控制在开发过程中进行;产品保护。,7,第一章 软件工程概述(1),软件的定义,(,图示,),软件,程序,文档,数据,源程序,目标程序,输入数据,输出数据,报告书,设计书,说明书,功能说明书,使用说明书,维护说明书,8,第一章 软件工程概述(2),3.,软件没有磨损和老化,存在退化问题。,(,Software Engineering,Theory and Practice P464),A whiledo constructs do not wear out after 10,000 loops and semicolons do not fall off the ends of statement.,失效率(,U,型),退化原因(适应软件环境、用户需求),引发维护问题。,4.,软件开发和运行常常受到计算机系统的限制(系统依赖性),。,引发移植性问题。,U,时间,失效率,磨和调整,磨损用坏,硬件失效曲线,9,第一章 软件工程概述(,3,),.,软件开发至尽尚未完全摆脱手工艺方式,。,引发软件工程、软件重用、自动化生成等技术。,时间,失效率,实际曲线,理想曲线,软件失效率曲线,修改点,10,第一章 软件工程概述(,4,),.,软件是高度的复杂系统,有人认为:人类能够创造的最复杂的产物是计算机软件。,其复杂性来自于它反映的问题的复杂性。软件技术滞后。,.,软件成本是相当昂贵的,软件的研制要投入大量的、复杂的、高强度的脑力劳动。,.,软件工作是涉及到社会因素,如:企业管理软件(人、制度、业务流程等),法律因素,年份,成本,100,1995,软件,硬件,11,第一章 软件工程概述,(5),1.3,软件的发展与软件危机,1.,软件发展,(,三各阶段,教材,P.7),2.,软件危机,1),诱因,(1),软件开发无计划性,(2),软件需求不充分,(,变化,),(3),软件开发过程无规范,(4),软件产品无评测手段,2),主要表现,(1),经费预算上升,完成时间一再拖延,(2),开发软件不满足用户需求,(3),可维护性差,(4),没有软件质量保证体系,软件可靠性差,3),主要原因 软件的研制和维护本身是工程性任务,但软件人员所采用的方法却未能工程化。,4),结果 软件危机,5),解决的办法:,60,年代末,70,年代初,兴起,“,软件工程,”,。,12,第一章 软件工程概述,(6),1.4,软件工程过程和软件生存周期,1.,软件过程,定义,:,软件工程过程是再获取、供应、开发、操作和维护软件时,要实施的活动和任务。,主要过程,:获取过程、供应过程、开发过程、操作过程、维护过程、管理过程和支持过程。,2.,软件生存期,定义:,指一个软件从立项开始,经过制造、测试、使用、维护直到废弃为止的整个时期。,阶段:,6,阶段(教材,p.10,),8,阶段(国家标准)(计算机软件开发规范),1,)可行性研究与计划;,2,)需求分析;,3,)概要设计;,4,)详细设计;,5,)实现;,6,)综合测试;,7,)确认测试;,8,)使用和维护。,13,第一章 软件工程概述,(7),3.,软件生存期模型,1,)瀑布模型(,W.Royce 1970,),可行性研究与计划,需求分析,设计,实现,测试,使用和维护,计划,开发,33,维护,67,20,15,20,45,14,第一章 软件工程概述,(8),1.5,软件工程的基本目标,1.,软件工程定义,定义,:,B.Boehm,运用现代科学技术知识来设计并构造计算机程序及为开发、运行、管理和维护这些程序所必须的相关文件资料。,IEEE 1983,:对软件开发、运行、维护和退役的系统研究方法。,软件工程学教程,陈明:,软件工程是指导计算机软件开发和维护的一门学科。它采用工程的概念、原理、技术和方法,把经过时间考验而证明是正确的管理技术和当前能够得到的最好的技术方法结合起来,用于软件开发和维护。,2.,软件工程的基本目标,1,)付出较低的开发成本;,2,)达到要求的软件功能;,3,)取得较好的软件性能;,4,)开发的软件易于移植;,5,)需要较低的维护费用;,6,)按时完成开发,及时交付。,(目标的互斥性),15,End of Chapter One,Thanks,2/9,2004,16,第二章 系统定义与计划(1),系统定义与计划,系统的概念,可行性研究,项目开发计划,研究报告,具体步骤,成本效益,系统流程,主要任务,17,第二章 系统定义与计划(,2,),第一节 系统的概念,一、基于计算机的系统,二、,计算机系统工程,1.,项目考虑,2.,商业考虑,3.,技术分析,4.,生产评估,5.,人员问题,6.,环境界面,7.,法律考虑,三、,硬件和硬件工程,四、,软件和软件工程,18,第二章 系统定义与计划(,3,),第二节 可行性研究,1.,经济可行性,2.,技术可行性,3.,社会可行性,4.,抉择,附件,1.,教学附件,(,可行性研究报告,),附件,2.,计算机软件开发文档编写指南,19,第二章 系统定义与计划(,4,),第三节 项目开发计划,附件,1.,教学附件,(,项目开发计划,),20,第二章 系统定义与计划(,5,),第四节 成本效益分析,第十三章 项目管理一章详细论述,21,End of Chapter Two,Thanks,4/9,2003,22,第三章 软件需求分析,软件需求分析,需求分析概述,Sa,方法,基本任务,需求规格说明书,基本概念,描述工具,分析步骤,分析策略,加工逻辑,数据流图,数据字典,23,第三章 软件需求分析,第一节 需求分析的基本任务,需求分析,需求规格说明书等,What want to do?,功能,性能,限制,分析员,用户,领域专家,24,第三章 软件需求分析,当前系统,模型化,物理模型,逻辑模型,具体化,物理模型,实例化,抽象化,逻辑模型,目标系统,理解需求,表达需求,做什么,?,怎么做,?,25,第三章 软件需求分析,第二节 需求分析的过程,一、问题识别,1.,功能需求,2.,性能需求,3.,环境需求,4.,可靠性需求,5.,安全保密需求,6.,用户界面需求,7.,资源使用需求,8.,软件成本需求,9.,开发进度需求,10.,产品交付需求,26,第三章 软件需求分析,二、分析与综合,1.,功能的可实现性,2.,性能可实现性,3.,环境可满足性,4,可靠性可保证性,5.,安全保密可实现性,6.,用户界面合理性,7.,资源可用性,8.,软件成本可行性,9.,开发进度可行性,10.,产品交付及时性,目标系统解决方案,27,第三章 软件需求分析,三、编制需求文档,需求规格说明书等,四、需求评审,28,第三章 软件需求分析,第三节 需求分析原则,一、表达和理解问题的数据域和功能域,所有软件开发工作最终是对数据形式的一种转换。其转换过程历经:输入、加工、结果呈现三个阶段。,需求分析是对软件的,数据域,和,功能域,的分析表示方法。即提供一种功能和数据表示机制,确定软件的功能和其他特性。最终建立系统的逻辑模型。,数据域有三种属性:,数据流、数据内容、数据结构。,例:学籍管理系统中的学生名册数据。,数据内容:班级、人数、学生:学号、姓名、性别、成绩等,数据结构:逻辑组织形式(线性表、层次、网),数据流:网上招生作为原始数据,29,第三章 软件需求分析,二、自顶向下、逐步求精(,Top-Down,Refine-By-Step),),数据转换机制,功能分解机制,30,第三章 软件需求分析,第四节 需求分析方法,一、概述,需求分析方法是对软件的,数据域,和,功能域,的分析表示方法。即提供一种功能和数据表示机制,确定软件的功能和其他特性。最终建立系统的逻辑模型。,二、结构化分析方法(,70,年代末,,Yourdon E.etc,),1.,范围:数据处理类型,2.,特点:图形表示需求。清晰、简明、易学,3.,要点:按照软件内部数据转换关系、自顶向下原则逐步分解,达解。,4.,方法:,DeMarco,:数据流图、数据字典、结构化英语、判定数、判定表,31,第三章 软件需求分析(,8,),1.,事务处理:银行取款的数据流图,第一部分 数据流图(,DFD Data Flow Chart,),储户,检验,登录,付款,取款信息,帐卡,存折,存折,取款单,检验问题,日历,付款信息,现金,32,第三章 软件需求分析(,9,),2.DFD,方法的图形部件与图标(,Icon,),1,)数据流:箭头所示的数据通道,2),加工:动词断语,3,)数据源点、数据汇点,4,)数据存贮文件,为了表示更复杂的加工和数据处理关系,引入其他数据流图符号。,3.,数据流图的的画法,1,)先找数据源点和汇点(数据、接口、表示),2,)外部数据源(接口、表示、传输),3,)列举加工,4,)逐层求精,例子,:(,综合服务平台,),5,)检查与修改(,P.56,),33,第三章 软件需求分析(,10,),第二部分,.,数据字典,1,定义:定义数据流图中每一个命名的图形元素。,2,方法:,1,)数据流词条描述,数据名称:,说 明:简要介绍作用:即产生的原因和结果,数据流来源:,数据流去向:,数据流组成:,数据量和流通量:,34,第三章 软件需求分析(,11,),第二部分,.,数据字典,2,)数据元素词条描述,数据元素名称:,类型:数字(离散、连续)、文字(编码类型),长度:,取值范围:,相关的数据元素及数据结构:,35,第三章 软件需求分析(,12,),第二部分,.,数据字典,3,)数据文件词条描述,数据文件名称:,简 述:,输入数据:,输出数据:,数据文件的组成:数据结构,存储方式:顺序、直接,存取频率:,存储量:,36,第三章 软件需求分析(,13,),第二部分,.,数据字典,4,)加工逻辑词条的描述,加工名:,加工编号:,简要描述:,输入数据流:,输出数据流:,加工逻辑(程序、顺序、性能):,37,第三章 软件需求分析(,14,),第二部分,.,数据字典,5,)源点及汇点词条描述,外部实体名:,简要描述,数目,38,第三章 软件需求分析(,15,),第三部分:数据字典的作用,1,数据查找,2,数据驱动(元数据改变程序行为),3,数据维护(系统维护、,0,编译),实例说明,39,第三章 软件需求分析(,16,),第四部分:数据结构的描述方法,1,定义式,1,)定义式记号系统,2,)实例,存折户名所号帐号开户日性质(印密),1,存取行,50,户名,2,字母,24,所号,“,001,”,.,“,999,”,帐号,“,000000001,”,.,“,999999999,”,(,九位,),开户日年月日,性质,“,1,”,.,“,6,”,40,第三章 软件需求分析(,17,),第四部分:数据结构的描述方法,2 Warnier,图(层次结构图),报纸,头版,社论,副刊,头条,国内,本地,41,第三章 软件需求分析(,18,),第五部分:加工逻辑说明,1,三点要求,1,)每一个基本加工,必须有一个加工说明,2,)描述:数据输入、数据输出、加工规则,3,)描述加工策略不描述加工细节,2,方法,1),结构化英语,2,)判定表,3,)判定树,开户日年月日,性质,“,1,”,.,“,6,”,42,第三章 软件需求分析(,19,),第四节 系统动态行为分析,一、状态迁移图,1.,记号:,表示可得到的系统状态,表示状态间的迁移,2.,例 操作系统中进程调度,状态,1,:就绪(,Ready,),:,等待分配,CUP,状态,2,:运行(,Running,),:CPU,正在处理,状态,3,:等待(,Wait,),:,放弃,CPU,事件定义:,t1:,因,I/O,等事件发生而要求中断,t2:,中断事件已处理,t,表示状态迁移的驱动事件,43,第三章 软件需求分析(,20,),2.,例 操作系统中进程调度,事件定义:,t3:,分配,CPU,t4:,已分配的,CPU,时间,状态迁移图:,运行,就绪,等待,t3,t4,t1,t2,44,第三章 软件需求分析,DFD,设计实例(,21,),视频监控系统,顶层:一个加工,定义了系统输入和输出,视频监控系统,用户操作信息,t4,监控记录,监控结果,用户,备份外设,45,第三章 软件需求分析,DFD,设计实例(,22,),0,层:加工的分解,整体功能的描述,进行实时监控,3,要求监控的命令,查询结果,要求查询的记录,按条件查询,记录,身份验证,操作选择,视频数据库,查询条件,视频文件,监控现场,无效身份,验证通过,用户操作信息,日志文件,报表打印,46,第三章 软件需求分析,DFD,设计实例(,23,),1,层:加工,3,的描述,云台控制,3.2,转动云台命令,画面切换,3.3,响应命令,3.1,移动侦测,3.4,画面设置,3.5,报警条件,监控现场,选择画面命令,监控命令,画面设置命令,47,End of Chapter Three,Thanks,5/9,2004,48,第四章 软件设计(1),软件设计,基本任务,设计方法,数据库设计,模块化、抽象、信息隐蔽,数据结构设计,Jackson,设计方法,结构化设计方法,基本原理,设计优化,设计评审,设计文档,模块独立性,软件结构图,设计优化准则,49,第四章 软件设计(,2,),第一节 软件设计的任务和目标,软件设计,设计说明书(概要、详细、数据、用户手册、初测计划),How to do?,制定规范,系统结构总体设计,处理方式设计,设计人员,需求分析结果,数据保护设计,数据结构设计,可靠性设计,编写设计文档,设计评审,50,第四章 软件设计(,3,),阅读理解需求规范,设计文档编制规范,信息编码规范,一、制定规范,51,第四章 软件设计(,4,),设计方法选取,模块功能的确定,模块间的调用关系,二、系统结构的总体设计,模块划分质量的评估,模块间的接口,52,第四章 软件设计(,5,),算法选取、评估,算法性能,周转时间,三、处理方式的设计,吞吐量,响应时间,精度,53,第四章 软件设计(,6,),输入、输出数据结构,算法所需数据结构及操作,数据结构的影响范围,四、数据结构设计,数据结构使用规则,54,第四章 软件设计(,7,),防卫性设计,一致性设计,完整性设计,五、数据的保护性设计,冗余性设计,55,第四章 软件设计(,8,),概要设计说明书,详细设计说明数,用户手册,六、编写设计文档,初步测试计划,56,第四章 软件设计(,9,),可追溯性,接口,风险,七、设计评审,使用性,可维护性、质量、各种选择方案、限制,57,第四章 软件设计(,10,),第二节 软件设计基础,将软件的体系结构按自顶向下方式,对各个层次的过程细节和数据逐层细化,直到用程序设计语言能够实现为止,从而最后确立整个体系结构。,一、自顶向下、逐步细化,(Top_Down Refine_By_Step,Niklaus Wirth),58,第四章 软件设计(,11,),实例:软件功能的自顶向下,逐步细化,常规业务,活期,定期,定活两便,存本取息,零存整取,开户,存款,取款,清户,59,第四章 软件设计(,12,),软件结构,:,程序模块的层次结构,和,数据结构,两部分。,1.,程序结构(不同的软件设计 方法,可得到不同的软件结构),(,1,)程序的树状结构和网状结构,(,2,)结构图(,Structure Chart,),:,精确表示程序结构的图示方法。,1,)模块:程序中单独命名和可编址部分,2,)模块间的调用关系和接口,3,)模块间的信息传递,4,)两个辅助符号,5,)结构图的形状特征,1,)结构的深度,2,)结构的宽度,3,)结构的扇入和扇出,二、软件结构(,Top-Down Refine-By-Step,),60,第四章 软件设计(,13,),2.,数据结构(数据的各个元素之间的逻辑关系的一种表示),主要设计内容:,1,)组织、存储方式,2,)相关程度,3,)处理方法,4,)两个辅助符号,数据结构课程,3.,模块化,1,)模块的大小,2,)模块的数量,下图关系说明。,二、软件结构(,Top_Down Refine-By-Step,),61,第四章 软件设计(,14,),总的软件成本,最小成本范围,模块数大小减小,模块数增加,模块个数 模块数,/,模块大小,联接成本,成本,/,模块,成本和工作量,62,第四章 软件设计(,15,),4.,抽象化(设计的每一步均可视为抽象,只虑共性,不虑细节),(一)过程抽象,例:绘图软件,1,)抽象层次一:处理环境术语描述,绘图功能:直线、折线、矩形、园等,2,)抽象层次二:任务描述(英语加注释),CAD SOFTWARE TASKS:CAD,软件任务,User Interaction tasks;,用户交互任务,2-D drawing creation tasks;,二维图形产生任务,Graphics display task;,图形显示任务,Drawing file management tasks,图形文件管理任务,END.,结束,3,)抽象层次三:程序过程实现,参考教材,P.87,二、软件结构(,Top_Down Refine-By-Step,),63,第四章 软件设计(,16,),软件结构,:,程序模块的层次结构和数据结构两部分。,4.,抽象化(设计的每一步均可视为抽象,只虑共性,不虑细节),(二)数据抽象,参考教材,P.88,5.,模块的独立性,(,一,),模块的定义,(二)模块独立性的定义,(三)耦合性(相互关联),二、软件结构(,Top Down Refine-By-Step,),非直接耦合,数据耦合,标记耦合,控制耦合,外部耦合,公共耦合,内容耦合,高,低,耦合性,64,第四章 软件设计(,17,),5.,模块的独立性,(,四,),七种耦合关系实例介绍,(五)内聚性,(六)七种内聚实例介绍,功能内聚,信息内聚,通信内聚,过程耦合,时间内聚,逻辑内聚,巧合内聚,低,内聚性,高,65,第四章 软件设计(,18,),第三节 软件设计方法,(SD),1.,构图模块(,4,种),1,)传入模块,2,)传出模块,3,)变换模块,4,)协调模块,2.,变换型系统结构图及其设计,3.,事务型系统结构图及其设计,二、模块设计的改进,三、设计后处理,1,)处理说明,2,)接口说明,3,)数据结构说明,一、系统结构图,66,第四章 软件设计(,19,),第四节 数据设计及文件设计,一、数据设计的原则(,R-S-Pressman,),1.,任务,1,)确定逻辑数据结构、算法、操作,2,)操作的程序模块,2.,原则(,7,条),二、数据结构的选择,三、文件的设计,1,文件设计过程,2,文件存储媒体的选择,3,确定文件的组织方式,4,确定记录的布局,67,第四章 软件设计(,20,),第五节 过程设计(详细设计、程序设计),一、任务,1.,确定各个模块的实现算法,2.,精确表达算法,3.,算法的评估,二、过程表示方法,1.,图形语言,2.,表格工具,3.,语言描述,68,第四章 软件设计(,21,),表示方法一:图示工具,1.,程序流程图,(Program Flow Chart),1),程序的五种基本结构,2),五种基本结构的图形表示,3),国际标准,2.N_S,图,(Nassi,和,Shneiderman Box-Diagram),1),程序的五种基本结构,2),五种基本结构的图形表示,3)N_S,图的特点,3.PAD,图,(Program Analysis Diagram),1),程序的五种基本结构,2),五种基本结构的图形表示,3)PAD,图的特点,69,第四章 软件设计(,22,),表示方法二:表格工具,1.,判定表,1),多重嵌套的条件选择,2),例,表示方法三:语言描述,(PDL Program Design Language),1),伪码,2),外语法、内语法,3),语言要素,70,End of Chapter Four,Thanks,16/9,2004,71,第五章 用户界面设计(1),用户界面设计,界面特征,界面类型,可用性,用户模型、用户观点,8,种,设计任务,工作方式,可靠性,灵活性,任务模型,72,第五章 用户界面设计(,2,),可使用性,灵活性,可靠性,用户界面特性,使用简单性,属于操作一致性,提示与帮助,容错能力,用户层次,界面定制,主流界面设计技术,功能数目,无故障时间,第一节 界面特征,73,第五章 用户界面设计(,3,),用户,用户类型,界面设计,理念分析,用户系统数据,群体分析,界面规格描述,界面类型,特征分析,类型:,外行,初学,熟练,专家,特性分析,使用频度,思维能力,熟练程度,生理技能,第二节 界面设计任务,74,第五章 用户界面设计(,4,),第三节 界面设计类型,一、菜单,二、图像,三、对话,四、窗口,五、描述语言,75,第五章 用户界面设计(,5,),第四节 分类设计,一、数据输入界面,1.,数据输入规则,2.,输入表格设计,3.,其他数据输入方法,二、数据显示界面,1.,数据显示规则,2.,字符数据显示,三、图形显示界面,1.,二维图形,2.,三维图形,四、控制界面,1.,提问频度与确认,2.,用户分析中地流程,五、命令语言界面,1.,命令词地选择,2.,行语法,3.,参数,76,End of Chapter Five,Thanks,13/10,2003,77,第六章 程序编码(1),程序编码,语言特性,程序效率,心理特征,项目应用领域,语言选择,设计风格,技术特性,工程特性,软件开发方法,软件执行环境,开发人员的知识,算法何数据结构地复杂性,78,第六章 程序编码(,2,),心理特征,工程特征,技术特征,语言特征,歧义性,简洁性,局部性,传统性,可移植性,开发工具的可利用性,软件的可重用性,可维护性,对软件设计质量的影响,对工程各阶段的影响,第一节 语言特征,79,第六章 程序编码(,3,),心理特征,工程特征,技术特征,语言选取,考虑的因素:,项目的行用领域;,软件的开发方法,软件的执行环境,性能上的考虑及事项环境,算法何数据结构的复杂性,软件开发人员的知识结构,第二节 语言选取,几种语言的比较:,80,第六章 程序编码(,4,),几种语言的比较:,Fortran:,数据处理能力强,使用余科学计算工程,Pascal:,具有很强的数据和过程结构化能力、语言简明、数据类型丰富、程序结构严谨;适用于系统软件,C:,功能强,支持复杂的数据结构、可大量使用指针,具有丰富灵活的操作运算符,具有汇编语言的某些特征,程序运行效率高;科学计算、系统软件。,第二节 语言选取,81,第六章 程序编码(,5,),源程序文档化,符号名的命名,语言要素,设计风格,第三节 设计风格,程序的注释,82,第六章 程序 编码(,6,),时间,空间,程序效率,第四节 程序效率,算法对效率的影响,影响存储效率的因素,影响,I/O,效率的因素,83,End of Chapter Six,Thanks,14/10,2003,84,第七章 软件测试(1),软件测试,测试目的,测试过程,目的,静态测试,测试原则,测试方法,对象,动态测试,测试用例,集成测试,单元测试,调试,白盒测试,黑盒测试,确认测试,系统测试,测试平台与工具,85,第七章 软件测试(,2,),测试目的,测试原则,测试对象,软件测试,测试目的:,发现错误,用户观点:,开发者观点:,Grengord J.Myers,观点,及时性,输入,/,输出的比对,避免自测,一贯性,执行测试计划,群集现象,结果的评审与存档,文档测试,程序测试,第一节 测试目的、原则、对象,86,第七章 软件测试(,3,),测试与软件开发过程的关系,概要设计,说明书,需求分析,设计,实现,详细设计,说明书,确认测试,单元测试,集成测试,需求分析,说明书,源程序代码,单元测试,集成测试,确认测试,87,第七章 软件测试(,4,),白盒法,黑盒法,测试方法,第二节 测试方法及测试用例设计,原理,用例设计,原理,用例设计,逻辑覆盖,基本路径,边界值,等价类,88,第七章 软件测试(,5,),一、测试过程,四个阶段:单元测试、组装(集成)测试、确认测试、系统测试,第三节 测试过程与策略,确认测试,集成测试,系统测试,单元测试,单元测试,被测模块,被测模块,设计 信息,已测模块,已集成软件,以确认软件,可交付软件,需求分析,其他元素,89,第七章 软件测试(,6,),1,、单元内容测试,对象:详细设计、源码,方法:百盒法、黑盒法,工作:,一、单元测试(模块测试),被测模块,出错处理(,4,),独立路径(,3,),模块接口(,1,),边界条件(,5,),局部数据结构(,2,),2,、步骤,驱动模块:,桩模块:,90,第七章 软件测试(,7,),1,、含义:,2,、组装方法:,(,1,)一次性组装方式,(2,)递增式组装方式,(3,)混合递增式组装方式,二、组装测试,91,第七章 软件测试(,8,),1,、单元内容测试,对象:需求规格说明书,工作:,三、确认测试(有效性测试),有效性测试,构造测试用力,用户文档,测试报告,软件配置,交付用户,选择测试人员,实际运行测试,软件计划,开发文档,源码,支持环境,软件配置测试,管理机构,裁决,专家鉴定,92,第七章 软件测试(,9,),五、测试步骤及相应的测试种类,四、系统测试,93,第七章 软件测试(,10,),第四节 程序的静态分析,一、程序分析 二、人工测试,1.,生成各种应用表格,1.,检查,1,)标号交叉引用表,2.,评审,2,)子程序、宏、函数表,3.,走查,3,)等价表,4,)常数表,2.,静态错误分析,1,)类型和单位分析,2,)引用分析,3,)表达式分析,4,)接口分析,94,第七章 软件测试(,11,),第五节 调试(改正错误),一、调试步骤,测试用例,原因,调试,结果分析,用例执行,改正,猜测原因,95,第七章 软件测试(,12,),二、调试方法,1.,强行排错,1,)内存打印,2,)特定部位,3,)自动调试工具,2.,回溯法排错,三、调试的原则,1.,错误定位原则,2.,错误修改原则,96,第七章 软件测试(,13,),一、静态测试工具,二、动态测试工具,三、模块测试台,四、测试环境,第六节 测试平台与测试工具,97,End of Chapter Seven,Thanks,14/10,2003,98,第八章 软件质量,软件质量,软件质量,质量保证,复杂性,质量模型,可靠性,99,第八章 软件质量(1),一 软件质量(,Software Quality),1,定义,1),ANSI/IEEE Std 729-1983,与软件产品满足规定的和隐含的需求的能力有关的特征或特征集合。,2),M.J.Fisher,所有描述计算机软件优秀程度的特性的组合,引发三点:,1)软件需求是度量软件质量的基础,2)开发规范和准则的遵守是质量保证的前提,3)隐含的质量要求同时满足(可维护性),100,第八章 软件质量质量特征(2),二 软件质量特性,1 软件质量特性(11条),(1),正确性(,Correctness)(2),可靠性(,Reliability),(3)效率 (,Efficient)(4),完整性(,Integrity),(5)可使用性(,Usability)(6),可维护性(,Maintainability),(7)可测试性(,Testability)(8),灵活性(,Flexibility),(9)可移植性(,Portability)(10),复用性(,Reusability),(11)互连性(,Interoperability),为了进一步度量,,McCall,提出了2,9,条评价准则。,2,ISO,质量模型(,ISO/TC97/SC7/WG3/1985-1-30/N382),101,第八章 软件质量质量度量(3),三 软件质量度量和评价,1 软件质量度量,1),预测度量 定性或定量的方法,以得到估算值。,(1)尺度度量(定量度量)出错率=错误数/,KLOC/,单位时间,(2)二元度量(定性度量),2),验收度量 在开发过程各阶段设置检查点。确认检查。,3)软件质量的评价,(1)平分,(2)分析结果,102,第八章 软件质量与质量保证(4),四 软件质量保证,1 定义,保证产品和服务充分满足消费者要求的质量而进行的有计划、有组织的活动。,2,主要质量保证活动内容,1)质量方针的制定和展开,2)质量保证标准的制定,3)质量保证体系的建立和管理,4),明确各阶段的质量保证工作,5)各阶段的质量评审,6)确保设计质量,7)重要质量问题的提出与分析,8)总结实现阶段的质量保证活动,9)整理面向用户的文档、说明书等,10)产品质量鉴定、质量保证系统鉴定,11)质量信息的收集、分析和使用,103,第八章 软件质量质量保证(5),四 软件质量保证,3,质量保证计划,1)缺陷追踪,2)单元测试,3)源码追踪,4),技术评审,5)集成测试,6)系统测试,104,第八章 软件质量质量成本(6),五 软件质量成本(,Cost of Quality),1,定义,2 质量成本分类,1)返工,2)评估和预防的费用,3),其它,105,第八章 软件质量-保证体系(7),六 软件质量保证体系,1,程序检查,2 文档检查,106,第八章 软件质量-实施(8),八 质量保证实施,1,质量管理小组,2 质量设计,3 质量特性转换为软件的内部结构,107,第八章 软件可靠性-1,一,定义,软件在给定的时间间隔及给定条件下,按设计要求,成功运行程序的概率。,二,定义四要素,1,环境条件(支持硬件、操作系统、支持软件、输入数据格式、操作规程等),2 规定时间 均指运行时间(包括挂起,)(t),3,规定功能,4 成功运行 不仅是正确运行,还指系统故障后,能尽快恢复,继而正常运行,三 主要指标,1 平均等待时间(,MTTF Mean Time To Failure),MTTF=ti,之和/,n (ti=1,2,n,失效时间),2 平均失效间隔时间(,MBTD Mean Time Between Failures),108,第八章 软件可靠性-2,四,软件错误源,1,设计缺陷或错误 2 编码缺陷或错误,3,操作员错误 4 软件调试失误,5 测试中的错误,五,软件错误的症状类型,8,种症状结果(,P345),六 软件可靠性工程,1 5项基本活动(,P347),2,案例分析(测试结果分析),109,第八章 软件可靠性-3,七,软件容错技术和容错软件,容错软件的定义,1,规定功能的软件,如果在一定程度上对自身的错误具有屏蔽能力,2,规定功能的软件,如果在一定程度上从错误恢复状态恢复到正常状态,3,规定功能的软件,在因错误发生故障时,仍然在一定程度上完成预期的功能,4,规定功能的软件,如果在一定程度上具有容错能力,八,容错的一般方法,1,结构冗余,2 信息冗余,3 时间冗余,九 容错软件的设计过程,十 软件容错系统结构举例,1,多版本程序结构(,Multi-version Program),2 恢复块结构(,Recovery Block),110,第九章 软件维护(1),软件维护,维护内容,维护实施,改正性维护,预防性维护,完善性维护,维护特点,适应性维护,工作量,维护组织,维护策略,软件配置,维护成本,维护申请报告,维护工作流程,程序修改及修改的副作用,111,第九章 软件维护(,2,),维护定义,维护任务,维护分类,维护概念,第一节 软件维护的概念,改正性维护,适应性维护,
展开阅读全文