全栈必备 敏捷基础

简介: 版权声明:本文为半吊子子全栈工匠(wireless_com,同公众号)原创文章,未经允许不得转载。
版权声明:本文为半吊子子全栈工匠(wireless_com,同公众号)原创文章,未经允许不得转载。 https://blog.csdn.net/wireless_com/article/details/53725385

世界上不存在这样一种方法:

只要套用,就可以写出完美的软件,无论使用的哪种设计模式;


但确实可能存在一种开发方式,可以帮助我们一步步构造出需要的软件和架构——这有可能就是敏捷开发。


相对于软件开发流程,有一门专门的学科——软件工程。最早接触软件工程,是20年前在北电贝尔北方实验室工作的时候,当时的开发流程是这样的:




其他主流的瀑布式开发流程也大致如此。然而,随着技术的演进,尤其是互联网的发展,BS架构的广泛应用,用户反馈的及时响应成为了可能。从90年代开始逐渐引起广泛关注的一些新型软件开发方法出现了,如XP ( Extreme Programming ),Scrum 等,统称为敏捷开发。敏捷开发主要是通过高透明性、可检验性和适应性来管理复杂性、不可预测性和变化。


以Scrum为例,典型的开发模型如下:




这是一张被广泛引用的图片,还有一张烂大街的图片就是Sprint 的流程图:




难点在于一个sprint周期有多长,个人觉得Sprint周期的长度要依赖于你能在多长时间内保证在Sprint期间的需求不发生变更。


敏捷是一种方式,不是单纯的方法,通过各种的行为方式来实现目标。


首先是,Sprint 计划会议。计划会议要有足够的时间,最好至少8个小时。取出部分产品需求做成sprint需求,并写成索引卡。确定并细分每一个索引卡的故事(User Story), 然后进行工作认领(不是分配)。同时,确定每日站立会议的时间和地点,确定好演示会议和回顾会议的日期。


站会是敏捷中的一个显著特点,每次10-15分钟,迟到将接受惩罚,每个成员自问自答三个问题:昨天做了什么,今天要做什么和遇到了什么问题,会后再沟通问题的解决方案,最重要的是更新燃尽图。


在开发过程中,要使用好任务看板,关注产品的整个生命周期:需求,设计,开发,测试和维护。注意燃尽图,对于小团队而言,建议不要使用软件取代看板,可以选择性的和XP或其它敏捷的某些方式相结合。


演示会议是至关重要的。演示是跨团队的,会产生不同团队之间的交流。不要关注太多的细节,以主要的功能为主,一定要让老板或者客户看到。演示会议

非常的重要,绝对不可以被忽略。


回顾会议的时间一般在1-3个小时,要找最舒适的地方(最好有回顾看板)。开始的时候轮流发言,而不是主动发言。记录问题并总结,并讨论改进的方法,放在回顾看板上。每人将最重要的2-3个改进点,成为下一轮产品需求的一部分。


还是那就话,“没有银弹”,敏捷也不是万能的。Scrum的主要缺陷有,团队压力大,不方便跨时区和跨语言的协同团队,而且一旦启动无法被中断,更重要的是程序维护的成本偏高,对工程师的要求较高,尤其是应用的架构和可扩展性。但是,敏捷开发的12个准则还是应该理解的,个人总结成一句话,按花生酱,赞不绝口(参见http://blog.csdn.net/wireless_com/article/details/40622377)。



敏捷开发乃至一般的开发过程都会涉及到一件事,任务估点,就如何见招拆招。个人觉得,一个task 最好以2个小时为单位,半小时设计,半小时编码,半小时测试,半小时文档、注释以及重构。原因可能是这样的,互联网上流传着一句名言——3个月就是一年,也就是1周相当于1个月。那么,2个小时就相当于1天了,也就是说,我们的团队要将每两个小时当成一天来计算。众所周知,所有的估算都是不准确的,以2小时为单位是为了降低误差。就像我们度量的时候,以米为单位度量,误差就是米,以毫米来量,误差就是毫米。2个小时一个task,就相当于开发中的“毫米”。


敏捷开发中最重要的还是代码,优秀的代码质量决定着产品或者服务的质量。个人以为,有四种手段可以提升一下代码质量:

1)意图导向编程,简单地说,就是把注释变成代码,让代码拥有自解释性

