版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Introduction to the Personal Software Process ZengyiCollege of Computer Science and Engineering, ChongQing University, Chongqing 40044, China E-mail: Telo),138832027518. PSP的进度管理n如何制定和使用进度表n如何对照进度表使用检查点来跟踪作业的进展情况n要识别和描述用来跟踪某个编程项目进展情况的几个检查点8. PSP的进度管理8.2进度管理的工具nProject 2000 nGantt图nGant
2、t图的跟踪n任务分配状况n日历n网络图n资源工作表n资源使用状况n资源图表n其他图表8. PSP的进度管理8.3制定项目进度表n在Gantt图中列出每一项任务并说明开始和结束时间n确保每个人都知道要完成的任务n获取每项任务承诺的完成时间n确定各任务之间的相互依赖关系n每个人开始处理工作之前他们必须得到什么样的输入n他们从谁那里得到这些输入n把每个相互依赖的关系都文挡化n与所有涉及到人一起复查计划的进度表和各任务之间的依赖关系,以确保没有冲突、分歧和误解n复查进度表,以确保它包含了完成整个作业所需要的全部任务8. PSP的进度管理8.4 检查点n对任何项目进行计划,都要把工作分成几部分,分别估计
3、和规划n每一部分都可作为一个计划n每一部分完成后,就达到了一个定义的进展阶段检检查点查点或称里程碑里程碑n检查点是一个项目中能够客观地标识的点,每个检查点都标明了计划完成的日期,那么就容易看出当前是达到了进度要求还是落后了n检查点必须清晰明确、没有歧义才是有用的,即必须是某一特别动作,要么它已经完成,要么还没有完成8. PSP的进度管理 8.4 检查点n一些明确的检查点的事例n完成并提交了一份学术报告n制定了某个程序的计划,并用标准格式写成了文档n与指导教师复查了开发计划,并按照建议作出了修改n完成了某个程序设计,并用标准格式写成了文档n实现、编译并修改了某个程序n过多的检查点不利于跟踪要紧的
4、事情8. PSP的进度管理8.5 跟踪项目计划n跟踪项目计划的目的n使你知道进度超前还是落后n检查点和详细的计划可使你明确项目的那部分出了问题n在项目出现问题时及时采取行动8. PSP的进度管理8.5 跟踪项目计划n跟踪项目计划的几点建议n确保所有检查点的定义是明确的,并已写下来n在制定一份全新的计划之前,不要改动计划n按照计划公布项目进展状态时,不要改动计划n在给出新估计的项目完成日期时,保留原来估计的日期,然后用虚线注明新的日期n保存原始的进度表和所有更新的版本n如果改动了原始的计划,就没有了测量依据8. PSP的进度管理8.5 跟踪积分n如何了解自己的进展情况nHumphrey建议的个人
5、使用表格n例1:开发计划 对计划用时和实际用时的比较 任务子任务计划(min)计划的积分计划和完成周次实际积分单元累计计划实际任务1任务1.1总计计划做此项任务的时间计划做此项任务的总时间计划做此项任务的单元百分比累计值,应该为100。计划做此项任务的时间占总计划时间的百分比计划做此项任务为止的单元时间的累计百分比值实际做此项任务的时间占总计划时间的百分比8. PSP的进度管理8.5 跟踪积分nHumphrey建议的个人使用表格n例2 计划进度表预测进度周编号计划积分实际积分预测积分12n100.00通过对前面各周实际积分的平均值计算,可以得到后面各周的预测值计算各周实际积分值计算各周计划积分
6、值8. PSP的进度管理8.5 跟踪积分nMS Project 2000中的进度跟踪9. PSP的项目计划9.1项目计划的必要性n定义要完成的工作和如何完成这项工作n对所需要的时间和资源进行估计n为管理部门的评审和控制提供框架n当它写成文档时就是一个与实际性能比较的基准n这个基准可以使你看到估计中的错误n这个基准可以使你改善计划的准确性9. PSP的项目计划9.2项目计划总结表在此表基础上逐步添加更有用的表项在此表基础上逐步添加更有用的表项n在项目开始之前填写计划部分,在项目开始之后填写实际部分。示例1学生:曾笑寒学生:曾笑寒日期:日期:10/7/2002程序:程序:程序号程序号#:8教师:教
7、师:ZENGYI 程序设计语言:程序设计语言:PASCAL总结总结计划计划实际实际Mins/LOC7.827.21LOC/Hour7.678.32程序规模程序规模 LOC计划计划实际实际新开发与更改的2619最大值36最小值18开发时间开发时间 Min计划计划实际实际总计203137最大值282最小值141以前的历史数据。如果没有,则只能猜测。60/7.827.21*19203=7.82*26,此项值用于分析开发的生产率。任务完成之前,学生用以前的数据来估计程序规模估计程序规模,并填写到计划计划栏。26即为最大和最小值之间最可能的值假如新开发20,并要从以前程序拷贝一个15行的程序但估计只修改
8、6行,因此20+6=26最大规模和最小规模有助于判断最可能的估计值282=7.82*36,141=7.82*18,任务完成之后,实际值是根据时间记录日志时间记录日志中的数据填入9. PSP的项目计划9.3估计的准确性n估计出来的规模和时间可能不是很准确的,这是正常的。n首要的目标是要学会做出无偏估计,即高估的次数要与低估的次数相同。例如,每进行10次估计,预计有5次高估和5次低估。n估计文档化,有助于以后作出更好的估计,有助于判断制订不能满足委托书的风险大小10. 软件开发过程10.1为什么使用过程n在软件企业改善其性能时,如何确定该组织的当前的软件开发状况收集数据n一个过程为完成某一作业而定
9、义的一系列步骤n一个作业的每个步骤或阶段都有明确的入口准则,只有满足这些条件,才可以开始进入这个阶段n同样,它们也有出口准则,只有满足这些条件,才可以结束这个阶段n过程的步骤定义了要完成的任务以及如何完成这些任务n过程质量决定了他们的工作质量和效率10. 软件开发过程10.1为什么使用过程nPSP是一个用以帮助软件工程师测量和改进工作方式的框架nPSP的两个目标n帮助软件工程师开发程序n告诉你如何用过程来改善工作方式10. 软件开发过程10.2与过程相关的一些定义n一个产品是指为合作者、顾主或客户所生产的产品n一个项目通常生产一种产品n一个任务是已定义的一部分工作n一个过程定义完成项目的方法n
10、过程有许多阶段或步骤,如计划、开发和测试n一个过程阶段可以由许多任务或活动组成,如集成测试、系统测试、验收测试等n一个过程可以包括一个或多个阶段,一个阶段可以包括一个或多个任务或活动n计划描述一个特定的项目完成方式,包括如何做、何时做以及花费多少n一个作业是你为一个项目或任务所做的事情时间和缺陷数据实际数据10. PSP的软件开发过程10.2与过程相关的一些定义n一个有完整描述的过程称为已定义过程。n已定义过程的过程包括一些脚本脚本、表格表格、模板模板和标准标准等。nPSP的过程流程计划设计编码编译测试后置处理过程脚本项目计划总结表各种日志需求最终产品计划的和实际的项目和过程的数据计划数据10
11、. PSP的软件开发过程10.3 PSP的过程脚本如后表所示n计划阶段首先获得项目的需求,然后完成项目项目计划总结表计划总结表,最后把计划所花费的时间记录在时间时间记录日志记录日志上。n设计阶段设计这个程序。用流程图或伪码等指定的格式记录设计的内容。该阶段结束时,把设计时间记录在时间记录日志时间记录日志上。n编码阶段利用所选择的程序设计语言来实现该设计。使用一致的编码格式。结束时在时间记录日时间记录日志志上记录编码所花费的时间。10. PSP的软件开发过程10.3 PSP的过程脚本n编译阶段编译程序并改正所有发现的缺陷。修复缺陷直到正确编译无错为止。所有花费在这一阶段的时间记为编译时间编译时间
12、,包括修改设计和改正代码的时间。该阶段结束时,在时间记录日志时间记录日志上记录编编译时间译时间。n测试阶段进行充分的测试以保证程序满足所有的需求,并且能够不带任何错误通过一组全面的测试集。所有花费在这一阶段的时间记为测试时间,测试时间,其中包括修改设计、改正代码和重新编译的时间。该阶段结束时,在时间记录日志时间记录日志上记录测试时间测试时间。n后置处理阶段完成项目计划总结表项目计划总结表中所有有关实际数据的那些栏目。然后登入一个估计的后置处理阶段的时间。10. PSP的软件开发过程目的目的PSP过程脚本:过程脚本: 指导用户进行小型程序的开发指导用户进行小型程序的开发入口准则问题描述;PSP项
13、目计划总结表;以前开发的程序的实际规模和时间数据;时间记录日志;计划获取对程序功能的描述;估计整个程序的代码行数及其最大值和最小值;确定开发效率(Mins/LOC);计算总开发时间及其最大值和最小值;将计划数据填入项目计划总结表;最后把计划所花费的时间记录在时间记录日志上。设计设计程序;按照指定的格式记录设计文档;把设计阶段所花费的时间记录在时间记录日志上。编码实现设计;使用标准格式来书写程序;把编码阶段所花费的时间记录在时间记录日志上。编译编译程序;修复所有发现的错误;把编译阶段所花费的时间记录在时间记录日志上。测试测试程序;修复所有发现的错误;把测试阶段所花费的时间记录在时间记录日志上。后
14、置处理把实际的规模和时间数据记录在项目计划总结表;将后置阶段所花费的时间记录在时间记录日志上。出口准则经过详尽测试的程序;较好的设计文档;完整的程序清单;已经填好的项目计划总结表;已经填好的时间记录日志。10.4 带有PSP过程脚本的项目计划总结表 示例2学生:曾笑寒学生:曾笑寒日期:日期:10/7/2002程序:程序:程序号程序号#:8教师:教师:ZENGYI 程序设计语言:程序设计语言:PASCAL总结总结计划计划实际实际累计累计Mins/LOC7.827.217.21LOC/Hour7.678.328.32程序规模程序规模 LOC计划计划实际实际新开发与更改的261919最大值36最小值
15、18开发时间开发时间 Min计划计划实际实际累计累计累计百分比累计百分比计划10442.9设计19000编码118616144.6编译12212115.3测试29434331.4后置处理15885.8总计203137137100.0最大值282最小值141该阶段的累计时间/总的累计时间*100对每个阶段,计算并登入实际开发时间与最近的前一个程序的累计时间之和作业完成后,根据时间记录中的数据登入最近的前一个程序的项目计划总结表中,找到各个阶段所花费的时间的累计百分比,乘以总的开发时间,即得到各阶段的计划开发时间:4/137*100=2.9110.4 带有PSP过程脚本的项目计划总结表 示例3学生
16、:曾笑寒学生:曾笑寒日期:日期:10/21/2002程序:程序:程序号程序号#:9教师:教师:ZENGYI 程序设计语言:程序设计语言:PASCAL总结总结计划计划实际实际累计累计Mins/LOC7.216.76LOC/Hour8.328.88程序规模程序规模 LOC计划计划实际实际新开发与更改的232929最大值31最小值15开发时间开发时间 Min计划计划实际实际累计累计累计百分比累计百分比计划511154.5设计012123.6编码748514643.96编译25284914.7测试52499227.6后置处理1011195.7总计166= 7.21* 23196333100.0最大值2
17、24= 7.21* 31最小值108= 7.21* 15前表累4+本表实11=15本表15/本表333=4.5前表累计百分比2.9*本表总计166=5前表值60/ 7.21总计开发时间的累计值除以新开发和更改的代码行的累计值196/29=6.7660/6.7611. PSP的缺陷及其记录11.1什么是缺陷n缺陷是指程序中存在的错误,如语法、拼写、标点错误,不正确的、冗余的、被忽略的语句等n缺陷可能出现在程序的需求中、设计中或文档中n缺陷不是无足轻重的Bug,而更像是定时炸弹n缺陷是任何影响到程序完整而有效地满足用户要求的东西n缺陷是客观的事物,可以标识、描述和统计11. PSP的缺陷及其记录1
18、1.2缺陷和质量n软件质量影响到开发费用、交付日期、用户满意度n有了明确的需求,才能开发出高质量的软件产品n高质量的软件产品必须满足用户的功能要求n只有软件能够正常运行才能使用功能n能让软件正常运行就必须排除软件中的缺陷n绝大部分程序缺陷排除后,才能考虑软件质量的其他目标n两个重要问题:两个重要问题:查找和标识缺陷/确定缺陷起因11. PSP的缺陷及其记录11.3缺陷的分类n目的通过对缺陷分类,可以迅速找出那一类缺陷的问题最大,然后集中精力预防和排除这一类缺陷n原则把具有普遍性的问题进行分类n使用在收集到大量程序的缺陷数据后,才能进一步细分某一类为若干个子类11. PSP的缺陷及其记录11.3
19、缺陷的分类 缺缺 陷陷 类类 型型 标标 准准类型编号类型名称描述10文档注释,消息20语法拼写,标点符号,打字,指令格式30联编打包变更管理,库,版本控制40赋值说明,重名,作用域,限制50接口过程调用/引用,输入/输出,用户格式60检查出错信息,不合适的检查70数据结构,内容80函数逻辑,指针,循环,递归,计算,函数缺陷90系统配置,记时,内存100环境设计,编译,测试,其它支持系统问题11. PSP的缺陷及其记录11.4缺陷的收集n收集程序中的缺陷数据的步骤n为程序中发现的每一个缺陷做一个记录n对于每个缺陷要记录足够详细的信息,以便以后能更好地了解这个缺陷n分析这些数据以找出哪些缺陷类型
20、引起大部分的问题n设计出发现和修复这些缺陷的方法n别人在你的程序中发现的缺陷n了解、确定你的个体软件过程的弱点n改善你的个体软件过程11. PSP的缺陷及其记录11.5缺陷记录日志帮助收集缺陷数据学生:学生:日期:日期:教师:教师:程序号:程序号:日期编号类型引入阶段排除阶段修改时间修复缺陷描述:描述:描述:描述:本程序的缺陷顺序编号一个缺陷占一行在修复缺陷后,登入缺陷类型。使用前面的缺缺陷类型标准陷类型标准。在排除缺陷后记录过程阶段。一般是指发现缺陷和修复这个的阶段一般是指从开始意识到缺陷的存在时算起,直到修复完成且检查无误的估计时间如果在修复另一个缺陷时引入了此缺陷,记录这不正当的修复缺陷
21、的编号。如果不能确定这个相关缺陷的编号,则记入X.登入对当前缺陷的简单描述。应该能看出该缺陷的起因以及你为什么作出这种判断。11. PSP的缺陷及其记录11.5缺陷记录日志n收集缺陷数据的目的n提高程序设计水平管好缺陷n减少程序中缺陷的个数使用合适的方法n节省时间排除缺陷越早越好n节约开支单元测试后,查找修复缺陷的费用平均以10倍速度增长n负责任地完成工作谁引入谁排除11.6更新的PSP过程增加了缺陷数据的收集和记录目的目的PSP过程脚本:过程脚本: 指导用户进行小型程序的开发指导用户进行小型程序的开发入口准则问题描述;PSP项目计划总结表;以前开发的程序的实际规模和时间数据;时间记录日志;缺
22、陷记录日志;缺陷记录日志;计划获取对程序功能的描述;估计整个程序的代码行数及其最大值和最小值;确定开发效率(Mins/LOC);计算总开发时间及其最大值和最小值;将计划数据填入项目计划总结表;最后把计划所花费的时间记录在时间记录日志上。设计设计程序;按照指定的格式记录设计文档;把设计阶段所花费的时间记录在时间记录日志上。编码实现设计;使用标准格式来书写程序;把编码阶段所花费的时间记录在时间记录日志上。编译编译程序;修复和记录和记录所有发现的错误;把编译阶段所花费的时间记录在时间记录日志上。测试测试程序;修复所有发现的错误;把测试阶段所花费的时间记录在时间记录日志上。后置处理把实际的规模和时间和
23、缺陷数据和缺陷数据记录在项目计划总结表;将后置阶段所花费的时间记录在时间记录日志上。出口准则经过详尽测试的程序;较好的设计文档;完整的程序清单;已经填好的项目计划总结表;已经填好的时间记录日志和缺陷日志缺陷日志。11.7增加了缺陷数据的PSP项目计划总结表 示例4学生:曾笑寒学生:曾笑寒日期:日期:10/28/2002程序号程序号#:10 程序设计语言:程序设计语言:PASCAL总结总结 Mins/LOC计划计划 6.76实际实际 6.12累计累计 6.5LOC/Hour 8.88 9.80 9.23程序规模程序规模 LOC计划计划实际实际新开发与更改的4457105最大值58最小值30开发时
24、间开发时间 Min计划计划实际实际累计累计累计百分比累计百分比计划1318334.8设计1143558.1编2编译44217010.2测试827316524.2后置处理1732517.5总计297349682100.0最大值392最小值203引入的缺陷引入的缺陷 设计2225.0编码6675.0总计88100.0排除的缺陷排除的缺陷 编译6675.0测试2225.0总计88100.0总计开发时间的累计值除以新开发和更改的代码行的累计值。例如,682/105=6.560/6.5=9.2319+29+57=105新增部分12. PSP的缺陷查找技术12.1发现缺陷的多种方
25、法的步骤n标识缺陷的征兆n从征兆推断出缺陷的位置n确定程序中的错误n决定如何修复缺陷n修复缺陷n验证这个修复是否已经解决了这个问题12. PSP的缺陷查找技术 12.2发现和修复缺陷的方法n用编译器不能检查出所有的缺陷n编译器可以在源程序有缺陷的情况下生成代码n编译器只能查出大约90%的语法错误和很少的逻辑错误n测试需要测试人员形成测试用例n测试用例=测试数据集合+期望结果集合n测试只能找出缺陷征兆而不能找出根源n测试不能找出所有的缺陷,测试的效果有限n单元测试发现大约50%的缺陷n系统测试发现进入该阶段的缺陷的30%n发行有缺陷的产品等待用户发现和反馈信息n事实证明花费太大。IBM每年花费2
26、.5亿修复1.3万缺陷n个人复查清单个人复查清单有效发现和修复缺陷的方法n同行评审同行评审一般会发现程序中一般会发现程序中50%70%的缺陷的缺陷12. PSP的缺陷查找技术12.3代码复查n在编码完成后并在编译和测试前进行n先做复查将节省大量的编译时间(可缩短至3%)n细心工作是有回报的n可以直接找到问题本身n与单元测试相比,效率提高35倍n单元: 46 个缺陷 n代码复查:610个缺陷n缺点:耗时且难恰当进行n有经验的人只能发现程序中平均7580%的缺陷12.3代码复查代码复查脚本代码复查脚本目的目的PSP过程脚本之过程脚本之 代码复查脚本代码复查脚本入口准则在复查前,检查下列产品是否已经
27、准备好:需求陈述文档;程序设计文档;程序的源代码清单;编码标准复查规程首先,完成源程序编码;然后,在进行编译和测试之前,打印一份源程序清单;进行代码复查;进行复查时,仔细检查每一行源程序,尽可能多地发现和修复缺陷;修复缺陷修复所发现的每一个缺陷;确保所做的修复正确无误;将缺陷登入在缺陷记录日志覆盖率复查验证程序设计覆盖了需求文档中描述的每一个功能;验证程序代码实现了所有设计;程序逻辑复查验证程序设计在逻辑上是正确的;验证程序代码正确地实现了设计中的逻辑;命名和类型检查验证所有的名字和类型已经正确地声明和使用;检查整型、长整型和浮点型是否正确声明;变量检查确保每个变量已经初始化;检查上溢、下溢或
28、越界问题;程序语法检查验证程序代码符合编程语言的规格说明;出口准则在复查结束时,应该有完整的、修复过的源程序清单;填写完整的时间记录日志;填写完整的缺陷记录日志;12.4更新后的PSP过程脚本增加代码复查目的目的PSP过程脚本:过程脚本: 指导用户进行小型程序的开发指导用户进行小型程序的开发入口准则问题描述;PSP项目计划总结表;以前开发的程序的实际规模和时间数据;时间记录日志;缺陷记录日志;缺陷记录日志;计划获取对程序功能的描述;估计整个程序的代码行数及其最大值和最小值;确定开发效率(Mins/LOC);计算总开发时间及其最大值和最小值;将计划数据填入项目计划总结表;最后把计划所花费的时间记
29、录在时间记录日志上。设计设计程序;按照指定的格式记录设计文档;把设计阶段所花费的时间记录在时间记录日志上。编码实现设计;使用标准格式来书写程序;把编码阶段所花费的时间记录在时间记录日志上。代码复查复查所有的源程序代码;遵照代码复查脚本;修复并记录所发现的每一个缺陷;将代码复查阶段所花费的时间记入时间记录日志;编译编译程序;修复和记录和记录所有发现的错误;把编译阶段所花费的时间记录在时间记录日志上。测试测试程序;修复所有发现的错误;把测试阶段所花费的时间记录在时间记录日志上。后置处理把实际的规模和时间和缺陷数据和缺陷数据记录在项目计划总结表;将后置阶段所花费的时间记录在时间记录日志上。出口准则经
30、过详尽测试的程序;较好的设计文档;完整的程序清单;已经填好的项目计划总结表;已经填好的时间记录日志和缺陷日志缺陷日志。12. PSP的缺陷查找技术12.4更新后的PSP项目计划总结表 n增加了代码复查代码复查项的PSP项目计划总结表 n示例5 程序#11学生:曾笑寒学生:曾笑寒日期:日期:11/4/2002程序号程序号#:11 程序设计语言:程序设计语言:PASCAL总结总结 Mins/LOC计划计划 6.50实际实际 5.88累计累计 6.30LOC/Hour 9.23 10.20 9.52程序规模程序规模 LOC计划计划实际实际新开发与更改的5348153最大值72最小值35开发时间开发时
31、间 Min计划计划实际实际累计累计累计百分比累计百分比计划1715485.8设计2828838.6编6代码复查036363.7编译357778.0测试833820321.1后置处理2626778.0总计345282964100.0最大值468最小值228引入的缺陷引入的缺陷 设计1321.4编码51178.6代码复查总计614100.0排除的缺陷排除的缺陷 代码复查3321.4编译2857.2测试1321.4总计614100.0引入代码复查机制后,编译错误变少了引入代码复查机制后,编译工作时间变少了引入代码复查机制后,引入的缺陷变少了13. PSP的代码复查检查表13
32、.1检查表的用途n代码复查的关键是要有一个高效的复查规程n代码复查检查表包括一系列规程式的步骤n如果想发现和改正程序中的每一个缺陷,就必须遵照一个精确的规程n检查表可以帮助确保遵循这个规程n正确使用检查表可以知道每个步骤发现的缺陷数,也就能测量出复查过程的效率,以便改进检查表n检查表包括了个人的经验,可以不断地使用和改进13. PSP的代码复查检查表13.2建立个人检查表某种语言代码 程序名和程序号#:目的指导你进行有效的代码复查#累计累计%一般性说明在完成每个复查步骤之后,将发现的某个类型的缺陷的个数记录在右面栏目中。如果该步骤没有发现缺陷,就在右面的栏目中打个表示检查无误的符号(X)。在开
33、始复查下一个程序单元之前,要按照检查表完成规定的一些检查项目,例如对程序、类、对象或方法的检查。项目1复查内容项目n复查内容全面检查对整个程序全面检查以发现系统问题和非期望的或用户问题。总计例如,完整性、include、初始化、函数调用、名字、字符串、指针、输入/输出格式、括号配对、逻辑符号的合理性、逐行检查(语法、分号、标点符号等)、文件的打开与关闭、编码标准编码标准的符合程度、全面检查13.3更新后的PSP过程脚本增加代码复查目的目的PSP过程脚本之过程脚本之 代码复查脚本代码复查脚本入口准则在复查前,检查下列产品是否已经准备好:需求陈述文档;程序设计文档;程序的源代码清单;编码标准编码标
34、准 例例C+编码标准编码标准.doc一般性说明使用代码复查表;在复查时遵照代码复查检查表的使用说明;在复查结束时,填写累计、累计百分比和总结栏目;复查规程首先,完成源程序编码;然后,在进行编译和测试之前,打印一份源程序清单;进行代码复查;进行复查时,仔细检查每一行源程序,尽可能多地发现和修复缺陷;修复缺陷修复所发现的每一个缺陷;确保所做的修复正确无误;将缺陷登入在缺陷记录日志覆盖率复查验证程序设计覆盖了需求文档中描述的每一个功能;验证程序代码实现了所有设计;程序逻辑复查验证程序设计在逻辑上是正确的;验证程序代码正确地实现了设计中的逻辑;命名和类型检查验证所有的名字和类型已经正确地声明和使用;检
35、查整型、长整型和浮点型是否正确声明;变量检查确保每个变量已经初始化;检查上溢、下溢或越界问题;程序语法检查验证程序代码符合编程语言的规格说明;出口准则在复查结束时,应该有完整的、修复过的源程序清单;填写完整的时间记录日志;填写完整的缺陷记录日志;13.4增加检查表的PSP过程脚本目的目的PSP过程脚本:过程脚本: 指导用户进行小型程序的开发指导用户进行小型程序的开发入口准则问题描述;PSP项目计划总结表;代码复查检查表代码复查检查表;以前开发的程序的实际规模和时间数据;时间记录日志;缺陷记录日志;计划获取对程序功能的描述;估计整个程序的代码行数及其最大值和最小值;确定开发效率(Mins/LOC
36、);计算总开发时间及其最大值和最小值;将计划数据填入项目计划总结表;最后把计划所花费的时间记录在时间记录日志上。设计设计程序;按照指定的格式记录设计文档;把设计阶段所花费的时间记录在时间记录日志上。编码实现设计;使用标准格式来书写程序;把编码阶段所花费的时间记录在时间记录日志上。代码复查复查所有的源程序代码;遵照代码复查脚本;修复并记录所发现的每一个缺陷;将代码复查阶段所花费的时间记入时间记录日志;编译编译程序;修复和记录所有发现的错误;把编译阶段所花费的时间记录在时间记录日志上。测试测试程序;修复所有发现的错误;把测试阶段所花费的时间记录在时间记录日志上。后置处理把实际的规模和时间和缺陷数据
37、记录在项目计划总结表;复查缺陷数据并更新代码复查检复查缺陷数据并更新代码复查检查表;查表;将后置阶段所花费的时间记录在时间记录日志上。出口准则经过详尽测试的程序;较好的设计文档;一个完成的代码复查检查表;一个完成的代码复查检查表;完整的程序清单;已经填好的项目计划总结表;已经填好的时间记录日志和缺陷日志。13. PSP的代码复查检查表13.5某学生的缺陷数据排列表Pareto分布类型编号引入缺陷排除缺陷复查漏过的缺陷设计编码其他复查编译测试802314520844440231445021126010030107090总计416510515倒序13. PSP的代码复查检查表类型编号引入缺陷排除缺
38、陷复查漏过的缺陷设计编码其他复查编译测试80231452084444023144502112程序程序#10 #2662811 #15322312 #152224总计416510515因为学生没有对程序10做代码复查,所以他把编译与测试阶段发现的所有缺陷都记为代码复查漏过的缺陷。14. PSP的缺陷预测14.1缺陷率n软件工程师在工作中肯定会引入缺陷n一般情况下n平均引入率:100个缺陷/千行代码n有经验的: 50个缺陷/千行代码n软件工程师应该了解自己引入缺陷的类型和数目n减少缺陷率方面,编程规范和对缺陷的跟踪与分析比经验有效14. PSP的缺陷预测14.2缺陷数据的使用n收集缺陷数据是帮助你
39、了解自己引入的缺陷n利用这些数据来设计自己的个人代码复查检查表n利用这些数据来估计在新开发的程序中引入的缺陷数n利用这些历史数据来对程序开发的各个阶段将引入的和排除的缺陷数作出一个相当合理的预测n准确估计缺陷是重要的通过分析缺陷数据n工程师的个人承诺要开发无缺陷的程序是重要的14. PSP的缺陷预测14.3缺陷密度n每千行代码的缺陷数Defects/KLOCn计算步骤n累计开发过程中每个阶段发现的缺陷总数 Dn统计程序中新开发的和修改的代码行数新开发的和修改的代码行数 Nn计算每千行代码的缺陷数 Dd=1000*D/Nn例如,一个96行的源程序有14个缺陷,则其Dd=1000*14/96=14
40、5.83 Defects/KLOC14. PSP的缺陷预测14.4缺陷的预测n缺陷率的波动与预测的精确度n与个人经验有关n与个体过程不稳定有关n缺陷估计nNd plan=1000*(D1+Dn)/(N1+Nn)n例如,假设有5个程序的数据,则原来的Nd plan=1000*(6+11+7+9+5)/(37+62+49+53+28)=165.94 Defects/KLOCn假设新程序有同样的缺陷密度,则新程序的缺陷数为:Dplan =Nplan * Nd plann例如,假设新程序有规模估计为56行,则其预期的缺陷数为: Dplan =56* 165.94 /1000=9.29Defects以前
41、各程序发现的缺陷以前各程序新开发和修改的代码行估计新程序新开发和修改的代码行数估计新程序的缺陷数14. PSP的缺陷预测目的目的PSP过程脚本:过程脚本: 指导用户进行小型程序的开发指导用户进行小型程序的开发入口准则问题描述;PSP项目计划总结表;代码复查检查表;以前开发的程序的实际规模和时间数据;时间记录日志;缺陷记录日志;计划获取对程序功能的描述;估计整个程序的代码行数及其最大值和最小值;确定开发效率(Mins/LOC);计算总开发时间及其最大值和最小值;估计各个开发阶段将引入和排除的缺陷的估计各个开发阶段将引入和排除的缺陷的个数;个数;将计划数据填入项目计划总结表;最后把计划所花费的时间
42、记录在时间记录日志上。设计设计程序;按照指定的格式记录设计文档;把设计阶段所花费的时间记录在时间记录日志上。编码实现设计;使用标准格式来书写程序;把编码阶段所花费的时间记录在时间记录日志上。代码复查复查所有的源程序代码;遵照代码复查脚本;修复并记录所发现的每一个缺陷;将代码复查阶段所花费的时间记入时间记录日志;编译编译程序;修复和记录所有发现的错误;把编译阶段所花费的时间记录在时间记录日志上。测试测试程序;修复所有发现的错误;把测试阶段所花费的时间记录在时间记录日志上。后置处理把实际的规模和时间和缺陷数据记录在项目计划总结表;复查缺陷数据并更新代码复查检查表;将后置阶段所花费的时间记录在时间记
43、录日志上。出口准则经过详尽测试的程序;较好的设计文档;一个完成的代码复查检查表;完整的程序清单;已经填好的项目计划总结表;已经填好的时间记录日志和缺陷日志。项目计划总结表项目计划总结表例例1学生:曾笑寒学生:曾笑寒日期日期11/11/2002程序号程序号#:12程序设计语言:程序设计语言:PASCAL总结总结 Mins/LOC计划计划 6.3实际实际 4.93累计累计 5.92LOC/Hour 9.52 12.17 10.14Defects/KLOC 94.79程序规模程序规模 LOC计划计划实际实际新开发与更改的5158211最大值65最小值37开发时间开发时间 Min计划计划实际实际累计累
44、计累计百分比累计百分比计划1618665.8设计274412710.2编5代码复查1238745.9编译2611887.0测试682923218.6后置处理26421199.5总计3212861250100.0最大值410最小值233包括到程序12#已累计发现20个缺陷,累计开发程序211LOC,因此有20/211*1000缺陷密度为程序13#提供缺陷估计,以及缺陷在各开发阶段的计划估计值提供计算依据项目计划总结表项目计划总结表例例1(续)(续)学生:曾笑寒学生:曾笑寒日期日期11/11/2002程序号程序号#:12程序设计语言:程序设计语言:PASCAL引入的缺陷引
45、入的缺陷计划计划实际实际累计累计累计百分比累计百分比计划1420.0设计51680.0编码代码复查编译测试后置处理总计620100.0排除的缺陷排除的缺陷 计划设计编码代码复查2525.0编译21050.0测试2525.0总计620100.0项目计划总结表项目计划总结表例例2学生:曾笑寒学生:曾笑寒日期日期11/18/2002程序号程序号#:13程序设计语言:程序设计语言:PASCAL总结总结 Mins/LOC计划计划 5.92实际实际 4.47累计累计 5.92LOC/Hour 10.14 12.32 10.49Defects/KLOC94.79106.4 96.90程序规模程序规模 LOC
46、计划计划实际实际新开发与更改的5847258最大值72最小值41开发时间开发时间 Min计划计划实际实际累计累计累计百分比累计百分比计划1822886.0设计352415110.2编码1499363743.1代码复查20371117.5编译244926.2测试64824016.2后置处理334116010.8总计3432291479100.0最大值426最小值243本程序实际引入缺陷5个,新开发和修改的实际代码行47,5/47*1000=106.4包括到程序12#已累计发现25个缺陷,累计开发程序258LOC,因此有25/258*1000程序12#的结果程序12#的结果5.92* 585.92
47、* 725.92* 41计划值以12#程序的累计百分比为依据*343项目计划总结表项目计划总结表例例2(续)(续)学生:曾笑寒学生:曾笑寒日期日期11/18/2002程序号程序号#:13程序设计语言:程序设计语言:PASCAL引入的缺陷引入的缺陷计划计划实际实际累计累计累计百分比累计百分比计划设计1416.0编码552184.0代码复查编译测试后置处理总计6525100.0排除的缺陷排除的缺陷 计划设计编码代码复查23832.0编译321248.0测试1520.0总计6525100.0估计缺陷数=程序12#的Defects/KLOC*本程序的计划代码行长58/1000=5.5约6个缺陷,然后按
48、程序12#的引入和排除的累计百分比值,计算出各个阶段预计/计划引入和排除的缺陷数。这样即完成了缺陷预测。缺陷预测。开发完成后登入开发完成后登入15. 缺陷排除的经济效益n缺陷排除是一种经济学问题n软件费用n时间进度n软件质量n重要问题n缺陷排除的相对费用n把缺陷留给客户的影响n以及所导致的用户支持费用15. 缺陷排除的经济效益15.1高质量工作的必要性n三十年后与三十年前软件工程师的工作几乎没有改变n单元测试n集成测试n产品交付后的缺陷修复n更好的原则和方法n保证质量的原则是在第一次就要开发出合格的产品n按照PSP的建议去做15. 缺陷排除的经济效益15.2缺陷排除问题n缺陷难于查找和修复,所
49、以排除缺陷的花费很大n软件系统的规模和复杂度大约每十年增长十倍n了解和控制缺陷带来的费用测量缺陷排除的效果n计算每小时排除缺陷的个数n计算缺陷排除效益,即测量通过某一排除方法所发现的缺陷百分比n例如,对一个开始测试时有100个缺陷的产品,测试发现45个缺陷,那么缺陷排除效益就是45%。n知道了缺陷排除方法和缺陷排除效率后,就可更好地发现和修复缺陷。15. 缺陷排除的经济效益15.3缺陷排除时间n对于大型软件,发现和修复缺陷需要大量时间nMicrosoft NT测试时花费了250个工程师一年的时间,共发现和修复30000个缺陷,平均1/16hn一般每个缺陷需要若干个小时来复查和修复n缺陷越多,修
50、改越迟,修改工作的费用就越大15. 缺陷排除的经济效益15.3缺陷引入和排除的经验n缺陷管理计算和跟踪缺陷的引入率和排除率缺陷的引入率和排除率缺陷引入阶段缺陷引入率设计阶段13个缺陷/h编码阶段58个缺陷/h测试阶段24个缺陷/h代码复查阶段612个缺陷/h缺陷排除阶段缺陷排除率测试阶段24个缺陷/h代码复查阶段810个缺陷/h15. 缺陷排除的经济效益15.4在项目计划总结表中每个小时缺陷数的计算n计算各阶段累计每小时引入缺陷数n60*(该阶段累计引入缺陷数)/(该阶段累计花费分钟数)n计算各阶段累计每小时排除缺陷数n60*(该阶段累计排除缺陷数)/(该阶段累计花费分钟数)15.4在项目计划
51、总结表中每个小时缺陷数的计算例 程序号程序号#:13 表表1学生:曾笑寒学生:曾笑寒日期日期11/18/2002程序号程序号#:13程序设计语言:程序设计语言:PASCAL总结总结 Mins/LOC计划计划 5.92实际实际 4.47累计累计 5.92LOC/Hour 10.14 12.32 10.49Defects/KLOC94.79106.4 96.90过程效益过程效益33.336032程序规模程序规模 LOC计划计划实际实际新开发与更改的5847258最大值72最小值41开发时间开发时间 Min计划计划实际实际累计累计累计百分比累计百分比计划1822886.0设计352415110.2编
52、码1499363743.1代码复查20371117.5编译244926.2测试64824016.2后置处理334116010.8总计3432291479100.0最大值426最小值243过程效益plan = 100*2/(1+5)=33.33过程效益actual = 100*3/5=60过程效益ToDate = 100*8/(4+21)=3215.4在项目计划总结表中每个小时缺陷数的计算例 程序号程序号#:13 表表1(续)(续)学生:曾笑寒学生:曾笑寒日期日期11/18/2002程序号程序号#:13程序设计语言:程序设计语言:PASCAL引入的缺陷引入的缺陷计划计划实际实际累计累计累计百分比
53、累计百分比Def./Hour计划设计1416.01.59编码552184.01.98代码复查编译测试后置处理总计6525100.0排除的缺陷排除的缺陷 计划Def./Hour设计编码代码复查23832.04.32编译321248.07.87测试1520.01.25总计6525100.060*4/151=1.5960*21/637=1.9860*5/240=1.2560*12/92=7.8760*8/111=4.32编译前计划的引入缺陷数1+5编译前计划的排除缺陷数2缺陷排除率缺陷引入率15. 缺陷排除的经济效益15.5缺陷排除效益的计算n当在某个阶段排除缺陷时,你可能相知道自己在这个阶段发现了多少缺陷,还漏掉了多少缺陷n历史数据可以让你计算和跟踪缺陷排除效益n缺陷排除效益第一次编译
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024包露的离婚协议书
- 暨南大学《工程制图及CAD》2020-2021学年第一学期期末试卷
- 济宁学院《乒乓球V》2021-2022学年第一学期期末试卷
- PE工程师工作总结
- 精神病医疗科普
- 脑出血的针灸治疗
- 连续肾脏替代治疗处方
- 2024年度版权许可协议:电影制品发行与放映权的详细规定2篇
- 爱牙日护理宣教
- 2024版二手车金融服务合同3篇
- 供应商应急响应服务方案
- 新QC七大手法(培训课件)
- (完整版)网络安全操作规程
- 保健医生工作及考核细则(1)规章制度
- 小米手机营销策略问题及对策研究样本
- 运用PDCA血透室导管感染率
- 国家基本公共卫生中医药健康管理培训课件
- 考研数学(数学一)模拟试卷500(题后含答案及解析)
- 直播代运营合作合同-合同模板
- 2023年贵州省12月普通高中学业水平考试
- 小学语文四年级上册第四单元作业设计
评论
0/150
提交评论