第二次阅读作业

No Silver Bullet - Essence and Accidents of Software Engineering

    银弹能杀死狼人。如果我没记错的话,在漫画中柯南对黑暗组织而言就是一颗银弹。生活中是不是真的有银弹我还是不太确定。假如有,银弹就是

一点弱点也没有么?如果有,能抓住银弹弱点的又被称为什么?

  在《No Silver Bullet》中,强调了由于软件的复杂性本质,而使真正的银弹并不存在;所谓的没有银弹是指没有任何一项技术或方法可使软件工程的生产力在十年内提高十倍。所以我觉得这篇文章不是在陈述没有银弹这个事实,而是希望我们在完成软件工程的时候不需要银弹。我们应该组织好开发团队,选择最合适的开发模式。其实人人都是银弹就做到了No Silver Bullet。

  真正好的项目,需要便捷的开发技术,但没有一种技术能彻底的舍弃了人的存在。我们不能忘记的重要事实是,软件是为了方便人类而被创造的。

 

 Managing the development of large software systems: concepts and techniques

这是后来大家说的 “瀑布模型”,它有什么特点?

  根据原文,完整的瀑布开发模式应该是这样的:

 

  

  瀑布模型有以下特点:
  为项目提供了按阶段划分的检查点;当前一阶段完成后,只需要去关注后续阶段。这个特点决定了瀑布模型的适用范围:不适用于经常改动需求的项目;可在迭代模型中应用瀑布模型。迭代1解决最大的问题。每次迭代产生一个可运行的版本,同时增加更多的功能。每次迭代必须经过质量和集成测试。
  但是瀑布模型还有以下特点:
  在项目各个阶段之间极少有反馈;只有在项目生命周期的后期才能看到结果;通过过多的强制完成日期和里程碑来跟踪各个项目阶段。 

  瀑布模型对很多类型的项目而言依然是有效的,如果正确使用,可以节省大量的时间和金钱。对于我们的项目而言,是否使用这一模型主要取决于是否能理解客户的需求以及在项目的进程中这些需求的变化程度,对于经常变化的项目而言,瀑布模型毫无价值。

  在瀑布模型中,软件开发的各项活动严格按照线性方式进行,当前活动接受上一项活动的工作结果,实施完成所需的工作内容。当前活动的工作结果需要进行验证,如果验证通过,则该结果作为下一项活动的输入,继续进行下一项活动,否则返回修改。 

  其实不管是瀑布模型还是什么别的模型,都是被有意简化,以帮助我们解决真实生活中遇到的问题。

big ball of mud

你的项目有一个大泥球么? 有什么解决办法? 

  大泥球,是指杂乱无章、错综复杂、邋遢不堪、随意拼贴的大堆代码。

  其实很多软件都是靠着大泥球完成的。我觉得大泥球之所以有这么强的生命力,肯定有他的可取之处。比如虽然肉体上的工作量大,但是思想上的工作量小;比如他的逻辑简单,易于快速构造。同时弊端也是显而易见的。在现实生活中很多时候无论花费多少时间试图去找出完美的软件结构,客户总是引入一个变化破坏这个结构,不存在完美结构,只存在那些试图平衡当前的代价和收益的结构。有时候,程序员把原因归咎于客户,责怪他们总是改变需求。但是这不是他们的错误,他们只是在思考一种最合理、有效的方式为自己的工作服务。

  但是,客户连源代码都看不到,这种怨念却是没道理的。当我们接收时间管理助手的时候感觉就是一个大泥团。没有注释,没有文档,很难看懂一段代码对应哪块功能。但是还是得慢慢的看,理解。我们的解决办法是每人负责一小块,将大泥球分成小泥球,然后再解决这个小泥球,这项相对容易些。但这样也会出现一些问题。如果我的“小泥球”里的一些东西牵扯到别人的”小泥球“,那么我就很难做下去。所以加强组员的沟通对解决大泥球也很重要。 

CatB – Cathedral and the Bazaar

你的团队是用什么方式建造软件?

Lost in CatB.

这些情况在你的团队中出现过么?

   所谓的大教堂模式(The Cathedral model):源代码在本模式是公开的,但在软件的每个版本开发过程是由一个专属的团队所控管的。
   市集模式(The Bazaar model):源代码在本模式也是公开的,不过却是放在互联网上供人检视及开发。

  根据我对阅读材料的理解,我们团队的开发模式应该是Cathedral模式。好像与Cathedral and the Bazaar 的倾向相左。

  大教堂模式的优点是团队内比较凝聚,可以集中到一个点。而我们做的项目相对比较小,适合团队集中解决。

   在《A Generation Lost in the Bazaar》中,作者却报以不同的观点,警醒我们不要在市集模式中迷失。他认为,Raymond在其书中称颂的集市模式导致的悲哀的现实:“一坨脓包似的权宜代码,被一群盲目的根本不知IT架构为何物的所谓IT“专业人士”永无休止地复制着,粘贴着。”

  这确实一个问题,但出现这个问题的原因不是模式不够完善,而是程序员自己的原则性不够强,如果每个程序员对自己所用的代码都了然于胸,不可能出现这种情况。

