大道至简终结篇读后感

      JAVA课程接近尾声,大道至简的学习也迎来终结篇。

      第七章介绍了现实中的软件工程,软件工程一直以来都缺乏一个统一的定义,很多学者、组织机构都分别给出了自己认可的定义。如今有很多软件公司,而大公司手中都有自己的算盘。软件业界如今的局面,是大公司们相互制衡的结果。他们都在做着相同的事,又都有各自的算盘。他们一面打压对手的优势,一面又借助对手和同盟的力量来削弱自己的劣势或者补充实力。谁占在了峰头浪尖,便成了众矢之的。无论谁成就了这个地位,都将承受相同的风险和压力,当然也包括机会。大公司们在标准、理论、语言上的争来夺去,未必全然出于“软件实现”的考虑。对统一理论、统一工具、统一过程的企图,其最终目的是在整个软件工程体系中的全面胜出。因而,除了软件本质力量的推动之外,商业因素也推动着软件工程体系的发展。大公司们的争夺战的最终结果,已经开始把软件工程,从原始的“自生演进”状态,逐渐推进到“它激发展”的状态上了。这种它激发展可能会影响到软件工程发展的速度,然而在各个工程层面上的关注点并不会发生变化。 在“程序”与“方法”层面,是关注于“实现”的;而在“过程”和“工程”层面,更首要考虑的是团队问题。

      理想状况下,“软件工程=过程+方法+工具”。然而工程成功的真正关键,并不在于你把你的团队“组织”得有多好。即使在团队中他们都显示有条不紊,你一样会面临失败。如果资本流失了,就没了运作,团队的存在就没有了必要性和可能性,项目就死亡了。此外,忽略了成本,也是项目失败的原因。

      软件工程是实践中摸索出来的方法论。每个组织的大小、行业、具体情况都很不一样,更不谈人员组成、企业文化、客户的不同了。这样每个组织都应该找到适合自己发展的软件工程的方法和过程。软件项目需要在时间、资源和功能中找到平衡,如果一个目标本身都是有问题的,软件项目注定着会走向失败。而如果项目进度和工作量评估不靠谱的话,就更是雪上加霜了。目前公司的项目都或多或少的存在着这样的问题,然而我们真的学会了“折中”吗?我们既要应对快速的变化,又需要保证系统的安全可靠和高可用性。这是我们现阶段最需要解决的难题。

      第八章“是思考还是思想”,工具、方法与过程被称为软件工程的三个要素,它们是相互作用的。“过程”问题,既有实施过程的工具,也有相关的过程方法理论。过程本身也有方法论的问题,由于方法在过程环节以及过程总体层面上具有贯通性,因此保证“方法”的实施的“工具”也会出现在过程的各个环节和层面上。我们应该回归到软件工程的本体上来思考问题,而不是仅关注于每一个局部的要素。工程的整体问题仍旧是“实现”。在需求阶段我们就会面临“目标”的问题。就一个项目而言,在项目的平衡三角即时间、资源和功能中讨论的是目标问题,但并不讨论质量问题。也就是说,经典教材中总是关注:如何更快的完成项目,并减少资源占用,以及实现更多的功能。然而,即使平衡了这种关系,项目的结果仍可能产生一个天生的残障。因为目标可能在平衡中确立,但质量却要在过程中控制。即使在时间、资源和功能三者中取得了平衡,即使客户、项目组和公司同样满意于这个平衡“目标”,它仍然有可能是“不能实施”的。

      软件工程是灵活的,在软件开发中,大多数人不知究竟地使用着技巧和方法,而一旦出了问题,则归究于这些技巧和方法的不好。而真正的问题在于,这些人并不知道这些技巧、技术和方法的原理,因而不知道变通,也不知道回避错误。

      要想学好软件工程,我们要多思考,灵活变通。在这条路上越走越远!

原文地址:https://www.cnblogs.com/qianxia/p/4960147.html