软件开发中的精益原则
1 )消除浪费。浪费是不会增加产品价值的东西,这里的价值必须是由客户确定的。 在精益思维中,浪费的概念有一个很大的跨越(与日常浪费概念相比)。如果一个开发周 期中在没有人读的文件中收集了需求,那就是浪费。如果一个制造工厂生产的材料比立 即需要的多,那就是浪费。如果开发人员编写比立即需要更多的功能,那就是浪费。在 产品开发中,将开发从一个团队转移到另一个团队是浪费的。理想的是找出客户想要的 东西,然后制作或开发它,并且几乎立即交付客户想要的东西。 2 )增强学习。软件开发是个持续学习的过程,最佳的改善软件开发环境的做法就是 增强学习。使用短周期的迭代(每个迭代都应包括重构、集成测试、部署和交付)可以加 速学习过程。在决定当前阶段的开发内容并对未来改善的努力方向进行调整时,客户反 馈是最重要的学习素材。通过反馈,产品团队能够应对不明确和易变的需求。在软件设 计时,不是去做成更多的文档或详细设计,而是对各种各样的想法进行实际的编码尝试, 在代码完成后马上进行测试,从而使得软件的质量在学习中保持在很高的水平。 3 )尽量延迟决策。面对当前软件复杂系统功能以及设计的不确定性,尽量延迟决 策,直到可以基于更多的事实并且不确定性更容易预测时才做出决定,这使得我们做出 正确决策的可能性变得更大。 4 ) 尽快交付。没有速度,我们无法延迟决策; 没有速度,我们没有增强学习需要的 反馈。交付周期对于学习至关重要: 设计、实施、反馈、改进。这些周期越短,可以学 到的越多。尽可能多地压缩价值流是消除浪费的基本精益策略。 5 )赋予团队权力。软件具体工作中涉及技术决策的细节是做出正确决策的基础,而 没有人比实际工作的人更了解细节, 精益主张将技术决策权利下放到团队的每个人手里, 从而使开发人员有权利来阐述自己的观点并做出决策,这能够极大地改善决策速度和 质量。 6 )内建完整性。当用户认为系统是完整的, 会感觉“是的,这正是我想要的,有人 在我的脑海里!” 市场份额是产品感知完整性的一个粗略测量,因为它衡量了客户的意见 反馈。完整性的软件具有一致的架构,在可用性和适用性方面达到高水平,具有可维护 性、适应性和可扩展性。 7 )全局优化。全局优化使得每个部门之间的联系更紧密。除了努力降低每个部门内 的成本,消除部门之间的隔阂和浪费会产生更显著的效果。在DevOps 成为一大趋势的今 天,开发部门、质量管理部门和运行维护部门之间的协同变得越来越重要了。
三种敏捷方法
scrum xp kanban Sc 「um : 着重于项目管理,特别适于难以提前进行计划的项目。Scrum 以经验过程 控制理论为依据,采用迭代、增量的方法来提高产品开发的可预见性并控制风险。Scrum 框架包括一组Scrum 团队和与其相关的事物: 时间盒、工件和规则。Scrum 团队的目标 是提高灵活性和生产能力,自组织、跨职能,并且以迭代方式工作。Scrum 团队有三个 角色: ( 1 ) Scrum Master ,负责确保成员都能理解并遵循过程;( 2 ) 产品负责人,负责最 大化Scrum 团队的工作价值;( 3 )团队,负责具体工作。Scrum 利用时间盒实现规律性。 被时间盒限定的Scrum 要素有: Sprint 计划会议、Sprint 、每日站会、Sprint 评审会议和 Sprint 回顾会议。Scrum 中的Sprint 是贯穿于开发工作中保持不变的一个月( 或更短时 间)迭代。所有的Sprint 都采用相同的Scrum 框架,并且都交付潜在可发布的最终产品 增量。Scrum 采用了三个主要的工件: 产品Backlog 是开发产品的所有需求的优先排列表; Sprint Backlog 包含了在一个Spri旧内的产品Backlog ; 燃尽图用来衡量剩余的Backlo g 的工作量[7] 。
Kanban : Kanban (看板)是日语单词,是“可视卡片”(或标志)的意思。在丰田, 看板专指将整个精益生产系统连接在一起的可视化物理信号系统。看板的主要规则有: ( 1 )可视化工作流,把产品切分成小块,将每一块写在一张卡片上,然后将卡片贴到墙 上;墙上的每一栏都有名称,以此显示每张卡片在工作流中所处的位置。( 2 ) 限定在制 品( WIP ), 针对工作流的每个状态, 明确限定正在进行中的工作项数量。( 3 ) 衡量并管 理周期时间,完成一个工作项的平均时间,有时称为前置时间(更贴切的术语可能应该是 流通时间) 。优化流程让周期时间尽可能短、尽可能可预测[32) 。
ITIL 的全称是Information Technology Infras tru cture Library (信息技术基础架构库) 。 ITIL 是一套公开的、基于业界最佳实践制定的、用于规范IT 服务管理的流程和方法论。 它以流程为导向,以客户为中心,目的是确保IT 能更好地服务于业务部门,从而让企业 的IT 投资回报最大化。
微服务架构
image.png
zipkin 调用链路图
image.png
监控:zabbix 测试:selenium 配置管理:puppet ansible 编译:maven ant 版本管理:git gitlab 持续集成:jenkins 协同开发:jira docker k8s