PSP学习笔记-PSP0教学
工程师个体软件过程(PSP):第一部分
(卡内基梅隆大学软件工程学院)
教学:使用PSP0
教学目标:
在此教学之后,你将:
l 明白PSP0过程
l 知道如何使用PSP0过程脚本和表单
l 准备好将PSP0应用于程序1
PSP0过程:
PSP0是一个简单的、定义的、个体过程。
l 制作一个计划
l 使用你现有的设计和开发方法去编写一个小程序
l 在你的工作过程中收集时间和检测数据
l 准备一个总结报告
PSP0目标:
PSP0的目标是:
l 在编写程序的过程中演示定义过程的使用
l 将基本的测量使用于开发过程
l 需要最小化对于你个体实践的变化
PSP0过程步骤-1:
PSP0有六个步骤。
计划(Planning)-制作用来开发通过需求定义的程序的计划
设计(Design)-为通过需求定义的程序制作一个设计规范
编码(Coding)-转化设计规范到程序设计语言语句
PSP0过程步骤-2:
编译(Compile)-翻译程序设计语言语句到可执行代码
测试(Test)-检测可执行代码是否满足需求
检讨(Postmortem)-总结和分析项目数据
步骤顺序:
步骤顺序由步骤之间的依赖来决定。
l 你不能在编译代码之前测试它。
l 你不能在编写代码之前编译它。
l 如果设计在编码之后产生你就无法使用设计进行编码。
l 没有理由在实施之后去做计划。
你应该由此开始:计划->设计->编码->编译->测试->检讨
过程流:
为了程序以最小规模产生并容易理解,应该以如下顺序执行。
需求->计划->设计->编码->编译->测试->检讨->程序和项目数据
制订一个计划。
设计所有模块。
编写所有模块。
编译编写好的程序。
在检讨的时候总结项目数据。
周期化过程流-1:
一些代码可能需要一个迭代方法。
在这个例子中,设计在一个步骤中完成。
设计确认了两个模块,模块A和模块B。
然后两个模块分开进行编写、编译和测试。
这个例子使用PSP0步骤和两个编写-编译-测试周期。
例子过程:
需求->计划->设计->
[模块A]编码->编译->测试->
[模块B]编码->编译->测试->
检讨->程序和项目数据
周期化过程流-2:
在这个例子中,可能会存在两个以上的周期并且周期也可能包含设计步骤。
注意每个周期都关注于程序的生产部分,例如:模块A,模块B,模块C。
部件规模是决定周期的关键因素。
l 一行代码太少
l 程序也许又太长
一个或者更多的类、方法、过程、函数等是对于一个周期部件合适的规模。
例子过程:
需求->计划->
[模块A]设计->编码->编译->测试->
[模块B]设计->编码->编译->测试->
[模块C]设计->编码->编译->测试->
检讨->程序和项目数据
过程脚本:
过程脚本提供“专家级别”向导来介绍如何使用过程。
它们有一到两页长。
它们描述了:
l 目标
l 入口参数
l 公共说明
l 步骤
l 出口参数
PSP0脚本-1:
计划(Planning):估计开发时间
开发(Development):使用你现在的方法开发产品
检讨(Postmortem):通过记录每个步骤的时间消耗和缺陷增长来完成项目计划总结
PSP0脚本-2:
设计(Design):使用你现在的设计方法设计程序。
编码(Coding):实现程序。
编译(Compile):编译直到无缺陷。
测试(Test):测试程序直到修复所有缺陷。
在缺陷日志中记录缺陷并且在时间日志中记录每个步骤花费的时间。
使用过程脚本:
过程脚本指引你通过过程。
你应该:
l 在开始一个步骤前检查入口参数
l 记录步骤的开始时间
l 执行步骤的过程和说明
l 记录发现和纠正的缺陷
l 在终止一个步骤之前检查出口参数。
l 记录步骤的终结时间
l 执行下一个步骤
迫使你自己使用这个规约,直到这变成一种习惯。
PSP0测量和表单:
PSP0测量:
l 时间(Time)-步骤的跟踪时间。
l 缺陷(Defects)-记录发现的和修正的缺陷。
PSP0有四个表单:
l PSP0项目计划总结-分步骤总结计划的和实际时间,还有缺陷。
l PSP0时间记录日志-用来记录时间。
l PSP0缺陷记录日志-用来记录缺陷。
l PSP0缺陷分类标准-用来定义标准缺陷分类。
PSP学生用书:
PSP学生用书提供对PSP的支持。
l 脚本
l 表单
l 测量
l 计算
l 计划
l 跟踪
l 质量管理
l 分析
l 历史数据
l 访问课程材料
总是提供对使用PSP后继课程的支持。
安装PSP学生用文件:
创建一个文件夹来存放学生CD内容。
复制CD的内容到此文件夹。
内容:
l PSP课程材料
l PSP脚本和表单
l PSP学生用文件
打开PSP学生用文件:
打开PSP学生用文件。
在欢迎界面之后是学生资料的输入界面。
完成学生资料:
输入如下信息:
l 名字
l 初始信息
l 日期
l 你的组织或者公司的名字
l 指导教师的名字
回答如下标签下的问题:
l 雇员状况
l 软件经验
l 程序设计经验
l 教育背景
点击“完成”。
打开一个PSP项目:
选择第一个过程,作业1。
点击打开项目。
注意:当你没有完成前一个项目的时候不要打开一个项目。
PSP0表单-1:
这是PSP0项目计划总结。
通过点击PSP0菜单的PSP表单项目来打开其它PSP0表单。
选择表单来打开:
l 时间日志
l 缺陷日志
l 缺陷分类标准
PSP0表单-2:
(画面演示)
PSP0时间记录日志-1:
步骤:选择你曾经工作的步骤。
开始:输入你开始工作的日期和时间。
双击输入现在的日期和时间。
中断:输入任何中断的时间,以分为单位。
停止:输入你停止工作的日期和时间。双击输入现在的日期和时间。
时间差:自动计算出来的时间差。
注释:描述中断,正在执行的任务或者任何对你的工作有影响的事情。
缺陷记录日志-1:
分类:选择缺陷分类
日期:输入缺陷发现的日期。双击输入现在的日期。
注射步骤:选择你认为缺陷发生的步骤。
移除步骤:输入你发现和解决缺陷的步骤。
缺陷记录日志-2:
修正时间:输入你找到和休整缺陷的时间。你可以使用准确的时间,或者可以自己来裁决。
修正缺陷:如果这个缺陷是在修正另外一个缺陷的时候产生的,输入这个缺陷的号码。
描述:输入缺陷的解释(不是符号,是缺陷)。
缺陷分类标准:
缺陷分类标准提供了一个缺陷分类的公共集合。
你可以添加和移除这个标准中的项目,通常在你获得数据指导你进行变化之前严格按照那些简单的定义是十分明智的。
PSP0项目计划总结:
输入你认为开发需要总体时间的最好估计。
剩余的项目都是自动计算出来的。
步骤的时间:
l 实际时间
l 截止的日期时间
l 截止日期到时间的换算
步骤中注入和移除的缺陷:
l 实际缺陷
l 截止日期的缺陷数
l 到截止日期每日的缺陷
完成一个PSP项目:
选择项目,例如:作业1
输入一个日期到完成字段或者单击完成选择复选框来输入今天的日期。
测量提示:
总结和记录你工作使用过程的数据,记住不要把这件事情向后拖。如果你忘记,尽量回忆起你认为最佳的答案。
得到总结并且精准的答案:
l 跟踪时间详细到秒
l 查出所有的缺陷
你将使用你自己的数据去管理你的过程;总结值得你信赖的数据。
缺陷修复时间:
缺陷修复时间经常是不容易被人理解的。
它记录的是发现缺陷到修正缺陷所花费的时间。
例如:
8:05 编译程序1,得到“23行-类型不匹配”
8:06 用编辑器打开程序1
8:15 修改第六行的声明语句,由整行修改为实型
8:16 运行编译器,“没有错误”
Q:什么是缺陷修复时间?
A:10分钟
缺陷步骤注入:
注入步骤是指缺陷进入程序的时间是在哪个步骤。
例如:
Tom在测试期间在程序中发现一个主要逻辑错误。他重新设计和编写了部分程序。
Q:Tom的程序到了哪个步骤?
A:测试
Tom在他写的新代码中找到一个缺陷。
Q:在PSP的哪个步骤中注入的缺陷?
A:测试
周期化过程中的测量:
考虑:
l 在时间日志入口标记一个程序部分修饰符。
l 添加一个类似的注解到缺陷日志的入口。
l 当缺陷是在上一个测试部分发现的时候,使用如“Test”作为移除步骤。
Tom在进行B部分编码的时候,发现并且修正了一个A部分的接口错误。
Q:在PSP哪个步骤移除缺陷?
A:测试
需要牢记的信息:
在使用PSP0的时候,你的原则目标是学习如何收集和总结你工作的精准和完整的数据。
当你完成这个课程的时候,你将知道如何调整和扩展PSP来满足你未来的需要。
请尽力跟随PSP过程脚本和说明。