《人月神话》阅读笔记(三)

我又一次在相关书籍看到了文档的重要性

数据的表现形式是编程的根本。创造出自精湛的技艺,精炼、充分和快速的程序也是如此。

技艺改进的结果往往是战略上的突破,而不仅仅是技巧上的提高。

这种战略上突破有时是一种新的算法,如快速傅里叶变换,或者是将比较算法的复杂度从n2降低到nlogn。

更普遍的是,战略上突破常来自数据或表的重新表达——这是程序的核心所在。

如果提供了程序流程图,而没有表数据,我们仍然会很迷惑。而给我看表数据,往往就不再需要流程图,程序结构是非常清晰的。

文档的主要内容:

1、目的。主要的工作是什么?开发程序的原因是什么?

2、环境。程序运行在什么样的机器、硬件配置和操作系统上?

3、范围。输入的有效范围是什么?允许显示的合法范围是什么?

4、实现功能和使用的算法。精确地阐述它做了什么。

5、输入—输出格式。必须确切和完整的。

6、操作指令。包括控制台及输入内容正常和异常结束的行为。

7、选项。用户的功能选项有哪些?如何在选项之间进行挑选?

8、运行时间。在指定的配置下,解决特定规模问题所需要的时间?

9、精度和校验。期望结果的精确程度?如何进行精度的检测?

一般来说,三四页纸常常就能容纳以上的所有信息。不过往往需要特别注意的是表达的简洁和精确。

由于它包含了和软件相关的基本决策,所以这份文档的绝大部分需要在编程编制之前书写。

文档用文字记录了充满了维度的软件相关东西。

我意识到这些东西,是存在且必要的。它将我们所面对的程序,或者说项目,简化了,易懂了,直观了。

就这些好处,不得不说,我们能更容易发现里面的突破点,或者所暗藏的问题。

时间: 2024-10-15 11:58:23

《人月神话》阅读笔记(三)的相关文章

最后期限阅读笔记三

最后期限这本书读完了,有很多感想. 我们始终不能忘记,程序员也是人,当我们在以往的项目中遇到各种各样的问题,客户的需求频繁变动,来自领导.客户.销售人员要求尽快结束项目的压力,用一拥而上的方 式增加人手,计划延迟,工期变长,漫长的维护过程,乃至长期出差驻守在外地,离开家人,这个时候,没有成就感和疲惫的感觉会让最好的程序员失去热情.在这里要提到的是, 曾经有个项目工期太长,每个周一都要出差去外地,在那段时间里,我甚至得了"周日晚上失眠(恐惧)症",噢,可怜的程序员们,你们是否也有过类似的

构建之法阅读笔记三—结对编程

构建之法阅读笔记三——结对编程 何谓结对编程,结对编程就是程序员肩并肩,平等的,互补的进行开发工作,他们使用同一台电脑,编写同样的程序,一起分析,一起设计,一块交流想法. 然而我以前却并不是这样做的,我以前喜欢在没人打扰的环境下写代码,我觉得有人在我身边看着,会影响我的思路,还有我个人自尊心比较强,不太喜欢被人指指点点,所以每次都是,我写完代码之后,自己先找自己的bug,每当自己实在找不到之后,才会请教大神,但是有时候可能由于自己的能力不足,往往一个很简单的问题,我自己发现就会花费很久的时间,让

《代码阅读方法与实践》阅读笔记三

之前已经看完了<代码阅读方法与实践>的前六章,基本上也就是看得比较粗略,没有很精细的阅读,上节课听到老师说的“学术交流会”还是很紧张的,挺害怕被问到问题,结果回答不出来可怎么办啊,不仅丢人,分也送给别人了啊,这可怎么破啊.所以呢,我打算近期再看一遍,不管有没有用,算是给自己加点自信吧. 第七章,讲的是编程规范和约定,主要就是文件的命名及组织.缩进.编排.命名约定.编程实践.过程规范之类的,其实这一章也不用我做过多的介绍,因为大家应该都有听各科老师讲过好几遍了,道理大家都懂,但是大家除了在理论上

《梦断代码》阅读笔记三:全书总结

昨天终于把梦断代码读完了,时间很赶,读的很急,很多地方没有仔细的推敲和思索.但是还是能够理解本书的主旨意义,还是有自己的一番体会和感想的. 正如作者所说,“这是一个关于一队人马并肩托起代码大石.欲将其推上山顶,虽历经磨难,但仍奋力创造某种有用.丰富且持久之物的故事”,读罢想来也许最大的收获是对软工程有了更加深刻的理解. 我们觉得软件难以对付,是因为它不可见,不可见也并非唯一问题,我们也看不见电力.磁力或重力,但却能为多数实用目的可靠地预测其行为,可是我们没有理论可以用来计算对软件尺寸.性能和复杂

