《个体软件过程与编码规范.ppt》由会员分享,可在线阅读,更多相关《个体软件过程与编码规范.ppt(161页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、个体软件过程在本次课里,你将学到:在本次课里,你将学到: 软件的发展软件的发展 软件危机软件危机 软件工程软件工程 软件工程师软件工程师What Will I Learn ?第1章 软件 我们做为未来的软件工程师,我们生产的产品是软件,在开发我们做为未来的软件工程师,我们生产的产品是软件,在开发软件时会不可避免地遇到软件危机,所以,掌握软件的概念,了解软件时会不可避免地遇到软件危机,所以,掌握软件的概念,了解软件危机及解决方法,了解软件工程师的任务,是必须的。软件危机及解决方法,了解软件工程师的任务,是必须的。Why Learn It?第1章 软件 1、软件的发展20世纪世纪4050年代,软件
2、开发以机器能识别的机器码编程。年代,软件开发以机器能识别的机器码编程。20世纪世纪60年代,软件开发有高级程序设计语言。年代,软件开发有高级程序设计语言。20世纪世纪70年代,软件开发以面向过程的结构化程序设计为主。年代,软件开发以面向过程的结构化程序设计为主。20世纪世纪80年代,软件开发向面向对象方向发展。年代,软件开发向面向对象方向发展。20世纪世纪90年代,软件开发向联网发展。年代,软件开发向联网发展。 Tell me / Show Me第1章 软件什么是软件危机?什么是软件危机?软件危机是指软件开发和维护过程中所遇到的一系列严重问题。软件危机是指软件开发和维护过程中所遇到的一系列严重
3、问题。危机的原因:危机的原因:软件开发的速度赶不上软件需求的速度。软件开发的速度赶不上软件需求的速度。软件危机的解决:软件危机的解决:用软件工程的方法将软件开发过程规范化。用软件工程的方法将软件开发过程规范化。 Tell me / Show Me 2、软件危机第1章 软件软件工程的定义软件工程的定义采用工程上成熟的概念、原理、技术、方法来开发和维护以用管理采用工程上成熟的概念、原理、技术、方法来开发和维护以用管理软件。软件。软件工程的目标:软件工程的目标:低开发成本、满足功能要求、好的性能、低维护费用、及时交付使低开发成本、满足功能要求、好的性能、低维护费用、及时交付使用。用。 3、软件工程第
4、1章 软件 Tell me / Show Me软件工程的原则:软件工程的原则:抽象抽象模块化模块化信息封装信息封装一致性一致性完备性完备性可验证性可验证性 3、软件工程第1章 软件 Tell me / Show Me软件工程师的任务软件工程师的任务制定工作计划制定工作计划按照此计划进行工作按照此计划进行工作尽最大努力生产出高质量的产品尽最大努力生产出高质量的产品高质量工作的重要性:高质量工作的重要性:任何一点细小的错误都可能导致软件的严重问题。任何一点细小的错误都可能导致软件的严重问题。 4、软件工程师第1章 软件 Tell me / Show Me个体软件过程个体软件过程指导个人按规范的软件
5、开发过程进行软件开发。指导个人按规范的软件开发过程进行软件开发。与个体软件过程(与个体软件过程(PSP)相关的有对群体软件过程开发过程进行规范)相关的有对群体软件过程开发过程进行规范的(的(TSP)、对企业软件开发过程进行规范的)、对企业软件开发过程进行规范的CMM。 4、软件工程师第1章 软件 Tell me / Show Me阅读有关软件工程方面的文章,网站。阅读有关软件工程方面的文章,网站。讨论软件工程师的任务,高质量工作的重要性,软件工程对软件危机讨论软件工程师的任务,高质量工作的重要性,软件工程对软件危机的作用。的作用。第1章 软件Try it在本次课里,你将学到:在本次课里,你将学
6、到: 软件开发的过程思维软件开发的过程思维 软件开发过程软件开发过程 过程的改进过程的改进第2章 过程What Will I Learn ?规范软件开发过程是规范软件开发的基础规范软件开发过程是规范软件开发的基础 Why Learn It?第2章 过程过程的概念:过程的概念: 过程是指人们解决一个任务时,采取的行动步骤,步骤应遵过程是指人们解决一个任务时,采取的行动步骤,步骤应遵循的规则,步骤所使用资源的总和。循的规则,步骤所使用资源的总和。过程思维:过程思维: 以过程为中心以过程为中心传统思维:传统思维: 以任务为中心以任务为中心第2章 过程 1、过程思维 Tell me / Show Me
7、过程的过程的3个方面个方面过程应该被定义过程应该被定义关于过程的知识传授给需要执行的每一个人,即过程的学习。关于过程的知识传授给需要执行的每一个人,即过程的学习。过程的监控与强制。过程的监控与强制。第2章 过程2、过程 Tell me / Show Me以过程为中心的好处以过程为中心的好处协调组织的活动,为达到共同的目标而努力。协调组织的活动,为达到共同的目标而努力。为每个人提供度量的基准。为每个人提供度量的基准。增强过程的一致性和可重复性。增强过程的一致性和可重复性。第2章 过程2、过程 Tell me / Show Me成熟的过程。成熟的过程。过程可计划,过程稳定,过程产生的结果一致,过程
8、可预测。过程可计划,过程稳定,过程产生的结果一致,过程可预测。不成熟的过程不成熟的过程与前面正好相反。与前面正好相反。第2章 过程2、过程 Tell me / Show Me进行过程改进的原因进行过程改进的原因只有进行过程改进才能得到不同的产品只有进行过程改进才能得到不同的产品进行过程改进的步骤进行过程改进的步骤定义质量目标、了解过程、对过程进行调整、应用调整后的过程、测定义质量目标、了解过程、对过程进行调整、应用调整后的过程、测量结果、将结果与目标进行比较、循环的持续改进。量结果、将结果与目标进行比较、循环的持续改进。第2章 过程3、过程改进 Tell me / Show Me对照过程的思想
9、,测量自己学习的过程并加以改进。对照过程的思想,测量自己学习的过程并加以改进。第2章 过程Try it在本次课里,你将学到:在本次课里,你将学到: 度量软件过程度量软件过程 度量计划度量计划 采集数据采集数据 分析过程分析过程第3章 度量软件过程What Will I Learn ?规范软件开发过程是提高软件质量的基础规范软件开发过程是提高软件质量的基础 第3章 度量软件过程Why Learn It?统计过程:统计过程: 统计过程是过程管理的基础。统计过程是过程管理的基础。过程管理的任务:过程管理的任务: 定义过程、度量过程、控制过程、改进过程。定义过程、度量过程、控制过程、改进过程。 第3章
10、 度量软件过程 1、度量过程 Tell me / Show Me确定问题确定问题选择和定义度量的属性选择和定义度量的属性将度量与过程集成将度量与过程集成诊断现有的度量诊断现有的度量度量集成的活动度量集成的活动第3章 度量软件过程 2、度量计划 Tell me / Show Me采集方法采集方法评估采集评估采集保存数据保存数据理解数据理解数据第3章 度量软件过程 3、采集数据 Tell me / Show Me控制图的构成控制图的构成变量数据图控制图的比较变量数据图控制图的比较XmR图图软件编写过程是一个复杂的过程,常有不确定因素需要去研究与解决。软件编写过程是一个复杂的过程,常有不确定因素需要
11、去研究与解决。第3章 度量软件过程 4、过程分析 Tell me / Show Me通过示例说明如何分析过程行为。通过示例说明如何分析过程行为。第3章 度量软件过程Try it在本次课里,你将学到:在本次课里,你将学到: 软件开发过程软件开发过程 过程脚本过程脚本 基本概念基本概念第4章 软件开发过程What Will I Learn ? 一个恰当的软件开发过程对控制一个项目的进度,成本和质量有一个恰当的软件开发过程对控制一个项目的进度,成本和质量有深刻的影响。所以,定义一个合适的软件开发过程是一个组织所有承深刻的影响。所以,定义一个合适的软件开发过程是一个组织所有承担的重要任务之一。担的重要
12、任务之一。 第4章 软件开发过程Why Learn It?1、软件开发过程软件开发过程:软件开发过程: 开发过程中各个步骤的顺序构成软件过程模型。常用的过程模型开发过程中各个步骤的顺序构成软件过程模型。常用的过程模型有:编码修复模型、瀑布模型、增量模型、迭代模型。有:编码修复模型、瀑布模型、增量模型、迭代模型。确定过程应包括的活动:确定过程应包括的活动: 需求、目标、质量计划、规格说明、高层高设计、出版物内容计需求、目标、质量计划、规格说明、高层高设计、出版物内容计划、测试计划、低层设计、编码、单元和功能测试、构件测试、出版划、测试计划、低层设计、编码、单元和功能测试、构件测试、出版物初稿、系
13、统测试、出版物修订稿、回归测试、打包、交付使用。物初稿、系统测试、出版物修订稿、回归测试、打包、交付使用。 第4章 软件开发过程 Tell me / Show Me确定活动间的关系确定活动间的关系将每项活动的有用信息文档化将每项活动的有用信息文档化剪载过程文档化剪载过程文档化改善过程文档化改善过程文档化1、软件开发过程第4章 软件开发过程 Tell me / Show MePSP过程的各个阶段:过程的各个阶段:计划阶段计划阶段设计阶段设计阶段编码阶段编码阶段编译阶段编译阶段测试阶段测试阶段后置处理阶段后置处理阶段2、过程脚本第4章 软件开发过程 Tell me / Show Me一个产品是指为
14、合作者、雇主或客户所生产的物品。一个产品是指为合作者、雇主或客户所生产的物品。一个项目通常生产一种产品。一个项目通常生产一种产品。一个任务是已定义的一部分工作。一个任务是已定义的一部分工作。一个过程定义完成项目的方法。一个过程定义完成项目的方法。过程有许多阶段或步骤,如计划、开发和测试。过程有许多阶段或步骤,如计划、开发和测试。一个过程阶段可以由许多任务或活动组成。一个过程阶段可以由许多任务或活动组成。一个过程可以包括一个或多个阶段,一个阶段可以包括一个或多个任一个过程可以包括一个或多个阶段,一个阶段可以包括一个或多个任务或活动。务或活动。计划描述一个特定的项目的完成方式。计划描述一个特定的项
15、目的完成方式。一个作业是你为一个项目或一个任务所做的事情。一个作业是你为一个项目或一个任务所做的事情。3、基本概念第4章 软件开发过程 Tell me / Show Me讨论并总结软件开发过程有哪些步骤及步骤间的顺序关系。讨论并总结软件开发过程有哪些步骤及步骤间的顺序关系。第4章 软件开发过程Try it在本次课里,你将学到:在本次课里,你将学到: 时间管理的重要性时间管理的重要性 记录时间的使用情况记录时间的使用情况 时间记录日志时间记录日志 阶段计划阶段计划 产品计划产品计划第5章 时间管理What Will I Learn ?管理时间是按期完成任务的基本前提。管理时间是按期完成任务的基本
16、前提。时间是可以管理的。时间是可以管理的。管理时间的技巧是可以通过学习获得。管理时间的技巧是可以通过学习获得。 第5章 时间管理Why Learn It?时间管理:时间管理: 指对时间进行规划、安排使之得到合理利用。指对时间进行规划、安排使之得到合理利用。时间管理的重要性:时间管理的重要性: 对时间进行管理可提高生产率。对时间进行管理可提高生产率。 对时间进行管理可使进度可控。对时间进行管理可使进度可控。 第5章 时间管理 1、时间管理的重要性 Tell me / Show Me了解时间的使用情况了解时间的使用情况使用工程记事本使用工程记事本时间记录日志时间记录日志在工程记事本中登记时间记录日
17、志。在工程记事本中登记时间记录日志。第5章 时间管理 2、记录时间的使用情况 Tell me / Show Me日期开始时间结束时间中断时间净时间活动备注C U9/99:009:5050听课讲座12:401:1838编程序作业12:453:531058编程序作业16:257:4580读课本第1章和第2章X 2表表3.2时间记录日志的示例学生 学生Y 日期 9/9/96 教员 先生Z 课程 CS1 时间记录日志的使用见难点解析中的动画第5章 时间管理 3、使用时间记录日志有两种计划:有两种计划: 阶段计划、产品计划阶段计划、产品计划阶段计划:阶段计划: 一种基于时间段的活动计划。一种基于时间段的
18、活动计划。 时间记录日志、周活动总结表为阶段计划采集信息。时间记录日志、周活动总结表为阶段计划采集信息。产品计划:产品计划: 一种基于任务的活动计划。一种基于任务的活动计划。 作业编号日志为产品计划采集信息。作业编号日志为产品计划采集信息。第5章 时间管理 4、阶段计划 Tell me / Show Me时间记录日志的使用方法、时间记录日志的使用方法、周活动总结表的使用方法、周活动总结表的使用方法、作业编号日志的使用方法等作业编号日志的使用方法等均见均见难点解析难点解析动画动画第5章 时间管理 4、阶段计划 Tell me / Show Me为正在进行和以后进行的程序开发过程建立时间记录日志。
19、为正在进行和以后进行的程序开发过程建立时间记录日志。为过去的为过去的2周和以后周和以后3周建立周活动总结表。周建立周活动总结表。为刚刚编写的为刚刚编写的3个程序和以后编写的程序建立作业编号日志。个程序和以后编写的程序建立作业编号日志。第5章 时间管理Try it本次课本次课, ,我们将学到我们将学到: :了解程序的规模了解程序的规模了解使用规模测量的注意事项了解使用规模测量的注意事项测量程序的规模测量程序的规模填写程序规模估计表填写程序规模估计表在作业编号日志中使用规模测量的方法在作业编号日志中使用规模测量的方法第6章 程序的规模What Will I Learn ?为了更好对任务进行管理,我
20、们需要尽可能准确地估计任务所需花为了更好对任务进行管理,我们需要尽可能准确地估计任务所需花费的时间。由于各种任务的规模的复杂程度的差异很大,所以掌握费的时间。由于各种任务的规模的复杂程度的差异很大,所以掌握一种比较它们规模的方法是很有帮助的。一种比较它们规模的方法是很有帮助的。第6章 程序的规模Why Learn It?表 学生章阅读时间表学生学生日期教员先生课程章阅读时间()页数分钟页&280204.00328122.334118167.38571174.18640123.33总计33777平均56.1712.834.38有了阅读前五章所有有了阅读前五章所有时间的数据,就可以时间的数据,就可
21、以估计出阅读第章要估计出阅读第章要用的时间。考虑每页用的时间。考虑每页用多少分钟而不是每用多少分钟而不是每章用多少分钟来测量章用多少分钟来测量阅读每章所用的时间。阅读每章所用的时间。 见右表,学生见右表,学生Y Y章阅读章阅读时间表。时间表。平均速率=(80+28+118+71+40)/(20+12+16+17+12)=337/77=4.38MIN/页第6章 程序的规模 Tell me / Show Me虽然这种规模测量方法看起来很简单,但是其中确实存在一些虽然这种规模测量方法看起来很简单,但是其中确实存在一些复杂的因素。复杂的因素。首先,有些文档读起来要比其它的文档困难得多。这意味着应首先,
22、有些文档读起来要比其它的文档困难得多。这意味着应该考虑工作所涉及的类型该考虑工作所涉及的类型, ,而不只是它的规模而不只是它的规模. .另外,阅读时间会随着阅读目的和阅读次数发生变化。另外,阅读时间会随着阅读目的和阅读次数发生变化。对程序开发计划,也存在同样的问题。应该为不同类型的作业对程序开发计划,也存在同样的问题。应该为不同类型的作业按其规模和时间分别记录它们的数据。按其规模和时间分别记录它们的数据。第6章 程序的规模 Tell me / Show Me程序规模的测量程序规模的测量 基于程序的规模来估计基于程序的规模来估计编写某个程序所用的时编写某个程序所用的时间间, ,是个好方法。是个好
23、方法。第6章 程序的规模 Tell me / Show Me程序规模的测量程序规模的测量测量程序规模的方法是统计测量程序规模的方法是统计源程序的文本行数(源程序的文本行数(LOC)LOC)。约定约定LOCLOC时,约定不统计空时,约定不统计空行和注释行。行和注释行。例例1 1程序段有程序段有5LOC,5LOC,例例2 2使用使用更紧凑的格式例更紧凑的格式例1 1,只有,只有4LOC4LOC。为了确保规模统计的一致,为了确保规模统计的一致,建议采用标准的编程格式。建议采用标准的编程格式。第6章 程序的规模 Tell me / Show Me其他的规模测量方法其他的规模测量方法工业化的软件开发通常
24、包含文档,以页为单位进行测量。工业化的软件开发通常包含文档,以页为单位进行测量。不适合用代码行统计的产品类型的示例有菜单、文件、报告或屏幕数不适合用代码行统计的产品类型的示例有菜单、文件、报告或屏幕数量,一般使用单元和平均值进行统计。量,一般使用单元和平均值进行统计。约定只统计程序员自己编写的代码行,不统计由程序开发辅助工具生约定只统计程序员自己编写的代码行,不统计由程序开发辅助工具生成的代码行。成的代码行。无论使用何种测量方法,主要目的是为了估计开发的工作量;对于花无论使用何种测量方法,主要目的是为了估计开发的工作量;对于花费时间较多的产品,应该用成比例增加的规模测量方法。费时间较多的产品,
25、应该用成比例增加的规模测量方法。第6章 程序的规模 Tell me / Show Me程序规模估计表程序规模估计表通过查看表中的数据,考虑已知相关要开发程序的消息,能够判断出通过查看表中的数据,考虑已知相关要开发程序的消息,能够判断出新程序处于表中的规模等级,有助于估算新程序的规模范围。新程序处于表中的规模等级,有助于估算新程序的规模范围。第6章 程序的规模 Tell me / Show Me较大规模的估算较大规模的估算1.1.建立一个历史记录,把以前编写的各个元素及它们各自所包含的代码建立一个历史记录,把以前编写的各个元素及它们各自所包含的代码行的相关数据收集在一起。行的相关数据收集在一起。
26、2.2.对于较大规模的估算,考虑新程序的功能,估计出每一个功能的规模,对于较大规模的估算,考虑新程序的功能,估计出每一个功能的规模,把所有功能的估计数值加在一起得到对整个程序的估算。把所有功能的估计数值加在一起得到对整个程序的估算。第6章 程序的规模 Tell me / Show Me第6章 程序的规模 Tell me / Show Me在作业编号日志中使用规模测量的方法在作业编号日志中使用规模测量的方法1.1.“单元栏单元栏”对于编写程序使用对于编写程序使用“代码行代码行”为单位;为单位;2.2.对于阅读课本,使用对于阅读课本,使用“页页”为单位;为单位;3.3.在在“估计数据估计数据”栏使
27、用规模测量方法。栏使用规模测量方法。第6章 程序的规模 Tell me / Show Me测量的程序规模测量的程序规模程序的规模:程序的规模:4LOC4LOC程序的规模:程序的规模:12LOC12LOC第6章 程序的规模 Tell me / Show Me编写一个程序,要求编程之前采用本章方法进行程序规模估计。编写一个程序,要求编程之前采用本章方法进行程序规模估计。第6章 程序的规模Try it本次课本次课, ,我们将学到我们将学到: :了解进度管理的必要性了解进度管理的必要性掌握掌握GanttGantt图的使用图的使用学会跟踪项目计划学会跟踪项目计划第7章 进度管理What Will I L
28、earn ?制定作业进度的目的是为了完成任务。制定作业进度的目的是为了完成任务。当在同一时间内要完成多个任务时,就需要有一份当在同一时间内要完成多个任务时,就需要有一份进度表。进度表。对于庞大复杂任务,需要更加复杂的时间管理方案。对于庞大复杂任务,需要更加复杂的时间管理方案。第7章 进度管理Why Learn It?GanttGantt图图关键的成分关键的成分 :横跨图顶部排列的是日历表。根据所需要的详细程度,每列的时间单横跨图顶部排列的是日历表。根据所需要的详细程度,每列的时间单位可以是日、周、月或年。如果需要的话,也可以是小时。位可以是日、周、月或年。如果需要的话,也可以是小时。最左边的一
29、列包含了每项任务的标识号()。最左边的一列包含了每项任务的标识号()。左边第二列是要做的任务的名称。通常按照预期要做的顺序排列。左边第二列是要做的任务的名称。通常按照预期要做的顺序排列。在图表当中,任务条表示各项任务计划的开始和结束时间。在图表当中,任务条表示各项任务计划的开始和结束时间。在表的左下方是项目名称、进度表的作者和制订此进度的原始日期。在表的左下方是项目名称、进度表的作者和制订此进度的原始日期。第7章 进度管理 Tell me / Show Me第7章 进度管理 Tell me / Show Me制定项目进度表 将作业详细分析确定由哪几项任务组成。 估计细化的任务规模并决定每项任务
30、可能的作业量。 在Gantt图中列出每一项任务,用任务条说明各项任务可能的作业量。 在Gantt图中列出每一项任务,说明开始和结束时间。第7章 进度管理 Tell me / Show Me对于若干人参与的作业:确保每个人都知道要完成的任务。获取每项任务承诺的完成时间。确定各任务之间的相互依赖关系。每个人开始处理工作之前他们必须得到什么样的输入,以及他们从谁那里得到这些输入。把每一个相互依赖的关系都文档化。与所有涉及到的人一起复查计划的进度表和任务之间的依赖关系,以确保没有冲突、分歧和误解。复查进度表,以确保它包含了完成整个作业所需要的全部任务。第7章 进度管理 Tell me / Show M
31、e检查点 可以测量的进度点,里程碑。 项目规划和项目管理中的重要部分。 一个项目中能够客观标识的点。 不满足可验证性准则的一般陈述不能做检查点。第7章 进度管理 Tell me / Show Me明确的检查点 完成并提交了一份学术报告。 制订了编写某个程序的计划,并且用标准的格式写成了文档。 指导教师和你复查了开发计划,并按照建议作出了一些修改。 完成了某个程序的设计,并用特定的格式把它写成了文档。 实现、编译并修改了某个程序,因此该程序编译时没有错误。第7章 进度管理 Tell me / Show Me不适当的检查点 为编写程序制订了一个计划。 设计了一个程序。 完成了的编码工作。第7章 进
32、度管理 Tell me / Show Me建立检查点的建议 大约每个小时的作业建立一个检查点是最有帮助的。 对于为期几周的任务,即使估计这项作业每周只用大约半个小时的时间,每周至少也要设置一个检查点。 较大的项目且涉及若干个软件工程师,需要每个工程师都设置几个中间检查点,以便每个人都能知道其他人的工作状态。 第7章 进度管理 Tell me / Show Me跟踪项目计划项目管理的重要部分,软件工程师在实际作业中应掌握的一项关键技能。使读者知道项目是否正在按照进度进行,超前还是落后。通过项目跟踪,及早发现问题,寻找解决问题的最佳办法。一个良好的跟踪系统能够帮助工程师在问题严重到足以威胁项目的成
33、败之前提前预防。第7章 进度管理 Tell me / Show Me项目跟踪计划示例第7章 进度管理 Tell me / Show Me关于跟踪项目进度的建议 确保所有检查点的定义是明确的,并已将他们写下来。 在制订一份全新的计划之前,不要改动进度。 当按照计划公布项目进展状态时,不要改动计划。 在给出新估计的项目完成日期时,保留原来估计的日期,然后用虚线注明新的日期。 保存原始的进度表和所有更新的版本。第7章 进度管理 Tell me / Show Me当工作顺序与原计划不同时跟踪计划: 采用积分方法,跟踪进度。 积分:一种时间的百分比。 通过计算任务所用时间占计划的项目总时间的百分比,来给
34、出各任务的积分。 通过使用积分,可以用与原计划不同的顺序工作,并且还可以按照计划跟踪工作进展情况。第7章 进度管理 Tell me / Show Me 跟踪积分示例第7章 进度管理 Tell me / Show Me 什么是检查点,设置检查点有何意义?Gantt图中检查点的符号是什么? 试编写一个中等规模的程序,要求定义3个或更多的检查点。第7章 进度管理Try it本次课,我们将学到: 了解什么是缺陷 查找缺陷 预测缺陷第8章 缺陷管理What Will I Learn ? 软件质量影响到开发费用、交付日期和用户满度。 用户使用软件时,其中的缺陷可能导致严重问题,且发现和修复的代价很大。 缺
35、陷由开发人员引起,因此软件工程师需要了解引入的缺陷,对它们进行管理。第8章 缺陷管理Why Learn It?缺陷的定义 缺陷是指程序中存在的错误,例如语法错误、拼写错误、标点符号错误或者是一个不正确的程序语句。 减少缺陷的重要方法是研究已经引入的缺陷,确定引起这些缺陷的原因,避免将来重复同样的错误。第8章 缺陷管理 Tell me / Show Me缺陷的类型第8章 缺陷管理 Tell me / Show Me设计缺陷原因1.设计错误,在对问题深思熟虑后做出了错误的设计决策;2.疏忽或思考简单,犯了愚蠢的错误;3.误解了要做的内容。第8章 缺陷管理 Tell me / Show Me缺陷记录
36、日志目的:帮助收集缺陷数据。建议:尽可能说细描述每个缺陷。第8章 缺陷管理 Tell me / Show Me第8章 缺陷管理 Tell me / Show Me第8章 缺陷管理 Tell me / Show Me发现缺陷的步骤标识缺陷征兆。从征兆推断出缺陷的位置。确定程序中的错误。决定如何修复缺陷。修复缺陷。验证这个修复是否已经解决了这个问题。第8章 缺陷管理 Tell me / Show Me发现缺陷的方法 编译器 测试 个人复查源程序清单 第8章 缺陷管理 Tell me / Show Me代码复查一种能快速找到缺陷的方法。即研究源程序,从中发现错误。最好在源程序编码完成后,编译和测试之
37、前进行。比测试更有效率。主要缺陷点:要求程序员精通程序设计。代码复查是一种技能,可以通过学习和实践来提高。代码复查的第一步:了解自己引入的缺陷的种类。第8章 缺陷管理 Tell me / Show Me代码复查脚本注意事项在第一次编译前进行代码复查。在打印出的源程序清单上复查。在缺陷记录日志上记录发现的每一个缺陷。在代码复查前,根据以前在编译与测试阶段发现的缺陷类型进行检查。第8章 缺陷管理 Tell me / Show Me第8章 缺陷管理 Tell me / Show Me代码复查检查表 目的:代码复查时,用来帮助查找缺陷。 建议:把自己的检查表和其他工程师的检查表进行比较,有助于改进复查
38、方法。通过不断使用和改进个人检查表,可以更好地发现程序中的缺陷,帮助程序员用较少时间发现缺陷。第8章 缺陷管理 Tell me / Show Me 缺陷预测缺陷密度(:以每千行代码的缺陷数(Defects/KLOC)来测量第8章 缺陷管理 Tell me / Show Me缺陷预测 缺陷密度(Dd):以每千行代码的缺陷数(Defects/KLOC)来测量,KLOC表示每1000行。 缺陷密度计算已知累计开发过程中每个阶段发现的缺陷总数(D);统计程序中新开发和修改的代码行数(N)。计算每千行的缺陷数Dd=1000D/N 当为一个新的程序作计划时,先估计出程序可能有多少新的和修改的代码行。然后计
39、算以前开发程序的每千行源代码的平均缺陷数。 Dd plan =1000(D1+Di)/(N1+Ni) 第8章 缺陷管理 Tell me / Show Me缺陷排除的经济效益 两种测量方法:1.每小时排除缺陷的个数2.计算机缺陷排除效益 软件开发中各阶段每小时累计的引入缺陷数和排除缺陷数在该阶段累计每小时引入缺陷数=60(该阶段累计引入缺陷数)/(该阶段累计花费分钟数)在该阶段累计每小时排除缺陷数=60(该阶段累计排除缺陷数)/(该阶段累计花费分钟数)第8章 缺陷管理 Tell me / Show Me 一个96行的程序共有14个缺陷,计算缺陷密度。 Dd=100014/96=145.83 De
40、fects/KLOC。第8章 缺陷管理Try it 假设有如下数据:设计阶段引入缺陷数为5,花费分钟数为195;编码阶段累计引入缺陷数为25,花费分钟数为792;代码复查阶段累计引入缺陷数为12,花费分钟数为145;编译阶段累计引入缺陷数为13,花费分钟数为100;测试阶段累计引入缺陷数为6,花费分钟数为279。计算机各阶段累计每小时引入缺陷数和排除缺陷数。第8章 缺陷管理Try it本次课,我们将学到: 了解产品质量控制的重要性 缺陷排除效益的计算 最终缺陷排除效益的估计 过程质量的测量 质检过失比、质量成本的计算第9章 度量管理What Will I Learn ? 软件功能薄弱、漏洞等问
41、题的出现,使软件质量成为了关注焦点。 软件产业的差距更为明显、致命的差距在于产品质量和过程当中的质量控制。 个人对产品质量产生的影响,通过计算在各阶段发现的缺陷数目和残留在最终产品中的缺陷数目之间的关系来考察和检测,进而提高程序的质量。 程序的质量取决于过程的质量,过程的质量又取决于人们的工作方式。为了开发出更好的程序,需要测量过程的质量。第9章 度量管理Why Learn It?产品质量,可以从以下几个观点来看: 透明性观点:质量是产品一种可以认识但不可定义的性质; 使用者观点:质量是产品满足使用目的之程度; 制造者观点:质量是产品性能和规格要求的符合度; 产品观点:质量是联结产品固有性能的
42、纽带; 基于价值观点:质量依赖于顾客愿意付给产品报酬的数量。第9章 度量管理 Tell me / Show Me缺陷排除效益的计算各个阶段的缺陷排除效益的计算方法如下:阶段缺陷排除效益阶段缺陷排除效益100100(本阶段排除的缺陷数)(本阶段排除的缺陷数)/ /(进入本阶段时产品中的缺陷数)(进入本阶段时产品中的缺陷数)第9章 度量管理 Tell me / Show Me第9章 度量管理 Tell me / Show Me最终的缺陷排除效益估计拇指法则:假设残留的缺陷数和最后一个阶段排除的缺陷数相等 。例:代码复查发现17个缺陷;编译时发现2个;测试时发现1个。此时代码复查的缺陷排除效益是:1
43、7/(1721)85 运用拇指法则: 17/(17211)80.95 第9章 度量管理 Tell me / Show Me软件工程师提高产品质量的有效方法:代码复查积累排除缺陷的个人经验原型方法第9章 度量管理 Tell me / Show Me质量成本三个主要元素:过失成本、质检成本和预防成本。 过失成本包括修复产品中缺陷的所有费用。 质检成本包括评估产品质量以确定在产品中是否仍然留有缺陷的所有工作,但不包括修复缺陷花费的时间。 预防成本是由修改过程以避免引入缺陷所带来的费用。 第9章 度量管理 Tell me / Show Me质检质量成本是所有复查时间的总和占总开发时间的百分比。过失质量
44、成本是所有编译和测试时间的总和占总开发时间的百分比。例:实际总开发时间262min,实际代码复查时间29min,实际编译时间5min,实际测试时间10min则可计算:质检质量成本10029/26211.07过失质量成本100(510)/262=10015/2625.73第9章 度量管理 Tell me / Show Me质检过失比 质检成本与过失成本之比,简写为A/FR 。 一个更简单的就是质检/过失比(A/FR)的方法是用复查时间除以编译和测试时间。 用来测量在第一次编译前花在查找缺陷上的时间的相对值 。 事实表明A/FR的值能很好地指示测试中发现缺陷的可能性。 A/FR2时,无论如何每千行
45、源码都只有很少的几个缺陷。 因此,应该努力使质检/过失比A/FR的值大于2。第9章 度量管理 Tell me / Show Me质量成本的精确计算对大型项目,需要使用更精确的质量成本测量方法。为了计算过失成本和质检成本,必须把代码复查时间、编译时间与测试时间分为错误修复和检验两个部分,如:1.Appraisal或CA:没有发现缺陷的编译时间;2.Failure或CF:有缺陷修复的编译时间;3.C= CF+ CA:总的编译时间。第9章 度量管理 Tell me / Show Me质量成本的精确计算 质检质量成本100(RA+CA+TA)/(总开发时间)过失质量成本100(RF+CF+TF)/(总
46、开发时间)第9章 度量管理 Tell me / Show Me 代码复查时发现17个缺陷; 编译时发现15个;测试时发现8个。 此时代码复查的缺陷排除效益是: 17/(17158)42.5 17/(171588)35.4 运用拇指规则,估计的最终代码复查的缺陷排除效益为:第9章 度量管理Try it精确计算质检过失比 实际代码复查时间29min,即R=29。 实际编译时间5min,即C=5。 实际测试时间10min,即T=10。第9章 度量管理Try it本次课,我们将学到: 了解项目计划总结表的作用 掌握项目计划总结表的填写第10章 项目计划总结表What Will I Learn ? 项目
47、计划总结表用来记录估计实际的程序规模和开发时间,帮助软件工程师更好地改善个体软件过程。第10章 项目计划总结表Why Learn It?项目计划及总结的必要性 项目计划定义了要完成的工作及如何完成,对所需要的时间和资源进行了估计,为管理部门的评审和控制提供框架。 项目计划利用已有数据和经验对新的项目进行有效的计划,因此对项目进行过程中的实际数据进行保存、统计和总结十分必要。第10章 项目计划总结表 Tell me / Show Me项目计划总结表: 贯穿项目的计划、设计、编码、测试和后置处理即PSP过程流程的各个阶段。 分为总结、程序规模、开发阶段时间、引入的缺陷和排除的缺陷五个部分,每个部分
48、需要填写计划、实际和累计三组数据。 开发阶段的时间、引入的缺陷和排除的缺陷又分为计划、设计、编码、代码复查、编译和测试等几个阶段。 填写项目计划总结表需要根据时间记录日志、程序规模估计、缺陷记录日志等表格中的真实数据为计算。第10章 项目计划总结表 Tell me / Show Me第10章 项目计划总结表 Tell me / Show Me项目计划数据需要填写:总结程序规模开发时间引入的缺陷排除的缺陷第10章 项目计划总结表 Tell me / Show Me项目计划数据的填写 总结第10章 项目计划总结表 Tell me / Show Me项目计划数据的填写 程序规模第10章 项目计划总结
49、表 Tell me / Show Me项目计划数据的填写 开发时间第10章 项目计划总结表 Tell me / Show Me项目计划数据的填写 引入的缺陷第10章 项目计划总结表 Tell me / Show Me项目计划数据的填写 排除的缺陷 第10章 项目计划总结表 Tell me / Show Me项目实际数据的填写包括:程序的规模开发阶段时间引入的缺陷排除的缺陷总结第10章 项目计划总结表 Tell me / Show Me项目实际数据的填写程序的规模第10章 项目计划总结表 Tell me / Show Me项目实际数据的填写开发阶段时间第10章 项目计划总结表 Tell me /
50、 Show Me项目实际数据的填写引入的缺陷第10章 项目计划总结表 Tell me / Show Me项目实际数据的填写排除的缺陷第10章 项目计划总结表 Tell me / Show Me项目累计数据的填写包括:程序规模开发阶段时间引入的缺陷排除的缺陷总结 第10章 项目计划总结表 Tell me / Show Me项目累计数据的填写程序规模 第10章 项目计划总结表 Tell me / Show Me项目累计数据的填写开发阶段时间 第10章 项目计划总结表 Tell me / Show Me项目累计数据的填写引入的缺陷第10章 项目计划总结表 Tell me / Show Me项目累计数