软件工程

 

DevOps与质量保障

DevOps:Development(开发)和Operations(运维)两个词的组合,核心目标是打破开发、运维、测试等团队的协作壁垒(角色全程参与软件生命周期:需求设计到上线运维),通过自动化流程(把代码开发、测试、打包、部署、监控等环节用工具自动化串联)和持续交付/部署(小步快跑、频繁迭代),快速稳定地交付软件产品。

常见的DevOps工具链包括:代码管理:Git(版本控制);持续集成(CI):Jenkins、GitLab CI(自动构建、测试);容器化:Docker; 编排部署:Kubernetes(容器集群管理,自动化部署、扩容);监控告警:Prometheus、Grafana(实时监控系统运行状态)。

举例:

  • 传统模式下,开发完代码后,发给运维,运维手动部署到服务器,中间可能因为环境不一致、配置错误导致部署失败,耗时几小时甚至几天
  • DevOps模式下,开发提交代码到Git后,Jenkins自动触发构建、测试,测试通过后Docker打包成容器,Kubernetes自动将容器部署到生产服务器,全程自动化,几小时的流程缩短到几分钟,且环境一致。

CI/CD:持续集成(Continues Integration),持续交付(Continues Delivery/Deployment)

质量门禁(Quality Gates)

回滚方案(RollBack)

UML

用例图

活动图(Activity Diagram)

带并行的升级版流程图,开始(实心圆),结束(同心圆,外空心,内实心),活动节点(圆角矩形),控制流(带箭头的直线),判断节点(菱形),合并节点(菱形),泳道(竖线分隔的矩形框),并行结点(加粗的横条或竖条)

时序图(Sequence Diagram)

参与者,对象(矩形框),生命线(竖直的虚线,从上往下表示时间顺序的先后,每个参与者和对象都有一条生命线),请求/消息(带箭头的实线,所有消息箭头必须标注消息内容),响应/返回消息(带箭头的虚线,所有消息箭头必须标注消息内容),激活条(生命线上的实心矩形框),自调用(在自身生命线的激活条上,画一个弧形箭头),条件判断(判断框+opt/alt关键字,opt单条件,可选执行,alt多分支,二选一执行),循环(循环框+loop关键字),终止(实心小圆)

需求工程

需求工程中,所有需求分为两类:功能需求FR(Function Requirement),非功能需求NFR。FR是实现业务功能,NFR是保障功能的质量与约束。FR可验证(功能是否实现),NFR可验证(指标是否达标)

需求拆解:是将项目的顶层大需求按照从原子性、独立性、可落地、可验证的原则,逐层拆分为子需求/功能点的过程。

验收标准(Accept Criteria,AC):验收标准是对每个拆解后的子需求/功能点,指定可量化、可验证、无歧义、完整性的判定规则。

用例(use case):是需求工程中最核心的需求表达工具,是基于用户视角描述用户与系统之间的交互过程,用来完整表达一个功能需求的全部场景和交互逻辑。