软件工程 敏捷DevOps开发方法

举报
yd_271615118 发表于 2023/11/13 15:25:21 2023/11/13
【摘要】 1. 简介现代的软件工程中,敏捷让开发团队拥抱变化、快速迭代,DevOps 则覆盖全流程,加入了运维环节,用于促进开发、运维和质量保障部门之间的沟通、协作与整合,实现工程效率最大化。本实验手册基于一个模拟案例项目【凤凰商城】,所有故事及操作均以此模拟案例项目为背景。通过还原软件开发不同阶段的场景,让读者置身软件项目开发中,并利用华为云DevCloud 的便捷工具使读者能快速掌握用敏捷的方法和...

1. 简介

现代的软件工程中,敏捷让开发团队拥抱变化、快速迭代,DevOps 则覆盖全流程,加入了运维环节,用于促进开发、运维和质量保障部门之间的沟通、协作与整合,实现工程效率最大化。本实验手册基于一个模拟案例项目【凤凰商城】,所有故事及操作均以此模拟案例项目为背景。通过还原软件开发不同阶段的场景,让读者置身软件项目开发中,并利用华为云DevCloud 的便捷工具使读者能快速掌握用敏捷的方法和 DevOps 思想完成软件项目的迭代规划、以及软件的开发、测试、部署。

实验一为持续规划与设计实验,通过使用DevCloud进行项目规划,掌握产品待办列表管理,管理迭代计划和开发进度,使用看板模式进行项目展示及管理。

实验二为持续开发与集成实验,通过使用DevCloud提供的Git代码托管服务进行源代码管理,并对用户故事【门店网络】、【账户登录】进行开发,以及使用功能分支的方式进行代码的开发合并。掌握代码托管服务代码管理,和配置分支策略。在代码开发完成后,使用DevCloud代码检查服务对源代码进行检查,从而保证代码开发的质量。然后通过创建"编译构建任务",完成应用的Docke镜像打包以及推送。启动持续集成,实现代码变更后自动触发应用的Docker镜像打包以及推送。使用华为云提供的"开源镜像站"服务提高依赖包获取速度,提高自动化编译效率。

实验三为持续测试与反馈实验,通过使用DevCloud来管理项目的测试生命周期,掌握测试用例的编写和配置,管理套件测试规划,执行手工测试用例,并使用测试总览跟踪测试进度和质量。

实验四为持续部署与发布实验,通过使用DevCloud部署服务,将软件项目的发布包一键式部署到服务器主机上,从而让应用落地运行。同时利用DevCloud流水线服务,完成应用程序持续交付流水线的搭建。

2. 敏捷项目规划

2.1 Scrum 项目模板项目规划

创建华为云 DevCloud 项目。使用 Scrum 项目模板进行项目规划,并管理

Epic 和 Feature基于树形结构列出需求"Epic> Feature> Story> Task"的逐级关系,如图2-1。

Epic通常是公司重要战略举措。Epic的粒度比较大,需要分解为Feature,并通过Feature继续分解细化为User Story来完成最终的开发和交付。Feature

通常是对用户有价值的功能,相比Epic,Feature更具体形象,客户可以直接感知,通常在产品发布时作为ReleaseNotes的一部分发布给客户。通常持续数个星期(weeks),需要多个迭代完成交付。 Story是从用户角度对产品需求的详细描述,更小粒度的功能。Story承接Feature,并放入有优先级的backlog中,持续规划、滚动调整优先级,始终让高优先级的Story更早的交付给客户。可以将项目规划导出到 Excel,以条目化的方式查看以及管理。

图2-1 凤凰商城项目规划


2.2 Scrum 项目模板管理 Backlog 并进行迭代开发

输入用户故事描述信息、开始日期、结束日期、预计工时、优先级、重要程度字段信息。如图2-2。用户可以通过快速过滤器方便地查询特定的工作项,"高级过滤"实现特定字段指定条件的过滤。

图2-2 编辑story


