资源预览内容
第1页 / 共161页
第2页 / 共161页
第3页 / 共161页
第4页 / 共161页
第5页 / 共161页
第6页 / 共161页
第7页 / 共161页
第8页 / 共161页
第9页 / 共161页
第10页 / 共161页
亲,该文档总共161页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
个体软件过程在本次课里,你将学到:在本次课里,你将学到:软件的发展软件的发展软件危机软件危机软件工程软件工程软件工程师软件工程师What Will I Learn ?第1章 软件 我们做为未来的软件工程师,我们生产的产品是软件,在开发我们做为未来的软件工程师,我们生产的产品是软件,在开发软件时会不可避免地遇到软件危机,所以,掌握软件的概念,了解软件时会不可避免地遇到软件危机,所以,掌握软件的概念,了解软件危机及解决方法,了解软件工程师的任务,是必须的。软件危机及解决方法,了解软件工程师的任务,是必须的。Why Learn It?第1章 软件 1、软件的发展20世纪世纪4050年代,软件开发以机器能识别的机器码编程。年代,软件开发以机器能识别的机器码编程。20世纪世纪60年代,软件开发有高级程序设计语言。年代,软件开发有高级程序设计语言。20世纪世纪70年代,软件开发以面向过程的结构化程序设计为主。年代,软件开发以面向过程的结构化程序设计为主。20世纪世纪80年代,软件开发向面向对象方向发展。年代,软件开发向面向对象方向发展。20世纪世纪90年代,软件开发向联网发展。年代,软件开发向联网发展。 Tell me / Show Me第1章 软件什么是软件危机?什么是软件危机?软件危机是指软件开发和维护过程中所遇到的一系列严重问题。软件危机是指软件开发和维护过程中所遇到的一系列严重问题。危机的原因:危机的原因:软件开发的速度赶不上软件需求的速度。软件开发的速度赶不上软件需求的速度。软件危机的解决:软件危机的解决:用软件工程的方法将软件开发过程规范化。用软件工程的方法将软件开发过程规范化。 Tell me / Show Me 2、软件危机第1章 软件软件工程的定义软件工程的定义采用工程上成熟的概念、原理、技术、方法来开发和维护以用管理采用工程上成熟的概念、原理、技术、方法来开发和维护以用管理软件。软件。软件工程的目标:软件工程的目标:低开发成本、满足功能要求、好的性能、低维护费用、及时交付使低开发成本、满足功能要求、好的性能、低维护费用、及时交付使用。用。 3、软件工程第1章 软件 Tell me / Show Me软件工程的原则:软件工程的原则:抽象抽象模块化模块化信息封装信息封装一致性一致性完备性完备性可验证性可验证性 3、软件工程第1章 软件 Tell me / Show Me软件工程师的任务软件工程师的任务制定工作计划制定工作计划按照此计划进行工作按照此计划进行工作尽最大努力生产出高质量的产品尽最大努力生产出高质量的产品高质量工作的重要性:高质量工作的重要性:任何一点细小的错误都可能导致软件的严重问题。任何一点细小的错误都可能导致软件的严重问题。 4、软件工程师第1章 软件 Tell me / Show Me个体软件过程个体软件过程指导个人按规范的软件开发过程进行软件开发。指导个人按规范的软件开发过程进行软件开发。与个体软件过程(与个体软件过程(PSP)相关的有对群体软件过程开发过程进行规范)相关的有对群体软件过程开发过程进行规范的(的(TSP)、对企业软件开发过程进行规范的)、对企业软件开发过程进行规范的CMM。 4、软件工程师第1章 软件 Tell me / Show Me阅读有关软件工程方面的文章,网站。阅读有关软件工程方面的文章,网站。讨论软件工程师的任务,高质量工作的重要性,软件工程对软件危机讨论软件工程师的任务,高质量工作的重要性,软件工程对软件危机的作用。的作用。第1章 软件Try it在本次课里,你将学到:在本次课里,你将学到:软件开发的过程思维软件开发的过程思维软件开发过程软件开发过程过程的改进过程的改进第2章 过程What Will I Learn ?规范软件开发过程是规范软件开发的基础规范软件开发过程是规范软件开发的基础 Why Learn It?第2章 过程过程的概念:过程的概念: 过程是指人们解决一个任务时,采取的行动步骤,步骤应遵过程是指人们解决一个任务时,采取的行动步骤,步骤应遵循的规则,步骤所使用资源的总和。循的规则,步骤所使用资源的总和。过程思维:过程思维: 以过程为中心以过程为中心传统思维:传统思维: 以任务为中心以任务为中心第2章 过程 1、过程思维 Tell me / Show Me过程的过程的3个方面个方面过程应该被定义过程应该被定义关于过程的知识传授给需要执行的每一个人,即过程的学习。关于过程的知识传授给需要执行的每一个人,即过程的学习。过程的监控与强制。过程的监控与强制。第2章 过程2、过程 Tell me / Show Me以过程为中心的好处以过程为中心的好处协调组织的活动,为达到共同的目标而努力。协调组织的活动,为达到共同的目标而努力。为每个人提供度量的基准。为每个人提供度量的基准。增强过程的一致性和可重复性。增强过程的一致性和可重复性。第2章 过程2、过程 Tell me / Show Me成熟的过程。成熟的过程。过程可计划,过程稳定,过程产生的结果一致,过程可预测。过程可计划,过程稳定,过程产生的结果一致,过程可预测。不成熟的过程不成熟的过程与前面正好相反。与前面正好相反。第2章 过程2、过程 Tell me / Show Me进行过程改进的原因进行过程改进的原因只有进行过程改进才能得到不同的产品只有进行过程改进才能得到不同的产品进行过程改进的步骤进行过程改进的步骤定义质量目标、了解过程、对过程进行调整、应用调整后的过程、测定义质量目标、了解过程、对过程进行调整、应用调整后的过程、测量结果、将结果与目标进行比较、循环的持续改进。量结果、将结果与目标进行比较、循环的持续改进。第2章 过程3、过程改进 Tell me / Show Me对照过程的思想,测量自己学习的过程并加以改进。对照过程的思想,测量自己学习的过程并加以改进。第2章 过程Try it在本次课里,你将学到:在本次课里,你将学到:度量软件过程度量软件过程度量计划度量计划采集数据采集数据分析过程分析过程第3章 度量软件过程What Will I Learn ?规范软件开发过程是提高软件质量的基础规范软件开发过程是提高软件质量的基础 第3章 度量软件过程Why Learn It?统计过程:统计过程: 统计过程是过程管理的基础。统计过程是过程管理的基础。过程管理的任务:过程管理的任务: 定义过程、度量过程、控制过程、改进过程。定义过程、度量过程、控制过程、改进过程。 第3章 度量软件过程 1、度量过程 Tell me / Show Me确定问题确定问题选择和定义度量的属性选择和定义度量的属性将度量与过程集成将度量与过程集成诊断现有的度量诊断现有的度量度量集成的活动度量集成的活动第3章 度量软件过程 2、度量计划 Tell me / Show Me采集方法采集方法评估采集评估采集保存数据保存数据理解数据理解数据第3章 度量软件过程 3、采集数据 Tell me / Show Me控制图的构成控制图的构成变量数据图控制图的比较变量数据图控制图的比较XmR图图软件编写过程是一个复杂的过程,常有不确定因素需要去研究与解决。软件编写过程是一个复杂的过程,常有不确定因素需要去研究与解决。第3章 度量软件过程 4、过程分析 Tell me / Show Me通过示例说明如何分析过程行为。通过示例说明如何分析过程行为。第3章 度量软件过程Try it在本次课里,你将学到:在本次课里,你将学到:软件开发过程软件开发过程过程脚本过程脚本基本概念基本概念第4章 软件开发过程What Will I Learn ? 一个恰当的软件开发过程对控制一个项目的进度,成本和质量有一个恰当的软件开发过程对控制一个项目的进度,成本和质量有深刻的影响。所以,定义一个合适的软件开发过程是一个组织所有承深刻的影响。所以,定义一个合适的软件开发过程是一个组织所有承担的重要任务之一。担的重要任务之一。 第4章 软件开发过程Why Learn It?1、软件开发过程软件开发过程:软件开发过程: 开发过程中各个步骤的顺序构成软件过程模型。常用的过程模型开发过程中各个步骤的顺序构成软件过程模型。常用的过程模型有:编码修复模型、瀑布模型、增量模型、迭代模型。有:编码修复模型、瀑布模型、增量模型、迭代模型。确定过程应包括的活动:确定过程应包括的活动: 需求、目标、质量计划、规格说明、高层高设计、出版物内容计需求、目标、质量计划、规格说明、高层高设计、出版物内容计划、测试计划、低层设计、编码、单元和功能测试、构件测试、出版划、测试计划、低层设计、编码、单元和功能测试、构件测试、出版物初稿、系统测试、出版物修订稿、回归测试、打包、交付使用。物初稿、系统测试、出版物修订稿、回归测试、打包、交付使用。 第4章 软件开发过程 Tell me / Show Me确定活动间的关系确定活动间的关系将每项活动的有用信息文档化将每项活动的有用信息文档化剪载过程文档化剪载过程文档化改善过程文档化改善过程文档化1、软件开发过程第4章 软件开发过程 Tell me / Show MePSP过程的各个阶段:过程的各个阶段:计划阶段计划阶段设计阶段设计阶段编码阶段编码阶段编译阶段编译阶段测试阶段测试阶段后置处理阶段后置处理阶段2、过程脚本第4章 软件开发过程 Tell me / Show Me一个产品是指为合作者、雇主或客户所生产的物品。一个产品是指为合作者、雇主或客户所生产的物品。一个项目通常生产一种产品。一个项目通常生产一种产品。一个任务是已定义的一部分工作。一个任务是已定义的一部分工作。一个过程定义完成项目的方法。一个过程定义完成项目的方法。过程有许多阶段或步骤,如计划、开发和测试。过程有许多阶段或步骤,如计划、开发和测试。一个过程阶段可以由许多任务或活动组成。一个过程阶段可以由许多任务或活动组成。一个过程可以包括一个或多个阶段,一个阶段可以包括一个或多个任一个过程可以包括一个或多个阶段,一个阶段可以包括一个或多个任务或活动。务或活动。计划描述一个特定的项目的完成方式。计划描述一个特定的项目的完成方式。一个作业是你为一个项目或一个任务所做的事情。一个作业是你为一个项目或一个任务所做的事情。3、基本概念第4章 软件开发过程 Tell me / Show Me讨论并总结软件开发过程有哪些步骤及步骤间的顺序关系。讨论并总结软件开发过程有哪些步骤及步骤间的顺序关系。第4章 软件开发过程Try it在本次课里,你将学到:在本次课里,你将学到:时间管理的重要性时间管理的重要性记录时间的使用情况记录时间的使用情况时间记录日志时间记录日志阶段计划阶段计划产品计划产品计划第5章 时间管理What Will I Learn ?管理时间是按期完成任务的基本前提。管理时间是按期完成任务的基本前提。时间是可以管理的。时间是可以管理的。管理时间的技巧是可以通过学习获得。管理时间的技巧是可以通过学习获得。 第5章 时间管理Why Learn It?时间管理:时间管理: 指对时间进行规划、安排使之得到合理利用。指对时间进行规划、安排使之得到合理利用。时间管理的重要性:时间管理的重要性: 对时间进行管理可提高生产率。对时间进行管理可提高生产率。 对时间进行管理可使进度可控。对时间进行管理可使进度可控。 第5章 时间管理 1、时间管理的重要性 Tell me / Show Me了解时间的使用情况了解时间的使用情况使用工程记事本使用工程记事本时间记录日志时间记录日志在工程记事本中登记时间记录日志。在工程记事本中登记时间记录日志。第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、使用时间记录日志有两种计划:有两种计划: 阶段计划、产品计划阶段计划、产品计划阶段计划:阶段计划: 一种基于时间段的活动计划。一种基于时间段的活动计划。 时间记录日志、周活动总结表为阶段计划采集信息。时间记录日志、周活动总结表为阶段计划采集信息。产品计划:产品计划: 一种基于任务的活动计划。一种基于任务的活动计划。 作业编号日志为产品计划采集信息。作业编号日志为产品计划采集信息。第5章 时间管理 4、阶段计划 Tell me / Show Me时间记录日志的使用方法、时间记录日志的使用方法、周活动总结表的使用方法、周活动总结表的使用方法、作业编号日志的使用方法等作业编号日志的使用方法等均见均见难点解析难点解析动画动画第5章 时间管理 4、阶段计划 Tell me / Show Me为正在进行和以后进行的程序开发过程建立时间记录日志。为正在进行和以后进行的程序开发过程建立时间记录日志。为过去的为过去的2周和以后周和以后3周建立周活动总结表。周建立周活动总结表。为刚刚编写的为刚刚编写的3个程序和以后编写的程序建立作业编号日志。个程序和以后编写的程序建立作业编号日志。第5章 时间管理Try it本次课本次课, ,我们将学到我们将学到: :了解程序的规模了解程序的规模了解使用规模测量的注意事项了解使用规模测量的注意事项测量程序的规模测量程序的规模填写程序规模估计表填写程序规模估计表在作业编号日志中使用规模测量的方法在作业编号日志中使用规模测量的方法第6章 程序的规模What Will I Learn ?为了更好对任务进行管理,我们需要尽可能准确地估计任务所需花为了更好对任务进行管理,我们需要尽可能准确地估计任务所需花费的时间。由于各种任务的规模的复杂程度的差异很大,所以掌握费的时间。由于各种任务的规模的复杂程度的差异很大,所以掌握一种比较它们规模的方法是很有帮助的。一种比较它们规模的方法是很有帮助的。第6章 程序的规模Why Learn It?表 学生章阅读时间表学生学生日期教员先生课程章阅读时间()页数分钟页&280204.00328122.334118167.38571174.18640123.33总计33777平均56.1712.834.38有了阅读前五章所有有了阅读前五章所有时间的数据,就可以时间的数据,就可以估计出阅读第章要估计出阅读第章要用的时间。考虑每页用的时间。考虑每页用多少分钟而不是每用多少分钟而不是每章用多少分钟来测量章用多少分钟来测量阅读每章所用的时间。阅读每章所用的时间。 见右表,学生见右表,学生Y Y章阅读章阅读时间表。时间表。平均速率=(80+28+118+71+40)/(20+12+16+17+12)=337/77=4.38MIN/页第6章 程序的规模 Tell me / Show Me虽然这种规模测量方法看起来很简单,但是其中确实存在一些复虽然这种规模测量方法看起来很简单,但是其中确实存在一些复杂的因素。杂的因素。首先,有些文档读起来要比其它的文档困难得多。这意味着应该首先,有些文档读起来要比其它的文档困难得多。这意味着应该考虑工作所涉及的类型考虑工作所涉及的类型, ,而不只是它的规模而不只是它的规模. .另外,阅读时间会随着阅读目的和阅读次数发生变化。另外,阅读时间会随着阅读目的和阅读次数发生变化。对程序开发计划,也存在同样的问题。应该为不同类型的作业按对程序开发计划,也存在同样的问题。应该为不同类型的作业按其规模和时间分别记录它们的数据。其规模和时间分别记录它们的数据。第6章 程序的规模 Tell me / Show Me程序规模的测量程序规模的测量 基于程序的规模来估计基于程序的规模来估计编写某个程序所用的时编写某个程序所用的时间间, ,是个好方法。是个好方法。第6章 程序的规模 Tell me / Show Me程序规模的测量程序规模的测量测量程序规模的方法是统计测量程序规模的方法是统计源程序的文本行数(源程序的文本行数(LOC)LOC)。约定约定LOCLOC时,约定不统计空时,约定不统计空行和注释行。行和注释行。例例1 1程序段有程序段有5LOC,5LOC,例例2 2使用使用更紧凑的格式例更紧凑的格式例1 1,只有,只有4LOC4LOC。为了确保规模统计的一致,为了确保规模统计的一致,建议采用标准的编程格式。建议采用标准的编程格式。第6章 程序的规模 Tell me / Show Me其他的规模测量方法其他的规模测量方法工业化的软件开发通常包含文档,以页为单位进行测量。工业化的软件开发通常包含文档,以页为单位进行测量。不适合用代码行统计的产品类型的示例有菜单、文件、报告或屏幕数量,不适合用代码行统计的产品类型的示例有菜单、文件、报告或屏幕数量,一般使用单元和平均值进行统计。一般使用单元和平均值进行统计。约定只统计程序员自己编写的代码行,不统计由程序开发辅助工具生成约定只统计程序员自己编写的代码行,不统计由程序开发辅助工具生成的代码行。的代码行。无论使用何种测量方法,主要目的是为了估计开发的工作量;对于花费无论使用何种测量方法,主要目的是为了估计开发的工作量;对于花费时间较多的产品,应该用成比例增加的规模测量方法。时间较多的产品,应该用成比例增加的规模测量方法。第6章 程序的规模 Tell me / Show Me程序规模估计表程序规模估计表通过查看表中的数据,考虑已知相关要开发程序的消息,能够判断出新通过查看表中的数据,考虑已知相关要开发程序的消息,能够判断出新程序处于表中的规模等级,有助于估算新程序的规模范围。程序处于表中的规模等级,有助于估算新程序的规模范围。第6章 程序的规模 Tell me / Show Me较大规模的估算较大规模的估算1.1.建立一个历史记录,把以前编写的各个元素及它们各自所包含的代码建立一个历史记录,把以前编写的各个元素及它们各自所包含的代码行的相关数据收集在一起。行的相关数据收集在一起。2.2.对于较大规模的估算,考虑新程序的功能,估计出每一个功能的规模,对于较大规模的估算,考虑新程序的功能,估计出每一个功能的规模,把所有功能的估计数值加在一起得到对整个程序的估算。把所有功能的估计数值加在一起得到对整个程序的估算。第6章 程序的规模 Tell me / Show Me第6章 程序的规模 Tell me / Show Me在作业编号日志中使用规模测量的方法在作业编号日志中使用规模测量的方法1.1.“单元栏单元栏”对于编写程序使用对于编写程序使用“代码行代码行”为单位;为单位;2.2.对于阅读课本,使用对于阅读课本,使用“页页”为单位;为单位;3.3.在在“估计数据估计数据”栏使用规模测量方法。栏使用规模测量方法。第6章 程序的规模 Tell me / Show Me测量的程序规模测量的程序规模程序的规模:程序的规模:4LOC4LOC程序的规模:程序的规模:12LOC12LOC第6章 程序的规模 Tell me / Show Me编写一个程序,要求编程之前采用本章方法进行程序规模估计。编写一个程序,要求编程之前采用本章方法进行程序规模估计。第6章 程序的规模Try it本次课本次课, ,我们将学到我们将学到: :了解进度管理的必要性了解进度管理的必要性掌握掌握GanttGantt图的使用图的使用学会跟踪项目计划学会跟踪项目计划第7章 进度管理What Will I Learn ?制定作业进度的目的是为了完成任务。制定作业进度的目的是为了完成任务。当在同一时间内要完成多个任务时,就需要有一份当在同一时间内要完成多个任务时,就需要有一份进度表。进度表。对于庞大复杂任务,需要更加复杂的时间管理方案。对于庞大复杂任务,需要更加复杂的时间管理方案。第7章 进度管理Why Learn It?GanttGantt图图关键的成分关键的成分 :横跨图顶部排列的是日历表。根据所需要的详细程度,每列的时间单横跨图顶部排列的是日历表。根据所需要的详细程度,每列的时间单位可以是日、周、月或年。如果需要的话,也可以是小时。位可以是日、周、月或年。如果需要的话,也可以是小时。最左边的一列包含了每项任务的标识号()。最左边的一列包含了每项任务的标识号()。左边第二列是要做的任务的名称。通常按照预期要做的顺序排列。左边第二列是要做的任务的名称。通常按照预期要做的顺序排列。在图表当中,任务条表示各项任务计划的开始和结束时间。在图表当中,任务条表示各项任务计划的开始和结束时间。在表的左下方是项目名称、进度表的作者和制订此进度的原始日期。在表的左下方是项目名称、进度表的作者和制订此进度的原始日期。第7章 进度管理 Tell me / Show Me第7章 进度管理 Tell me / Show Me制定项目进度表将作业详细分析确定由哪几项任务组成。估计细化的任务规模并决定每项任务可能的作业量。在Gantt图中列出每一项任务,用任务条说明各项任务可能的作业量。在Gantt图中列出每一项任务,说明开始和结束时间。第7章 进度管理 Tell me / Show Me对于若干人参与的作业:确保每个人都知道要完成的任务。获取每项任务承诺的完成时间。确定各任务之间的相互依赖关系。每个人开始处理工作之前他们必须得到什么样的输入,以及他们从谁那里得到这些输入。把每一个相互依赖的关系都文档化。与所有涉及到的人一起复查计划的进度表和任务之间的依赖关系,以确保没有冲突、分歧和误解。复查进度表,以确保它包含了完成整个作业所需要的全部任务。第7章 进度管理 Tell me / Show Me检查点可以测量的进度点,里程碑。项目规划和项目管理中的重要部分。一个项目中能够客观标识的点。不满足可验证性准则的一般陈述不能做检查点。第7章 进度管理 Tell me / Show Me明确的检查点完成并提交了一份学术报告。制订了编写某个程序的计划,并且用标准的格式写成了文档。指导教师和你复查了开发计划,并按照建议作出了一些修改。完成了某个程序的设计,并用特定的格式把它写成了文档。实现、编译并修改了某个程序,因此该程序编译时没有错误。第7章 进度管理 Tell me / Show Me不适当的检查点为编写程序制订了一个计划。设计了一个程序。完成了的编码工作。第7章 进度管理 Tell me / Show Me建立检查点的建议大约每个小时的作业建立一个检查点是最有帮助的。对于为期几周的任务,即使估计这项作业每周只用大约半个小时的时间,每周至少也要设置一个检查点。 较大的项目且涉及若干个软件工程师,需要每个工程师都设置几个中间检查点,以便每个人都能知道其他人的工作状态。 第7章 进度管理 Tell me / Show Me跟踪项目计划项目管理的重要部分,软件工程师在实际作业中应掌握的一项关键技能。使读者知道项目是否正在按照进度进行,超前还是落后。通过项目跟踪,及早发现问题,寻找解决问题的最佳办法。一个良好的跟踪系统能够帮助工程师在问题严重到足以威胁项目的成败之前提前预防。第7章 进度管理 Tell me / Show Me项目跟踪计划示例第7章 进度管理 Tell me / Show Me关于跟踪项目进度的建议确保所有检查点的定义是明确的,并已将他们写下来。在制订一份全新的计划之前,不要改动进度。当按照计划公布项目进展状态时,不要改动计划。在给出新估计的项目完成日期时,保留原来估计的日期,然后用虚线注明新的日期。保存原始的进度表和所有更新的版本。第7章 进度管理 Tell me / Show Me当工作顺序与原计划不同时跟踪计划:采用积分方法,跟踪进度。积分:一种时间的百分比。通过计算任务所用时间占计划的项目总时间的百分比,来给出各任务的积分。通过使用积分,可以用与原计划不同的顺序工作,并且还可以按照计划跟踪工作进展情况。第7章 进度管理 Tell me / Show Me跟踪积分示例第7章 进度管理 Tell me / Show Me什么是检查点,设置检查点有何意义?Gantt图中检查点的符号是什么?试编写一个中等规模的程序,要求定义3个或更多的检查点。第7章 进度管理Try it本次课,我们将学到:了解什么是缺陷查找缺陷预测缺陷第8章 缺陷管理What Will I Learn ?软件质量影响到开发费用、交付日期和用户满度。用户使用软件时,其中的缺陷可能导致严重问题,且发现和修复的代价很大。缺陷由开发人员引起,因此软件工程师需要了解引入的缺陷,对它们进行管理。第8章 缺陷管理Why Learn It?缺陷的定义缺陷是指程序中存在的错误,例如语法错误、拼写错误、标点符号错误或者是一个不正确的程序语句。 减少缺陷的重要方法是研究已经引入的缺陷,确定引起这些缺陷的原因,避免将来重复同样的错误。第8章 缺陷管理 Tell me / Show Me缺陷的类型第8章 缺陷管理 Tell me / Show Me设计缺陷原因1.设计错误,在对问题深思熟虑后做出了错误的设计决策;2.疏忽或思考简单,犯了愚蠢的错误;3.误解了要做的内容。第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发现缺陷的方法编译器测试 个人复查源程序清单 第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缺陷预测缺陷密度(:以每千行代码的缺陷数(Defects/KLOC)来测量第8章 缺陷管理 Tell me / Show Me缺陷预测缺陷密度(Dd):以每千行代码的缺陷数(Defects/KLOC)来测量,KLOC表示每1000行。缺陷密度计算已知累计开发过程中每个阶段发现的缺陷总数(D);统计程序中新开发和修改的代码行数(N)。计算每千行的缺陷数Dd=1000D/N 当为一个新的程序作计划时,先估计出程序可能有多少新的和修改的代码行。然后计算以前开发程序的每千行源代码的平均缺陷数。 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 Defects/KLOC。第8章 缺陷管理Try it假设有如下数据:设计阶段引入缺陷数为5,花费分钟数为195;编码阶段累计引入缺陷数为25,花费分钟数为792;代码复查阶段累计引入缺陷数为12,花费分钟数为145;编译阶段累计引入缺陷数为13,花费分钟数为100;测试阶段累计引入缺陷数为6,花费分钟数为279。计算机各阶段累计每小时引入缺陷数和排除缺陷数。第8章 缺陷管理Try it本次课,我们将学到:了解产品质量控制的重要性缺陷排除效益的计算最终缺陷排除效益的估计过程质量的测量质检过失比、质量成本的计算第9章 度量管理What Will I Learn ?软件功能薄弱、漏洞等问题的出现,使软件质量成为了关注焦点。软件产业的差距更为明显、致命的差距在于产品质量和过程当中的质量控制。 个人对产品质量产生的影响,通过计算在各阶段发现的缺陷数目和残留在最终产品中的缺陷数目之间的关系来考察和检测,进而提高程序的质量。程序的质量取决于过程的质量,过程的质量又取决于人们的工作方式。为了开发出更好的程序,需要测量过程的质量。第9章 度量管理Why Learn It?产品质量,可以从以下几个观点来看:透明性观点:质量是产品一种可以认识但不可定义的性质;使用者观点:质量是产品满足使用目的之程度;制造者观点:质量是产品性能和规格要求的符合度;产品观点:质量是联结产品固有性能的纽带;基于价值观点:质量依赖于顾客愿意付给产品报酬的数量。第9章 度量管理 Tell me / Show Me缺陷排除效益的计算各个阶段的缺陷排除效益的计算方法如下:阶段缺陷排除效益阶段缺陷排除效益100100(本阶段排除的缺陷数)(本阶段排除的缺陷数)/ /(进入本阶段时产品中的缺陷数)(进入本阶段时产品中的缺陷数)第9章 度量管理 Tell me / Show Me第9章 度量管理 Tell me / Show Me最终的缺陷排除效益估计拇指法则:假设残留的缺陷数和最后一个阶段排除的缺陷数相等 。例:代码复查发现17个缺陷;编译时发现2个;测试时发现1个。此时代码复查的缺陷排除效益是:17/(1721)85 运用拇指法则: 17/(17211)80.95 第9章 度量管理 Tell me / Show Me软件工程师提高产品质量的有效方法:代码复查积累排除缺陷的个人经验原型方法第9章 度量管理 Tell me / Show Me质量成本三个主要元素:过失成本、质检成本和预防成本。 过失成本包括修复产品中缺陷的所有费用。 质检成本包括评估产品质量以确定在产品中是否仍然留有缺陷的所有工作,但不包括修复缺陷花费的时间。 预防成本是由修改过程以避免引入缺陷所带来的费用。 第9章 度量管理 Tell me / Show Me质检质量成本是所有复查时间的总和占总开发时间的百分比。过失质量成本是所有编译和测试时间的总和占总开发时间的百分比。例:实际总开发时间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时,无论如何每千行源码都只有很少的几个缺陷。因此,应该努力使质检/过失比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)/(总开发时间)第9章 度量管理 Tell me / Show Me代码复查时发现17个缺陷;编译时发现15个;测试时发现8个。此时代码复查的缺陷排除效益是:17/(17158)42.517/(171588)35.4运用拇指规则,估计的最终代码复查的缺陷排除效益为:第9章 度量管理Try it精确计算质检过失比实际代码复查时间29min,即R=29。实际编译时间5min,即C=5。实际测试时间10min,即T=10。第9章 度量管理Try it本次课,我们将学到:了解项目计划总结表的作用掌握项目计划总结表的填写第10章 项目计划总结表What Will I Learn ?项目计划总结表用来记录估计实际的程序规模和开发时间,帮助软件工程师更好地改善个体软件过程。第10章 项目计划总结表Why Learn It?项目计划及总结的必要性项目计划定义了要完成的工作及如何完成,对所需要的时间和资源进行了估计,为管理部门的评审和控制提供框架。项目计划利用已有数据和经验对新的项目进行有效的计划,因此对项目进行过程中的实际数据进行保存、统计和总结十分必要。第10章 项目计划总结表 Tell me / Show Me项目计划总结表:贯穿项目的计划、设计、编码、测试和后置处理即PSP过程流程的各个阶段。 分为总结、程序规模、开发阶段时间、引入的缺陷和排除的缺陷五个部分,每个部分需要填写计划、实际和累计三组数据。 开发阶段的时间、引入的缺陷和排除的缺陷又分为计划、设计、编码、代码复查、编译和测试等几个阶段。 填写项目计划总结表需要根据时间记录日志、程序规模估计、缺陷记录日志等表格中的真实数据为计算。第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项目计划数据的填写引入的缺陷第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项目实际数据的填写排除的缺陷第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 MeDEF/Hour的填写第10章 项目计划总结表 Tell me / Show Me新编写一个中等规模程序,并记录好相关数据,填写项目计划总结表。第10章 项目计划总结表Try it本次课,我们将学到:使用Java语言编写模拟网上超市购物结算系统运用个体软件过程规范开发程序第11章 网上超市购物结算程序第3章 度量软件过程What Will I Learn ?个体软件过程中所提出的规范,能够帮助程序开发工程师对产品进行时间和质量管理,以提高效率和程序质量。所有规范都需要大量的实践和练习。第11章 网上超市购物结算程序Why Learn It?要求要求编写程序要严格按照Java编程规范进行代码编写。必须按照个体软件的过程,真实地采集数据、填写相关的表格、编写有关的文档。按照老师的要求,每个人必须独立完成。按照实训的时间安排进行实训,实训结束后提交有关的表格与文档。环境环境JDK1.3.1及以上版本第11章 网上超市购物结算程序Try it 安排安排一)准备阶段:实训前准备以下空表格:项目计划总结表、代码复查检查表、时间记录日志、缺陷记录日志、程序规模估计表等;二)计划、设计阶段 分析实训题目要求,获取对该程序功能的描述,完成需求文档; 做计划,1)估计新程序的规模,填写程序规模估计表; 2)填写项目计划总结表的计划数据部分; 3)将计划阶段所花费的时间记入时间记录日志; 做设计 1)对程序进行设计,用流程图或伪码表示法完成设计文档; 2)将设计阶段所花费的时间记入时间记录日志。第11章 网上超市购物结算程序Try it需求分析:用户可以添加购买一种商品,添加的信息包括商品名称、数量和单价用户可以删除已购买的一种商品用户可以查询已购买的一种商品的详细信息,查询时要指明查询的商品的记录号是多少(商品记录号是按照商品购买次序编的),还可以指定查询第一个或最后一个购买的商品信息。用户可以删除所有已添加到购物车的商品用户可以打印要购买的商品的清单用户可以清空显示信息的窗口用户可以要求结帐,系统会打印出用户购物清单,并给出总价。做计划:第11章 网上超市购物结算程序Try it第11章 网上超市购物结算程序Try it本次课,我们将学到:综合运用Java语言和Access数据库应用与开发课程的内容,完成一个简单的图书管理系统。运用个体软件过程规范开发程序第3章 图书管理系统的开发What Will I Learn ?个体软件过程中所提出的规范,能够帮助程序开发工程师对产品进行时间和质量管理,以提高效率和程序质量。所有规范都需要大量的实践和练习。第3章 图书管理系统的开发Why Learn It?要求要求 完成 “系部图书管理系统”,要求实现图书的入库、借出和归返功能。用Java实现用户界面和业务逻辑,数据存储在access数据库中。编写程序要严格按照Java编程规范进行代码编写。必须按照个体软件的过程,真实地采集数据、填写相关的表格、编写有关的文档。每个人必须独立完成。按照实训的时间安排进行,实训结束后提交有关的表格与文档。第3章 图书管理系统的开发Try it环境:环境:JDK1.3.1及以上版本Microsoft Access环境环境第3章 图书管理系统的开发Try it 安排安排一)准备阶段:实训前准备以下空表格:项目计划总结表、代码复查检查表、时间记录日志、缺陷记录日志、程序规模估计表等;二)计划、设计阶段 分析实训题目要求,获取对该程序功能的描述,完成需求文档; 做计划,1)估计新程序的规模,填写程序规模估计表; 2)填写项目计划总结表的计划数据部分; 3)将计划阶段所花费的时间记入时间记录日志; 做设计 1)对程序进行设计,用流程图或伪码表示法完成设计文档; 2)将设计阶段所花费的时间记入时间记录日志。第3章 图书管理系统的开发Try it需求分析:输入书名,点击详细信息查询按钮,下面会显示该书的详细信息输入新书的全部信息,点击添加记录按钮,新书信息会被插入到数据库输入书名,点击删除记录按钮,该书将被从数据库中删除。输入书名,查询详细信息,如果该书没有被借出,可以输入借阅人姓名,然后点击借阅按钮,系统会把借阅信息写入数据库。退出系统。第3章 图书管理系统的开发Try it第3章 图书管理系统的开发Try it本次课,我们将学到:运用C/C+语言开发一个简单电话簿程序。运用个体软件过程规范开发程序第13章 使用C+制作一个简单的电话簿What Will I Learn ?个体软件过程中所提出的规范,能够帮助程序开发工程师对产品进行时间和质量管理,以提高效率和程序质量。所有规范都需要大量的实践和练习。第13章 使用C+制作一个简单的电话簿Why Learn It?要求要求编写程序要严格按照C/C+编程规范进行代码编写。必须按照个体软件过程的规范要求,真实地采集数据、填写相关的表格、编写相关的文档。按照老师的要求,每个人必须独立完成。按照实训的时间安排进行,实训结束后提交有关的表格与文档。第13章 使用C+制作一个简单的电话簿Try it环境:环境:VC6.0环境第13章 使用C+制作一个简单的电话簿Try it 安排安排一)准备阶段:实训前准备以下空表格:项目计划总结表、代码复查检查表、时间记录日志、缺陷记录日志、程序规模估计表等;二)计划、设计阶段 分析实训题目要求,获取对该程序功能的描述,完成需求文档; 做计划,1)估计新程序的规模,填写程序规模估计表; 2)填写项目计划总结表的计划数据部分; 3)将计划阶段所花费的时间记入时间记录日志; 做设计 1)对程序进行设计,用流程图或伪码表示法完成设计文档; 2)将设计阶段所花费的时间记入时间记录日志。第13章 使用C+制作一个简单的电话簿Try it需求分析:用户可以选择查询电话、添加新电话;用户查询电话时要输入电话记录号,系统返回电话号码和主人姓名;用户输入新的姓名和电话号码,可以被添加到电话簿中。第13章 使用C+制作一个简单的电话簿Try it第13章 使用C+制作一个简单的电话簿Try it个体软件过程中所提出的规范,能够帮助程序开发工程师对产品进行时间和质量管理,以提高效率和程序质量。所有规范都需要大量的实践和练习。第14章 使用C+制作简单文件加密/解密程序What Will I Learn ?要求要求编写程序要严格按照C/C+编程规范进行代码编写。必须按照个体软件过程的规范要求,真实地采集数据、填写相关的表格、编写相关的文档。按照老师的要求,每个人必须独立完成。按照实训的时间安排进行,实训结束后提交有关的表格与文档。第14章 使用C+制作简单文件加密/解密程序Try it环境:环境:VC6.0环境第14章 使用C+制作简单文件加密/解密程序Try it 安排安排一)准备阶段:实训前准备以下空表格:项目计划总结表、代码复查检查表、时间记录日志、缺陷记录日志、程序规模估计表等;二)计划、设计阶段 分析实训题目要求,获取对该程序功能的描述,完成需求文档; 做计划,1)估计新程序的规模,填写程序规模估计表; 2)填写项目计划总结表的计划数据部分; 3)将计划阶段所花费的时间记入时间记录日志; 做设计 1)对程序进行设计,用流程图或伪码表示法完成设计文档; 2)将设计阶段所花费的时间记入时间记录日志。第14章 使用C+制作简单文件加密/解密程序Try it需求分析:可以对一个普通的文件加密;可以对本程序加密的文件进行解密。第14章 使用C+制作简单文件加密/解密程序Try it第14章 使用C+制作简单文件加密/解密程序Try itJava编程规范Package 的命名 Class 的命名 Class 变量的命名 Static Final 变量的命名 参数的命名数组的命名方法的参数Java文件样式版权信息Package/Imports 第15章 编程规范Class的说明存取方法构造函数clone方法类方法toString方法main()方法代码样式exit()异常第15章 编程规范Java编程规范垃圾收集final类访问类的成员变量第15章 编程规范Java编程规范 程序块采用缩进风格编写,缩进为4个空格位。排版不混合使用空格和TAB键。 在两个以上的关键字、变量、常量进行对等操作时,它们之间的操作符之前、之后或者前后要加空格;进行非对等操作时,如果是关系密切的立即操作符(如),后不应加空格。 函数体的开始,类的定义,结构的定义,if、for、do、while、switch及case语句中的程序都应采用缩进方式,憑捄蛻捰禀独占一行并且位于同一列,同时与引用它们的语句左对齐 。C/C+编程规范编码规范第15章 编程规范 功能相对独立的程序块之间或for、if、do、while、switch等语句前后应加一空行。 if、while、for、case、default、do等语句自占一行。 若语句较长(多于80字符),可分成多行写,划分出的新行要进行适应的缩进,使排版整齐,语句可读。 一行最多写一条语句。 对结构成员赋值,等号对齐。 #define的各个字段对齐。 不同类型的操作符混合使用时,使用括号给出优先级。第15章 编程规范C/C+编程规范编码规范注释 程序在必要的地方必须有注释,注释要准确、易懂、简洁。 注释应与其描述的代码相近,对代码的注释应放在其上方或右方(对单条语句的注释)相邻位置,不可放在下面,如放于上方则需与其上面的代码用空行隔开。 对于所有的常量,变量,数据结构声明(包括数组、结构、类、枚举等),如果其命名不是充分自注释的,在声明时都必须加以注释,说明其含义。 头文件、源文件的头部,应进行注释。注释必须列出:文件名、作者、目的、功能、修改日志等。第15章 编程规范C/C+编程规范编码规范注释 函数头部应进行注释,列出:函数的目的、功能、输入参数、输出参数、修改日志等。 仔细定义并明确公共变量的含义、作用、取值范围及使用方法。 在对变量声明的同时,应对其含义、作用、取值范围及使用方法进行注释说明,同时若有必要还应说明与其它变量的关系。明确公共变量与操作此公共变量的函数或过程的关系,如访问、修改及创建等。 对指针进行充分的注释说明,对其作用、含义、使用范围、注意事项等说明清楚。在对指针变量、特别是比较复杂的指针变量声明时,应对其含义、作用及使用范围进行注释说明,如有必要,还应说明其使用方法、注意事项等。第15章 编程规范C/C+编程规范编码规范注释 对重要代码段的功能、意图进行注释,提供有用的、额外的信息。并在该代码段的结束处加一行注释表示该段代码结束。 在switch语句中,对没有break语句的case分支加上注释说明。 维护代码时,要更新相应的注释,删除不再有用的注释。保持代码、注释的一致性,避免产生误解。第15章 编程规范C/C+编程规范编码规范命名 标识符缩写 变量命名约定 宏和常量的命名 结构和结构成员的命名 枚举和枚举成员的命名 类的命名第15章 编程规范C/C+编程规范编码规范 在逻辑表达式中使用明确的逻辑判断。 预编译条件不应分离一完整的语句。 在宏定义中合并预编译条件。 使用宏定义表达式时,要使用完备的括号。 宏所定义的多条表达式应放在大括号内。 宏定义不能隐藏重要的细节,避免有return,break等导致程序流程转向的语句。 使用宏时,不允许参数发生变化。 当if、while、for等语句的程序块 。 结构中元素布局合理,一行只定义一个元素。第15章 编程规范C/C+编程规范编码规范
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号