美文网首页比巴波的小柜产品经理@产品
《人月神话》读书笔记④:解决问题

《人月神话》读书笔记④:解决问题

作者: luna比巴波 | 来源:发表于2018-02-10 17:01 被阅读14次

    十四、进度落后:祸起萧墙Hatching a Catastrophe

    ·如果在活动开始之前就着手估计,并且两周进行一次修订;那么无论如何它都不会有太大变化

    ·活动期间对时间长短的过高估计会随着活动的进行持续而下降

    ·人们总是会过低估计活动进行中不会太大变化,直到结束日期前三周

    ·减少角色冲突:老板不要对经理可以解决的问题做出反应,并且不在某些检查状态时做任何安排

    十五、文档:另外一面The Other Face

    ·使用程序:对程序进行描述的文字

              1、目的:主要功能是什么?开发原因

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

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

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

              5、“输入-输出”格式

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

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

              8、运行时间:在指定的配置下,解决待定规模问题所需时间

              9、精度和校验:期望结果的精确程度

    ·验证程序:即测试用例。包括:常规数据测试,对程序主要功能的用例;合法数据测试,用于检测输入数据范围边界内的可靠性,确保最大可能值、最小可能值和其他有效特殊数据可以工作;非法数据测试,在边界外检查数据范围边界进行检查

    ·修改程序:调整/修复程序的所有细节。包括:流程图;对所用算法的完整描述(或类似算法的参考资料);对所有文件规划的解释;数据流处理的概要描述;初始设计中,对修改的讨论

    ·流程图:显示程序的流程判断结构,但不一定是必要的

    ·自文档化的程序:即把文档整合到源程序

              1、借助标签、声明语句和符号名称,尽可能表达文档信息

              2、尽可能用空格和一致格式提高程序可读性,表现从属和嵌套关系

              3、以段落注释的形式,向程序中插入必要的记叙性文字

              4、为每次运行使用的任务名称,且维护一份记录了时间和结果的日志

              5、使用包含版本号和能帮助记忆的程序名称

              6、尽可能地为基本算法提供参考引用

              7、显示和传统算法的关系:更改、定制细化、重新表达

              8、声明所有变量

              9、用标签标记出初始化位置

              10、对程序语句进行分组和标记

              11、利用缩进表现分组和结构

              12、在程序列表中,手动添加逻辑箭头

              13、使用行注释和标记不清楚的事物

              14、适当拆分/合并语句

    十六、软件工程中的根本和次要问题:没有银弹No Silver Bullet——Essence and Accident in Software Engineering

    ·根本任务:打造构成抽象软件实体的复杂概念结构

    ·次要人物:使用编程语言表达这些抽象实体,在空间和时间限制下将它们映射成机器语言

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

    ·有机地更新软件,随着系统的运行、使用和测试,逐渐增加功能

    ·软件系统中的内在特性:复杂度、一致性、可变性和不可见性

    ·解决次要问题的一些突破:高级语言、分时、统一编程环境

    ·潜在银弹①:高级编程语言

    ·潜在银弹②:面向对象编程,包括抽象数据类型和层次化类型(后者简称类)

    ·潜在银弹③:人工智能和专家系统,接受输入的数据和假设、通过基础规则推导逻辑结果,提出结论和建议

    ·潜在银弹④:“自动”编程

    ·潜在银弹⑤:图形化编程,这一源于芯片设计的方法对芯片更为适合;因为芯片设计是对二维对象的层次设计,几何特性反映了本职,但软件系统不是

    ·潜在银弹⑥:程序验证,在源代码阶段就消除bug

    ·潜在银弹⑦:环境和工具

    ·生产率公式:任务时间=频率1*时间1+频率2*时间2+频率3*时间3……

    ·购买和自行开发:构建软件最可能的彻底解决方案就是不开发任务软件,购买比重新开发更低廉

    ·需求精炼和快速原型:用原型演示待开发系统的主要功能

    ·增量开发:增长、而非搭建系统。逐步发育成熟,不奢求一次性搭建

    ·卓越的设计人员:提高软件行业的核心


    以上内容为《人月神话》(作者:[美]小弗雷德里克·布鲁克斯)的第14-16章读书笔记及部分摘要,本人加入一定量自己的理解;因水平有限,欢迎大家交流指正,谢谢~

    另:《人月神话》是比较偏技术侧的书籍,翻译过来有点佶屈聱牙,我这里更多只是列了提纲,大家有机会自己去看、可以有更多收获~

    相关文章

      网友评论

        本文标题:《人月神话》读书笔记④:解决问题

        本文链接:https://www.haomeiwen.com/subject/aifhtftx.html