构建之法阅读笔记三

今天阅读了构建之法第四章,对我最深的感触就是代码规范,对于一个软件工程师来说,编程是一项基本技能,程序编的好一半来自于代码的规范:就算你学的算法再好,编程能力再强,代码不规范也没有任何意义.当阅读者拿到你的代码时一头雾水,完全看不懂,这样的代码对于后期的维护和bug的寻找难上加难,或者是对于后来的初学者来说,也是去了教育意义.所以在我们日常的编程过程中要养成代码规范的习惯,习而久之,这样的习惯会一直伴随我们编程整个过程. 还有就是代码复审,我一开始也想不明白,代码为什么要复审呢,写完代码得到执行

&lt;&lt;梦断代码&gt;&gt;阅读笔记三

看完了这最后三分之一的<梦断代码>,意味着这本软件行业的著作已经被我粗略地过了一遍. 在这最后三分之一的内容中,我深入了解了在大型软件项目的运作过程中存在的困难和艰辛.一个大型软件项目的成功代表着这团队所付出的所有心血,以及那不为 人知的无数个‘人月’.而联想自己的专业,产生了一点迷惘,这就是我今后要走的道路么,我能走得多远,我能否像书中所提到的那些人一样百折不挠,这一切我 都无从得知.但是我只能向前走,别无选择,没有人会承认自己不如别人,哪怕现在不如,但总会寄托于未来,未来是未知的,但又是现

&lt;&lt;浪潮之巅&gt;&gt;阅读笔记三

纵看世界,横看国内.我们国内也有很多很优秀的企业正在走向或者已经处于浪潮之巅.阿里巴巴.腾讯和百度这三巨头应该是我们计算机行业的龙头.但是 不得不说,在创新方面我们做的并不多,这是值得每一个从事计算机行业的人需要反省的事情.简单从腾讯来讲,一个企业大部分是靠抄袭来维持的话,永远找不到 自己最独特的基因,也会给更多的独立创新型企业强烈打击,得不到发展.想要发展,更需要的应该是良好的生存环境和自主的开发趋势.我们不能说他没有走上浪 潮之巅,但是可以肯定的是,有些时候我们通过简单的途径走上了最高峰,终

《探索需求-设计前的质量》阅读笔记三

获取信息的第一步就是定义功能,在这个阶段描述产品是为了做什么的动作.假设是决策树的根源,那么客户说想要什么东西存在就是问题声明的提出.而客户说产品能够实现什么功能就是指他的测试功能.在描述功能方面,需要记录所有用户想要的功能,然后进行理解,不能记录记录用户不想要的功能.做到这些也需要一些技巧,首先要记录所有潜在功能,:理解明显的隐藏的以及装饰性的功能,识别未注意到的功能.实用功能启发的方式来进行识别功能,创造归功能的一直处理方法. 属性是客户希望的特征,要将属性和功能加以区分,属性不同的产品有可

最后期限阅读笔记之一

本书讲了一个叫汤普金斯先生是一位经验丰富的项目经理,却也不幸遭遇了被“炒鱿鱼”的命运.这时,有人出数倍的薪俸将他“请”到一个海上的小国同时管理六个软件项目.资金.人员.设备等所有外部条件都万事俱备,汤普金斯先生可以放手去做,并将自己的奇思妙想付诸实践.本以为会因祸得福,汤普金斯先生却逐渐发现事情并没有那么简单,项目根本无法在最后期限内完成,但他已经骑虎难下,故事也就因此展开,而我从中也获得了许多道理: 优质管理的四大要素: 1选择正确的人. 2 为他们分配正确的工作. 3保持他们的积极性. 4帮

鸟哥的LINUX私房菜基础篇第三版 阅读笔记 三 Linux磁盘与文件系统管理

一.认识EXT2文件系统: a.硬盘的组成:转动小马达+存储的磁盘+读写的机械臂 b.磁盘的一些概念 扇区为最小的物理储存单位,每个扇区为512B 将扇区组成一个圆,就是磁柱,磁柱是最小的分割单位 第一扇区最重要,a.主要开机区及分割表,其中MBR占有446B,而partition table 则占有64B c.inode block superblock 三个数据的意义 inode:存放文件的属性,权限,一个档案占用一个inode,同时记录次档案的数据所在的block号 block:实际存放的