人月神话

实践是最好的老师,但如果不能从中学习,再多的实践也没用。

巧匠因工具而出名

程序 -> 编程系统(接口系统集成) -> 编程系统产品

程序 -> 编程产品(通用化,测试,文档,维护)-> 编程系统产品

要想成为通用的编程产品,程序必须按照普遍认可的风格来编写,特别是输入的范围和形式必须扩展,以适用于所有可以合理使用的基本算法。接着,对程序进行彻底测试,确保它的稳定性和可靠性,使其值得信赖。这就意味着必须准备、运行和记录详细的测试用例库,用来检查输入的边界和范围。此外,要将程序提升为程序产品,还需要有完备的文档,每个人都可以加以使用,修复和扩展。经验数据表明,相同功能的编程产品的成本,至少是已经过测试的程序的三倍。

软件任务的进度安排:

1/3 计划

1/6 编码

1/4 构件测试和早期系统测试

1/4 系统测试,所有的构件已完成

在许多重要的方面,它与传统的进度安排方法不同:

分配给计划的时间比寻常的多。即便如此,仍不足以产生详细和稳定的计划规格说明,也不足以容纳对全新技术的研究和摸索。

对所完成代码的调试和测试,投入近一半的时间,比平常的安排多很多。

容易估计的部分,即编码,仅仅分配了六分之一时间。

允许充分的系统测试时间是非常重要的。

向进度落后的项目中增加人手,只会使进度更加落后。一拥而上的开发方法是高成本的、速度缓慢的、不充分的、开发出的是无法在概念上进行集成的产品。创造性活动包括了三个独立的阶段:体系结构、设计实现、物理实现。

结构师:

牢记是开发人员承担创造性和发明性的实现责任,所以结构师只能建议,而不能支配。

时刻准备着为所指定的说明建议一种实现的方法,同样准备接受其他任何能达到目标的方法

对上述的建议保持低调和平静

准备方法坚持所作的改进建议

一般开发人员会反对体系结构上的修改建议,通常他是对的 = 当正在实现产品时,某些特性的修改会造成意料不到的成本开销。

文档说明形式应当包括:

形式化

记叙性定义

如果同时具有两种方式,则必须以一种作为标准,另一种作为辅助描述,并照此明确地进行划分。

好的项目先决条件应该包括:

清晰的目标

充足的人力

丰富的材料

足够的时间

足够的技术

交流

组织

树状编程队伍,每颗子树所必须具备的基本要素:

任务

产品负责人

技术主管和结构师

进度

人力的划分

各部分之间的接口定义

对需求使用合适的编程语言

规模控制:

和制定驻留空间一样,应该制订总体规模的预算;和制订规模预算一样,应该制订后台储存访问的预算。

在指明模块有多大的同时,确切定义模块的功能。

空间技能:

功能交换尺寸

空间交换时间

文档

计算机产品的文档

目标

技术说明

进度、时间表

预算

组织机构图

报价、预测、价格

大学科系的文档

目标

课程描述

学位要求

研究报告

课程表和课程的安排

预算

教室分配

教师和研究生助手的分配

软件项目的文档

做什么

时间:进度表

资金:预算

地点:工作空间的分配

人员:组织图

拥抱变化

随着学习的过程更改设计

系统软件开发时减少混乱度的过程,本身处于亚稳态。

软件维护是提高混乱度的过程,即使是熟练的软件维护工作,也只是放缓了系统退化到非稳态的进程。

需要什么样的文档

使用程序

目的

环境

范围

实现功能和使用的算法

输入输出可是

操作指令

选项

运行时间

精度和校验

这份文档的绝大部分需要在程序编制之前书写

软件任务中的必要活动

仔细的进行市场调研,避免开发已上市的产品

在获取和制订软件需求时,将快速原型开发作为迭代计划的一部分

有机地更新软件,随着系统的运行、使用和测试,逐渐添加越来越多的功能。

不断挑选和培养杰出的概念设计人才。

如何培养出杰出的设计人才:

尽可能早地、有系统地识别顶级的设计人员,最好的通常不是那些最有经验的人员。

为设计人员指派一位职业导师,负责他们技术方面的成长,仔细地为他们规划职业生涯。

为每个方面制订和维护一份职业计划,包括与设计大师的、经过仔细挑选的学习过程,正式的高级教育和以及短期的课程 - 所有这些都穿插在设计和技术领导能力的培养安排中

为成长中的设计人员提供相互交流和学习的机会。

软件系统:

层次化,通过分层的模块或者对象。

增量化,从而系统可以持续地运行。

再论面向对象编程:

模块化和清晰的接口

封装,即外界无法看到组件内部结构

继承和层次化类结构以及虚函数

强抽象数据类型化

软件开发瀑布模型

计划->编码->单元测试->系统测试->现场支持

应当在项目早期添加额外的人力只能根据过去判断将来,然而永远无法根据过去规划将来。

做人要谦逊

学有所成,学有所用。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180717G10DIU00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券