《软件工程》整理

article/2025/9/9 7:57:35

目录

Scrum开发

概念


scrum开发流程

Scrum开发

  • 需求获取(拆分)
  1. DevOps Server的CMMI模型对需求的层级划分,Epic(长篇故事)、Feature(特性)、Requirement(需求)
  2. 其中:长篇故事和特性放在组织积压层级,可以划分到不同的冲刺、团队来完成;需求只能放在一个团队的某一个冲刺中来完成;Bug可以通过配置,以确定其为冲刺的积压工作项还是任务
  • 根据产品的复杂度、规模,可以使用三级方式来管理需求,也可以使用二级来管理需求;通常不建议只有列表不分级进行管理
  • 积压项梳理

Backlog梳理:是在下个冲刺开始前,对可能要纳入到冲刺中的故事 / 需求进行细化、估算和优先级排序

  • PO主导,团队以及任何相关利益相关者或专家都参与其中
  • 可以让团队成员了解即将到来的特性、用户故事 / 需求,并提供反馈、建议、想法
  • PBI梳理

优点:如果没有Backlog梳理,Sprint计划会议往往严重超时,引入Backlog梳理活动,Sprint计划会议往往能够控制在预计的时间内结束


PBI梳理过程:

  1. PO和开发团队一起讨论 Product Backlog Item(PBI) 的 背景、业务目标、用户角色、用户场景、业务流程、业务规则,保 证团队理解充分并且PO和开发团队一起讨论界面和交互流程
  2. PO和开发团队讨论 PBI 的测试要点、技术实现方案、可 能存在的技术风险,必须输出测试要点 
  3. 开发团队估算规模,对于过大的 PBI 要拆分成小的 
  4. PO对PBI排优先级

特点:这是一个持续进行的过程、PO可以随时更新PBI

  • 规模估算

Scrum估算是由一组类似斐波纳契数列的数字组成,0、0.5、1、2、3、5、8、20、40、?、∞,可以使用估算扑克或类似的小工具来支持完成估算

扑克使用斐波那契数列的原因:便于大的任务向小的任务拆分

估算的是大小,而不是时间,使用相对估算,而不是绝对估算

记录每个Sprint的团队速度,为以后计划做参考(借鉴历史数据)

  • 冲刺速度

时间:sprint开始前

步骤:

  1. 计算开发人员的可用时间(一周几个工作日),设置在冲刺期间的可用容量中
  2. 详细估计第一个用户故事
  3. 分解团队需要做什么来发布该用户故事
  4. 估计每项活动的时间并总结
  5. 从团队在冲刺中的可用时间中扣除总结
  6. 还有时间吗?
    有,就获取一个新的用户故事,重复该过程,直到没有剩余时间
  7. 总结sprint中包含的故事的故事点数
  • 发布预测

将这次sprint预测的规模、速度、目标进行统一发布

  • 冲刺计划会议

时间:Sprint的第一天

目的:计划当前Sprint要做的工作

时长:2小时 × Sprint周数(1-4周)

与会人员:PO(必须)、开发团队(必须)、SM(可选)——建议参加

会议议程:

  1. 确定当前Sprint要完成哪些功能(做什么)
  2. 确定如何完成这些功能(怎么做)

会议结果:Sprint目标确立,Sprint Backlog产生,团队承诺完成Sprint目标

  • 冲刺评审会议

目的:检视完成完成的产品增量是否符合用户的预期,收集反馈以便调整

时间: Sprint的最后一天

时长:一般不超过4小时

与会人员: PO(必须),开发团队(必须),SM(可选),用户(可选)

会议议程:

  1. PO总结当前Sprint的完成情况,即说明哪些产品待办列表项已经“完成”和哪些没有“完成”
  2. 团队演示已“完成”的功能并解答用户提出的问题
  3. 用户提出反馈,并和PO讨论对Product Backlog的调整

会议结果: 修订后的Product Backlog,并阐明可能进入下个Sprint的功能


标题 - 填写是哪个评审,比如:立项评审、代码评审、冲刺评审等

指派 - 这个评审是由谁来牵头负责,就指派给谁