迭代规划。接下来我们需要对当前迭代(近两周)的工作进行规划,其中最重要的工作"作为用户应该可以查看、查询所有门店网络"需要在本迭代完成并上线。在迭代页面,单击"未规划工作项",找到 Story"作为用户应该可以查看、查询所有门店网络",鼠标拖拽工作项至"迭代 4"。单击"迭代 4"的"作为用户应该可以查看、查询所有门店网络",可以设置 Story 的预计开始日期与预计结束日期。 按照同样的方式,添加以下两个Story 添加至迭代 4:作为用户可以登录账号;作为用户可以注册账号。

图2-3 迭代规划


在每日站立会议中,可以通过电子白板报告和更新任务进度。在迭代页面单击右上角图标,可切换视图为"成员模式"。通过成员模式视图可以看到当前团队每个成员的工作饱和度以及每个需求预估的完成时间点。

图2-4 每日站立会议


2.3 使用效率工具监测和跟踪项目状态


使用效率工具监测和跟踪项目状态


图2-5 效率工具监测


项目仪表盘提供了强大的项目进度跟进能力、包括需求进度统计、燃尽图、工作完成度、工时统计等等。

图2-6 仪表盘


2.4 项目管理配置

学习如何对 "凤凰商城" 进行基本信息等维护,以及团队成员管理,并学习如何通过定制站内消息通知以及邮件通知来跟进项目进度。使用"自定义工作项模版"功能来定制个性化的工作项表单,以及工作流程定制。

学习项目管理与定制项目工作流程,将项目配置的更接近自己真实的场景及应用方式。

图2-7 成员管理


图2-8 通知设置


图2-9 工作项状态


2.5 持续开发与集成

了解如何使用 DevCloud 提供的代码托管服务进行源代码管理,并对 Story“作为用户应该可以查看、查询所有门店网络”进行开发,以及如何使用功能分支的方式进行代码的开发合并。

2.5.1使用CloudIDE修改和提交代码

修改代码。等待CloudIDE加载完毕后,在左侧导航中找到前端界面代码文件"/vote/templates/index.html"并打开,在179行添加菜单"门店网络"。


图2-10 CloudIDE


查看代码提交记录。返回"代码托管"页面,在 phoenix-sample 代码仓库中选择"历史"页签,即可查看是否提交成功。

图2-11 代码提交记录


添加登录功能

图2-12 登录功能


修改并运行app.py

图2-12 app.py


页面如图所示


图2-13 前端页面



可以执行登录功能, 以张三身份登录

图2-14 登录功能


2.5.2使用 Git 分支+合并请求方式提交代码并进行代码检视

将 master 分支设置为受保护分支。


图2-15 受保护分支


然后建立新的分支


图2-16 建立新的分支


2.5.3合并请求(登录模块)

使用合并请求。合并请求,合入成功。


图2-17 合并请求


代码托管服务提供了诸如仓库统计、IP白名单、子模块设置、webhook设置、通知设置等功能,能够满足更多的使用场景。


2.5.4 代码检查确保编码规范

创建代码检查任务,并执行代码检查任务,完成应用的静态代码检查。


图2-18 代码检查


分析代码检查结果并修复问题, 创建自定义检查规范, 然后启用自定义检查规范。


图2-19 自定义检查规范结果


2.5.5 用自动化编译提高代码质量验证速度

创建 "编译构建任务",完成应用的 Docker 镜像打包以及推送。何启动持续集成,实现代码变更后自动触发应用的 Docker 镜像打包以及推送。使用华为云提供的"开源镜像站"服务提高依赖包获取速度,提高自动化编译效率。


图2-20 设计构建步骤


图2-21 源码选择


编译构建并完成应用的镜像打包推送。完成编译构建任务

图2-22 完成构建任务

2.5.6 配置持续集成并通过提交代码触发自动化编译

配置持续集成并通过提交代码触发自动化编译,实现代码变更后自动触发应用的 Docker 镜像打包以及推送。


图2-23 持续集成执行计划配置


2.5.7 使用开源镜像站服务改进自动化编译

使用开源镜像站服务提高依赖包获取速度,提高自动化编译效率


图2-24 开源镜像站服务


2.6 持续测试与反馈

