《个体软件过程》学习心得,PSP,个人观点

yanzai8848 2003-09-09 03:24:20
《个体软件过程》学习心得
以下有些是我总结的书中内容,但大部分都是我个人的理解,不一定正确,希望能讨论并给予指正。

×××××第1章 软件工程师的任务

1, 软件工程师的任务:就是指在预定费用,预定进度下完成出高质量的软件产品。而达到这个任务,采用软件工程方法是必须的。PSP是一种个人实施软件工程的过程。
高质量的软件产品,更坦白说是:能卖钱的,可持续卖钱的软件产品。要达到这个目的,可能有很多软件工程的方法,更有更多的实施过程可选择,其中,PSP就是一个很多公司采用并经历过实践验证的可行的过程。
2, PSP(Personal Software Process):提供详细的估计和计划的方法,怎样按计划跟踪任务的执行情况,利用已定义的过程来指导工作。
学习与采用PSP最重要的是,收集自己的实践数据。
软件工程师日常的工作是设计、编程和测试,但是每日或每段时间进行的工作只是整个软件产品的一个小的部分。PSP其实是"帮助"我们计划当前要作的工作,估算时间,记录项目完成进度,以及计划下一步的工作。
3, 高质量工作、高工作质量、高质量的产品
高质量工作是产生高工作质量的前提,保持高工作质量才能产出高质量的产品。规范指导工作,才能高质量的工作;不断的积累经验,才能提高工作质量。

×××××PSP的数据依据:工程记事本和时间记录日志(第2时间管理,第3章 时间跟踪)

1, 时间管理与跟踪:时间管理与跟踪的文档是工程记事本和时间记录日志,这是PSP的两个基本数据依据。我的理解是,工程记事本,它其实是一个类似上课笔记的文档,这是软件工程师积累经验总结经验(第1章说了,这样才能提高工作质量)用的笔记,重点记录事情内容;而时间记录日志,则是对时间的一个更具体的记录,类似一个课程表加课余时间表,集中详细记录时间。结合工程记事本和时间记录日志,可以:
a) 制订切实可行的计划:工程记事本中一些经验(如技术经验)记录以及项目实施记录,可以为其它项目提供计划和设计的依据。比如,可以总结出一些看起来很简单,但是却很复杂或者需要很多时间的,甚至根本不可能实现的任务。
【示例】通过以前的经验我总结,如果要用VC写一个或者修改一些网上的共享代码实现一个功能完善的图表,这基本是不可能或不可取的(非常的复杂,难度也很大),一个好的办法是使用现成的成熟的控件。在碰到要用图表的项目时,我不会再考虑自己写图表类。
b) 检查时间估计和计划的准确性:
【示例】我先前估计,写界面与写网络模块需要差不多的时间。但是在我的工程记事本中有很多界面编程的经验记录,而且有很多用多过的技术;而网络编程我却从来没有做过;显然我先前的估计并不合理。
c) 制订更准确的计划:
d) 制订时间分配计划:
【理解】项目设计是根据技术经验设计,项目时间估计是根据以前的时间花费情况来估计。技术经验最好是写在工程记事本中,时间花费则写在时间记录日志中。要认证对待工程记事本,其实很多经验没有写下来,一样是经验,但是如果不写下来,做计划和设计时就不能"正确"的知道自己本来有的经验,从而也不能准确的计划。同样对待时间记录日志也一样,不严格客观的记录时间,你就不能统计以前的时间,或者统计的结果也是错误的,从而不能提供新项目时间估计和计划的依据。
2, 工程记事本:记录时间(以天为单元,具体活动花费时间以小时或分钟计算),记录事件(在做什么,怎么做的,完成情况,重要提醒等等)
3, 时间记录入日志:记录时间(具体到分钟),记录作业(作业分类,内容简述,是否完成)

×××××工程记事本与时间记录日志的数据对软件开发的作用:第4章以后的内容简述

