一、常用的4种开发模式
1、瀑布式开发
开发严格遵循预先计划的需求分析、设计、编码、集成、测试、维护的步骤进行,步骤的成果作为衡量进度的方法。
主要问题是它的严格分级导致自由度降低,项目早期即作成承诺会导致对后期需求的变化难以调整且代价很大,这在需求不明晰并且项目在进行过程中可能有变化的情况下基本上是不可行的。
2、迭代式开发
特点:
- 每次只设计和实现产品的一部分
- 一步一步地完成
- 每次设计和实现一个阶段,这叫作一个迭代
3、螺旋式开发
- 制定计划:确定软件目标,选定实施方案,弄清楚项目开发的限制条件
- 风险分析:分析、评估所选方案,考虑如何识别和消除风险
- 实施工程:实施软件开发和验证
- 客户评估:评价开发工作,提出修正建议,制定下一步计划
4、敏捷软件开发
- 首要任务是尽早地、持续地交付可评价的软件,以使客户满意
- 乐于接受需求变更
- 频繁交付可使用的软件,交付的间隔越短越好,可以从几个月缩短到几个星期
- 在整个项目开发期间,业务人员和开发人员必须朝夕工作在一起
- 围绕哪些有推动力的人们来构建项目,给予他们所需的环境和支持,并且相信他们能够把工作做好
- 开发团队及在开发团队内部进行最快速、有效的传递信息的方法是面对面交谈
- 可使用的软件是进度的主要衡量指标
- 提倡可持续发展。出资人、开发人员及使用者应该共同维持稳定的开发速度
- 为了增强敏捷能力,应持续关注技术上的杰出成果和良好的设计
- 简洁,最小化哪些没有必要投入的工作量是至关重要的
- 最好的架构、需求和设计都源于自我组织的团队
- 团队定期反思如何变得更有战斗力,然后相应地转变并调整其行为。
在一般的公司里,采用敏捷开发和不断迭代开发的方式较多,而且效率高、效果明显。
二、DevOps
思想:解决开发者与运维者之间曾经不可逾越的鸿沟,增强开发者与运维者之间的沟通和交流
DevOps是通过自动化的基本设施、自动化的工作流程和持续可测量的应用性能,来整合开发团队和运维团队,以达到更高的合作效率和生产率。
(Zabbix、SaltStack、Ansible)
1、精益管理
- 消除浪费
- 增强学习
- 延迟决策
- 快速交付
- 团队授权
- 内置完整性(完整性是为了让客户对产品的体验具备平滑性和一致性)
- 考虑全局
DevOps可以用一个公式表达
文化观念的改变+自动化工具=不断适应快速变化的市场
其核心价值在于以下两点点
- 更快速地交付,响应市场的变化
- 更多地关注业务的改进与提升
DevOps的开发流程如下:
- 提交:工程师将程序在本地测试后,提交到版本控制系统如Git等
- 编译:持续整合系统(如Jenkins CI),在检测到版本更新时,便自动从Git仓库里拉取最新的程序,进行编译、构建。
- 单元测试:Jenkins完成编译构建后,会自动执行指定的单元测试代码
- 部署到测试环境中:在完成单元测试后,Jenkins可将程序部署到与生产环境相近的测试环境中进行测试
- 预生产测试:在预生产测试环境里,可以进行一些最后的自动化测试,例如Selenium测试及与实际情况类似的测试,可由开发人员或客户手动进行
- 部署到生产环境:通过所有测试后,便可将最新的版本部署到实际生产环境里。
敏捷开发2.0解决的问题
- 持续集成
- 持续交付
- 持续部署
为了实现敏捷开发2.0,我们需要采用持续部署、微服务和容器这三种技术方案
- 持续部署:能够持续自动反馈应用程序的提交状态,减少错误等;同时为产品的交付提供了质量保证,能快速投入市场
- 微服务:使技术选型、架构系统更自由;开发更快速、周期更短;服务更容易扩展
- 容器:使部署成百上千的微服务更加容易,系统更加稳定。
敏捷开发的常用自动化工具
- 分布式版本控制工具Git
- 持续集成和持续交付工具Jenkins
- 基础平台管理工具SaltStack
- Docker容器化工具