2)测试驱动开发,尤其是对后端而言更为重要,可以结合日志系统可以更快捷定位问题

3)创建和使用分离,这就是大家常说的“高内聚 低耦合”了

4)单点修改原则,单点修改可能只是一种理想状态,但应该铭记在心


至于敏捷团队,就是我提倡的ABC了:


具体的,我在旧文《和 <创时代>》(http://blog.csdn.net/wireless_com/article/details/52904654)中有描述,这里不在重复。对于团队敏捷,我只想澄清项目和产品开发(project developement vs product developement)的区别,这两者在目标上还是又着区别的,例如持续演进,架构的可扩展性等等。



微信扫一扫
关注该公众号

目录
相关文章
|
5月前
|
数据可视化 安全 搜索推荐
探析低代码开发平台的核心能力
探析低代码开发平台的核心能力
|
5月前
|
敏捷开发 人工智能 Cloud Native
LeSS 敏捷框架高效生产力实践
LeSS 敏捷框架高效生产力实践
25 0
|
7月前
|
设计模式 供应链 测试技术
架构进阶之路:复杂业务开发与领域驱动设计
以下是在现公司,给成员做分享的资料。业务案例来自:一文教会你如何写复杂业务代码。作者:张建飞,进行了重新整理。
147 0
|
10月前
|
存储 运维 负载均衡
架构师之路 -- 基础设施架构
架构师之路 -- 基础设施架构
116 0
|
11月前
|
NoSQL Devops 关系型数据库
devops全栈项目kkit功能简介
devops全栈项目kkit功能简介
devops全栈项目kkit功能简介
|
安全 Devops 测试技术
DevOps理念的技术本质揭秘(6)
DevOps 是开发 (Dev) 和运营 (Ops) 的复合词,它将人、流程和技术结合起来,不断地为客户提供价值。 DevOps 对团队意味着什么? DevOps 使以前孤立的角色(开发、IT 运营、质量工程和安全)可以协调和协作,以生产更好、更可靠的产品。通过采用 DevOps 文化、做法和工具,团队能够更好地响应客户需求,增强对所构建应用程序的信心,更快地实现业务目标。
DevOps理念的技术本质揭秘(6)
|
Devops
DevOps理念的技术本质揭秘(7)
采用 DevOps 做法可以通过技术来实现流程的自动化和优化,但这一切都需要从组织内部的文化和参与的人员开始。培养 DevOps 文化的挑战在于需要深入改变人们的工作和协作方式。
DevOps理念的技术本质揭秘(7)
|
运维 Devops 微服务
DevOps理念的技术本质揭秘(1)
DevOps从本质来讲只是倡导开发运维一体化的理念(MindSet)。这个理念的提出是为了解决很多企业面临的转型挑战,也就是将业务数字化,并且缩短数字化业务上线的周期,快速试错,快速占领市场。 DevOps并没有改变固有的软件生命周期:需求,设计,开发,测试,交付。但伴随着基础设施,软件设计方法等的改变,软件开发的思路,或者方式产生了比较大的变化。
DevOps理念的技术本质揭秘(1)
|
监控 Devops 持续交付
DevOps理念的技术本质揭秘(2)
DevOps是一种强调快速、增量和持续交付产品的工作方法。DevOps一词结合了“开发”和“运营”两个词。实际上,它是开发团队和运营团队之间的联盟。DevOps通常被认为是一个过程、一种文化或一套原则,使组织能够快速、持续地交付产品。
DevOps理念的技术本质揭秘(2)
|
运维 安全 搜索推荐
DevOps理念的技术本质揭秘(5)
深度解析DevOps学习和运维的注意事项
DevOps理念的技术本质揭秘(5)