组员认真阅读评审资料后,在相关工作中,添加链接类型为“相关”、工作项类型为“问题” ,进行问题的反映

  • 冲刺回顾会议

目的:Scrum团队检视自身并创建下一个Sprint改进计划的机会。

时间: Sprint评审会之后

时长:一般不超过4小时

与会人员: PO(可选),开发团队(必须),SM(可选)

会议议程:

  1. 团队回顾Sprint的过程,找出做的好的方面和需要改进的方面。
  2. 对需要改进的方面进行优先级排序。
  3. 选择优先级高的事项,制定改进计划。

会议结果: 改进计划

  • 设计编码

编写《系统设计说明书》,统一编码风格

  • 测试

使用DevOps Server进行测试的时候,主要分3大块,即:测试用例、测试套件、测试计划

三者的关系为:测试计划 > 测试套件 > 测试用例

  1. 测试用例:这是测试的最小单位,包括测试的具体内容、步骤、测试结果
  2. 测试套件:使用测试套件对测试用例进行分组,一般一个需求会有很多个测试用例,因为测试用例包含了正向测试、逆向测试、边界测试等
  3. 测试计划:测试也是需要有计划,可以一个测试计划对应一个冲刺

例如:第二个冲刺,需要测试22个套件,里面包含了127条测试用例

  • 配置管理

Azure DevOps支持两种版本控制模式,一种是中央控制系统TFVC;另一种是分布式控制系统,即Git模式

支持从GitHub导入一个Git库到Azure DevOps Server,导入过程异步,在完成之后会邮件给通知

  • git命令分类
  1. git库创建
  2. 增加、删除文件:add、rm
  3. 代码提交:commit
  4. 分支:branch
  5. 状态
  6. 标签(较少使用)
  7. 同步:拉取、推送
  8. 其他
  • git操作具体示例

本地库与远端相连接:

第一种:新建git库,连接远端的一个git库

git init//初始化本地仓库
git remote add [name] [url]//可以为你的url取一个名字,后面的[remote]都可以用这个名字

第二种:如果远端已有仓库

git clone [url]//第一次拉取用clone,以后都用pull,克隆版本库的时候,所使用的远程主机自动被Git命名为origin。如果想用其他的主机名,可以用git clone命令的-o选项指定

 拉取文件 -> 本地修改文件后commit -> 把文件放入暂存区 -> (显示修改信息) -> 推送

git pull [remote] [branch]//拉取远程仓库的变化并和本地分支合并
git add <file>//先把文件放到暂存区,使用git add . 是提交当前文件夹下的全部
git commit -v//显示所有信息
git commit -m "info"//提交,但文件还没推送到远端
git push [remote] [branch]//推送到远端

创建分支:1.平台创建 2.本地创建

本地创建分支 -> 切换工作区 -> 分支推送远端

git branch [branch]//本地创建分支,但仍停留在原分支
git checkout [branch]//切换工作区
git branch -a//显示所有远程和本地的分支
git push [remote] [branch]//分支推送远端

分支合并:

 切换回主分支 -> 拉取最新的主分支 -> 分支合并 -> 推送

git checkout master//切换到主分支
git pull [remote] master//拉取最新的主分支,由于协同工作,主分支内容可能会被团队他人修改
git merge [branch]
git push [remote] master

概念

  • 什么是软件工程?什么是软件,它的特点是什么,跟硬件有何差别?软件工程方法有哪些?

软件工程是用工程科学的方法来定义、开发、维护计算机软件的有关技术和管理方法

软件包含计算机程序、规程、文档和软件系统运行所必需的数据四个部分

软件工程方法为软件开发提供了“如何做”的技术。它包括了多方面的任务,如项目计划与估算、软件系统需求分析、数据结构、系统总体结构的设计、算法过程的设计、编码、测试以及维护等

  • 什么是需求分析?需求分析有哪几种方法?

经过深入细致的调研和分析,准确理解用户和项目的功能、性能、可靠性等具体要求,将用户非形式的需求表述转化为完整的需求定义,从而确定系统必须做什么的过程

三种需求分析的方法:结构化分析方法、面向对象的分析方法、面向问题域的分析方法

  • 三个时期,九个阶段

