概述

软件开发生命周期

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 可以轻松地在多台机器上分配工作,帮助更快速地跨多个平台推动构建、测试和部署

posted @   半条咸鱼  阅读(31)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示