ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

《人月神话》第1章:焦油坑

2020-02-03 16:55:30  阅读:306  来源: 互联网

标签:product 程序 焦油 编程 系统 programing 神话


岸上的船儿如同海上的灯塔,无法移动

A ship on the beach is a lighthouse to the sea...


巨兽在焦油坑中垂死挣扎,它们挣扎得越是猛烈,焦油纠缠得越紧,没有任何猛兽足够强壮或具有强壮或具有足够的技巧,能够挣脱束缚,它们都沉到了坑底。

过去几十年的大型系统开发就犹如这样一个焦油坑,各种团队,大型的或小型的,庞杂的或精干的,一个接一个淹没在了焦油坑中。


独立来看,每一个坑都不是问题,但置身于软件项目中,众多问题交织在一起,就可能带来具大的风暴,世界本身就是一个复杂的系统,软件系统亦是如此。

任何人都对自己过度自信,入坑前,感觉自己无所不能,战无不胜,幻想着自己总能在各种复杂环境中安然度过。前人的智慧告诉我们,如果没有认真地进行需求分析、设计、进度计划,风险管理等,真正开始开发后,总会出现让自己陷入令人痛苦的麻烦。这也需要我们拥有丰富的项目管理经验和解决复杂问题的能力。


既然是明知是焦油坑,那我们为什么要跳进去呢?

大概是因为过程是痛苦的,但结果是快乐的!

快乐在于不仅满足了我们内心深处进行创造的渴望,而且还唤醒了每个人内心的情感。

这也是为什么看起来前路艰险,但每年仍有成千上万的人加入到程序开发的洪流中。


在开始之前,先了解4个概念:程序 program、编程产品 programing product、编程系统 programing system 和 编程系统产品 programing system product


程序program

它本身是完整的,可以由开发者在所开发的系统平台上运行。


编程产品programing product

这是可以被任何人运行,测试,修复和扩展的程序。它可以运行在多种操作系统平台上,供多套数据使用。

要成为通用的编程产品,程序必须按照普遍认可的风格来编写,特别是输入的范围和形式必须扩展,以适用于所有可以合理使用的基本算法。

同时,对程序进行彻底的测试,确保它的稳定性和可靠性,使其值得信赖。这就意味着必须准备,运行和记录详尽的测试用例库,用来检查输入的边界和范围。

此外,要将程序提升为程序产品,还需要有完备的文档,每个人都可以加以使用,修复和扩展。

经验数据表明,相同功能的编程产品的成本,至少是已经经过测试的程序的3倍。


编程系统programing system

这是在功能上能相互协作的程序集合,具有规范的格式,可以进行交互,并可以用来组装和搭建整个系统。

要成为系统构件,程序必须按照一定的要求编制,使输入和输出在语法和语义上与精确定义的接口一致。

同时程序还要符合预先定义的资源限制—内存空间,输入输出设备,计算机时间。

最后,程序必须同其它系统构件单元一道,以任何能想象到的组合进行测试。

由于测试用例会随着组合不断增加,所以测试的范围非常广。因为一些意想不到的交互会产生许多不易察觉的bug,测试工作将会非常耗时。

因此相同功能的编程系统构件的成本至少是独立程序的3倍。


编程系统产品 programing system product

其成本高达9倍,然而,只有它才是真正有用的产品,是大多数系统开发的目标。


软件从业人员的苦恼,主要来自于以下几方面:

1、苦恼来自追求完美。罗马不是一天建成的,软件系统项目要用修长城的理念,而不要用修核电站的思维。

2、苦恼来自由他人来设定目标,供给资源,提供信息。如必须要和其它程序员合作,拙劣的设计,不完整的代码或文档等,不怕神一样的对手,就怕猪一样的队友。

3、概念设计是有趣的,但寻找琐碎的bug却是一项重复性活动。

4、无奈 - 当历经千心万苦,产品终于要发布时,却已显得陈旧过时。尤其是现在的互联网产品,竞争更是激烈。


这是一个痛并快乐着的职业,但对许多人而言,其中的快乐远远大于苦恼。

待到软件系统项目成功的那一刻,看到每个人脸上洋溢着的幸福,感觉从来没有经历过任何苦恼。



标签:product,程序,焦油,编程,系统,programing,神话
来源: https://blog.51cto.com/hichuann/2468972

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有