软件定义、软件开发、软件运行维护

问题定义、可行性研究、需求分析、概要设计、详细设计、编码和单元测试、综合测试、软件维护、退役

  • 生存周期模型有哪几个,特点及差异

瀑布模型:理想化、只有到最后才能看到开发成果(风险大)、不适应用户需求的变化

增量模型

演化模型:需求不清晰,很难一次开发成果

快速原型模型

  • 研发团队包含哪些角色,做什么事情?

  • 需求分析:需求规格说明书,怎么样去做需求,用哪些方法?

需求分析步骤:

获取用户需求 -> 分析用户需求 -> 编写需求文档SRS -> 评审需求文档 -> 管理需求变更

方法:获取用户需求(有功能性、非功能性):与用户交流;大规模市场调查;聘请行业专家;借助网络等。

需求分析方法:

1.面向结构分析法 2.面向对象分析法 3.快速原型分析法。

  • SRS是什么

软件需求规格说明书

  • 什么是uml,uml九张图

uml是一种通用可视化建模语言,用来对软件密集型系统可视化、详述、构造和文档化 

九张图:用例图,类图,对象图,活动图,顺序图,协作图,状态图,构建图,实施图

  • 什么是静态图,动态图,怎么区分

静态图:描述系统的元素及元素间的关系。类图,对象图,构建图,实施图

动态图:描述系统随时间发展的行为。活动图,顺序图,协作图,状态图

  • uml图放到软工设计中如何规划?

需求分析:用例图表示客户的需求

分析:考虑所要解决的问题,类图描述系统的静态结构,动态图描述系统的动态特征

设计:把分析阶段的结果扩展成技术解决方案

构造:把设计阶段的类转换成代码

测试:不同的测试小组使用不同的UML图作为他们工作的基础。 单元测试使用类图和类的规格说明,集成测试使用组件图和协作图,而系统测试使用用例图来确认系统的行为是否符合这些图中的定义

  • Scm软件配置管理

Scm:软件配置管理,是一种标识、 组织和控制修改的技术

目标:为了标识变更、控制变更、确保变更正确实现并向其他有关人员报告变更,使错误降为最小并最有效地提高生产效率

包含哪几部分:配置管理计划制定,版本管理,确定配置项标识规则,变更管理,发布管理,工作空间管理,报告配置状态 

  • 什么是cmmi,五个等级是什么,从最低级到最高级,字与顺序不可错

软件能力成熟度模型

第1级:初始级
第2级:可重复级
第3级:已定义级
第4级:已管理级
第5级:优化级

  • 什么是SPI

英文Software Process Improvement的缩写,中文意思是软件过程的改进

  • 概要设计包含哪些内容,完成什么内容

系统构架、模块划分、系统接口、数据设计4个主要方面的内容

  • 软件测试,白盒和黑盒方法,什么作用

黑盒测试:不深入代码细节的测试方法称为黑盒测试,软件测试员充当客户来使用它

白盒测试:已知程序的内部工作过程,对它的每种内部操作进行测试,看是否符合设计要求,称为白盒测试

黑盒测试和白盒测试的区别:前者基于功能,后者基于结构

黑盒测试是从用户观点,按规格说明书要求的输入数据与输出数据的对应关系设计测试用例,是根据程序外部特征进行测试

白盒测试是根据程序内部逻辑结构进行测试

  • 单元测试系统测试几个环节,有什么区别

  • 软件测试用到了哪些基本准则,依据什么

  1. 所有的测试都应追溯用户需求;
  2. 尽早并不断进行测试;
  3. 穷举测试是不可能的;
  4. 由独立的第三方来构造测试。(开发和测试队伍分别建立)
  5. 兼顾合理的输入和不合理的输入数据。
  6. 程序修改后要回归测试。
  7. 应长期保留测试用例,直至系统废弃。
  • 如何写测试用例,包含哪些内容

测试用的一组数据(内容、步骤、测试结果)

  • 常用估算方法,主要估算什么东西,包含哪些内容

三点统计方法:产生一个三点或期望值估算,建立关于 规模的乐观值、可能值、悲观值。EV=(Sopt+4Sm +Spess)/6 ,Sopt 乐观值; Sm 可能值; Spess 悲观值; EV(expected value) 期望值。

