关于银弹:

Brooks在他最著名的这篇文章里指出,在软件开发过程里是没有万能的终杀性武器的,只有各种方法综合运用,才是解决之道。而各种声称如何如何神奇的理论或方法,都不是能杀死“软件危机”这头人狼的银弹。在软件工程中,虽然各种高阶语言的使用有效地移除了次要复杂度的问题,但是软件本身的必要复杂度却无法被移除掉。就比如我们平常的作业,面向课程中的电梯调度,电梯的状态变化和各种属性都必须考虑和实现,如果参考现实生活中的一些实际例子,情况就变得更加复杂。总而言之,要得到一个理想的程序,必须考虑多方面的问题,多人合作开发一个复杂的软件时,因为每个人的想法各有不同,团队初期的磨合过程也很费劲。

大泥球:

因为时间紧急,有时开发者会走捷径,拷贝相似功能的代码来赶进度,并且争取尽快发行第一个版本。他们一开始进展迅速,但是代码最终会变成大泥球,导致结构系统不够清晰。然而在时间和预算等现实因素的制约下,追求程序的完美又是不可能的,这就是一个纠结的地方。这个时候,代码复审,结对编程,有利于解决大泥球问题,结对编程时,一个人写代码,一个人在旁监督,相当于两个人的智慧的叠加,这样代码的可读性和正确率都增加了。

瀑布模型:

定义:瀑布模型(Waterfall Model) 是一个项目开发架构,开发过程是通过设计一系列阶段顺序展开的,从系统需求分析开始直到产品发布和维护,每个阶段都会产生循环反馈,因此,如果有信息未被覆盖或者发现了问题,那么最好 “返回”上一个阶段并进行适当的修改,项目开发进程从一个阶段“流动”到下一个阶段,这也是瀑布模型名称的由来。

瀑布模型的优点

1)为项目提供了按阶段划分的检查点。

2)当前一阶段完成后,您只需要去关注后续阶段。

3)可在迭代模型中应用瀑布模型。增量迭代应用于瀑布模型。迭代1解决最大的问题。每次迭代产生一个可运行的版本,同时增加更多的功能。每次迭代必须经过质量和集成测试。
4)它提供了一个模板,这个模板使得分析、设计、编码、测试和支持的方法可以在该模板下有一个共同的指导。

教堂,集市:

《大教堂与市集》以Linux的核心开发过程以及作者自己主持开发的开放原始码软件──Fetchmail为讨论案例,对比两种完全不同的开发模式:绝大多数商业公司所采用的“大教堂”模式和Linux世界采用的“集市”模式。

大教堂模式(The Cathedral model):源代码在软件发行后公开,但在软件的每个版本开发过程中是由一个专属的团队所控管的。作者以GNU Emacs及GCC这两软件为例。

• 市集模式(The Bazaar model):源代码在开发过程中即在互联网上公开,供人检视及开发。作者以Linux核心的创始者林纳斯·托瓦兹带领Linux核心的开发为例,亦引用fetchmail的开发为例。18:14:05

个人项目、结对项目和团队项目,它们给了我很多不同的体验,我的感受集中在以下几点:

• 凡所学皆有用。

在之前我时常抱怨某些课程的“不人性化”,比如上个学期的面向对象课程,我的印象太深刻了,直到现在那些记忆仿佛都还是历历在目。我们相互查错,并且直接转化为相应的得分,所以我们经常看到谁又与谁发生冲突和争执,听说谁又在鸡蛋里挑骨头扣了多少多少分……整个学期充满了火药味,这是很残酷也很现实的竞争机制。然而这种高压确实在推动我们向前发展,不论是在技能上还是在心智上,我们都有很大的提高。

之前上过的一系列课程,比如C++、操作系统等等,都是在打好扎实的基础,这种基础包括能力上的,对编程的熟练程度,也包括表达上的,你和其他人之间的交流与协作的过程,是多方面的。有些我曾经会觉得质疑觉得多余的部分,现在回过头来再看看,也许会感到那是一笔宝贵的人生财富。你所学习的东西,或许在现阶段显得无足轻重,甚至你觉得不屑一顾,但是绝不是毫无用处。

• 计划赶不上变化。

永远都要做好至少提前三天的计划安排,永远都要准备好plan B,因为你不知道下一秒会有什么变化出现打乱这个安排。每个队员都有自己的事务,不仅是这个项目,还有其他别的麻烦,学校的各种竞赛,实验室布置的各种任务,留学生的事务,课程的变化,很难精打细算地在一个时间点把大家都聚集在一起。要做好计划的安排,也要注意到计划的时效性,不能雄心勃勃制定一个超长的时刻列表,也不能步步为营苛责每一个小的细节,这种对突发情况的应对能力,也是一个对团队非常重要的影响因素。

• 注重个体间的交互。

大学前两年,大部分时候我们都在做个人编程,然而在结对项目和团队项目中,我们需要把更多的注意力放在其他人身上。在结对和团队项目中,出现一些问题,这些问题中大部分都是与人与人之间的问题。比如任务分配没有交代清楚,截止时间没有完成任务等等很多种情况,这些不是在个人编程时能够约束和预见到的。出现这些问题,非常影响团队的士气和进度。而在敏捷软件开发中,团队的构建是一个非常关键的过程,一个优秀的团队,队员间的沟通、协调、合作的交互能力,比每个个体的单纯的编程能力、工具的掌握情况更加重要。同理,和用户保持交互关系,了解他们的需求和优先等级,对工作有益。

• 重视团会会议

