PSP个⼈软件过程试题(附答案)
1.
答:在两个⽇志的头部分有关于项⽬的⼀些通⽤信息;
时间⽇志(Time Recording Log):时间⽇志⽤来记录时间数据。关于时间数据需要填写的内容有:
Phase:选择你正在⼯作的这条时间记录是属于哪个阶段。
Start::记录你开始⼯作的⽇期时间。双击即可在⼯具中输⼊现在的⽇期和时间。 Int.:以分钟为单位输⼊中断时间。Stop::记录你结束⼯作的⽇期时间。双击即可在⼯具中输⼊现在的⽇期和时间。 Delta Time:该条记录的合计时间,将被⾃动计算。
Comments:⽤于描述中断,你正在做的任务或者其他任何对你的⼯作有显著影响的事情。
缺陷⽇志(Defect Recording Log):缺陷⽇志⽤来记录时间数据。关于缺陷数据需要填写的内容有:
Type:记录缺陷类型,该缺陷类型为缺陷类型标准中定义的⼗种缺陷类型之⼀。 Date:记录发现该缺陷的⽇期时间。双击输⼊现在的⽇期时间。
Phase Injected:选择或者输⼊你判断该缺陷是在哪个阶段引⼊的。
Phase Removed:记录你发现并修复该缺陷的阶段。
Fix time:记录你到和修复该缺陷总计花费的时间。你可以精确计时,或者使⽤你的最佳估计值。
Fix defect:如果这个缺陷是在修复另⼀个缺陷时引⼊的,记录那个缺陷的编号。 Description:记录有关缺陷是什么的解释(不是解释症状,是解释这个缺陷的根本原因!)2.
答:·Yield、A/FR、PQI(Process Quality Index)。
Yield:Phase yield 度量产品中某阶段发现和移除的缺陷的百分⽐。
Yield 能⽤于度量设计和编码复审,审查,编译以及测试的有效性。
计算式如下:Yield (for a phase) = 100 * (defects found) / (defects found + not found) Process yield 是在这个阶段之前引⼊的缺陷is the percentage of defects injected before a phase that were found before that phase.。例如,系统测试之前的yield 是系统测试的process yield当不带阶段名使⽤时,process yield 指的是在编译和测试之前的phase yield。Yield 可以⽤来估算但是直到已经通过测试和产品使⽤到所有缺陷后才能准确计算。Yield 度量在开发者和测试者记录所有缺陷的时候最有⽤。design and cod
e review defects, compile defects, test defects 通过使⽤过程控制度量,你更可能进⾏⾼yield (high-yield)的复审
A/FR(Appraisal to failure ratio):A/FR = (appraisal COQ) / (failure COQ)
A/FR 经验:A/FR 度量是与项⽬相关的;对于PSP 练习,A/FR 的⽬标是2.0 或更⾼。⾼A/FR 与测试缺陷的数量少以及⾼产品质量相关。项⽬应当基于估算的⽆缺陷测试次数设置A/FR ⽬标。由于提到A/FR,这⾥必须解释⼀下COQ(Cost of Quality)。 COQ 度量以⼀种对于管理有意义的⽅式处理质量。COQ 元素是failure, appraisal 和prevention costs. Failure cost 是花在修复和返⼯上的时间加上所有⼩块时间。在PSP 中,即为编译和测试时间。 Appraisal costs 是为发现缺陷所做的审查花费。在PSP 中就是设计和编码复审时间。 Defect-prevention cost 是识别和解释缺陷原因的时间。通常在⼩组或团体中完成,并由其中⼀名⽀持部门成员完成。对于PSP defect prevention ⾏为包括收集缺陷数据,改善设计⼿段和原型。
3.
答:PSP 总共有6 个向上兼容的级别,分别是PSP0、PSP0.1、PSP1、PSP1.1、PSP2 和PSP2.1。
各个level 的主要内容如下:
PSP0:该级别你建⽴⼀个度量表现的基线。(You establish a measured performance baseline.)PSP0 是⼀个简单、已明确定义的个⼈过程,它和你原有的软件开发过程的区别不⼤,主要是验证在⼩程序中使⽤已明确定义过程。制定计划。使⽤你现有的设计和开发⼿段完成⼀个⼩程序。收集关于你⼯作的时间和缺陷数据。准备⼀个总结报告。 PSP0 有六个阶段(实际中可能会缺少Compile 阶段)。计划、设计、编码、编译、测试、总结。Planning、Design、Coding、Compile、Test、Postmortem. PSP0 度量:时间——按照阶段跟踪时间,缺陷——记录发现和修复的缺陷。PSP0 有四张表格 PSP0 项⽬计划总结(PSP0 Project Plan Summary)–总结计划的时间和实际的时间,以及按照阶段发现和修复的缺陷 PSP0 时间⽇志(PSP0 Time Recording Log )–⽤于记录时间 PSP0 缺陷⽇志(PSP0 Defect Recording Log)–⽤于记录缺陷 PSP0 缺陷
类型标准(PSP0 Defect Type Standard)–⽤于定义标准缺陷类型
PSP0.1:PSP0.1 有两个新的过程元素:过程改进建议表格(process improvement proposal (PIP) form)、规模计量标准和编码标准(size counting and coding standards)项⽬计划总结进⾏了扩展。需要编码和规模计量标准来写PSP 程序。这些标准根据你所使⽤的语⾔和需求进⾏裁剪定制,并被设计得更易于进⾏规模计量。编码标准为编码阶段定义了⾯向质量的退出条件(exit criteria)。
PSP1:该级别开始要进⾏规模,资源和进度的计划。PSP1 的⽬标是为开发软件规模估算建⽴⼀个有序并且可重复的过程。
新的过程元素是:PROBE 规模估算⽅法和规模估算模板(PROBE size estimating method and size estimating template)和测试报告模板(test report template)
PSP1.1:该级别有两个新过程元素。但在PSP 练习中⽤不到。任务计划模板(task planning template)和进度计划模板(schedule planning template)项⽬计划总结部分已经扩展为包含计划的时间、实际的时间、成本效益⽐、复⽤和新增复⽤的百分⽐(Planned time、Actual time、CPI、%Reused、%New Reusable)。这些值被⾃动计算。
PSP2:该级别将实践缺陷和利益的管理。有两个新增的过程元素:设计复审检查表和编码复审检查表(design review checklist and code review checklist)。PSP2 向PSP 中添加了两个关键能⼒:设计和编码复审以及质量计划。
PSP2.1: PSP2.1 增添了下列过程元素:PSP2.1 design review script,PSP2.1 design review checklist,operational specification template,functional specification template state specification template,logic specification template 添加到PSP2.1 完整项⽬计划总结中的元素:LPI、UPI、% Appraisal Cost of Quality、% Failure Cost of Quality、COQ A/F Ratio 4.答:(这⾥只问了时间,规模只在回归参数的标准上稍有不同,其他可以类推,可见书上表格)
PROBE 是PROxy Based Esitimating的简称。PROBE ⽅法使⽤proxy 来估算程序规模和开发时间。(P
ROBE stands for PROxy Based Estimating. PROBE uses proxies to estimate program size and development time.)Method 简要
A 使⽤estimated proxy size 进⾏回归
B 使⽤plan added and modified size 进⾏回归
C ⼀般⽅法
D ⼯程师判断(猜)
PROBE-A:使⽤estimated proxy size (作为proxy E)和development time 之间的关系。使⽤此⽅法的条件是:三组或以上相关数据(R^2 > 0.5),合理的回归参数(table 6.6 on pg. 96):beta0 接近0(⼤体上⼩于新程序期望开发时间),beta1 不⼤于1/历史⽣产效率的50% ,⾄少完成三个PSP1 级别以上的练习
PROBE-B:使⽤plan added and modified size 和development time 之间的关系。
使⽤此⽅法的条件是:三组或以上相关数据(R^2 > 0.5),合理的回归参数(table 6.6 on pg. 96):beta0 接近0(⼤体上⼩于新程序期望开发时间),beta1 不⼤于1/历史⽣产效率的50% ,⾄少完成三个PSP0.1 级别以上的练习
PROBE-C:基于历史平均⽔平使⽤⼀个⽐值ratio 调整时间。
使⽤此⽅法的条件是:只需要⼀组历史数据即可,使⽤简单。
分下列三种情况设置回归参数的值:如果有⼀组estimated added and modified size 和development time 的历史数据,beta0为0,beta1 为actual total development time to date ⽐estimated total added and modified size to date 如果有⼀组plan added and modified size 和development time 的历史数据,beta0 为0,beta1 为actual total development time to date ⽐plan total added and modified size to date 如果你只有actual time and size 数据,beta0 为0,beta1 为actual total development time to date ⽐actual total added and modified size to date
PROBE-D:没有历史数据,使⽤⾃⼰的判断根据estimated added and modified size 估算开发时间。当没有⾜够的⾼质量历史数据,或者⾯对新的开发环境,要求过去的记录失真时候使⽤。
5.
Operational template:
操作规格模板描述了⽤户与系统之间⼀系列场景。
可以⽤于定义测试⽤例,便于明确⽤户需求,⽅便与⽤户之间交互的设计决策。Functional template:
功能规格模板描述了系统可以向⽤户提供的对外部可见的⾏为说明书,以及与这些功能相关的系统⾏为,变量和内部关系(继承关系)。
便于定义系统功能,明确系统中的关键功能点,有利于确定优先级。
State Specification Template:
状态规格模板⽤于描述系统中所有可能发⽣的状态的集合,以及状态之间转换的条件,伴随的动作。
有利于明确系统各个组件之间的交互,彼此之间发送的消息,和系统运算的时序。Logic Specification Template:
逻辑规格模板⽤于描述系统中各个有机组分(⽅法,项,算法等)的逻辑实现。
有利于对系统的逻辑执⾏进⾏不同粒度的考察和精细的设计,确保程序的正确性。
6.
①宏观来看,四个设计模板与UML四个常⽤的图之间互为表⾥,有互补性。
②操作规格模板和UML⽤例图基本是对应的。
③功能规格模板和状态规格模板分别与类图和时序图有联系,他们所描述的是同⼀个⽅⾯的内容,只是具体⽅法上有差别。功能规格模板描述的要⽐类图中的信息更为详实,类图中只有简单的⽅法的型构。
状态规格模板涵盖了状态之间转换的条件,这是UML图中所缺少的。
④UML四个常⽤的图中没有与逻辑规格模板对应的图。
7.
地⽅
①完整性:状态机必须为系统的每个可能状态的所有排列组合进⾏全覆盖。
②正交性:状态机的下⼀状态必须是唯⼀的,即任意状态,在任意相同的转换条件的
作⽤下,其下⼀状态必须是⼀样的。
8.
A).
①从图中可以看出随着对PSP的深⼊学习,⽤于编译和测试的时间总体上呈现下降
趋势,这说明PSP对个⼈软件过程的管理是有利于提升软件产品的质量的。
②考虑到各个项⽬的代码规模实际上是增长的趋势,这意味着PSP使得开发⼈员在
保证软件质量的基础上可以开发更⼤规模的软件,有利于解决软件的复杂性难题。
B).①从图中可以看出随着PSP的深⼊学习,CQO没有明显变化。
②考虑到各个项⽬的代码规模实际上是呈现增长的趋势,这说明PSP使得开发⼈员在开发更
⼤规模的项⽬上仍旧付出较⼩的代价就可以获得较⾼的质量,这显然是我们所期
待的。考虑的随着规模的提升,软件系统的复杂度有着指数级别的跃升,这⼀点
不知道怎么回事,课堂上举得例⼦中应该增加的缺陷数⽬是可以被DLD和CODE引⼊的缺陷之和整除的,即缺陷是按照⽐例分配到这两个阶段的,但是这道题是做不到的,所
10.
(1)PROBE A:理想状态下是第六次作业,原因是在第3次作业中开始使⽤PROBE ⽅法,记录代理规模,有estimated proxy size这项数据,要求有⾄少三组数据。
(2)PROBE B: 理想状态下是第五次作业,原因是在第2次数据中开始⽤Planned A&M 这个数据,要求同样是⽤三组可⽤数据。
11.
(1)确保设计是可评审设计,代码是严格遵循编码规范的可评审的代码。
(2)对设计审查表,代码审查表逐项进⾏审查,如实记录。
(3)根据审查结果,实时更新设计审查表,代码审查表,建⽴个性化的审查表格
(4)根据审查结果,进⾏⾃我总结,⾃我检讨,建⽴持续的⾃我改进机制。
(5)注意时间,敢于并善于在审查阶段花费时间以提升软件质量。代码<=200LOC/h (6)可以使⽤规范化的设计验证⽅法提⾼设计审查的质量。
12.
(1)规范化表达:
Pros:A).这可能是唯⼀⼀种可以对所有情况进⾏全覆盖的验证⽅法,可靠性⾼。
B).这是⼀种可以普遍使⽤的⽅法,简单易⾏。
Cons:A).应⽤⾯很窄,只有很少的设计内容是可以⽤规范化的语⾔进⾏替代的。
怎么写代码做软件B).操作过程中出错的风险较⾼。
C).难以应对复杂的逻辑。
(2)执⾏表:对单步代码级的项在特定的条件下⼀步⼀步记录结果。
Pros:A).简单易⾏,可以对特定的⽤例给出可靠的结果。
Cons:A).⼀次只能验证⼀个⽤例,难以消除偶然。
B)耗时较多。
C).⼈⼿动建议,出错可能性较⼤。
(3)跟踪表:将项⽬所有可能的情况罗列,每种情况都是⽤执⾏标表。
Pros:A).⼀定程度上弥补了执⾏表的缺点,可以对更⼴的范围进⾏覆盖。
B).同样是相对简单易⾏的。
Cons:A).耗时很多
B).出错的可能性更⾼。
(4)正确性检验:使⽤严谨的数学⼿段进⾏证明。
Pros:这样的证明是严格的,精确的,适⽤于对安全性和可靠性要求很⾼的场合。
Cons:证明⽐验证往往具有更⾼的难度,甚⾄很多情况下是难以证明的。
13.
解决质量问题的着眼点是:
软件系统的质量取决于系统中质量最差的组件,⽽系统组件的质量取决于开发软件的⼯程师,准确的来说是⼯程师所采取的软件过程。
(1)进⾏⾼质量的设计评审和代码评审,因为评审是消除缺陷最有effectiveness 的⼿段。
(2)进⾏⾼效的测试:虽说测试时间多可能意味着质量低,但是测试的确是⼀种可以有效消除缺陷的⼿段。
(3)尽量⽤具有经验的优秀⼯程师进⾏开发。
(4)使⽤PSP的规范⽅法,对历史数据进⾏记录,进⾏估算,并基于估算对项⽬进程进⾏跟踪和管理,数据证明PSP的⽅法是有助于提⾼产品质量的。
(5)进⾏周密的计划,“质量是规划出来的”(By GuoPingRong)
(6)⾼质量的设计:在设计过程中,有效利⽤设计模板,进⾏设计,这是最有效的避免缺陷⼿段。
14.多重回归考虑了add , reused, modified,因素,在实际的项⽬中,新增代码,重⽤的代码,修改的代
码,其质量,成产率应该是完全不同的,进⽽会对估算产⽣影响,需要线性回归进⾏修正。所以这样,要⽐只考虑单⼀的估计代理规模要科学。15.
(1)便于⽤规范化的⼿段对代码的规模进⾏统计,数据的收集处理,并指导后续的估算和开发。
(2)便于使⽤⾃动化的⼯具进⾏代码规模的统计,节省了时间,同时也保证了对规模
数据具有统⼀的执⾏标准。
(3)统⼀的编码规范有利于编写可读性⾼以及可评审的代码,为项⽬的后续进⾏奠定良好的基础。
(4)便于后续的ProxySize的统计和估计。