您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 浅谈敏捷软件项目研发
浅谈敏捷软件项目研发什么是敏捷•敏捷宣言:个体和交互胜过过程和工具可以工作的软件胜过面面俱到的文档客户合作胜过合同谈判响应变化胜过遵循计划为什么要敏捷•软件开发模式的发展短期的、即时的设计,无完整的规划。当系统大而复杂时,很难加入新的功能对开发过程有严格而详尽的规定,使软件开发更有可预设性,但过程繁琐滞重,延缓整个开发进程以不多的步骤过程获取较满意的结果。敏捷开发方法的核心思想:适应变化、以人为中心敏捷研发的特点•注重概念和架构设计,而轻详细设计•市场和需求驱动,拥抱变化•时刻考虑版本兼容性•轻文档,但非无文档敏捷开发原则(1)•最优先要做的是通过尽早的、持续的交付有价值的软件来使客户满意。•即使到了开发的后期,也欢迎改变需求。敏捷过程利用变化来为客户创造竞争优势。•经常性地交付可以工作的软件,交付的间隔可以从几个星期到几个月,交付的时间间隔越短越好。•在整个项目开发期间,业务人员和开发人员必须天天都在一起工作。•围绕被激励起来的个体来构建项目。给他们提供所需的环境和支持,并且信任他们能够完成工作。敏捷开发原则(2)•在团队内部,最具有效果并富有效率的传递信息的方法,就是面对面的交谈。•工作的软件是首要的进度度量标准。•敏捷过程提倡可持续的开发速度。责任人、开发者和用户应该能够保持一个长期的、恒定的开发速度。•不断地关注优秀的技能和好的设计会增强敏捷能力。•简单是最根本的。•最好的构架、需求和设计出于自组织团队。•每隔一定时间,团队会在如何才能更有效地工作方面进行反省,然后相应地对自己的行为进行调整。敏捷研发流程需求:设计:迭代n:什么是Anatomy图?•Anatomy图从下向上,一层一层逐步描述了产品功能•Anatomy图从下向上体现出了产品中各个功能的依赖关系•Anatomy图中每个功能点必须是明确的、具体的;用户可见的,有用户价值的•Anatomy图中是产品功能的描述,不是系统架构图,更不是模块流程图•Anatomy图层次示例Anatomy图的用途•剖析系统功能•制定迭代计划•设计测试策略•新增需求设计•回归测试Anatomy图加入新增需求回归测试功能剖析制定迭代计划测试策略设计什么是UserStory?•Userstory是对客户有价值的软件功能点的描述。由以下三点组成:对功能点的简要描述对补充story细节的讨论记录测试用例,用来在story实现的时候对其进行验证UserStory的划分原则•功能点独立的•有用户价值的•可测试的•交付单元、规模较小独立的可测试的有用户价值的规模较小的划分UserStory迭代计划•发布计划:客户向程序员演示所希望获得的特性,程序员们评估它的难度,以此给出产品交付的计划。最初的发布计划是不够精确的,所以团队通常会不时地校正发布计划。•迭代计划:将发布计划分为一系列固定长度的迭代计划,为团队成员提供每个开发周期的导向,并将迭代期间完成的工作指派给团队成员。发布计划迭代计划迭代计划制定特点•迭代组全体成员共同讨论,制定详细开发计划•制定迭代计划以Anatomy图为输入,要考虑到特性之间的依赖关系•根据每个成员能力不同分配工作,制定不同的个人计划,不搞“一刀切”•给出工作交付的明确时间点站立会议•每天早上,迭代组的所有成员都会站立进行一次会议,由于是站立的,所以时间不会很长,一般来说是15-20分钟。•会议中,迭代组每个人都陈述三个内容:1.你昨天做了什么?2.你今天要做什么?3.你遇到了哪些困难?站立会议的目的•全体成员都能够了解项目组的整体进度•促进迭代组内成员沟通•及时暴露问题,尽早解决问题•加快组内经验共享,促进相互协作站立会议促进沟通进展透明暴露问题经验共享结对编程•结对编程:一种编程模式。两个程序员并排坐在一台电脑前,面对同一个显示器,一起分析,一起设计,一起写测试例子,一起编码,一起单元测试,一起写文档等。基本上所有的开发环节都一齐肩并肩地,平等地,互补地进行开发工作。结对编程优点•程序员互相帮助,互相教对方,可以得到能力上的互补。•增强代码和产品质量,并有效的减少BUG。•降低学习成本。一边编程,一边共享知识和经验,有效地在实践中进行学习。•在编程中,相互讨论,可能更快更有效地解决问题。回顾会议在每一次迭代结束后,团队需要进行一次回顾会议,内容包括以下三点:Good:哪些做法可以保持Couldhavedonebetter:哪些做法需要改变Improvements:有关将来如何改进的具体想法回顾会议的作用•挖掘优秀经验•避免重复错误•激励组内成员•记录结论,跟踪执行持续继承过程开发人员开发人员开发人员……代码库持续集成报告自动更新代码反馈代码合入取得最新代码为什么要持续集成•避免“除虫会议”,提高效率•尽早发现问题,容易定位•适应新增需求自动更新代码持续集成自动编译自动测试自动反馈总结•敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。•在敏捷开发中,软件项目的构建被切分成多个相互联系,又可独立运行的子项目,各个子项目的成果都经过测试,具备集成和可运行的特征,在此过程中软件一直处于可使用状态。
本文标题:浅谈敏捷软件项目研发
链接地址:https://www.777doc.com/doc-778917 .html