人月神话阅读笔记09

  1.未雨绸缪这章我开始还原来一直记成了是讲风险,但是仔细阅读后发现主要讲如何快速适应变化。在敏捷软件开放中我们强调通过迭代和快速交互等各种方法来适应变化。在大型软件工程中我们看到仍然需要考虑如何适应变化,很多时候对于大型的软件和系统,我们一开始往往很难设计的很清楚,所以只有先假设一种方案,然后对其开发原型进行验证,只有通过验证后才能开始后续的计划,否则就必须提出新的假设。
  一切事物皆无常,都处于动态的发展变化中,唯一不变的就是变化本身。不但目标上的变化不可避免,而且设计策略和技术上的变化也不可避免。抛弃原型概念本身就是对事实的接受——随着学习的过程更改设计。所以以此为展开分别开始谈软件开发生命周期的各个阶段都必须要适应变化。

  • 为变更而计划并不是要求我们范围不明确,而是计划过程应该是迭代式的渐进细化过程。
  • 为变更而设计组织结构,如外科手术团队,要求最小化团队成员接口并最方便系统修改和扩展。
  • 为变更而发布讲如何提高软件产品可维护性,如何解决Bug的修复会引入新的Bug的问题。

  2.对于大型软件系统,产品集成和集成测试具有重要的地位,为了系统的有计划的降低系统集成调试的困难性我们需要采取多种方法和措施。其中包括了首先对于单个构建必须经过充分的单元测试,否则单元测试的问题将遗留到集成测试阶段导致问题复杂化;其次是搭建充分的测试平台,测试平台往往需要编写测试代码,特别是还可能开发各种伪构件来验证数据集成的正确性。最后是在集成期间要严格控制变更,最好是阶段化的定期变更。
  3.用户需要不同级别的文档。某些用户仅仅偶尔使用程序,有些用户必须依赖程序,还有一些用户必须根据环境和目的的变动对程序进行修改。在需要什么样的文档一段从使用程序,验证程序和修改程序三个方面来谈如何写文档,文档内容应该包含哪些核心要素。使用程序方面的文档发生在程序编写前,要描述清楚程序的目的,范围,场景,输入,输出等各项重要内容。每一个发布的程序需要附加验证说明,即准备我们常做的测试用例,这个发生在验证测试阶段。最后,调整程序或者修复程序需要更多的信息。显然,这要求了解全部的细节,并且这些细节已经记录在注释良好的列表中。

  4.一个相互牵制关联的概念结构,是软件实体必不可少的部分,它包括:数据集合、数据条目之间的关系、算法、功能调用等等。这些要素本身是抽象的,体现在相同的概念构架中,可以存在不同的表现形式。尽管如此,它仍然是内容丰富和高度精确的。我认为软件开发中困难的部分是规格化、设计和测试这些概念上的结构,而不是对概念进行表达和对实现逼真程度进行验证。当然,我们还是会犯一些语法错误,但是和绝大多数系统中的概念错误相比,它们是微不足道的。如果这是事实,那么软件开发总是非常困难的,天生就没有银弹。然后具体从软件开发的复杂性,一致性,可变性和不可见性进行了详细分析。

个人感想:

  对于我们来说适应能力是我们不管生活中还是工作中都是必不可少的技能。对于我们来说,随着时间的流逝,也许项目的总的目标是不变的,但是一些小的细节随着生活的改变而改变,这就需要我们适应这些变化,对于这些变化做出适当的改变来适应这些变化。对于我们来说,软件的集成和测试也是非常重要的,这是软件工程里很重要的步骤。而写文档对于我们来说也是非常重要的,老师说,对于我们软件工程的学生来说,很重要的一项本领就是如何写文档,我们软件工程就是一门与人交流的学科,只有写好文档才能更好地和他人进行交流。

时间: 2024-10-29 19:10:52

人月神话阅读笔记09的相关文章

人月神话阅读笔记—第三章

人月神话阅读笔记-第三章 一个由一流人才组成的小型的精干的队伍比由一群平庸的程序员组成的大型团队更有效率,但是这里面有一个重要的问题:如何在有意义的进度安排内创建大型的系统. 优秀的程序员和较差的程序员之间生产效率的差距是巨大的,当一个10人的精干团队进行开发,和一个100个人的平庸程序员进行开发,前者的效率更高.但是对于效率和概念的完成性来说,最好由少数干练人员开发,而大型系统需要大量人员进行开发,但是这两者是有矛盾的,需要进行平衡. 在开发过程中,可以使用一种崭新的开发方案,类似于外科医生做

人月神话阅读笔记—第四章

人月神话阅读笔记-第四章 ------2016.6.14 概念的完整性是很重要的,为了反应一系列连贯的设计思路,可以省略一些不规则的特性和改进,不提倡独立和无法整合的系统,最需要的是在整体概念上的完整性要求. 获得概念的完整性时,会出现一种情况,编程系统使计算机更加好用,但是功能比较多的时候,软件外部描述就会比系统本身大很多:但是功能太少,不能满足需求,但是都需要满足概念上的完整性. 在进行概念的完整性时,产品设计需要由一个人或者少数几个人来实现,但是对于大型的系统,需要将设计方法.体系结构的工

