離氵茖 dé 煙婲

你说             
叶子的离开     
是因为风的追逐   
还是树的不留恋 

  博客园 :: :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

   《敏捷软件开发:原则、模式与实践》一书只读了前三章,读了三遍,结合在公司实践时获得的一点经验和遇到的一些问题,写下来与大家共享并供以后翻阅。斜体字为本人添加的注释,有不同意见的欢迎拍砖。 转载请注明出处。
   正文开始...

    《敏捷软件开发宣言》
         * 个体和交互      胜过  过程和工具
         * 可以工作的软件  胜过  面面惧到的文档
         * 客户合作        胜过  合同谈判
         * 响应变化        胜过  遵循变化
        虽然右项也有价值,但我们认为左项具有更大的价值。
       

    极限编程是一组简单、具体的实践,这些实践结合在形成了一个敏捷开发过程。


   12原则:
         1.我们最优先要做的是通过尽早的、持续的交付有价值的软件来使客户满意。
              也是为了得到客户的反馈意见,以便更符合客户要求。
         2.即使到了开发的后期,也欢迎改变需求。敏捷过程利用变化来为客户创造竞争优势。
               需要良好的架构来保证需求变化不会导致项目结构发生大的变动。 以前公司就应为没有好的架构设计,需求变化稍大一点就要全部从来
         3.经常性地交付可以工作的软件,交付的间隔可以从几个星期到几个月,交付的时间间隔越短越好。 
               应该遵循发布计划,不可一味地赶时间。
         4.在整个项目开发期间,业务人员和开发人员必须天天都在一起工作。 
               这个很有必要,但是业务人员必须先推敲出产品的大致模型,不能一天一个样。
         5.围绕被激励起来的个体来构建项目。给他们提供所需的环境和支持,并且信任他们能够完成工作。 
               制度都是为人服务的,不要制定一些限制员工发挥的制度,但员工也要以团队的利益为重,不能一意孤行
         6.在团队内部,最具有效果并富有效率的传递信息的方法,就是面对面的交谈。 
               最好是手舞足蹈,哈哈...
         7.能工作的软件是首要的进度度量标准。 
               能工作才能给客户演示,客户才能提意见。
         8.敏捷过程提倡可持续的开发速度。责任人、开发者和用户应该能够保持一个长期的、恒定的开发速度。 
               就是不要加班,耶~加班多累呀,还没加班费。
         9.不断地关注优秀的技能和好的设计会增强敏捷能力。
               但是也要分阶段的使用新技术,不能觉得这个好马上就用,要评估改动量。 
         10.简单--使未完成的工作最大化的艺术--是最根本的。 
               但良好的架构也还是要的吧,明知是个大项目,不能就在ASP页面里连数据库吧。
         11.最好的构架、需求和设计出于自组织团队。 
               这个对团队的实力要求有点高哦,不知道有多少公司能有这个水平。反正我们公司是失败了的。还是要一个有经验的架构师才行啊。
         12.每隔一定时间,团队会在如何才能更有效地工作方面进行反省,然后相应地对自己的行为进行调整。 
               实践、分析、总结、再实践。。。

    
一些关键的论点
         人不是即插即兼容的编程装置,对软件开发影响最大的是人,人是获得成功的最重要的因素。
         合作、沟通以及交互能力要比单纯的编程能力更为重要。
         过多的文档比过少的文档更糟。
         编写并维护一份系统原理和结构方面的文档是个好主意。
         直道迫切需要并且意义重大时,才编写文档。
         成功的项目需要有序、频繁的客户反馈。
         相应变化的能力,决定一个项目的成功。
         为下两周做详细的计划,为下三个月做粗略的计划,再以后有一个想法就行了。

         人与人之间的交互是最复杂的,并且其效果从来都难以预期,但却是工作中最为重要的方面。

         过程即目标!

   总结:
         1.在软件开发中人是最重要的,人与人之间的交互也是最复杂的。
         2.不要追求最炫的技术,最强大的工具,如果你没有很好的掌握它们,它们带来的麻烦会比帮助更多。
         3.尽可能早和多地和客户沟通,来确定你所做的事是不是客户想要的。
         4.良好的设计和架构会在需求变化是游刃有余,如果你因为害怕麻烦或想节约时间而不使用好的架构,那么你的程序将会变得一团糟。
         5.阶段性地集成系统和整理代码是很有必要的,虽然看上去那会占用一些额外的时间,但是也会让项目的进展情况更加清晰,代码也会更加简洁。

   用几个词来讲就是
         沟通 简单 反馈 架构 迭代

posted on 2007-06-21 22:15  煙婲離氵茖  阅读(626)  评论(0编辑  收藏  举报