1.未雨绸缪这章我开始还原来一直记成了是讲风险,但是仔细阅读后发现主要讲如何快速适应变化。在敏捷软件开放中我们强调通过迭代和快速交互等各种方法来适应变化。在大型软件工程中我们看到仍然需要考虑如何适应变化,很多时候对于大型的软件和系统,我们一开始往往很难设计的很清楚,所以只有先假设一种方案,然后对其开发原型进行验证,只有通过验证后才能开始后续的计划,否则就必须提出新的假设。
一切事物皆无常,都处于动态的发展变化中,唯一不变的就是变化本身。不但目标上的变化不可避免,而且设计策略和技术上的变化也不可避免。抛弃原型概念本身就是对事实的接受——随着学习的过程更改设计。所以以此为展开分别开始谈软件开发生命周期的各个阶段都必须要适应变化。
- 为变更而计划并不是要求我们范围不明确,而是计划过程应该是迭代式的渐进细化过程。
- 为变更而设计组织结构,如外科手术团队,要求最小化团队成员接口并最方便系统修改和扩展。
- 为变更而发布讲如何提高软件产品可维护性,如何解决Bug的修复会引入新的Bug的问题。
2.对于大型软件系统,产品集成和集成测试具有重要的地位,为了系统的有计划的降低系统集成调试的困难性我们需要采取多种方法和措施。其中包括了首先对于单个构建必须经过充分的单元测试,否则单元测试的问题将遗留到集成测试阶段导致问题复杂化;其次是搭建充分的测试平台,测试平台往往需要编写测试代码,特别是还可能开发各种伪构件来验证数据集成的正确性。最后是在集成期间要严格控制变更,最好是阶段化的定期变更。
3.用户需要不同级别的文档。某些用户仅仅偶尔使用程序,有些用户必须依赖程序,还有一些用户必须根据环境和目的的变动对程序进行修改。在需要什么样的文档一段从使用程序,验证程序和修改程序三个方面来谈如何写文档,文档内容应该包含哪些核心要素。使用程序方面的文档发生在程序编写前,要描述清楚程序的目的,范围,场景,输入,输出等各项重要内容。每一个发布的程序需要附加验证说明,即准备我们常做的测试用例,这个发生在验证测试阶段。最后,调整程序或者修复程序需要更多的信息。显然,这要求了解全部的细节,并且这些细节已经记录在注释良好的列表中。
4.一个相互牵制关联的概念结构,是软件实体必不可少的部分,它包括:数据集合、数据条目之间的关系、算法、功能调用等等。这些要素本身是抽象的,体现在相同的概念构架中,可以存在不同的表现形式。尽管如此,它仍然是内容丰富和高度精确的。我认为软件开发中困难的部分是规格化、设计和测试这些概念上的结构,而不是对概念进行表达和对实现逼真程度进行验证。当然,我们还是会犯一些语法错误,但是和绝大多数系统中的概念错误相比,它们是微不足道的。如果这是事实,那么软件开发总是非常困难的,天生就没有银弹。然后具体从软件开发的复杂性,一致性,可变性和不可见性进行了详细分析。
个人感想:
对于我们来说适应能力是我们不管生活中还是工作中都是必不可少的技能。对于我们来说,随着时间的流逝,也许项目的总的目标是不变的,但是一些小的细节随着生活的改变而改变,这就需要我们适应这些变化,对于这些变化做出适当的改变来适应这些变化。对于我们来说,软件的集成和测试也是非常重要的,这是软件工程里很重要的步骤。而写文档对于我们来说也是非常重要的,老师说,对于我们软件工程的学生来说,很重要的一项本领就是如何写文档,我们软件工程就是一门与人交流的学科,只有写好文档才能更好地和他人进行交流。