1. 软件开发流程
1.1 什么是软件?
软件:与计算机操作系统有关的计算机程序、可能有的文件、文档及数据
1.2 软件开发模型的演变
- 什么是软件开发模型?
软件开发模型就是在软件开发过程中总结出的一套经验,指导如何按照流程来进行软件开发的各项工作。 - 软件开发模型的演变
-
传统瀑布模型
-
开发流程:
-
特点
- 软件开发的各项活动严格按照现行方式进行;
- 当前活动接收上一项活动的工作结果;
- 当前活动的工作
-
优缺点:
- 优点
开发的各个阶段比较清晰;
强调早期计划及需求调查;
适合需求稳定的产品开发。 - 缺点
由于开发模型是线性的,增加了发开的风险;
早期的错误可能要等到开发后期的阶段才能发现
- 优点
-
使用该模型可能会遇到的问题:
- 需求变更,需要重新按照流程进行
- 软件测试在流程后期,需要预留足够的测试时间
- bug发现时间较晚,修改成本高
- 新产品不适合瀑布模型
-
-
敏捷开发模型
主要介绍两种敏捷开发模型XP和CRUM。- XP(极限编程)
-
什么是极限编程
把复杂的开发过程,分解成一个一个相对较小的周期,每个周期又分维度管理。可以清楚看到开发进度和需要解决的问题
-
极限编程的三个维度:编程方法、小组实践、交付和管理
维度一——编程方法:
简单设计
:以简单的办法实现每个小需求.
结对编程
:两人一起完成,一人负责代码细节,一人负责整体结构,并不断对负责细节的人写的代码进行评审。
测试驱动开发(需要自动化测试)
:基本思想—>写功能代码前,先写好测试代码,测试代码写好后,然后编写可以通过测试代码的功能代码。让测试驱动整个开发过程的进行。这样可帮助开发出更高质量的代码,提高代码的灵活性和健壮性。
重构
:减少程序中出现的重复的部分,增强程序的可复用性。
维度二——小组实践:
代码集体所有
:每个人都可以修改代码的任意部分.
编码标准
:实现代码集体所有的重要前提.
稳定高速的步伐
:保持长期稳定的工作节奏.
持续集成(需要自动化测试)
:集成–>把大家的代码合并到一起的过程 ;持续集成—>不断集成;构建—把代码编程客户可使用的东西.
隐喻
:让每个人都知道客户的系统,因此需要一个形象的比喻去描述系统是什么工作的
维度三——交付和管理:
小规模发布
:通常发布时间1~3周(一个迭代周期),目前2周较多。
计划游戏
:预测交互之前的到来之前要完成那些工作,规定好整个步骤。
完整的团队
:包含现场客户
现场客户
:客户需要时刻在现场协助解决问题
- SCRUM
-
什么是SCRUM?
Scrum是迭代式增量软件开发过程,通常用于敏捷软件开发
-
SCRUM流程说明
- 产品BACKLOG:
整体项目概要文档;
需求整理成列表,并按照商业价值进行排序;
SCRUM团队会从需求列表中挑选价值最高的功能需求最先实现。 - SPRINT计划会议:
用于挑选商业价值最高的功能需求;
选择当前迭代周期需要完成的需求功能。 - SPINT BACKLOG:
当前迭代周期中需要实现的产品需求。 - SPRINT:
小迭代周期,时长约为2~4周;
每个迭代周期相当于一个小瀑布模型。 - 每日站会:
每个小迭代周期中需要进行内容;
检查每日目标进展,根据情况进行调整,从而优化第二天的工作。 - 潜在可交付产品增量:
每个迭代周期之后,会交付出包含SPRINT BACKLOG中需求的产品。 - SPRINT评审会议:
每个迭代周期之后进行;
展示开发好的相关功能。 - SPINT 回顾会议
SPRINT评审会议之后,下一次的SPRINT计划会议之前;
对这个迭代周期进行复盘。
- 产品BACKLOG:
-
DevOps开发模型
- 什么是DevOps?
DevOps(Development和Operations的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。
可以把DevOps看作开发(软件工程)、技术运营和质量保障(QA)三者的交集。
- DevOps生命周期说明
-
持续开发
- 软件不断被开发的阶段
- 与瀑布模型不同,软件交付成功被分解为一个个任务节点。可以在短时间内进行开发并交付
- 包含编码,构建。编码阶段可使用git等工具维护代码版本;构建阶段使用打包工具,如maven,帮助进行构建
-
持续测试
- 使用自动化测试工具,selenium 、appium
- 测试框架,TestNG,Pytest
-
持续集成
- 新代码提交后,并通过测试,则会与当前代码进行合并
- 可使用Jenkins进行。Jenkins可以在git中提取新代码,生成新构建,在构建过程中可融持续测试,最后汇报是否测试对否通过,测试通过则构建成功。
-
持续部署
- 持续集成的结果是PASS,才能进行持续部署
- 使用Docker,可让TEST、STAGING和PRODUCTION的测试环境保持一直
-
持续监控
- 部署上下后进行持续集成阶段
- 线上监控,提高软件质量、监控软件性能
- 运营团队参与,使用工具:ELK3
-
- 什么是DevOps?
2. 项目管理与跨部门合作
2.1 项目管理
-
什么是项目管理?
让项目组成员按照规定的规范进行工作的过程就是项目管理的过程 -
项目管理流程
项目流程分为:项目立项、产品定义、软件开发、软件测试、内部验收、用户验收、系统维护
项目开发流程分为:需求分析阶段、概要设计阶段、详细设计阶段、系统编码阶段、单元测试阶段、集成测试阶段、系统测试阶段 -
项目开发阶段各角色的职责
-
需求阶段
-
设计阶段
-
开发阶段
-
集成测试阶段
-
系统测试阶段
-
-
软件项目管理方法
- 制定项目计划
大型项目,要有完善的整体计划。 - 执行该计划并监控跟踪管理
项目组按照计划执行;
项目管理人员进行监控,监控结果需要记录计划当中,进行阶段性总结。 - 项目风险应对与问题解决
跟踪中发现的问题进行分析和进行相应的应对测试;
项目经理需要持续进行跟踪,跟踪问题是否解决。 - 项目收尾
做总结;
释放项目资源:人员和设备等。
- 制定项目计划
2.2 跨部门沟通协作
- 以下阶段需与产品沟通
需求评审会
在分析需求阶段
在测试用例编写阶段
在测试过程中 - 以下阶段需与研发沟通
在分析需求阶段
在测试用例编写阶段
在测试过程中
在线上监控发现BUG时 - 上下游配合测试
测试计划沟通:沟通测试计划,明确各部门负责的测试范围,重要场景,跨团队数据构造都要说明。
环境对接:了解接口调用的问题,是否满足需求,联调环境是否可以用。
熟悉业务:了解对方业务,申请权限等,保证后续精度不受影响。