关于银弹:

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. 【PAT】B1061 判断题(15 分)

    简单逻辑题, #include<stdio.h> #include<algorithm> using namespace std; int main(){ int N,M;// ...

  2. Azkaban-2.5.0-部署与常见案例

    该文章是基于 Hadoop2.7.6_01_部署 . Hive-1.2.1_01_安装部署 进行的 1. 前言 在一个完整的大数据处理系统中,除了hdfs+mapreduce+hive组成分析系统的核 ...

  3. Frameworks(不定时更新)

    iOS8.4 Frameworks 更新时间:2015年8月17日 Accelerate iOS4.0引入了Accelerate框架,该框架的接口可用于执行数学.大数字以及DSP运算.和开发者个人编写 ...

  4. 基于tomcat插件的maven多模块工程热部署(附插件源码)

    内容属原创,转载请注明出处 写在前面的话 最近一直比较纠结,归根结底在于工程的模块化拆分.以前也干过这事,但是一直对以前的结果不满意,这会重操旧业,希望搞出个自己满意的结果. 之前有什么不满意的呢? ...

  5. 关于对浏览器发送POST请求的一点研究

    网上对与HTTP的Method,GET和POST的区别,说得毕竟详细.然后提到一点,说浏览器对两者的还有一个比较容易让人忽略的区别就是:POST会分2次发送,而GET只1次. GET发送1次,这个没什 ...

  6. 1499-luogu洛谷 后缀表达式

    题目描述 所谓后缀表达式是指这样的一个表达式:式中不再引用括号,运算符号放在两个运算对象之后,所有计算按运算符号出现的顺序,严格地由左而右新进行(不用考虑运算符的优先级). 如:3*(5–2)+7对应 ...

  7. springdashboard环境搭建

    SpringCloud Hystrix Dashboard Hystrix-dashboard是一款针对Hystrix进行实时监控的工具,通过Hystrix Dashboard我们可以在直观地看到各H ...

  8. jmeter(十九)HTTP属性管理器

    jmeter是一个开源灵活的接口和性能测试工具,当然也能利用jmeter进行接口自动化测试.在我们利用它进行测试过程中,最常用的sampler大概就是Http Request, 使用这个sampler ...

  9. Java发送QQ邮件

    面试的时候被问到这个问题,别人问我用Java发过邮件没有,被问得一脸懵逼.然后就研究了一下,不是很难,按照网上的方法折腾了几天就搞出来了. 首先,使用QQ邮箱发送邮件之前需要在邮箱里面配置,开启pop ...

  10. ping + traceroute + tracert + tcpdump等命令的原理

    1.ping:关键就在这里,IP层协议通过机器B的IP地址和自己的子网掩码,发现它跟自己属同一网络,就直接在本网络内查找这台机器的. MAC如果以前两机有过通信,在 A 机的 ARP 缓存表应该 有 ...