团队会议非常重要,与人交互的最直截了当也是效率最高的方式就是面对面的交谈。仅仅通过电话,短信告知的零碎的信息帮助很少,团队会议让所有队员集思广益,讨论出一个最佳的方案。在团队士气低落时能够起到鼓励的作用,增强队员之间的信任和理解,在团队出现一些错误时也能起到反思和自我反省的作用,从而将之拉回正道,无论如何,在一个团队中,个人都应该为团队让步。

Week7阅读笔记的更多相关文章

  1. 阅读笔记 1 火球 UML大战需求分析

    伴随着七天国庆的结束,紧张的学习生活也开始了,首先声明,阅读笔记随着我不断地阅读进度会慢慢更新,而不是一次性的写完,所以会重复的编辑.对于我选的这本   <火球 UML大战需求分析>,首先 ...

  2. [阅读笔记]Software optimization resources

    http://www.agner.org/optimize/#manuals 阅读笔记Optimizing software in C++   7. The efficiency of differe ...

  3. 《uml大战需求分析》阅读笔记05

    <uml大战需求分析>阅读笔记05 这次我主要阅读了这本书的第九十章,通过看这章的知识了解了不少的知识开发某系统的重要前提是:这个系统有谁在用?这些人通过这个系统能做什么事? 一般搞清楚这 ...

  4. <<UML大战需求分析>>阅读笔记(2)

    <<UML大战需求分析>>阅读笔记(2)> 此次读了uml大战需求分析的第三四章,我发现这本书讲的特别的好,由于这学期正在学习设计模式这本书,这本书就讲究对uml图的利用 ...

  5. uml大战需求分析阅读笔记01

    <<UML大战需求分析>>阅读笔记(1) 刚读了uml大战需求分析的第一二章,读了这些内容之后,令我深有感触.以前学习uml这门课的时候,并没有好好学,那时我认为这门课并没有什 ...

  6. Hadoop阅读笔记(七)——代理模式

    关于Hadoop已经小记了六篇,<Hadoop实战>也已经翻完7章.仔细想想,这么好的一个框架,不能只是流于应用层面,跑跑数据排序.单表链接等,想得其精髓,还需深入内部. 按照<Ha ...

  7. Hadoop阅读笔记(六)——洞悉Hadoop序列化机制Writable

    酒,是个好东西,前提要适量.今天参加了公司的年会,主题就是吃.喝.吹,除了那些天生话唠外,大部分人需要加点酒来作催化剂,让一个平时沉默寡言的码农也能成为一个喷子!在大家推杯换盏之际,难免一些画面浮现脑 ...

  8. Hadoop阅读笔记(五)——重返Hadoop目录结构

    常言道:男人是视觉动物.我觉得不完全对,我的理解是范围再扩大点,不管男人女人都是视觉动物.某些场合(比如面试.初次见面等),别人没有那么多的闲暇时间听你诉说过往以塑立一个关于你的完整模型.所以,第一眼 ...

  9. Hadoop阅读笔记(四)——一幅图看透MapReduce机制

    时至今日,已然看到第十章,似乎越是焦躁什么时候能翻完这本圣经的时候也让自己变得更加浮躁,想想后面还有一半的行程没走,我觉得这样“有口无心”的学习方式是不奏效的,或者是收效甚微的.如果有幸能有大牛路过, ...

随机推荐

  1. Paramiko和堡垒机实现

    一.Paramiko paramiko模块,基于SSH用于连接远程服务器并执行相关操作. 1.安装:pip install paramiko 2.SSHClient:用于连接远程服务器并执行基本命令 ...

  2. 【PAT】B1077 互评成绩计算(20 分)

    录入成绩,直接将所有同学给的分数相加,排序,减去最大和最小 省去了遍历一次 注意四舍五入 #include<cstdio> #include<string.h> #includ ...

  3. 教程+资源,python scrapy实战爬取知乎最性感妹子的爆照合集(12G)!

    一.出发点: 之前在知乎看到一位大牛(二胖)写的一篇文章:python爬取知乎最受欢迎的妹子(大概题目是这个,具体记不清了),但是这位二胖哥没有给出源码,而我也没用过python,正好顺便学一学,所以 ...

  4. node_01_自定义模块(先创建package.json)

    package.json必须是json格式 你必须确保所有的字符串,包括属性名,都是使用双引号而不是单引号 { "name": "163", "ver ...

  5. ES5-ES6-ES7_let关键字声明变量

    let命令的介绍 let是ECMAScript6中新增的关键字,用于声明变量.它的用法类似于var var a = 3 let b = 4 let变量的声明 let 命令的特点不允许在同一作用域下声明 ...

  6. 管道流_PipedInputStream与PipedOutputStream

    输入和输出可以直接进行连接,通过结合线程使用(一个线程用于写,另一个用于读,因为管道输入流(读)是要读取管道输出流的数据的,又因为输入流中的read方法是阻塞式的,当两个流在同一个线程中时,输入流的r ...

  7. ajax 数据类型结构

  8. VCS双机+oracle 11gR2+ASM主机名修改

    ----------------------------------------------------------------------------VCS修改主机名---------------- ...

  9. python3 小数据池

    '''小数据池:为了重复的使用同一个数据str(一般的,简单的)int -5~256bool True False3个数据类型会被放入小数据池id()取变量的内存地址字符串'''# s1 = &quo ...

  10. maven中的mirrors

    文章转自http://blog.csdn.net/technologyboy/article/details/17143641 简单点来说,repository就是个仓库.maven里有两种仓库,本地 ...