面向规模的估算法(LOC法)

类比法

面向功能的估算法(FP法)

面向用例的估算法(ucp法)

基于过程的估算——自顶向下法

基于过程的估算——自底向上法

  • Delphi估算法和UCP估算法是什么,有什么区别

Deliphi估算

UCP:面向用例, UCP = 交易的UCP数 + Actor的UCP数

  • 给一个用例,进行估算

书P140

  • 维保包含哪些工作


http://chatgpt.dhexx.cn/article/WesF9H0U.shtml

相关文章

RTKLIB源码调试.trace文件解析.stat文件解析

.trace文件是调试文件&#xff0c;帮助用户在程序、输入数据时&#xff0c;进行分析的一个很好的提示&#xff01; .trace文件的生成、trace文件内容的生成&#xff0c;均在execses中&#xff01; 以单点定位为例&#xff0c;大体流程为&#xff1a; 生成.trace文件&#xf…

sopt:一个简单的python最优化库

sopt:一个简单的python最优化库引言 最近有些朋友总来问我有关遗传算法的东西&#xff0c;我是在大学搞数学建模的时候接触过一些最优化和进化算法方面的东西&#xff0c;以前也写过几篇博客记录过,比如遗传算法的C语言实现(一):以非线性函数求极值为例和C语言实现粒子群算法(P…

python古诗词生成_Python一日一练02----诗词生成器

要求 编写一段程序&#xff0c;可以自动生成小诗。 格式如下 源码 import random import sys articles ["the", "a", "another", "her", "his"] subjects ["cat", "dog", "horse", "m…

LSTM古诗词生成

Le LSTM古诗词生成 一、简介 基于LSTM的古诗词生成&#xff0c;设计神经网络模型&#xff0c;使模型学习数据是6291首古诗&#xff0c;没有专门的验证数据和测试数据&#xff0c;感觉不会预测正确。边学习边生成古诗&#xff0c;从生成的古诗来看学习的效果。 涉及到的模块有Py…

宋词自动生成

利用宋词语料库&#xff0c;通过单双词的组合与模板的匹配&#xff0c;实现指定词牌宋词的生成 import random import tkinter as tk import re from tkinter import messageboxlist []class Window:# 界面设计def __init__(self, root):label1 tk.Label(root, text输入词牌…

基于Python的宋词生成器

资源下载地址&#xff1a;https://download.csdn.net/download/sheziqiong/85631523 1. 背景 我有两个爱好&#xff0c;一个是传统文化&#xff0c;另一个是高新技术。 传统文化&#xff0c;我喜欢唐诗宋词、笔墨丹青&#xff0c;高新技术我则从事前沿的IT编程&#xff0c;喜…

基于java的古诗词生成管理系统

10161-古诗词生成管理系统 开发工具 eclipse tomact mysql jdk 功能详情&#xff1a; 古诗搜索、古诗问答、机器回复、古诗管理&#xff08;添加古诗、古诗分类、古诗标签、古诗列表&#xff09;、用户管理

田字格字帖生成器、孩子取名系列工具

大家好&#xff0c;我是小寻&#xff0c;欢迎关注公众号:工具优选&#xff0c;免费领取优质项目源码和常用工具&#xff0c;还可以加入我的交流群! 这是是一款2013年上线的在线小工具集&#xff0c;包括了 13 款中文学习工具&#xff0c;有田字格字帖、拼音田字格、古诗词字帖…

有趣的深度学习——使用TensorFlow 2.0 + RNN 实现一个古体诗生成器

一、前言 很早之前&#xff0c;我曾经写过一个古体诗生成器&#xff08;详情可以戳TensorFlow练手项目二&#xff1a;基于循环神经网络(RNN)的古诗生成器&#xff09;&#xff0c;那个时候用的还是Python 2.7和TensorFlow 1.4。 随着框架的迭代&#xff0c;API 的变更&#x…

现在还可以一键自动生成古诗词,你知道吗?

