个人软件过程(Personal Software ProcessPSP)是一种可用于控制、管理.doc_第1页
个人软件过程(Personal Software ProcessPSP)是一种可用于控制、管理.doc_第2页
个人软件过程(Personal Software ProcessPSP)是一种可用于控制、管理.doc_第3页
个人软件过程(Personal Software ProcessPSP)是一种可用于控制、管理.doc_第4页
个人软件过程(Personal Software ProcessPSP)是一种可用于控制、管理.doc_第5页
免费预览已结束,剩余6页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

赵老师,太不好意思了,我交作业交到个人网站上了,上课的时候没有注意听,结果作业没有交到指定地方,今天由于刚考完试,和同学闲聊的时候,谈到这个选修课,突然想起来,赶紧上交到共享文档了,老师,不知道是不是还有效啊?老师,希望您宽容一下,我是软件0901的,因为我要外推保研,成绩也一直不错,您的作业我也是自己认真做的,老师希望您体谅一下,即使刚及格也行啊,我因为考研一直很努力学习,老师请您谅解,求您不要让我挂啊.挂了之后什么都没了,求您了. 个人软件过程综述软件 0901 靳坤一个人软件过程概述:个人软件过程(Personal Software Process,PSP)是一种可用于控制、管理和改进个人工作方式的自我持续改进过程,是一个包括软件开发表格、指南和规程的结构化框架。PSP与具体的技术(程序设计语言、工具或者设计方法)相对独立,其原则能够应用到几乎任何的软件工程任务之中。PSP能够说明个体软件过程的原则; 帮助软件工程师作出准确的计划;确定软件工程师为改善产品质量要采取的步骤;建立度量个体软件过程改善的基准;确定过程的改变对软件工程师能力的影响。个体软件过程是由美国Carnegie Mellon大学软件工程研究所(CMU/SEI)的Watts s. Humphrey领导开发的,于1995年推出,在软件工程界引起了极大的轰动,可以说是由定向软件工程走向定量软件工程的一个标志。PSP是一种可用于控制、管理和改进个人工作方式的自我改善过程,是一个包括软件开发表格、指南和规程的结构化框架。 PSP为基于个体和小型群组软件过程的优化提供了具体而有效的途径,例如如何制订计划,如何控制质量,如何与其他人相互协作等等。在软件设计阶段, PSP的着眼点在于软件缺陷的预防,其具体办法是强化设计结束准则,而不是设计方法的选择。根据对参加培训的104位软件人员的统计数据表明,在应用了 PSP后,软件中总的差错减少了58.0,在测试阶段发现的差错减少了71.0,生产效率提高了20.0。PSP的研究结果还表明,绝大多数软件缺陷是由于对问题的错误理解或简单的失误所造成的,只有很少一部分是由于技术问题而产生的。而且根据多年来的软件工程统计数据表明,如果在设计阶段注入一个差错,则这个差错在编码阶段引发了3一5个新的缺陷,要修复这些缺陷所花的费用要比修复这个设计缺陷所花的费用多一个数量级。因此,PSP保障软件产品质量的一个重要途径是提高设计质量。二个体软件过程PSP的内容以及作用:PSP与具体的技术(程序设计语言、工具或者设计方法)相对独立,其原则能够应用到几乎任何的软件工程任务之中。PSP能够:1、说明个体软件过程的原则;2、帮助软件工程师作出准确的计划;3、确定软件工程师为改善产品质量要采取的步骤;4、建立度量个体软件过程改善的基准;5、确定过程的改变对软件工程师能力的影响。PSP的主要作用有:l、使用自底向上的方法来改进过程,向每个软件工程师表明过程改进的原则,使他们能够明白如何有效地生产出高质量的软件。2、为基于个体和小型群组软件过程的优化提供了具体而有效的途径。其研究与实践填补了CMM的空白。3、帮助软件工程师在个人的基础上运用过程的原则,借助于PSP提供的一些度量和分析工具,了解自己的技能水平,控制和管理自己的工作方式,使自己日常工作的评估、计划和预测更加准确、更加有效,进而改进个人的工作表现,提高个人的工作质量和产量,积极而有效地参与高级管理人员和过程人员推动的组织范围的软件工程过程改进。三个体软件过程的逐步发展: 在个体软件过程的发展过程中,首先需要明确质量目标,也就是软件将要在功能和性能上满足的要求和用户潜在的需求。接着就是度量产品质量,有了目标还不行,目标只是一个原则性的东西,还不便于实际操作和判断,因此,必须对目标进行分解和度量,使软件质量能够测量。然后就是理解当前过程,查找问题,并对过程进行调整。最后应用调整后的过程,度量实践结果,将结果与目标做比较,找出差距,分析原因,对软件过程进行持续改进。按照PSP规程,改进软件过程的步骤大致如图所示。 就象CMM为软件企业的能力提供一个阶梯式的进化框架一样,PSP为个体的能力也提供了一个阶梯式的进化框架,以循序渐进的方法介绍过程的概念,每一级别都包含了更低一级别中的所有元素,并增加了新的元素。这个进化框架是学习PSP过程基本概念的好方法,它赋予软件人员度量和分析工具,使其清楚地认识到自己的表现和潜力,从而可以提高自己的技能和水平。PSP进化框架共有四级,各级及其增强版的主要元素如图所示。1.个体度量过程PSP0和PSP0.1 PSP1的重点是个体计划,引入了基于估计的计划方法PROBE(ROxy Based Estimating),用自己的历史数据来预测新程序的大小和需要的开发时间,并使用线性回归方法计算估计参数,确定置信区间以评价预测的可信程度。PSP1.1增加了对任务和进度的规划。 在PSP1阶段应该学会编制项目开发计划,这不仅对承担大型软件的开发十分重要,即使是开发小型软件也必不可少。因为,只有对自己的能力有客观的评价,才能作出更加准确的计划,才能实事求是地接受和完成客户(顾客)委托的任务。2.个体质量管理过程PSP2和PSP2.1PSP2的重点是个体质量管理,根据程序的缺陷善建立检测表,按照检测表进行设计复查和代码复查(有时也称代码走查),以便及早发现缺陷,使修复缺陷的代价最小。随着个人经验和技术的积累,还应学会怎样改进检测表以适应自己的要求。PSP2.1则论述设计过程和设计模板,介绍设计方法,并提供了设计模板、但PSP并不强调选用什么设计方法,而强调设计完备性准则和设计验证技术。 实施PSP的一个重要目标就是学会在开发软件的早期实际地、客观地处理由于人们的疏忽所造成的程序缺陷问题。人们都期盼获得高质量的软件,但是只有高素质的软件开发人员并遵循合适的软件过程,才能开发出高质量的软件,因此,PSP2引入并着重强调设计复查和代码复查技术,一个合格的软件开发人员必须掌握这两项基本技术。3.个体循环过程PSP3PSP3的目标是把个体开发小程序所能达到的生产效率和生产质量,延伸到大型程序;其方法是采用螺旋式上升过程,即迭代增量式开发方法,首先把大型程序分解成小的模块,然后对每个模块按照PSP2.1所描述的过程进行开发,最后把这些模块逐步集成为完整的软件产品。 应用PSP3开发大型软件系统,必须采用增量式开发方法,并要求每一个增量都具有很高的质量。在这样的前提下,在新一轮开发循环中,可以采用回归测试的方法,集中力量考察新增加的这个(这些)增量是否符合要求。因此,要求在PSP2中进行严格的设计复查和代码复查,并在PSP2.1中努力遵循设计结束准则。 四制定计划与时间管理u 如何制定阶段计划u 如何制定产品计划u 管理好时间1. 时间管理 可以按照如下步骤管理时间:1. 分析自己使用时间的历史记录;2. 制定时间安排表,决定如何使用时间;3. 对照制定的安排表跟踪使用时间的方式;4. 决定应该改变什么意思自己的行动达到所作安排的要求。复查时间的分类情况。周活动总结表给出了每周用在各个活动上的平均时间、最大时间和最小时间。检查一下这些活动的分类,是否有些类别包含的范围过大了,而另一些有分得过细。时间管理的重点放在那些站用大部分时间的少数几项活动上。作出时间安排。时间安排表是如何使用时间的计划,根据以前如何使用时间的数据,就可以作出计划,分配以后活动所需要的时间,如表3.3所示。 表3.3 周时间安排活动类别计划时间(小时)实际时间(小时) 编写程序 阅读图书40 上网看新闻2 聊天2 学习2 闲聊1 查询资料2.5 看视频2 休息56 吃饭5 玩游戏 0.5 总计 找出更多的时间。管理好时间的关键是逐步对使用时间的方式进行反复平衡,因为时间每天24小时是固定的。如果希望以后在某些任务多用一些时间,除非能够在另外一些任务中少用一些时间,否则,这常常只是一个愿望而已。 制定基本规则。我们在做许多事情是都是按照一定的规则去做的。为了对时间进行有效管理,也需要有规则可循。不同的是前些规则是别人制作的,而时间管理必须自己制定这些规则。实际上,时间管理的安排就是为管理自己的时间而制定的规则。时间管理的基本规则:已经决定如何使用时间,就必须切实的按照预定的方式去做;为了切实按照预定的安排去做,就必须有非常具体的计划。表3.4就是位置到每天活动制定的每天时间安排表。表3.4 每周活动预算任务日期阅读图书上网BBS查询资料 日总计日 一360202030 430二360202030 430三360202030 430四360202030 430五360202030 430六 周总计1800100100150 2150 设定时间分配的优先级。有些时间是固定不点的,如每周例会,可以把这些时间称为固定时间。进行其他活动的时间就是可变动的时间,只要有时间就可以去做这些活动。可变时间又分成需要完成的任务和自行斟酌的任务。需要的活动如编程、读书,虽然是需要的活动,但它们的时间是可变动的,因为无论如何找出时间都可做这些事情,并且每周在这些活动上所用的时间是不同的。自行斟酌的活动就是要做的所有其他的事情:吃饭、睡觉、社交、观看电视及其其他的娱乐活动。 当作出全面的时间安排时,固定时间的安排是没有什么问题,最常见的问题是分配可变动的时间。列出需要尽快做的事情,首先努力完成最重要的任务。重要的任务推此时,你会不自觉的为这些任务担心,立刻处理这些事情常常是更有效的,并且也将给人们带来一种完成任务的成就感。此外,记住一旦开始了一项令人生畏的任务,就很少会感到象你想象中的那么困难。可以考虑从自行斟酌的活动中抽出那些额外的时间,但是这需要合理的安排,对个人是否真愿意按照这时间安排来执行。没有休息的时间会导致人们将管理好时间的想法推翻。做时间安排以及跟踪时间是重要的,但是时间安排一定要是自己实际愿意接受的。 执行时间安排表。按照时间安排表工作的能力很大程度上取决于个人的自觉性,但是它还取决于要做的工作的数量和它们的优先次序。预料不到的时间是生活中很自然并且是很正常的一部分,特别是在软件工程中。危机常常会打破人们的计划,因此不得不作出调整。在第一次使用时间安排表时,可能会感到它不是很有用,这是正常的,不要因为第一次没有起作用就放弃对时间安排的过程,而是要考虑所发生的事情,看看是否存在一些不可能再发生的反常时间、或者存在对有正常事件引起人而意外花费了很多时间?如果是紧急的情况,不必对时间安排做大的调整,下一周再试着用它,然后复查结果。如果一些经常发生的事情扰乱了安排,应考虑对安排进行改动,为以后类似事情提前做好准备。 最后,按照时间安排表跟踪实施的性能,要继续收集时间数据。根据经验复查时间安排表,在根据需要和经验修改安排,要逐步的作出改变。在改变时间安排表时,要保存以前的版本。 时间管理的目标。收集时间是为了帮助自己管理时间。如果收集的数据被证明是没有用的,就需要重新考虑自己收集时间数据的方法。但是,只有在已经实践了安排的时间之后再这样做。记事作了时间安排表,如果由于一些原因对时间安排变化很大,那么也应该收集更多的数据,知道自己明白当前是如何使用时间为止。2.如何制定阶段计划 为了制定阶段计划,必须清楚时间的使用情况。根据上面介绍的周活动总结表,我们就可以跟踪记录自己是如何支配时间的。在制订下一周的计划时,就可以参考最近的周活动总结表。根据以前各个任务花费的时间,就能判断出下一周将在这些任务上花费多少时间。制定这种计划最简单的方法就是假设将要使用的时间与过去平均使用的时间相同。一种较为精确的方法就是首先考虑下周将要做的工作内容,然后根据以前的最长和最短时间来估计出一个合适的时间。3. 如何制定产品计划 制定产品计划是可以通过事件加以提高的一种技能。从现在开始对每个产品制订计划,产品可以是一个可制定的程序、一个程序设计方案或是一个测试计划,并在以后的项目中继续这样做下去。 收集历史项目数据。对于工程人员,一个产品计划包含产品规模、工作时间和进度三方面的估计。最基本的产品计划只包括对任务或作业所需时间的估计。通过收集以前不同任 务所用时间的数据,就能够估计将来类似的任务大概所需要的时间。表3.1是为了记录每个项目估计时间和实际时间而设计的作业编号日志,参考这些历史项目数据,我们可以方便、准确地作出估计。准确的估计是做好计划的关键。 估算程序规模。产品计划的第一步是要估计产品的规模。对于程序来说,可以使用代码行测量方法估计新程序的规模。为了准确的估计,需要用到以前的规模数据,因此把以前的规模数据按照功能分类是有帮助的。首先查看新程序的需求,估计各类代码有多少行,然后与以前统计的数字进行比较,可以得出开发新程序需要多少时间完成。随着所积累的数据越来越多,作出的估计就会越来越准确。作业编号日志作为记录大量的历史的规模和效率数据提供了一种简便的方法,还可以使用表3.2记录不功能类型的程序历史数据,并按照规模排列。 五缺陷管理:1、什么是缺陷缺陷是指程序中存在的错误,例如语法错误、标点符号错误或者是一个不正确的程序语句,是任何影响程序完整而有效的满足用户要求的东西,是可以表示、描述和统计的客观事物。 缺陷并不像无足轻重的Bug,更像是定时炸弹。大家可能会觉得有些夸大其词,绝大部分细小的缺陷没有引起严重后果。然而不幸的是,很小一部分看起来无关紧要的缺陷却能引起严重问题。虽然现在缺陷对你来说还不是一个严重问题,但很快就会成为一个重要的问题。 设计错误的复杂性和所导致的缺陷的影响没有之间关系,一些微小的编码错误却可能引起严重的系统问题。事实上,绝大多数软件缺陷都源于程序员的疏忽大意。 为了减小缺陷,就必须进行缺陷管理,研究已经引入的缺陷,确定引起这些缺陷的原因,并学会在将来如何避免重复同样的错误。 缺陷分类。在分析缺陷时,将缺陷进行分类是有帮助的。通过缺陷分类,可以迅速找出哪一类缺陷的问题最大,然后集中精力预防和排除这一类缺陷,这就是缺陷管理的关键 。把精力集中到最容易引起问题的几类缺陷上,一旦这几类缺陷得到控制,在进一步找到新的容易引起问题的几类缺陷上。表4.1是Chillarege和他的IBM研究院的工作成果。 表4.1缺陷分类不要急于把10种类型的每一类细分出若干子类,直到你已经搜集到大量程序的缺陷数据。那时,才能够看出哪里需要更详细以及补充什么样的信息才是最有用的。 统计缺陷个数。采用缺陷记录日志,记录那些当你完成初始设计或编码后仍然留在产品中的缺陷。人们很容易对缺陷辩解,但是要管理好缺陷,就必须收集有关缺陷的准确数据。如果原谅缺陷,那只会自欺欺人。如果你这样做的话,就别指望有所提高。2.缺陷查找技术为什么要尽早发现缺陷。不要期望一个简单拼凑出来的满是缺陷的程序,经过修改可以成为一个合格的产品。一旦生产出一个有缺陷的程序,它将永远是有缺陷的。虽然你可以修复所有已知的问题,并且让它通过所有的测试,但它还是一个有许多不定的有缺陷的程序发现和修复缺陷的费用。在典型项目中,产品被分成很多小的模块,由不通的工程师负责开发。在模块设计、实现、编译后,工程师作初始的单元测试;单元测试后,多个模块组成一些大组件进行集成测试;经过各种级别的组件测试后,这些组件集成为产品进行产品设计;最后,将产品集成到系统中进行系统测试。还有发现和修复缺陷的方法。有多种工具和辅助手段来帮助完成这些步骤,工程师最常用的工具是编译器,它能够表示出大部分语法缺陷。但是编译器最基本的任务是生成目标代码,并且可能会在源程序有缺陷的情况下生成代码。因此,不能检查出所有的拼写、标点符号或其他不符合语法的缺陷。一般编译器仅提供了缺陷的征兆,你必须自己对问题定位,并确定是什么问题,通常很快能够做到这一点,但偶尔也需要较长的时间。另外一种常用方法就是上面讲述的测试。测试的质量是由测试用例覆盖所有程序功能的程度决定的。测试可以用来验证程序几乎所有的功能,但有自己的缺点:同编译器一样只能满足缺陷派出的第一个步骤,你仍必须从缺陷征兆找出问题的根源,然后才能修复;随着项目规模的扩大,全面的测试会花费大量的时间,要进行完全测试几乎不可能的。最有效的发现和修复缺陷的方法是个人复查源程序清单。这种方法是负很难彻底清除程序中的缺陷,但事实证明,这是最快而且最有效的方法。3.代码复查代码复查就是研究源代码,并从中发现错误。代码复查更有效的原因是:在复查时看到的是问题本身而不是征兆。从头到尾复查代码时,考虑的是程序应该做什么。因此,当看到某些地方不正确时,就可以看到可能的问题是什么,并立即去验证代码。复查的缺点是:非常耗时,而且很难恰当的进行;复查时一种技能,当然可以通过学习和实践来提高。代码复查的第一步是了解自己引入的缺陷的种类,这是收集缺陷数据的主要原因。因为在下一个程序中引入的缺陷种类一般会与前面的基本类似,只要采用同样的软件开发方法,情况会一直如此。另一方面来说,当你有了技能和经验或改变了过程,缺陷的类型和数目会随之变化。但是到了一定程度后,改进就变得非常困难了。这是,就必须研究缺陷,这可以帮助你找到更好的发现和修复缺陷的方法。如何进行代码复查。代码复查的目标是在软件过程中尽可能早和尽可能多的发现缺陷,缺陷发现时间越少越好。采用表4.3描述的一个有序的检查方法,在编译之前进行代码复查,是完成目标最好的方法。 编译之前进行复查。有几个原因说明应在编译之前进行代码复查:不论编译前或编译后,进行完整的代码复查的时间大约相同;不论编译前或编译后,对检查语法有效性的效果是一样的;先做复查将节省大量编译时间,若不做代码复查,一般要花1215的开发时间进行编译,一旦使用代码复查后,编译时间可以缩短至3或更少;编译程序后,代码一般复查很难彻底的进行; 经验证明,在编译阶段有大量的缺陷时,一般在测试阶段也有许多缺陷。建立个人代码复查检查表。如果想发现和改正程序中的每一个缺陷,就必须遵照一个精确的规程。检查表可以确保遵循这个规程,它包括一系列程式的步骤。按照检查表去作时,就知道如何进行代码复查。如果能够正确使用检查表,还能知道每个步骤发现了多少缺陷。这样就能测量出复查过程的效率,并进一步改进检查表。检查表包括了个人的经验。通过不断的使用和改进个人检查表,就可以帮助你用较少的时间发现这些缺陷。4.缺陷预测引入缺陷是人类的正常现象,所有的工程师都会引入缺陷。因此所有的工程师都应该了解自己引入缺陷的类型和数据。 在开发过程中,总是可再进行一轮测试或代码复查,决定是否这样做的唯一方法就是分析缺陷数据。通过分析历史数据,可以估计出程序中缺陷的个数。通过把当前项目的数据?的质量情况。这样就能决定是否需要增加一些缺陷排除步

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论