一、敏捷开发最佳实践
1.1 项目管理
1.2 需求管理
1.3 技术架构
1.4 技术开发
1.5 测试
二、敏捷开发最佳实践
2.1 敏捷开发的执行细节
三、全面的DevOps工具链
四、版本控制和协作开发工具
4.1 集中式版本控制工具
4.2 分布式版本控制工具
一、敏捷开发最佳实践
1.1 项目管理
-
迭代开发
-
技术团队的人员素质,人员配备完整
-
及时有效的沟通方式,比如 每日会议、广告墙、任务板 等
-
公开透明和项目技术和项目文档
1.2 需求管理
-
需求订单 inbox,类似redmine,jira的订单显示方式
-
业务流程简图
-
用例驱动开发
-
良好的处理通知机制
1.3 技术架构
-
演进可行的基础资源、网络架构,每一步都是可用的
-
演进可用的人机交互设计
-
基于组件、插件、扩展的架构设计
1.4 技术开发
-
结对编程(两个或多个员工沟通顺畅或者对某个业务属性分一个队完成任务)(只是建议)
-
测试驱动开发(根据测试用例进行开发)(只是建议,需要看团队风格)
-
代码重构(经常优化代码)
-
代码安全和规范(后章节有专门工具)
1.5 测试
-
单元编程
-
并行测试(边开发边测试,模块或者类测试)
-
完善的测试报告
二、敏捷开发最佳实践
2.1 敏捷开发的执行细节
-
重要的目标是通过持续地及早交付有价值的软件使客户满意
-
拥抱需求的变化,乐观面对需求,敏捷掌控软件生命周期
-
经常地交付可工作的软件,倾向于采取较短的周期
-
业务人员、开发人员、测试人员必须相互合作,高效沟通
-
不论团队内外,传递信息效果最好效率也最高的方式是面对面的交谈
-
可工作的软件是进度的首要度量标准
-
不断地坚持针对软件开发,架构的优化,敏捷能力由此增强
-
以简洁为本,它是极力减少不必要工作量的有效手段
-
团队定期总结经验,反思自身,不断提高团队的专业水平
三、全面的DevOps工具链
-
版本控制 & 协作开发 : GitHub、GitLab、SubVersion、 BitBucket
-
自动化构建 和 测试: Maven 、Selenium、PyUnit、JUnit、PHPUnit
-
持续集成&交付: Jenkins
-
容器平台: Docker、Rocket、 Ubuntu ( LXC)、第三方厂商如(AWS/阿里云)
-
配置管理: Saltstack、Ansible
-
容器调度平台(常用于微服务): OpenShift、Cloud Foundry、Kubernetes.Mesosphere、 Docker Swarm
-
日志管理: Logstash、CollectD、StatsD
-
监控,警告&分析:Nagios、Ganglia、Sensu、zabbix、ICINGA、Graphite、 Kibana
四、版本控制和协作开发工具
4.1 集中式版本控制工具
-
代表工具 SVN
-
由一个中央服务器控制所有的文件版本,集中式管理
-
所有客户端都可以对中央库进行操作,由中央服务器保证版本的统一
-
特点是安全性不够好,针对中央服务器的通信比较频繁,如果版本库文件过多,服务器压力较
4.2 分布式版本控制工具
-
代表工具 GIT(推荐)
-
本地就是一个中央服务器的完整镜像,直接提交到本地的镜像
-
不依赖中央服务器的服务,不依赖网络,中央服务器负载压力小特点是 安全性好,每个开发者本地就是一个副本,储存也可以得到分布式架构的优化