人月神话阅读笔记03

阅读了<人月神话>第10章 提纲掣领,里面提到的关于软件相关的开发文档的问题,使我受益颇深.以前每每写程序时,老师总会要求我们写一些需求分析,软件流程图,还有各种各样的日志文档,心里总是觉得烦不胜烦.明明程序已经写好了,文档写不写又有什么关系呢?这不是在浪费时间嘛.但是后来在写四则运算的编程题时,我就遇到了一些麻烦.刚开始我自己写又进行“翻新”的时候,我总是忘了自己之前是怎么想的,思路是怎么样的,很多时候不得不花上许多时间去重新阅读上次的代码,或者直接推翻重写.后来进行二人开发时,发现没有文档

人月神话阅读笔记07

第1章 焦油坑      焦油坑的意思说明了即使你足够强大,也无法摆脱束搏而沉到坑底.IT项目也是这样,不论是开发大型软件系统还是小型项目,都会遇到诸多复杂的问题和影响因素,项目本身就是一个足够复杂的动态系统,没有最优,只有满意.项目四要素,人员,组织环境,干系人,外部依赖和约束,风险和假设,团队,人等诸多问题都是你必须要考虑的问题,任何一个要素出现大的差错都可能导致项目失败,只有所有要素能够平衡好,团队能够协调一致才能够保证项目成功 第2章 人月神话      进度问题是IT项目管理最为关注的

人月神话阅读笔记之一

人月神话讲的主要是软件工程方面的,如何配置人力进行开发 .虽然对于软件编程我们对其了解并不多,但是对于在软件功能的实现,程序设计人员面临的客观性的困难至少我可以站在略懂的角度上去理解他们,对于一个或多个项目来说,公司大多都会搞人海战术,进度没有提前,还整天加班,最后用户不满意,开发人员整天郁闷,结果是用户对公司失去了信任,成了一槌子买卖,开发人员旧人一一辞职,新人天天引进,做法没有改变,情况没有改观,公司没有发展,这就是问题.人月之所以不能成为神话,正是因为增加人手的同时也增加了人与人之间的交流

人月神话阅读笔记—序言及第一、二章

初读人月神话这本书的前言和序言,觉得这本书在关于软件体系结构思想层次方面应该是很高的,而且它流传甚广,并且经过了40余年的沉淀,仍然经久不衰,可见此书的影响是相当深远的. 从目录来看,此书说的不是如何进行程序代码的编写,更多的是关于软件工程中的管理问题,从很多的具体事例,和软件工程历史上发生的一些著名事件来引出章节的内容,以及通过这些具体事件,反映了一些什么样的问题和解决的办法. 第一章的标题名为焦油坑,以开发过程中遇到的很多问题来比喻.介绍了编程系统产品所耗费的时间其实是很多的,接着介绍了作为

01人月神话阅读笔记

内容源于作者Brooks在IBM公司任System计算机系列以及其庞大的软件系统OS项目经理时的实践经验.<人月神话>探索了达成一致性的困难和解决的方法,并探讨了软件工程管理的其他方面. "焦油坑"这章,作者把大型系统开发比作一个"焦油坑".作者从开发系统产品引入先分析职业的乐趣与苦恼,得出"编程,一个许多人痛苦挣扎的焦油坑以及一种乐趣和苦恼共存的创造性活动."这一结论. "人月神话"这章,指出缺乏合理的时间进度是

人月神话阅读笔记01

Brooks法则:向进度落后的项目中增加人手,只会使进度更加落后. 我们刚刚接触软件编程,对于在软件功能的实现.程序设计人员面临的困难我也能略微理解了.项目的时间依赖于顺序上的限制,人员的最大数量依赖于独立子任务的数量.对于一个或多个项目说,有这样一个运作规律:以前公司大多会采取人海战术,但进度没有提前,反而整天加班,最后用户不满意,开发人员整天郁闷,结果是用户对公司失去了信任.开发人员呢,旧人一一辞职,新人几乎天天引进,但做法并没有改变,情况也没有好转,公司自然没有发展. 人月之所以不能成为神

人月神话阅读笔记05

软件项目的进展并不能用简单的线性关系抽象.软件开发不是一项简单重复的体力劳动.设想如果一个人要搬东西,假设他一个人需要一个小时搬完,但是如果他再找来5个人一起搬,可能只需要十分钟.软件开发比这要复杂的多:如果一个人用十天能做完的一个项目,他做到第五天后想找人来一起做,这就不是找五个人一天就能做完的事情.也许完成项目花费的时间比十天还要多.他要花时间为新加入的队员介绍项目,为他们合理分工,如果有一人没按时完成,所有人都要停下等待--由此引出一系列不可预估的问题.复杂度大大提高.总之:从项目的人数和