概述
软件开发生命周期
1、SDLC:Software Development Life Cycle
2、需求分析:根据项目需求,团队执行一个可行性计划的分析
3、设计:系统架构、功能
4、实现:开发者根据任务和在设计阶段定义的目标,进行开发代码
5、测试:代码测试、包括功能测试、代码测试、压力测试等
6、进化:对产品不断改进、维护
瀑布模型
1、优点
(1)简单易用
(2)当前一阶段完成后,只需要去关注后续阶段
(3)为项目提供了按阶段划分的检查节点
2、缺点
(1)各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加工作量
(2)由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发风险
(3)不适应用户需求的变化
敏捷开发(Agile Development)
1、核心
(1)迭代开发(Iterative Development):将开发过程拆分成多个小周期,每次小开发都是同样的流程
(2)增量开发(Incremental Development):软件的每个版本,都会新增一个用户可以感知的完整功能,即按照新增功能来划分迭代
2、优点
(1)早期交付
(2)降低风险
持续集成
1、CI:Continuous integration
(1)频繁地将代码集成到主干
(2)目的:产品快速迭代,同时保持高质量
(3)核心措施:代码集成到主干之前,必须通过自动化测试,只要有一个测试用例失败,就不能集成
2、提交
(1)开发者向代码仓库提交代码
(2)所有后面的步骤都始于本地代码的一次提交(commit)
3、组成要素
(1)一个自动构建过程,从检出代码、编译构建、运行测试、结果记录、测试统计等都是自动完成,无需人工干预
(2)一个代码存储库,即需要版本控制软件来保障代码的可维护性,同时作为构建过程的素材库,一般使用 SVN 或 Git
(3)一个持续集成服务器,Jenkins 就是一个配置简单和使用方便的持续集成服务器
4、优点
(1)降低风险,可以较早发现问题,所以修复代价少
(2)对系统健康持续检查,减少发布风险
(3)减少重复性工作
(4)持续部署,提供可部署单元包
(5)持续交付可供使用的版本
持续集成过程
1、测试(第一轮)
(1)代码仓库对 commit 操作配置钩子(hook),只要提交代码或合并主干,就进行自动化测试
(2)单元测试:测速函数或模块
(3)集成测试 / 功能测试:测试整体产品的某个功能
(4)端对端测试:测试从用户界面直达数据库的全链路
(5)第一轮至少要进行单元测试
2、构建
(1)通过第一轮测试,代码就可以合并进主干,就算可以交付
(2)交付后,先进行构建(build),再进入第二轮测试
(3)构建是将源码转换为可运行的实际代码
3、测试(第二轮)
(1)构建完成,则进行第二轮测试
(2)如果第一轮已经涵盖所有测试内容,第二轮可以省略
4、部署
(1)通过全面测试,当前代码就是一个可以直接部署的版本(artifact)
(2)将该版本的所有文件打包、存档,发送到生产服务器
(3)生产服务器将打包文件,解包成本地目录,再将运行路径的符号链接(symlink)指向该目录,然后重新启动应用
5、回滚
(1)一旦当前版本发生问题,就要回滚到上一个版本的构建结果
(2)最简单的做法就是修改符号链接,指向上一个版本的目录
Jenkins 概述
1、开源 CI&CD 软件,用于自动化各种任务,包括构建、测试和部署软件
2、支持各种运行方式,可通过系统包、Docker 或者通过一个独立的 Java 程序
3、特征
(1)消息通知及测试报告:集成 RSS/E-mail 通过 RSS 发布构建结果,或当构建完成时通过 e-mail 通知,生成 JUnit/TestNG 测试报告
(2)文件识别:Jenkins 能够跟踪不同构建所生成、所使用的 jar 等
(3)持续集成、持续交付:作为一个可扩展的自动化服务器,Jenkins 可以用作简单的 CI 服务器,或者变成任何项目的持续交付中心
(4)简易安装:Jenkins 是一个基于 Java 的独立程序,可以立即运行,包含 Windows、Mac OS X 和其他类 Unix 操作系统
(5)配置简单:Jenkins 可以通过其网页界面轻松设置和配置,其中包括即时错误检查和内置帮助
(6)插件:通过更新中心中的 1000 多个插件,Jenkins 集成了持续集成和持续交付工具链中几乎所有的工具
(7)扩展:Jenkins 可以通过其插件架构进行扩展,从而为 Jenkins 可以做的事提供几乎无限的可能性
(8)分布式:Jenkins 可以轻松地在多台机器上分配工作,帮助更快速地跨多个平台推动构建、测试和部署
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战