Week7阅读笔记
关于银弹:
Brooks在他最著名的这篇文章里指出,在软件开发过程里是没有万能的终杀性武器的,只有各种方法综合运用,才是解决之道。而各种声称如何如何神奇的理论或方法,都不是能杀死“软件危机”这头人狼的银弹。在软件工程中,虽然各种高阶语言的使用有效地移除了次要复杂度的问题,但是软件本身的必要复杂度却无法被移除掉。就比如我们平常的作业,面向课程中的电梯调度,电梯的状态变化和各种属性都必须考虑和实现,如果参考现实生活中的一些实际例子,情况就变得更加复杂。总而言之,要得到一个理想的程序,必须考虑多方面的问题,多人合作开发一个复杂的软件时,因为每个人的想法各有不同,团队初期的磨合过程也很费劲。
大泥球:
因为时间紧急,有时开发者会走捷径,拷贝相似功能的代码来赶进度,并且争取尽快发行第一个版本。他们一开始进展迅速,但是代码最终会变成大泥球,导致结构系统不够清晰。然而在时间和预算等现实因素的制约下,追求程序的完美又是不可能的,这就是一个纠结的地方。这个时候,代码复审,结对编程,有利于解决大泥球问题,结对编程时,一个人写代码,一个人在旁监督,相当于两个人的智慧的叠加,这样代码的可读性和正确率都增加了。
瀑布模型:
定义:瀑布模型(Waterfall Model) 是一个项目开发架构,开发过程是通过设计一系列阶段顺序展开的,从系统需求分析开始直到产品发布和维护,每个阶段都会产生循环反馈,因此,如果有信息未被覆盖或者发现了问题,那么最好 “返回”上一个阶段并进行适当的修改,项目开发进程从一个阶段“流动”到下一个阶段,这也是瀑布模型名称的由来。
瀑布模型的优点
1)为项目提供了按阶段划分的检查点。
2)当前一阶段完成后,您只需要去关注后续阶段。
教堂,集市:
《大教堂与市集》以Linux的核心开发过程以及作者自己主持开发的开放原始码软件──Fetchmail为讨论案例,对比两种完全不同的开发模式:绝大多数商业公司所采用的“大教堂”模式和Linux世界采用的“集市”模式。
• 大教堂模式(The Cathedral model):源代码在软件发行后公开,但在软件的每个版本开发过程中是由一个专属的团队所控管的。作者以GNU Emacs及GCC这两软件为例。
• 市集模式(The Bazaar model):源代码在开发过程中即在互联网上公开,供人检视及开发。作者以Linux核心的创始者林纳斯·托瓦兹带领Linux核心的开发为例,亦引用fetchmail的开发为例。18:14:05
个人项目、结对项目和团队项目,它们给了我很多不同的体验,我的感受集中在以下几点:
• 凡所学皆有用。
在之前我时常抱怨某些课程的“不人性化”,比如上个学期的面向对象课程,我的印象太深刻了,直到现在那些记忆仿佛都还是历历在目。我们相互查错,并且直接转化为相应的得分,所以我们经常看到谁又与谁发生冲突和争执,听说谁又在鸡蛋里挑骨头扣了多少多少分……整个学期充满了火药味,这是很残酷也很现实的竞争机制。然而这种高压确实在推动我们向前发展,不论是在技能上还是在心智上,我们都有很大的提高。
之前上过的一系列课程,比如C++、操作系统等等,都是在打好扎实的基础,这种基础包括能力上的,对编程的熟练程度,也包括表达上的,你和其他人之间的交流与协作的过程,是多方面的。有些我曾经会觉得质疑觉得多余的部分,现在回过头来再看看,也许会感到那是一笔宝贵的人生财富。你所学习的东西,或许在现阶段显得无足轻重,甚至你觉得不屑一顾,但是绝不是毫无用处。
• 计划赶不上变化。
永远都要做好至少提前三天的计划安排,永远都要准备好plan B,因为你不知道下一秒会有什么变化出现打乱这个安排。每个队员都有自己的事务,不仅是这个项目,还有其他别的麻烦,学校的各种竞赛,实验室布置的各种任务,留学生的事务,课程的变化,很难精打细算地在一个时间点把大家都聚集在一起。要做好计划的安排,也要注意到计划的时效性,不能雄心勃勃制定一个超长的时刻列表,也不能步步为营苛责每一个小的细节,这种对突发情况的应对能力,也是一个对团队非常重要的影响因素。
• 注重个体间的交互。
大学前两年,大部分时候我们都在做个人编程,然而在结对项目和团队项目中,我们需要把更多的注意力放在其他人身上。在结对和团队项目中,出现一些问题,这些问题中大部分都是与人与人之间的问题。比如任务分配没有交代清楚,截止时间没有完成任务等等很多种情况,这些不是在个人编程时能够约束和预见到的。出现这些问题,非常影响团队的士气和进度。而在敏捷软件开发中,团队的构建是一个非常关键的过程,一个优秀的团队,队员间的沟通、协调、合作的交互能力,比每个个体的单纯的编程能力、工具的掌握情况更加重要。同理,和用户保持交互关系,了解他们的需求和优先等级,对工作有益。
• 重视团会会议
团队会议非常重要,与人交互的最直截了当也是效率最高的方式就是面对面的交谈。仅仅通过电话,短信告知的零碎的信息帮助很少,团队会议让所有队员集思广益,讨论出一个最佳的方案。在团队士气低落时能够起到鼓励的作用,增强队员之间的信任和理解,在团队出现一些错误时也能起到反思和自我反省的作用,从而将之拉回正道,无论如何,在一个团队中,个人都应该为团队让步。
Week7阅读笔记的更多相关文章
- 阅读笔记 1 火球 UML大战需求分析
伴随着七天国庆的结束,紧张的学习生活也开始了,首先声明,阅读笔记随着我不断地阅读进度会慢慢更新,而不是一次性的写完,所以会重复的编辑.对于我选的这本 <火球 UML大战需求分析>,首先 ...
- [阅读笔记]Software optimization resources
http://www.agner.org/optimize/#manuals 阅读笔记Optimizing software in C++ 7. The efficiency of differe ...
- 《uml大战需求分析》阅读笔记05
<uml大战需求分析>阅读笔记05 这次我主要阅读了这本书的第九十章,通过看这章的知识了解了不少的知识开发某系统的重要前提是:这个系统有谁在用?这些人通过这个系统能做什么事? 一般搞清楚这 ...
- <<UML大战需求分析>>阅读笔记(2)
<<UML大战需求分析>>阅读笔记(2)> 此次读了uml大战需求分析的第三四章,我发现这本书讲的特别的好,由于这学期正在学习设计模式这本书,这本书就讲究对uml图的利用 ...
- uml大战需求分析阅读笔记01
<<UML大战需求分析>>阅读笔记(1) 刚读了uml大战需求分析的第一二章,读了这些内容之后,令我深有感触.以前学习uml这门课的时候,并没有好好学,那时我认为这门课并没有什 ...
- Hadoop阅读笔记(七)——代理模式
关于Hadoop已经小记了六篇,<Hadoop实战>也已经翻完7章.仔细想想,这么好的一个框架,不能只是流于应用层面,跑跑数据排序.单表链接等,想得其精髓,还需深入内部. 按照<Ha ...
- Hadoop阅读笔记(六)——洞悉Hadoop序列化机制Writable
酒,是个好东西,前提要适量.今天参加了公司的年会,主题就是吃.喝.吹,除了那些天生话唠外,大部分人需要加点酒来作催化剂,让一个平时沉默寡言的码农也能成为一个喷子!在大家推杯换盏之际,难免一些画面浮现脑 ...
- Hadoop阅读笔记(五)——重返Hadoop目录结构
常言道:男人是视觉动物.我觉得不完全对,我的理解是范围再扩大点,不管男人女人都是视觉动物.某些场合(比如面试.初次见面等),别人没有那么多的闲暇时间听你诉说过往以塑立一个关于你的完整模型.所以,第一眼 ...
- Hadoop阅读笔记(四)——一幅图看透MapReduce机制
时至今日,已然看到第十章,似乎越是焦躁什么时候能翻完这本圣经的时候也让自己变得更加浮躁,想想后面还有一半的行程没走,我觉得这样“有口无心”的学习方式是不奏效的,或者是收效甚微的.如果有幸能有大牛路过, ...
随机推荐
- Linux系统如何让显示中文?英文centos切换中文
登陆centos图形界面之后,找到如下图位置 system---- add/remove software也就是类似windows的添加删除程序\软件 由于添加删除组件需要管理员权限,如果是roo ...
- <!DOCTYPE>标签与table高度100% (转)
<!DOCTYPE>标签可声明三种DTD类型,分别表示严格版本.过渡版本以及基于框架的 HTML 文档. 三种HTML文档类型: HTML 4.01 规定了三种文档类型:Strict.Tr ...
- MVC设计模式在网站中的应用
MVC设计模式在网站中的应用 以淘宝的购物车为例 一.结合六个基本质量属性 可修改性 采用MVC设计模式的时候,可以将视图.模型.控制器分析,将用户动作.数据表示.应用数据分离开来,如果用户需要以不同 ...
- 卷积运算的本质,以tensorflow中VALID卷积方式为例。
卷积运算在数学上是做矩阵点积,这样可以调整每个像素上的BGR值或HSV值来形成不同的特征.从代码上看,每次卷积核扫描完一个通道是做了一次四重循环.下面以VALID卷积方式为例进行解释. 下面是pyth ...
- Luogu P4705 玩游戏
题目描述 Alice 和 Bob 又在玩游戏. 对于一次游戏,首先 Alice 获得一个长度为 的序列 ,Bob 获得一个长度为 的序列 bb.之后他们各从自己的序列里随机取出一个数,分别设 ...
- Linux基础第五课——用户管理
用户管理 一个用户必须有一个主组 一个用户可以拥有多个组 但是必须一个主组 其它组是临时组 一个组可以拥有多个用户 用户的信息放到 /etc/passwd 用户的密码 存入 /etc/shadow 组 ...
- 移动端 Retina屏border实现0.5px
首先来看一下造成Retina边框变粗的原因 其实这个原因很简单,因为css中的1px并不等于移动设备的1px,这些由于不同的手机有不同的像素密度.在window对象中有一个devicePixelRat ...
- exec dbms_stats.gather_schema_stats 手动优化统计
Oracle10g或以上版本.exec dbms_stats.gather_schema_stats(ownname => 'DFMS', options => 'GATHER AUTO' ...
- php 请求另一个服务器接口返回数据
<?php /** * Created by PhpStorm. * User: thinkpad * Date: 2015/7/17 0017 * Time: 13:24 */ class A ...
- Java程序在Linux上运行虚拟内存耗用很大
突然集群的2个节点挂了,通过top查看, 虚拟内存22G, 通过 pmap -x 8 | grep anon 一大堆64M Linux下glibc的内存管理机制用了一个很奇妙的东西,叫arena.在g ...