[人月神话]读书笔记5--规模与系统完整性&&项目文档重要性

来源:互联网 发布:核动力研究设计院知乎 编辑:程序博客网 时间:2024/06/05 05:36

削足适履(Ten Pounds in a Five-Pound Sack)

□作为成本的程序空间
当系统设计者认为对用户而言,常驻程序内存的形式比加法器、磁盘等更加有用时,他会将硬件实现中的一部分移到内存上。相反的,其他的做法是非常不负责任的。
开发人员必须设置规模的目标,控制规模,考虑减小规模的方法,就像硬件开发人员会设立元器件数量目标,控制元器件的数量,想出一些减少零件的方法。同任何开销一样,规模本身不是坏事,但不必要的规模是不可取的

□规模控制
对项目经理而言,规模控制既是技术工作的一部分,也是管理工作的一部分。
首先,仅对核心程序设定规模目标是不够的,必须把所有的方面都编入预算。
在为每个单元设立核心规模的同时,我们没有同时设置访问的目标。
在每个模块分配功能之前,已编制了空间的预算。其结果是,任何在规模上碰到问题的程序员,会检查自己的代码,看是否能将其中一部分扔给其他人。
在指明模块有多大的同时,确切定义模块的功能。
项目规模本身很大,缺乏管理和沟通,以至于每个团队成员认为自己是争取小红花的学生,而不是构建系统软件产品的人员,为了满足目标,每个人都在局部优化自己的程序,很少会有人停下来,考虑一下对客户的整体影响。对大型项目而言,这种导向和缺乏沟通是最大的危险。在整个实现的过程期间,系统结构是必须保持持续的警觉,确保连贯的系统完整性。
培养开发人员从系统整体出发,面向用户的态度是软件编程管理人员最重要的职能

□空间技能
空间预算的多少和控制并不能使程序规模减小
在速度保持不变的情况下,更多的功能意味着需要更多的空间。所以,其中的一个技巧是用功能交换尺寸。
设计人员必须决定用户可选项目的粗细程度。
对于给定的功能,空间越多,速度越快。这一点在很大的范围内都适用。也正是这一点使空间预算成为可能。
项目经理可以做两件事来帮助他的团队取得良好的空间-时间折衷。一是确保他们在编程技能上得到培训,而不仅仅是依赖他们自己掌握的知识和先前的经验。另外一种方法是认识到编程需要技术积累,需要开发很多公共单元构件。每个项目要有能用于队列、搜索和排序的例程或者宏库。对于每项功能,库至少应该有两个程序实现:运行速度较快和短小精炼的。上述的公共库开发是一件重要的实现工作,它可以与系统设计工作并行进行。

□数据的表现形式是编程的根本
技艺改进的结果往往是战略上的突破,而不仅仅是技巧上的提高。这种战略上突破有时是一种新的算法,更普遍的是,战略上突破常来自数据或表的重新表达。--这是程序的核心所在。
由于缺乏空间而绞尽脑汁的编程人员,常常能通过从自己的代码中挣脱出来,回顾、分析实际情况,仔细思考程序的数据,最终获得非常好的结果。实际上,数据的表现形式是编程的根本。

提纲挈领(The Documentary Hypothesis)

少数文档形成了关键的枢纽,每件项目管理的工作都围绕着它们运转。它们是经理们的主要个人工具。
技术周边组织结构,行业传统等若干因素凑在一起,定义了项目必须准备用的一些文书工作。文档的跟踪维护是项目监督和预警的机制。文档本身可以作为检查列表,状态控制,也可以作为汇报的数据基础。

这些文档的某些部分包含和表达了一些管理方面的工作。每份文档的准备工作是集中考虑,并使各种讨论意见明朗化的主要时刻。如果不这样,项目往往会处于无休止的混乱状态。文档的跟踪维护是项目监督和预警的机制。文档本身可以作为检查列表、状态控制,也可以作为汇报的数据基础

□计算机产品的文档
①目标
 定义待满足的目标和需要,定义迫切需要的资源、约束和优先级。
②技术说明
 计算机手册和性能规格说明。它是在计划新产品时第一个产生,并且最后完成的文档。
③进度、时间表
④预算
  预算不仅仅是约束。对管理人员来说,它还是最有用的文档之一。
 预算的存在会迫使技术决策的制订,否则,技术决策很容易被忽略。更重要的是,它促使和澄清了策略上的一些决定。
⑤组织机构图
⑥工作空间的分配.
⑦报价、预测、价格
 这三个因素互相牵制,决定了项目的成败。

固定成本高于预测值,灾难性的循环开始了,所有的人必须努力奋斗来打破这个循环。
新应用程序必须提高性能和支持更高的市场预测。成本必须降低,以产出更低的报价。这个循环的压力常常是激励市场人员和工程师工作的最佳动力。

□大学科系的文档
1.目标
2.课程描述
3.学位要求
4.研究报告(申请基金时,还要求计划)
5.课程表和课程的安排
6.预算
7.教室分配
8.教师和研究生助手的分配
这些文档的组成与计算机项目非常相似:目标、产品说明、时间安排、资金分配、空间分派和人员的划分。只有价格文档是不需要的。
任何管理任务的关注焦点都是时间、地点、人物、做什么、资金。


□软件项目的文档
立刻正式生成若干文档作为自己的数据基础,哪怕这些迷你文档非常简单。接着,他会和其他管理人员一样要求各种文档。

做什么:目标。定义了待完成的目标、迫切需要的资源、约束和优先级。
做什么:产品技术说明。以建议书开始,以用户手册和内部文档结束。速度和空间说明是关键的部分。
时间:进度表
资金:预算
地点:工作空间分配
人员:组织图

□为什么要有正式的文档?
书面记录决策是必要的。只有记录下来,分歧才会明朗,矛盾才会突出。
文档能够作为同其他人的沟通渠道。项目经理常常会不断发现,许多理应被普遍认同的策略,完全不为团队的一些成员所知。项目经理的基本职责是使每个人都向着相同的方向前进,所以文档的主要工作是沟通,而不是做出决定。
项目经理的文档可以作为数据基础和检查列表。通过周期性的回顾,他能清楚项目所处的状态,以及哪些需要重点进行更改和调整。

项目经理的任务是制订计划,并根据计划实现。但是只有书面计划是精确和可以沟通的。计划中包括了时间地点人物,做什么,资金。这些少量的关键文档作为工具友好地利用起来,而不会让它成为令人厌烦的繁重任务。通过遵循文档开展工作,项目经理能更清晰和快速地设定自己的方向
这些少量的关键文档封装了一些项目经理的工作。

 

0 0
原创粉丝点击