Agile Method – by Martin Fowler

你的团队在开发中用了那些敏捷的思想和做法?

 

  先总结一下原文章里的一些我觉得有意义的观点:

  在所有敏捷开发方法中,XP(Extreme Programming)是最引人注目的,它适用于需求快速变动背景下的中小规模的开发团队。极限编程弱化针对未来需求的设计,非常注重当前的简化。因此,极限编程适合规模小、进度紧、需求变化大、质量要求严的项目。它希望以最高的效率和质量来解决用户目前的问题,以最大的灵活性和最小的代价来满足用户未来的需求,极限编程在平衡短期和长期利益之间做了巧妙的选择。极限编程的特点:

  1.极限编程方法从整体团体的开发小型的系统等方面解决了这些问题。

  2.极限编程使用了发布计划的方法。使得开发人员能对前一阶段的开发成果进行评估,更好地把握后面工期的任务安排

  3.极限编程方法尤为强调面对面的沟通,通过现场客户、站立会议、结对编程等方式来保证沟通的有效。
  我们团队在开发时间管理助手的时候有采用极限编程方式,比如会采用类似Pairwork的方式集中解决一个问题。还有在做团队项目的时候每天更新Daily Scrum以加深组员之间的了解等都符合敏捷开发模式。

 

 

转载于:https://www.cnblogs.com/darewin/archive/2012/11/14/2769610.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/262270.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux 每日一练习!!反单引号·(键盘上数字1左边)··

2019独角兽企业重金招聘Python工程师标准>>> ls -al locate ls # 说明locate ls执行出来的路径将会作为ls -al的参数 说明:在一串指令中,在之内的指令将会被先执行,而且执行出来的结果将作为外部的输入信息 转载于:https://my.osc…

订单不断,我是这样做的

为什么同样是上网,同样是做生意,可是有人单都做不完,有人却接不到订单,这是为何呢?我从去年下半年一路走来,虽说一年多了,大的成绩没什么,可还算可以吧.比上不足,比下还是有余.最先接触电子商务平台的是阿里.然后就是化工报价网www.chembj.com了.再者其他的一些网站.好了,闲话…

python迭代器使用_python迭代器的使用方法实例

什么是迭代器?迭代器是带有next方法的简单对象,当然也要实现__iter__函数。迭代器能在一序列的值上进行迭代,当没有可供迭代时,next方法就会引发StopIteration 的异常。python中有很多的对象都是迭代器,例如&#xff1…

docker-compose观察实时日志_大数据项目实战之在线教育(03实时需求) - 十一vs十一...

第1章Spark Streaming概念 Spark Streaming 是核心Spark API的扩展,可实现实时数据的可扩展,高吞吐量,容错处理。数据可以从许多来源(如Kafka,Flume,Kinesis,或TCP套接字)中获取,并可以使用高级函数进行处理,处理完后的…

代码之谜(二)- 语句与表达式

虽然文章标题是『语句与表达式』,在这篇文章中,我将陈述一个观点 每个表达式都有一个值。 在此之外,也会继续表述这个『代码之谜』系列的主题——数学与计算机之间被经常忽略的矛盾。 简单的讲 “表达式”(expression)…

Java动态加载类在功能模块开发中的作用

Java中我们一般会使用new关键字实例化对象然后调用该对象所属类提供的方法来实现相应的功能,比如我们现在有个主类叫Web类这个类中能实现各种方法,比如用户注册、发送邮件等功能,代码如下: 1 /*2 * web功能实现类3 */4 public c…

创业者们的19个Surprises

郑昀玩聚SR 20091115 『毫无疑问,短跑运动员在起跑时速度最快,而后就变慢下来, 获胜者是变慢得最少的那个人。大多数创业公司也是如此。』 ——Paul Graham January 2007 上面这句笺言的作者Paul Graham最近问了Y Combinator旗下创业项目的创…

自学电脑编程_程序人生:盲人程序员蔡勇斌——用耳朵打开盲人的程序世界 - 沐歌爱编程...

有句话说:没有你想不到,只有你做不到。今天想为大家介绍一位程序员界中的励志人物,他就是蔡勇斌。蔡勇斌幼年失明,靠着顽强的毅力和不服输的精神自学编程,成为了一名全栈工程师。他是阿里“多隆奖”首位盲人获得者&…

qtabwidget的图标_QTabWidget每个标签上的关闭按钮怎样设置

