个人博客作业week7
个人博客作业week7
银弹:银弹是指没有任何一项技术或方法可以能让软件工程的生产力在十年内提高十倍。Fred Brooks在1987年所发表的一篇关于软件工程的经典论文,名字叫做《没有银弹》,这篇论文强调了真正的银弹并不存在,也即没有任何一种技术或者方法能让软件工程的生产力在十年内提高十倍。他的这篇论文告诉我们复杂的软件工程问题无法用简单的答案来解决,在软件开发中只有各种方法综合应用,才是解解决问题之道。现代软件系统中无法规避的复杂性、一致性、可变性和不可见性等几个特性使得它自身本就是残缺的,而软件的一致性和实体性也是一个让人十分头疼的事情,在一个软件生存的周期中都不可避免的要改变它最初的样子,需要改进,而这些改进也使得实现问题受到了影响。
大泥球:是指杂乱无章、错综复杂、邋遢不堪、随意拼贴的大堆代码,看起来是设计软件架构的最常见方法。大泥球发生的主要原因可以归结为:1. 一次性代码2. 碎片式增长3.防止软件出现问题4.前期的设计不足。面对需求的不断变化和开发人员自身素质等问题,大泥球似乎是不可避免的。
瀑布模型:瀑布模型是将软件生存周期的各项活动规定为按固定顺序而连接的若干阶段工作,形如瀑布流水,最终得到软件产品。瀑布模型是最早出现的软件开发模型,在软件工程中占有重要的地位,它提供了软件开发的基本框架。其过程是从上一项活动接收该项活动的工作对象作为输入,利用这一输入实施该项活动应完成的内容给出该项活动的工作成果,并作为输出传给下一项活动。同时评审该项活动的实施,若确认,则继续下一项活动;否则返回前面,甚至更前面的活动。对于经常变化的项目而言,瀑布模型毫无价值。瀑布模型有以下优点1)为项目提供了按阶段划分的检查2)当前一阶段完成后,您只需要去关注后续阶段3)可在迭代模型中应用瀑布模型4)它提供了一个模板,这个模板使得分析、设计、编码、测试和支持的方法可以在该模板下有一个共同的指导。瀑布模型有以下缺点: 1)各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量。2)由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发风险。3)通过过多的强制完成日期和里程碑来跟踪各个项目阶段。4)瀑布模型的突出缺点是不适应用户需求的变化。
大教堂模式(The Cathedral model):源代码在软件发行后公开,但在软件的每个版本开发过程中是由一个专属的团队所控管的。由于我们选用TFS进行代码管理,在一定程度上决定了代码只能属于大教堂模式,这样也就导致我们的软件在开发过程中只能由开发人员来保证软件质量,在一定程度上导致除错时间的增加。
敏捷开发的几种方法:1.SCRUM: Scrum是一种迭代式增量软件开发过程,通常用于敏捷软件开发。Scrum包括了一系列实践和预定义角色的过程骨架。Scrum中的主要角色包括同项目经理类似的Scrum主管角色负责维护过程和任务,产品负责人代表利益所有者,开发团队包括了所有开发人员。2. 水晶方法,Crystal ,是由 Alistair Cockburn 和 Jim Highsmith 建立的敏捷方法系列,其目的是发展一种提倡“机动性的”方法,包含具有共性的核心元素,每个都含有独特的角色、过程模式、工作产品和实践。Crystal 家族实际上是一组经过证明、对不同类型项目非常有效的敏捷过程,它的发明使得敏捷团队可以根据其项目和环境选择最合适的 Crystal 家族成员。3. 极限编程(XP,eXtreme Programming)是一种软件工程方法学,是敏捷软件开发中 最富有成效的几种方法学之一。XP为管理人员和开发人员开出了一剂指导日常实践的良方;这个实践意味着接受并鼓励某些特别的有价值的方法。支持者相信,这些在传统的软件工程中看来是“极端的”实践,将会使开发过程比传统方法更加好的响应用户需求,因此更加敏捷,更好的构建出高质量软件。