人类在漫长的历史长河中&#xff0c;一直在探索着各种各样的美好&#xff0c;不断地追求着更高的境界。而如今&#xff0c;随着科技的不断发展&#xff0c;人工智能已经成为了我们得力的伙伴之一&#xff0c;为我们带来了更多的便利和可能性。尤其是在艺术和文化领域&#xff0…

古诗词在线起名 - 一刀工具箱

古诗词名字生成器帮助你在线生成古诗词名字&#xff0c;包含&#xff1a;诗经、楚辞、唐诗、宋词、辞赋等古风的名字&#xff0c;这些名字都非常的优美好听&#xff0c;希望你们能够喜欢这款古诗词起名工具。 代码片段 async subName() {let name_arr Object.keys(this.userN…

NLP入门 - 基于Word Embedding + LSTM的古诗生成器

一共实现三个功能&#xff1a; 1. 续写五言诗 2. 续写七言诗 3. 写五言藏头诗 之前用这个做Intro to Computer Science的期末项目折腾太久&#xff0c;不想赘述&#xff0c;内容介绍及实现方法可参考期末presentation的slides&#xff1a; https://docs.google.com/presen…

基于古诗词的名字生成器

数据集 因为数据量庞大&#xff0c;使用本地的 CSV 数据进行测试。 后续改进 CSV 文件保存到 mongodb 数据库&#xff0c;便于聚合查询。 数据分词 我们需要一个分词器将这些数据进行分词&#xff0c;用到的是 Golang 版的 jieba 库如下&#xff1a; "github.com/go-e…

基于LSTM + keras 的古诗生成器

1.语料准备&#xff1a;包含 5.5 万首唐诗、26 万首宋诗、2.1 万首宋词和其他古典文集。诗人包括唐宋两朝近 1.4 万古诗人&#xff0c;和两宋时期 1.5 千古词人。数据来源于互联网。每行一首诗&#xff0c;标题在预处理的时候已经去掉了。2.模型参数配置&#xff1a;预先定义模…

唐诗生成器

使用唐诗语料库&#xff0c;经过去噪预处理、分词、生成搭配、生成主题等过程&#xff0c;生成唐诗。 csdn下载地址&#xff1a;http://download.csdn.net/detail/lijiancheng0614/9840952 github上repository地址&#xff1a;https://github.com/lijiancheng0614/poem_genera…

JQuery中的val()函数

JQuery中的val()函数相当于Javascript中的value属性&#xff0c;可以用来设置和获取元素的值。 下面用一个简单的邮箱登陆界面来举个例子&#xff1a; 在默认情况下邮箱的地址输入框和密码输入框都有相应的提示。 要求&#xff1a;当鼠标聚焦在邮箱地址输入框时&#xff0c;提…

【Python】sklearn中的cross_val_score()函数参数

sklearn 中的cross_val_score函数可以用来进行交叉验证&#xff0c;因此十分常用&#xff0c;这里介绍这个函数的参数含义。 sklearn.cross_validation.cross_val_score(estimator, X, yNone, scoringNone, cvNone, n_jobs1, verbose0, fit_paramsNone, pre_dispatch‘2*n_job…

sklearn交叉验证函数cross_val_score用法及参数解释

文章目录 一 、使用示例二、参数含义三、常见的scoring取值1.分类、回归和聚类scoring参数选择2.f1_micro和f1_macro区别3.负均方误差和均方误差 一 、使用示例 import numpy as np from sklearn.model_selection import train_test_split from sklearn import svm from sklea…

java val_Java中是否有val()函数?

慕尼黑的夜晚无繁华 很少有实际用例能够评估String作为Java代码的一个片段是必要的或可取的。也就是说&#xff0c;询问如何做到这一点实际上是XY问题&#xff1a;你实际上有一个不同的问题&#xff0c;可以用不同的方法来解决。先问问自己&#xff0c;这是怎么回事String你想要…

c语言val函数用法,函数VAL()什么意思怎么用啊?/

满意答案 Dickyshe 2013.03.22 采纳率&#xff1a;50% 等级&#xff1a;12 已帮助&#xff1a;12551人 将一个数据行变量转换成数字长整型变量如 text1.text "10" text2.text "11" text3.text text1.texttext2.text 按道理应该得到10&#xff0b;11(…