自己做窗标题栏首先[DllImport("User32.dll", EntryPoint "ReleaseCapture")] static extern long ReleaseCapture(); [DllImport("User32.dll", EntryPoint "SendMessage")] private static extern int SendMessage(IntPtr hWnd, i…

poj 2299 (归并排序)

给定一个无序的数列&#xff0c;由32位整数组成的&#xff0c;序列长度可达500000&#xff0c;现在通过不断的两两交换&#xff0c;把这个序列排成由小到大的有序序列&#xff0c;问交换的次数是多少。 1 #include<stdio.h>2 #include<stdlib.h>3 #define NN 50000…

SQLite轻量级数据库,操作数据常用语句

2019独角兽企业重金招聘Python工程师标准>>> -----创建表---- ----------表格头英文换中文显示select name as 名字,age 年龄,class from student -----if not exists判断表存在否--字符串用char也行--- --如果用自增长&#xff0c;只能用包装类型integer,不能用int…

.NET常用功能和代码[总结与收藏] (转)

.NET常用功能和代码[总结与收藏] 1. 打开新的窗口并传送参数&#xff1a; 传送参数&#xff1a;response.write("<script>window.open(*.aspx?id"this.DropDownList1.SelectIndex"&id1"...")</script>") 接收参数&#xff1a;s…

deepin安装卡死在蓝色背景_求大神帮助~安装DEEPIN系统卡在蓝色背景图什么原因...

可能是联想拯救者 R7000笔记本的原因&#xff0c;用以下方法解决了先点开联想的电脑管家 你能在左边栏找到一个选项 那个选项是显卡模式点击进去→然后选择独显模式(如果找不到就在当前界面里面选择调回游戏模式)然后重启电脑确认你的电脑进入了独显模式然后再次重启按F2(单按…

cuda编程_CUDA编程入门(四)并行归约算法

这一篇我们一起学习一下如何使用CUDA实现并行归约算法。首先我们要知道什么是并行归约。并行归约&#xff08;Reduction&#xff09;是一种很基础的并行算法&#xff0c;简单来说&#xff0c;我们有N个输入数据&#xff0c;使用一个符合结合律的二元操作符作用其上&#xff0c;…

在ubuntu下各种格式软件安装及常用命令

Ubuntu下软件安装的几种方式&#xff1a; (1).bundle 格式 以VMware-Workstation-Full-7.0.0-203739.i386.bundle为例 命令如下&#xff1a;sudo sh VMware-Workstation-7.0.0-203739.i386.bundle(先切换到该文件所在文件夹) (2).deb格式 最常用的是deb包&#xff0c;deb是deb…

解决Windows客户端访问vsftpd服务器中文乱码问题

上周五-业务部同事反馈客户使用我司的FTP服务&#xff0c;发现文件和目录是中文全部乱码,不方便查看修改文件目录等操作故障原因&#xff1a;vsftpd不能处理字符编码的转换&#xff0c;Windows使用GBK编码&#xff0c;linux使用zh_CN.UTF-8编码解决方法&#xff1a;1、使用能够…

csgo怎么控制电脑玩家_电脑怎么远程控制他人电脑,教您给电脑设置远程控制的方法...

有些时电脑出现了一些我们解决不了的问题时&#xff0c;这时我们一定第一时间想到就是让电脑高手帮忙看一下问题&#xff1b;但要对方在异地该办呢&#xff0c;那就通过电脑远程来解决了&#xff1b;那么问题又来了&#xff0c;电脑怎么远程控制他人电脑呢&#xff1f;小编下面…

JAVA实验报告九异常处理_JAVA实验报告_Java异常处理

贵州大学实验报告学院&#xff1a;计信学院专业&#xff1a;网络工程班级&#xff1a;101 姓名学号实验组实验时间05.27 指导教师肖源源成绩实验项目名称Java异常处理实验目的1)掌握Java异常的概念及工作机制2)掌握异常的分类3)掌握抛出异常语句的使用(throw)4)掌握抛出捕获处理…

win8下vs2012加wp8 sdk开发xna4.0PC游戏

vs2012安装wp8后&#xff0c;只能开发手机端的xna游戏程序&#xff0c;没有xbox和pc端的&#xff0c;看来官方是不打算更新了&#xff0c;不过我们还是有办法的。前提条件下&#xff0c;您得安装了vs2010和xna4.0 game studio或者是windows phone sdk 7.1。如果您没有安装wp8&a…

div悬浮在固定位置_悬浮式超声波致动器概要及研究动向

作者&#xff1a;东京工业大学 中村 健太郎1. 序言以往的超声波马达是通过摩擦力驱动&#xff0c;固定片压电振子与转子接触&#xff0c;通过振动摩擦转子从而获得旋转力和推动力。虽然具有高转矩、高控制性等特点&#xff0c;从原理上讲其速度无法超过振子振动速度。压电振子的…