这学期Java的学习已经接近尾声,《大道至简》也已经读完了最后两章。首先很高兴这学期学到了很多关于Java语言的知识,虽然这学期的Java语言的学习历程马上结束,但我明白,我对Java的学习才刚刚入门,以后还会有更多更大的挑战等着我,所以以后我还会继续学习下去。《大道至简》的前面几章给了我很多的启迪,告诉了我什么是软件工程,怎样去做好软件工程,我相信这对我以后的学习和工作都将会有巨大的帮助。读完第七章和第八章后我对软件工程这个词汇有了跟深刻的理解。
理想状况下,软件工程=过程+方法+工具。然而工程成功的真正关键,并不在于你把你的团队“组织”得多好。即使在团队中他们都表现得有条不紊,你一样会面临失败。愚公如果停下来,思考的问题可能是碎石的方法,而项目经理从细节中跳出来,思考的问题就应当是完成工程的方法。评价这个方法的好坏的标准只有一个:节约成本。不计成本的项目计划不会得到经营者的支持,毫无目的地消耗成本是项目中的慢性毒药,最致命的风险是成本的枯竭。
除了软件本质力量的推动之外,商业因素也推动着软件工程体系的发展。文中所画软件工程层状模型可以看出,作者将软件工程划分为实现,团队和经营三部分。从这个模型中可以看到,在“程序”与“方法”层面,是关注于“(具体的)实现”的;而在“过程”和“工程”层面,更首要考虑的是团队问题。从角色的角度上来说:开发经理思考项目的实施方案和管理具体的开发行为; 而项目经理则保障团队的稳定性和一致性。然而这只是基本模式,或者说,是理想模式。
在软件开发的过程中,存在一个问题:开发者的目的是在保障质量的前提下实现目标。但是最后的结果就是:我们会在项目交付和试用时才会碰到客户在质量上的投诉。然后就是那个成员相互推卸责任,需求人员会把所有的责任归咎到开发人员,而开发人员又不停地埋怨需求的不清不楚或者变更的没完没了。我们看到,在项目的平衡三角(时间、资源和功能)中讨论的是目标问题。现在绝大部分的公司只追求实现目标,而忽略了质量的问题。往往这个质量出现的问题,都源自于细节。细节处理不好就很容易出现一些我们意想不到的错误。
软件工程是灵活的,大多数人不知就里地使用着技巧和方法,而一旦出了问题,则归咎于这些技巧和方法的不好,而真正的问题在于,这些人并不知道这些技巧、技术和方法的原理,因而不知道变通,也不知道回避错误。所以我们要学会灵活变通,不要对待每一个方法每一点知识都要求甚解。