第三章 敏捷开发
全球软件发展趋势:
- 全球软件产业正在向服务化转型
- SaaS的诞生:Salesforce最早提出SaaS模式
- SaaS,PaaS,IaaS三种服务模式:
- IaaS(Infrastructure as a Service),即基础设施即服务.指把IT基础设施作为一种服务通过网络对外提供,并根据用户对资源的实际使用量或占用量进行计费的一种服务模式.
如阿里云,腾讯云等相关服务的提供. - SaaS(Software as a Service)让用户能够通过互联网连接来使用基于云的应用程序.常见示例有电子邮件,日历和办公工具.它不需要用户将软件产品安装在自己的电脑或服务器上.
如淘宝,滴滴打车这些平台的在线使用. - PaaS(Platform as a Service)的缩写,是指平台即服务.把服务器平台作为一种服务提供的商业模式,而云计算时代相应的服务器平台或者开发环境作为服务进行提供就成为了PaaS.
如边缘计算,云计算相关平台.
- IaaS(Infrastructure as a Service),即基础设施即服务.指把IT基础设施作为一种服务通过网络对外提供,并根据用户对资源的实际使用量或占用量进行计费的一种服务模式.
- Office 365:作为订阅服务
- Office 2019:一次性出售
- *AI作为一个普遍的新的动力,AI+Science与AI+SaaS.
- 新形势下企业面对多重挑战
- 支付频率高,研发周期短
- 跨地域协作多,部署发布复杂
- 可靠性与安全要求高
华为的软件工程实践:
- 第一阶段:软件作坊->软件危机->
- 第二阶段:软件过程控制->IPD,重型控制->
- 第三阶段:敏捷开发->精益开发,DevOps.
敏捷开发价值观:
- 敏捷软件开发宣言
- 个体和互动高于流程和工具
- 工作的软件高于详尽的文档
- 客户合作高于合同谈判
- 响应变化高于遵循计划
- 敏捷软件开发原则
- 我们最优先的任务是通过及早和持续地交付有价值的软件来满足客户的需求。
- 欢迎即使是在开发的最后阶段也改变需求。敏捷过程可以将变更视为顾客的竞争优势。
- 频繁地交付可工作的软件,优先考虑较短的时间尺度。
- 业务人员和开发人员必须在整个项目期间一直协作。
- 围绕动机驱动的人才构建项目,为他们提供所需的环境和支持,并信任他们完成工作。
- 面对面的沟通是传达信息和团队内传递信息最有效的方式。
- 可工作的软件是进度的主要度量。
- 敏捷过程促进可持续的开发。赞助商、开发人员和用户应该能够不断保持恒定的步伐。
- 对技术专注以及良好的设计的持续关注增强敏捷性。
- 简单性,即最大限度地减少工作量是至关重要的。
- 最佳架构、需求和设计来自自组织团队。
- 在定期间隔后,团队反思如何更有效,然后调整自己的行为。
价值驱动-敏捷与瀑布模型的区别:
- 资源与时间固定
- 功能与特性变化
Scrum方法:
-
Scrum方法特点:
- "可能性的艺术":关注当下
- 团队自组织,自管理:放权
- 面对面沟通:每日例会
-
Scrum框架:
- 角色:
- 产品负责人
- Scrum Master
- 开发团队
- 工件:
- 产品待办列表
- Sprint待办列表
- 增量
- 事件:
- Sprint
- Sprint计划会议
- 每日Scrum站会
- Sprint评审会议
- Sprint回顾会议
- 价值观
- 承诺(commitment)
- 勇气(courage)
- 专注(focus)
- 开放(openess)
- 尊重(respect)
- 角色:
-
Scrum过程模型
看板方法:分层,泳道,列,价值观,在制品(WIP).风险&瓶颈,拉动式开发等核心元素
-
源自精益生产实践与敏捷开发中的可视化管理理念
-
看板工具的实质是:后道工序在需要时,通过看板向前道工序发出信号:请给我需要数量的输入,前道看板只有看到看板厚才按需生产.看板信号由下游向上游传递,拉动上游的生产.
-
精益创业方法论:
- 与传统的不同点——与传统制造业以高质量实体产品衡量不同,精益创业的发展单元为”经证实的认知“。
- 在极不确定的进展中确定——初级阶段的企业所有功能:愿景和概念,产品开发,市场与销售,扩展规模,合作与分销,架构与组织设计。
- 用不同方法衡量生产力——强调创业公司同时要具备快速循环运作和对顾客的认知、远大的理想,以及雄心壮志。
- 增长引擎——引擎是发展的必要素也是加速的推进器。通过”开发-测量-认知“的反馈循环,让企业的驾驶方向及进度清晰。
- 调整引擎及优化产品——愿景(创造改变世界的业务),战略(商业模式、产品方案计划、生态环境的应对、顾客的想法),产品是最终产物。随着公司成长,改变只是各种活动的不同组合。
- 找出哪些假设是需要测试:"信念飞跃"式的大胆假设.(增长假设or价值假设)
- ”颠覆性创新“是制造出新增长的源头
- 测试最小可行性产品(MVP),以最快方式,最少精力完成"开发-测量-认知"的反馈循环
- 转型还是坚持 - 有条理的方向性改变,用来测试新的产品,战略和增长引擎的基础假设
- 转型列表(转型是一种特殊改变,用于测试新产品,商业模式和增长引擎的基本假设)
DevOps:
- DevOps的定义: 自vvikipedla以来,ieee百科全书devops是软件开发和IT行业的一种方法论。
作为一组实践和工具,DevOps集成并自动化了软件开发(Dev)和IT运营(Ops)的工作,作为改进和缩短系统开发生命周期的一种手段。
uistor rdevops是软件开发和IT行业中的一种方法。作为一组实践和工具,DevOps集成并自动化了软件开发(Dev)和IT操作(Ops)的工作,作为改进和缩短系统开发生命周期的一种手段。
运维费用一般占比:软件设计约33%,运维费用约10~20%.
DevOps生命周期过程
DevOps的特征:
- 将软件开发与软件运维相紧密结合,打破了开发和运维间的孤岛
- 持续集成
- 持续集成(Continuous Integration),缩写为CI,为一项软件工程实践
- 持续交付
- 持续交付(Continuous D),缩写为CD,同样为一项软件工程实践
- DevOps本地部署
- 生命周期:计划-需求-设计-策划-管理-运维
- 敏捷开发
- 拥抱变化
- 快速迭代