敏捷方法--《启示录》

来源:互联网 发布:三维设计软件 编辑:程序博客网 时间:2024/05/23 13:05

    什么是敏捷开发:

    敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。

   理念:    

                     个体和交互 胜过 过程和工具   

                     可以工作的软件 胜过 面面俱到的文档   

                     客户合作 胜过 合同谈判   

                     响应变化 胜过 遵循计划

     敏捷开发方法过程设计的几个原理:    

                     1 交互的面对面的交流是代价最小,最迅速的交换信息的方法    

                     2 超过实际需要的过程是浪费的    

                     3 大的团队需要重量级方法    

                     4 处理重大问题的项目需要重量级方法强调    

                     5 增加反馈和交流可以减少中间产品和文档的需求    

                     6 轻量级方法更强调理解(understanding),自律(discipline)和技能(skill),重量级方法更强调文档(documentation),过程(process)和正式(formality)                                                                      

                                                understanding指整个团队关于项目的全部知识,包括讨论的过程,

                                                documentation只能记录其中的一部分   

                                                discipline是指个人主动的完成工作

                                                process指个人根据指令完成工作   

                                                skill指具有良好技能的人可以省略中间的产品

                                                formality指必须按照规定步骤完成工作   

                     7 确定开发中间的瓶径,提高它的效率


   在产品软件领域使用敏捷方法的技巧(不适用于定制软件团队):

   1  产品经理即是产品负责人,他代表了客户的需求,因而需要与产品开发团队保持密切的联系,协助督促开发进程。

   2  使用敏捷方法绝不等于省略产品规划,产品经理仍然要明白产品的方向和目标,只不过在敏捷开发里,规划周期应该适度缩短,反复迭代。

   3  产品经理和设计师的工作进度应该比开发团队领先一两个迭代周期,确保有足够的时间攻克难题,并且始终让开发人员参与评估产品设计和产品原型,及时反馈建议。

   4  尽量把产品设计工作拆分成独立的部分,分而治之。

   5  产品经理可用产品原型和用户故事替代产品需求文档和功能说明文档有3个优势:

            (1)可以请用户测试

            (2)强迫产品经理全面认真的思考问题

            (3)像开发团队明确的描述每次迭代周期需要完成的任务。

   6  让开发人员自主划分迭代周期。因为他们必须要考虑到产品的质量,性能,扩展性。

   7  产品经理和交互设计师必须出席晨会:设计师向开发人员和测试人员展示产品功能;开发人员互相展示完成的代码,让测试人员测试,请设计师和产品经理过目;测试人员和开发人员在制作原型的阶段识别潜在的问题,协助产品经理指定更合理的决策

   8  不要轻易发布新版本, 必须确保交给用户的产品能正常运行。

   9  每次迭代完成后,产品经理向团队展示产品现状,以及下次迭代的产品原型。

  10  在团队内展开敏捷培训,聘请敏捷顾问协助完成敏捷团队转型的目标。


    两种敏捷开发方法:

   (1)Scrum  

         Scrum是一种迭代式增量软件开发过程,通常用于敏捷软件开发。Scrum在英语的意思是橄榄球里的争球。Scrum很务实的定义了团队中能的主要角色: 

                敏捷教练或项目经理:确保团队合理运作Scrum,并帮助团队移除实施中的障碍; 

                产品负责人:在游戏项目中就是主策划,确定产品的方向和愿景,定义产品发布的内容、优先级及交付时间; 

                开发团队:一个跨职能的小团队,应该包括美术、运维、测试等所有需要的专业人员。 实施过程是把项目分为一次次的“冲刺”阶段,每次“冲刺”从一周到一个月。工作目标就是产品订单(product backlog)。每张backlog在全体讨论并承诺接受之后,将严格执行不得更改。Scrum最大的好处之一是它非常容易学习,而且启动Scrum应用并不需要太多的投入。  

     (2)极限编程 XP Extreme Programming  

          XP方法是所有敏捷方法中,规则最清晰和最完整的。包括:

                 团队协作(Whole Team)

                 规划策略(The Planning Game);

                 结对编程(Pair programming) 

                 测试驱动开发(Testing-Driven Development) 

                 重构(Refractoring)

                 简单设计(Simple Design) 

                 代码集体所有权(Collective Code Ownership) 

                 持续集成(Continuous Integration) 

                 客户测试(Customer Tests) 

                 小型发布(Small Release) 

                 每周40小时工作制(40-hour Week) 

                 编码规范(Code Standards) 

                 系统隐喻(System Metaphor)

原创粉丝点击