在前面的练习中我们已经完成了凤凰商城"迭代4"的需求规划,此时测试人员可以同步的进行测试用例的编写,这样测试人员在迭代之初就可以进行软件测试工作。在本实验中,您将学习如何使用 DevCloud 来管理项目的测试生命周期。本实验将指导您创建有效设计的测试套件,以验证您的软件里程碑。这些测试套件可以在每次发布时重复执行。

2.6.1 使用追溯视图进行需求驱动的测试

图2-25 测试计划


设计测试样例

图2-25 设计测试样例


创建用户账号登录测试脚本

图2-26 测试脚本


生成测试结果如图所示

图2-27 测试结果



2.6.2 性能测试

性能测试要求:

TPS 处理事务:20s

负载能力:100 用户并发持续工作

图2-28 安装ICAgent


完成集群创建

图2-29 创建集群


安装ICAgent后完成性能测试

图2-30 执行性能测试


2.6.3 使用测试套件进行迭代测试规划

DevCloud 允许团队将多个测试用例组织到测试套件中。测试套件用于跟踪迭代或里程碑中的测试用例,通过测试套件您可以看到特定迭代或里程碑的测试何时完成。接下来让我们把迭代4的测试用例添加到新的测试套件中。

图2-31 迭代测试用例


2.6.4 使用测试总览跟踪测试进度和质量

可查看此迭代的需求覆盖率、缺陷、用例通过率等相关统计


图2-32 测试情况分析

2.7 持续部署与发布

在本实验中,您将学习

如何购买并配置指定规格的弹性云服务资源

如何在弹性云服务器上配置好相应的依赖工具

如何在DevCloud中添加主机组并进行主机授信

如何获取SWR镜像仓库的账号信息

如何创建 "部署任务",完成应用的Docker镜像拉取并部署

如何创建流水线任务,从而实现持续部署与交付。

2.7.1 弹性云服务器

购买并配置弹性云服务器


图2-33 弹性云服务器


2.7.2 使用 DevCloud 部署服务配置主机环境

部署(CloudDeploy)提供可视化、一键式部署服务,支持并行部署和流水线无缝集成,支持脚本部署,容器部署等部署类型,支持java、node.js、python等多种技术栈,实现部署环境标准化和部署过程自动化。

凤凰商城软件要部署到前一节购买的ECS服务器主机上,需要配置主机环境,安装凤凰商城运行所需的软件。本节将为ECS云主机安装Docker以及Docker-Compose。


图2-34 配置主机环境


2.7.3 使用自动化部署实现一键部署

使用部署服务结合弹性云服务器 ECS,完成应用的自动化部署

图2-34 部署任务


2.7.4 持续交付流水线

在本实验中,您将学习

如何创建"流水线"任务,完成应用程序持续交付流水线的搭建

如何创建实现代码变更自动触发持续交付流水线任务,完成应用的自动化测试以及部署

在"流水线"中添加"人工审核"功能

图2-35 流水线详情单


编辑门禁模板后, 执行结果如下

图2-36 执行结果


为了控制代码的质量,要求代码必须经过扫描,并且错误数量控制在合理范围内,才允许发布。通过添加质量门禁可以有效的自动化控制流程。

创建实现代码变更自动触发持续交付流水线任务,完成应用的自动化构建部署。


2.7.5 资源释放

为了避免不必要的费用,如果您在项目课程实践完成后,无需再使用这些资源,建议您参考以下操作释放弹性云服务器资源。

图2-37 删除云服务器


图2-37 删除IDE


3. 实验体会

通过在华为云平台上操作敏捷开发实验,学习到现实里面通过云平台进行软件管理的大部分流程,也对软件工程有了进一步的理解。本次敏捷开发实验从持续规划与设计实验、持续开发与集成实验、持续测试与反馈实验、持续部署与发布实验四个方面完成了项目从设计到集成试验开发的过程,最后进行软件的测试反馈与部署发布。通过还原软件开发不同阶段的场景,我仿佛置身软件项目开发中,并利用华为云DevCloud 的便捷工具快速掌握用敏捷的方法和 DevOps 思想完成软件项目的迭代规划、以及软件的开发、测试、部署。总而言之,敏捷开发试验使得我学习到了许多软件工程的实际意义,系统地梳理了软件工程的个方面知识收获颇丰。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。