敏捷开发其实不光光要求开发层面和测试层面的敏捷,其实对需求设计层面也是要敏捷的,这样才能配合后续的开发和测试,使之真正的敏捷起来。
我们可以通过在实际操作过程当中在需求层面进行敏捷设计的分析来了解需求的敏捷设计。
大多数情况下需求的处理过程都可以分为需求分析和需求设计两部分,前者要将业务需求转化成产品需求,后者要将产品需求转化为产品设计,也即成品的PRD。
在做需求分析的时候,我们也是接到一部分需求之后,按钮业务优先级来做分析,每次分析肯定是将相互关联的需求放在一起分析,或者是先分析优先级较高的,后分析优先级较低,这个过程将分析的任务进行了划分。
因此其也较为接近于敏捷的模式,这里撇开不谈,主要讲需求设计部分如何与后面的开发、测试结合起来。
在真正开始谈敏捷设计之前,我觉得有必要思考一下是否所有的需求都适合用敏捷设计? 为什么有这样的疑问,在于敏捷开发其实是较为灵活的,并不是一味的为了敏捷而敏捷,其也可以分成产品敏捷和项目敏捷两种方式。
在我的理解里面,产品敏捷是真正的将敏捷设计、敏捷开发、敏捷测试结合在一起的,从产品的层面讲所有的任务都用敏捷的方式进行管理;而项目敏捷则采用的是需求设计走的是瀑布的模式,开发和测试才是敏捷的,因此两者之间还是有点差异。
有的需求不适合用敏捷的方式的来设计
敏捷的模式总的来讲就是将整体拆为多个个体,然后再单独的完成各个个体以达到这些个体合成之后就是整体的效果,所以这里就有一个问题存在,产品的整体需求是否适合拆分?个人在操作经验中总结如下:
•各功能之间较为独立的适合敏捷。一个产品有十个功能点,各个功能点之间相互依赖关系不强的,松耦合,就可以每个功能点单独抽取出来做设计。
•功能本身的逻辑遵循某种操作流程的适合敏捷。功能的实现是按照一个较为固定的流程一步一步往下走的,这样可以将每一个步骤单独拆分开。
•产品上线之后的版本维护适合敏捷。上线之后,对一些BUG、问题、小需求的缝缝补补,都适合用敏捷的方式来设计。
•上线后的新增需求适合敏捷。上线的的新增需求一般都针对某个功能模块来进行设计,相对来说较为独立,因此也适合敏捷设计。
反之,如果不能满足以上几个条件的,特别是耦合度较高的需求,个人建议还是走瀑布的模式,把整体的需求都梳理清楚之后做整体的需求设计,这样可以避免后面的设计过程要改动前面的设计结果的问题,减少一部分的需求变更.
敏捷虽然说很大的一个优势就在于可以较好的适应需求变化,但这个需求变化是指来自于业务层面的,而不是来自于产品设计人员或者产品经理自身的工作方式所导致产生的。
当然肯定也有人是全部都走敏捷的,这样的话对其产品规划能力要求较高,整体思维逻辑要很清晰,才能避免出错,这里只是个人建议,仅供参考。
敏捷设计的产出如何维护
平常我们称一个功能点为一个CASE或者是一个Story,而在敏捷里面称之为backlog产品条目,其实只是换了个名称而已,实质没有变。
之前我也说过在学习他人长处的时候,重要的是理解和变通,而不是照抄。 产品backlog是敏捷的核心,也是整个产品敏捷过程的起源。从根本上说,它就是一个需求、或故事、或特性等组成的列表,按照重要性的级别进行了排序。
它里面包含的是用户或者业务方想要的东西,并用用户或者业务方可以理解的术语加以描述。通常有如下几个部分:
序号ID
统一标识符,就是个自增长的数字而已,用以唯一标示每个backlog,主要用来做标示用,以及在PRD当中标注每个backlog所对应的需求设计描述;
名称Name
简短的、描述性的backlog标题,比如“查看你自己的交易明细”。它必须要含义明确,这样开发人员、测试人员才能大致明白我们说的是什么东西,其实也方便产品经理自身做checklist检查,可以跟其他backlog区分开。 它一般由2到10个字组成;拆分backlog是有要求的,一般要求每条backlog都能在规定的单个迭代周期里面完成;
重要性Importance
产品经理评出一个数值,指示这个backlog有多重要,一般为1到10之间的整数值,分数越高越重要。 其实就是优先级,只不过有的人所理解的优先级是1最优先,所以这里用重要性来表述。优先级的评定主要参考两个维度,一是业务价值,二是紧迫性,其他的都可以暂不考虑;
工作量估算Initial estimate
团队的初步工作量估算,表示完成该backlog所需的工作量,最小的单位是0.5人/天。为尽量提高估算的准确性,目前个人采用的是整个团队每人都写一个估算工作量,去掉一个最高的,去掉一个最低的,剩下做平均,呵呵。 然后再安排各自讲解一下为什么,最终要在团队内部达成一致;
演示How to demo
大略描述了这个backlog应该如何进行示范,本质就是一个简单的测试规范。一般为“先这样做,然后那样做,就应该得到……的结果”,敏捷对每个backlog的要求就是可演示可单独上线的;
备注Notes
相关信息、解释说明和对其它资料的引用等等,一般都非常简短; 通常都把backlog存放在共享的Excel文档里面,以便团队成员都可以随时查看编辑。一般来说这个文档归产品经理维护,但也并不把其他团队成员排斥在外。开发人员和测试人员常常要打开这个文档,弄清一些事情,或者修改估算值。
这里又会产生一个问题,那就是如何让产品backlog停留在业务层面上?
举例来说,如果产品经理有技术相关的背景,那他就可能添加这样一个backlog:“给Events表添加索引”。真正目的也许是“要提高在后台系统中搜索事件表单的响应速度”。到后面可能会发现索引并不是带来表单速度变慢的瓶颈,也许原因与索引完全不相干。
所以指出如何解决问题的应该是开发团队,产品经理只需要关注业务目标即可。这种面向技术的backlog,可以一直问下去“为什么”,直到发现内在的目的为止.
然后再用真正的目的来改写这个backlog(“提高在后台系统中搜索并生成表单的响应速度”)。最开始的技术描述只会作为一个注解存在(“为事件表添加索引可能会解决这个问题”)。
维护backlog表就是一个对产品需求进行拆分的过程,拆分完成后再根据迭代计划来设计具体的实现,前面所讲的项目敏捷则是将所有需求都设计完成之后才进行拆分,这时主要就是为了把开发任务和测试任务拆分出来了。
相对来说,敏捷还是一种较为新颖的模式,目前在互联网行业用的较多,每个公司在用的时候实际情况可能都不大一样,其实没有关系的,适合自己的就是最好的,只要能提高产品迭代发布的效率,就可以了,先用起来,然后在用的过程当中慢慢优化,发挥敏捷的最大的效用。
相关推荐
随着敏捷开发在软件工程领域取得的巨大成功,研究人员开始探索将类似的敏捷设计方法应用于处理器芯片设计中,以期缩短开发周期、降低成本和复杂性,同时不牺牲性能和可靠性。 在探讨处理器芯片敏捷设计方法之前,有...
不过,敏捷设计并不像传统开发那样产生详尽的文档,而是更加注重可执行的、轻量级的设计输出。 **数据结构设计**在敏捷和传统开发中都是必不可少的。敏捷开发的数据结构设计通常从业务模型(领域模型)开始,然后...
总结来说,处理器芯片的敏捷设计方法通过借鉴软件工程领域的技术,对传统的处理器芯片设计进行改革,旨在通过模块化设计、可重用性和敏捷度的提升,解决传统设计方法成本高昂、周期长、门槛高的问题,从而加速处理器...
【敏捷是一种态度:敏捷建模与敏捷需求】 敏捷开发作为一种现代软件开发方法,强调灵活性、迭代性和快速响应变化。在敏捷环境中,需求管理和建模是关键环节,它们直接影响项目的成功和效率。本文将深入探讨敏捷需求...
在IT行业中,系统分析与设计是一项至关重要的技能,它涵盖了需求获取、系统规划、架构设计、详细设计、编码实现以及测试等多个阶段。敏捷迭代方法是近年来广泛应用的一种开发模式,尤其在操作系统(OS)的开发和维护中...
敏捷软件开发设计是一种快速响应变化、迭代且...总结来说,敏捷软件开发设计强调灵活性、沟通和迭代改进,旨在创建满足客户需求的高质量软件。通过不断适应变化,敏捷方法能够在当今快速变化的商业环境中保持竞争力。
* 业务需求:敏捷架构设计需要满足业务需求和技术发展的挑战,以确保架构设计的有效性。 敏捷架构设计是一种基于敏捷开发方法的架构设计方法,强调快速响应变化、灵活性和敏捷性。它能够快速响应业务需求和技术发展...
在IT行业中,敏捷思维是一种以适应变化为核心理念的开发方式,它强调快速迭代、团队协作以及灵活应对需求变更。在架构设计中引入敏捷思维,能够帮助我们构建更加健壮、可扩展且易于维护的系统。本文将深入探讨敏捷...
这部分内容可能涵盖了系统架构设计,包括模块划分、接口设计、数据结构和算法的选择,以及如何根据需求进行合理的系统设计。 6. **系统测试**(19 在职:第九章 系统测试sqh.ppt): 测试是确保软件质量的关键...
总的来说,敏捷思维在架构设计中的应用要求团队理解并接纳敏捷的核心价值,注重团队协作,灵活应对需求变化,通过迭代和反馈不断优化设计。同时,方法论的选择和实施应结合具体项目的特点,寻找最适合的子集,而不是...
### 领域驱动设计中的敏捷实验:从SVN权限管理出发 在IT行业,特别是软件开发领域,**领域驱动设计**(Domain-Driven Design, DDD)与**敏捷方法**(Agile Methodology)的结合日益受到重视。本文通过一个具体的案例...
2. **方法论与架构设计**:敏捷方法如Scrum或Kanban可以应用于架构设计过程中,通过短周期的Sprint或迭代,确保架构设计始终保持与当前需求的一致性。 3. **架构设计的敏捷视图**:敏捷架构不仅关注系统的整体结构...
通过《需求分析与系统设计》这本书的学习,读者将能够掌握如何有效地进行需求分析,从而制定出合理的系统设计方案,为软件开发打下坚实的基础。同时,书中可能还会涵盖敏捷开发、UML建模语言等相关实践方法,帮助...
简易哲学在敏捷开发中占据重要地位,它提倡去除不必要的复杂性,以最简单的设计满足用户需求。如积木玩具Lego的例子所示,简单的设计往往是最经典且难以超越的。敏捷团队以此为指导,专注于开发当前最需要的功能,...
传统的架构设计通常基于详尽的需求分析和预先规划,但在敏捷环境中,这种方法可能会过于僵化,难以应对频繁的需求变化。 在敏捷思维的架构设计方法中,有以下几个关键点: 1. **轻量级设计**:敏捷架构设计倾向于...
处理器芯片设计是信息技术产业的核心,其敏捷设计方法的探索至关重要。传统的处理器芯片设计采用性能导向的方法,依赖于复杂的电子设计自动化(EDA)工具,通过反复迭代优化性能、面积和功耗,这导致了高昂的研发...