设计进阶:关于敏捷开发设计
设计进阶需了解:有助于团队协作,提升效率,降低成本的敏捷开发设计

一、什么是“敏捷开发”
敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成。
二、“敏捷开发”成为主流的原因
1.时代的原因
20世纪60年代以前,计算机刚刚投入实际使用,计算机用于个人使用。60年代中期,原来的个人设计、个人使用的方式不再能满足要求,迫切需要改变软件生产方式,提高软件生产率,软件危机开始爆发。
2.瀑布开发模式的各类弊端

(图)瀑布流开发模式(Waterfall Process)
瀑布流开发模式弊端
弊端一:各种不确定,变更成本太高,例如在从未做过的产品或者新增产品功能,提出需求,需求发布方想法变化
弊端二:各环节的沟通机会极少,设计开发成果与原有功能出现偏差
弊端三:上游做决策较少考虑下游想法,开会费事,占时间
弊端四:开发完工验收功能时易爆发矛盾,

(图)敏捷开发模式(Agile Development)
3.互联网的快速兴起
第四次工业革命,系统化的变革和创新
《敏捷宣言》的发布
三、敏捷宣言
在2001年的一次软件开发者的团体讨论中,“敏捷开发”(Agile)一词首次出现。他们一致认为
1.敏捷宣言核心价值
个体和互动高于流程和工具
工作的软件高于详尽的文档
客户合作高于合同谈判
响应变化高于遵循计划

敏捷宣言核心价值(图)
2.敏捷的12条原则
1.我们最优先要做的是通过尽早的、持续的交付有价值的软件来使客户满意。
2.即使到了开发的后期,也欢迎改变需求。敏捷过程利用变化来为客户创造竞争优势。
3.经常性地交付可以工作的软件,交付的间隔可以从几个星期到几个月,交付的时间间隔越短越好。
4.在整个项目开发期间,业务人员和开发人员必须天天都在一起工作。
5.围绕被激励起来的个体来构建项目。给他们提供所需的环境和支持,并且信任他们能够完成工作。
6.在团队内部,最具有效果并富有效率的传递信息的方法,就是面对面的交谈。
7.工作的软件是首要的进度度量标准。
8.敏捷过程提倡可持续的开发速度。责任人、开发者和用户应该能够保持一个长期的、恒定的开发速度。
9.不断地关注优秀的技能和好的设计会增强敏捷能力。
10.以简洁为本,会极大效益的减少不必要工作量。
11.最好的构架、需求和设计出自己组织的团队。
12. 每隔一定时间,团队成员进行复盘总结,并及时优化当前的工作方式。

四.敏捷开发流程
众多敏捷开发设计方法,包括SCRUM,XP(极限编程),FDD (特性驱动开发),Crystal Methods(水晶方法族),DSDM(动态系统开发方法),ASD(自适应软件开发)轻量型RUP……其中最被操作者推崇的是Scrum。
1.ScrumTeam
ScrumTeam由一名ScrumMaster,一名Product Owner 和 Developers 组成
产品负责人
数量:1人
职责:产品负责人应该是了解产品愿景并且能够将这一愿景传达给Scrum团队的人。
清楚地表达产品Backlog项目(产品待办事项列表)
订购产品Backlog中的项目以最好地实现目标和任务
优化开发团队执行的工作价值
确保产品Backlog对所有人都是可见,透明和清晰的,并显示Scrum团队将在下一步工作的内容。
确保开发团队将产品Backlog中的项目理解为所需的级别。
2.Scrum Master
数量:1人
职责:服务型领导,服务于产品负责人,服务于开发团队,服务于组织。帮助团队中每个人理解scrum理论、实践、价值;帮助团队成员理解目标、范围……确保项目的成功
3.开发团队
数量:1人
职责:包含各种专业人员,负责在每个sprint结束时交付潜在可发布并且“完成”的产品增量
4.Scrum特性
(1)适应变化。Scrum 基本假设一:外部需求模糊而难以理解。Scrum 对此的理念是:让客户直接看到半成品,他们才知道自己要什么。很多 Scrum 的原则都是围绕如何解决这个问题的:比如每个 Sprint 结束时由 Product Owner 为客户进行展示,又比如任务细化一般不超过一个 Sprint。理解了这一点,才会理解为什么 Scrum 似乎总在变化,因为需求总在变化。
(2)快速迭代。Scrum 基本假设二:团队生存在一个快速变化且充满竞争的世界。如果自己一年半才能发布一个新版本,而竞争对手半年就能发布,那么几年之内,我们就会被对手甩得远远的。Scrum 对此的理念是:发布即 Milestone(里程碑),宁可每次发布二十个功能发布五次,也不要在内部搞五个 Milestone 然后一口气发布一百个功能。理解了这一点,才会理解为什么 Scrum 会认为发布时砍功能是一种正常情况而非一种失败。
五、设计师的敏捷设计
设计师如何在敏捷开发模式中做好设计?
分享一下我们团队目前采用的方法——Design Sprint。
Design Sprint,设计冲刺,顾名思义就是要在短时间内做出好设计。Google把它定义在2-5天完成设计,这是兼得设计和时间的一种群体性设计活动的方法。
Design Sprint过程共包含六个阶段:(图)

1.理解(Understand):理解要为用户解决的问题
2.定义(Define):明确产品策略
3草图(Sketch):有些文章中也称发散(Diverge) 探索实现方案
4.决定(Decide):确定设计方案
5.原型(Prototype):构建产品原型
6.验证(Validate):验证产品原型,获得用户反馈
单看理论有可能略有不明,拿我们团队的5日版Design Sprint为参考(图)

最后是敏捷开发的一点提示,在敏捷开发模式下,作为设计师应该知道如下三方面的内容。
与产品打交道
尽管敏捷开发来自于软件工程领域,但该方法对于网站和应用开发都非常有效。比如说,从你所创建的人物角色中,可以勾勒出目标用户的需求,并基于此挖掘所需的功能点。
锻炼准确预估能力
你将需要与产品经理或敏捷开发的高手合作(当然和谁合作取决于你在什么样的组织/公司)。通常他们负责确保事情按计划发展,因此会让你尽可能准确地预估完成时间。你讲会发现你很容易做出过于乐观的预估,所以请现实一点吧,没有人会记仇的。
高度协作
敏捷开发的一个最大好处,在于它是一种高度协作化的工作方式。例如,在传统的瀑布流式开发中,一般把设计交给开发者后,就再也见不到他们了。但是在敏捷开发的迭代工作流程中,你会和程序员肩并肩坐在一起工作,完成每一次产品迭代。
参考资料:
《用户体验设计指南》
《破茧成蝶(用户体验设计师的成长之路)》
https://designsprintkit.withgoogle.com/methodology/overview
http://www.woshipm.com/pmd/790015.html















































