1, 4章阶段计划与产品计划:
文档:周活动总结表。(活动,花费时间),放在时间记录日志后。
工作:其实是对时间记录日志的初步处理,每周统计一次;从而为下周做计划。
目的:规划一天大概的时间块分配,规律化日常工作,养成好的时间习惯。就好像学生养成7:00起床,7:00~7:30跑步锻炼,晚上9:00~10:00读英语一样。
个人观点:周活动总结表的效果体现在活动分类。如果分类不好,那么统计出的结果是无意义的。比如把跑步和读英语划为一个活动分类,那么你是早上老在跑步和读英语间徘徊,有可能你连续30天都用读英语,那么对你的身体是没好处的。
2, 第5章产品计划。
文档:作业编号日志。(作业号,过程,估计时间,实际时间,累积时间…),放在工程记事本中,或独立出来。
工作:对时间记录日志的作业号的时间统计,以及详细解释。
目的:是项目计划和进度管理的时间依据。提供了对相应作业的估计数据,使得一次比一次估计准确,而每个作业是一个项目的组成部分,从而也为大的项目的做出较准确的时间估计――也就是产品计划。比如,某个学生,等着考试前1周才开始复习,结果没复习完就考试,成绩不理想。下次考试前,根据上次的教训,提前2周开始复习,时间终于够了。当然作业的划分不会这么大,更细一些。
个人观点:作业编号日志的关键也是作业的划分,如果划分不好,其用途也不大。
3, 第6章产品规模
文档:程序规模估计表。(程序,代码行,以前功能,估计功能,规模),放在软件产品的设计文档中。
工作:设计了现有项目后,划分出模块,再细化成与"作业编号日志"中类似的作业任务,并估计规模。
目的:作业编号日志是是项目计划和进度管理的时间依据。产品规模则是项目的作业量数量的东西。那么就有如下的公式(规模以代码行算):
作业任务1所需时间(秒) =
作业任务1规模(代码行) × 完成作业任务1的速度(秒/行)
项目计划时间 = 作业任务1所需时间 + … + 作业任务n所需时间
4, 第7章管理好时间
文档:周活动安排表
工作:根据时间记录日志与周活动总结表,做周活动安排。
目的:……管理时间――统计时间――管理时间――……,都是这样一个反复的循环。这一章只是对管理时间的一个概述,并说了如何做周活动安排。时间记录日志和周活动总结表都是对时间的统计分析,这是管理时间(计划时间)依据。项目估计也是管理时间,同时也留下了统计时间的依据。
5, 第8章契约的管理
文档:契约清单
目的:提供了一种责任方式,指导每个程序员的工作方向,提升程序员的责任心。再好的设计和计划,如果程序员不遵守不按要求做事情,也是不可能做出高质量的软件,那这种结果能说设计和计划不好吗?显然,不能!契约与企业其他管理结合起来才能真正的达到项目管理和控制的目的。因为人的因素是最重要的。
6, 第9章进度管理,第10章项目计划,……
文档:软件工程过程中产生的各种技术文档
工作:设计软件,编写软件,测试软件,完成产品。
目的:我觉得这些章节都是具体的开始软件的生产了。其中用到的依据是前面的文档。这些章节都在说PSP与具体的软件工程的关系以及一些技巧。

×××××对PSP的个人观点

PSP是一个记录经验的过程,一个总结经验的过程,一个了解自己的过程,一个对自己负责的过程,一个估计的过程,一个完善计划的过程。
我们都知道工作经验是很重要的,对不同的人,2年3年的工作经验在时间上是一样的,但是真正的经验是不一样的。PSP可以统计自己的经验,并以文档的方式记录下来,而不仅是散乱在头脑中。我认为PSP是西方规范化、规律化、规矩化生产方式的严格过程,而国内很多不规范的软件公司,没有规律和不喜欢规矩的软件工程师,来实施这个过程难度是很大的。
就是不完全采样PSP,通过学习PSP,最起码能令我们明白可以统计这些数据,而这样做可以认识我们的价值,提高我们的价值(我想在求职中,完全可以把自己的数据反映给公司,你也能确实的明白你知道什么,你做过什么,你的效率如何),指导我们的工作。如果能严格的采用这套过程,开始可能会很苦很费时间,但是一旦实践数据积累到一定程度,我想我们的工作经验可能是一张张的数据表(比如完成××模块类型的代码速度是?秒/行),就像我们的健康状态、考试成绩一样,而不是说2年5年的经验了,在对一个项目做计划时也就好像RPG游戏觉得如何使用招式、学校按成绩排考场座位一样。但是PSP真的能实施得完美吗?我想这个问题应该不是软件工程中的问题,而是个人态度和习惯的问题,就比如说可以为每个人设计一条同样的成为足球球星的道理,但是不并见得都成为球星;大家在学校的课程安排不都一样吗,怎么还有清华大学生与二流三流大学生和广大没上过大学的同龄人呢?
PSP,严格实践的人,真的要恭喜加佩服!实践过,但是不严格实施的人,也能沉淀不少东西吧。只是学学,不实践的人,起码应该明白,很多东西可以量化的,规范化的,能注意总结自己不为是件好事!其他没学过,但是严格要求自己的人,其实他也在实施一个PSP过程。
...全文
1128 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

1,265

社区成员

发帖
与我相关
我的任务
社区描述
软件工程/管理 管理版
社区管理员
  • 研发管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