工程管理与工作流

1 统一开发环境/ 协作工具

你知道开发环境指的是什么吗? 

开发环境:

工程运行环境、开发工具/ 编辑器 、开发依赖环境、 配置文件 

软件环境:

“仿真预演”环境 Staging 

生产环境前最终验证、 这一环境尽可能的仿真了真实的生产环境 、另一个关键是用于性能测试,特别是加载时间 

开发环境 Development 

往往创建在开发者的设备上 、软件环境软件在这个环境下开发 、一个沙盒环境 

生产环境 Production 

也被称为线上环境 、向生产环境部署是最为敏感的步骤 、生产环境出现问题会导致严重的后果工程运行环境 

测试环境 Testing 

允许人类测试者采用自动化或非自动方式进行测试 、如果测试失败,测试环境会将这部分 并通知对应开发者 

你所了解的协作工具有哪些? 

你们之前开发环境都选用过哪些呢? 

为什么要对它们进行统一呢? 

2、工程管理与工作流

在软件项目管理中我们关心什么 

需要关注钱的问题吗? 

需要关注时间吗? 

还需要关注什么呢? 

关心:

在预算之内 、在计划时间之内 、工程质量良好 

W5HH 计划 

这个功能为什么要被开发? 

将要做什么,什么时候完成? 

谁负责来实现? 

他们的机构组织位于何处? 

从技术和管理上这个功能可以怎么被完成? 

有哪些资源应该被需要到?

Umbrella activities :

测量 & 数据矩阵 

预估

风险

排期

追踪与控制 

做好工作的拆解:

将任务拆解为多个部分 :

产品、过程、组织 、自上而下的拆解 、考虑全局的分析与组织 、确保没有遗漏 、考虑现实性 

做好排期 :

问:一个项目是怎么会延期了一年的呢? 

答:每次遇到问题延迟一天就足以导致这个结果

工作流是什么? 

我们做开发是怎么做的呢? 

需要按哪些步骤进行? 

每个步骤之间关系是什么? 

项目级的工作流 :需求 、评审 、设计 、开发、审计与测试 、部署与监控 

有了工作流之后

开发切忌偷工减料 

工作流是提升效率的,而不是降低效率的 

在执行前要有约定好的惩罚性、奖励性措施 

3、需求来自哪里

探索性项目需求 、针对性项目(用户需求不明确 )、针对性项目(用户需求明确)

 

4、Git 

我们面对的问题:

多个人需要共同参与一个软件开发
一个软件可能有多个要支持的版本
一个软件可能会用多种不同的运行环境

版本的基准:

根据质量管理所需确定的阶段性规格说明,这个说明应是被正式评审认可的。 

之后的开发过程都应该要遵循“基准”的要求进行。 

对于基准的修改是要极为慎重的,要通过严格的变更流程。 

例子: 

Baseline A :所有接口应被完备的定义,各方法的内容为空。 

Baseline B :所有的数据访问方法应该被实现并测试。 

Baseline C:GUI 被完成

基准的命名:

基准的命名有一个非常常用的三点命名法。
A.B.C(如9.3.1)
A:从用户(消费者)角度看到的发布出的标记数(Release)
B:从开发者角度看到的关键的版本(Version)号
C:从开发者角度关注的修改版本(Revision)号

术语定义:发布(Release)     版本(Version)     修改(Revision)
版本(Version):最初发布或再发布的“代码及其附属品”的组合,它应该是可被完整编译或被认定为完整可用的。不同的版本表现出不同的功能特性。
修改(Revision):对于一个版本的修改,只做了代码设计的错误修正,对于已经“附属品”中文档所描述的功能特性没有任何改动。
发布(Release):被批准的面向用户进行分发的版本。

本地Gt仓库的三个分区:

01     工作目录(修改/没修过的文件)working directory
02     暂存区(暂存的文件)staging area
03     Gt仓库(提交的文件)repo

基本的Git使用:

配置一个Gt仓库:
Git init创建Git仓库,让当前目录处于Gt管理之下
Git clone将一个已经存在的Git仓库克隆到本地
Git config对Gt的基本配置进行设置(如邮箱、姓名)

 

 

创建仓库
01在当前目录下创建   git init
在指定的目录创建
02git init<指定的目录路径>
03创建一个bare git仓库   git init --bare myrepo.git

 

 

 

 

 

 

 

 

Git 的多人协作 / 远程仓库:
 

分支

01查看现有分支  git branch  创建分支
02  git branch<分支名>
03  切换分支   g it checkout<分支名>    创建并切换到分支
04  git c   checkout-b<分支名>    删除分支
05 git branch-d<分支名> 

合并的默认行为

只执行g it merge时,如果可以fast-forward,则fast-forward,否则进行non fast-forward merge。
在non fast-forward merge过程中,会尝试合并修改
如果发生不能自动合并的冲突,则需要手动解决冲突。

 

 

 

 Gitlab 工具

任务管理与计划:

在 Group 中建立 Milestone 

在Group / Repo 拆分任务,建立 Issue 关联 Milestone、设置 Deadline,并评估完成时间 在开发过程中关注任务计划 

 

Issue的使用

01Group中的ssue:不具体到某一个部分的开发
02 Repository中的Issue:具体到某一个部分的开发
03无论是哪个部分的Is$ue都应该是可以被完成、关闭的 

 

 

 

 

 

3、代码提交与测试、审计

 写完代码提交有什么要求
01一个分支关联一个1ssue,一次提交只做一件事情
02提交的内容应该与分支目的相关
03提交信息首字母要大写、要关联到Issue

持续集成与Code Review
01发起Merge Request后测试会自动跑
02在自动化检测通过后,我们可以进行人工Review
03人工Review后可以批准修改,之后可以由对MR发起人或项目负责人完成合并

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/86683.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

自己实现 SpringMVC 底层机制 系列之-实现任务阶段 6-完成控制器方法获取参数-@RequestParam

&#x1f600;前言 自己实现 SpringMVC 底层机制 系列之-实现任务阶段 6-完成控制器方法获取参数-RequestParam &#x1f3e0;个人主页&#xff1a;尘觉主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是尘觉&#xff0c;希望我的文章可以帮助到大家&#xff0c…

网络编程——网络基础知识

目录 一、网络历史两个重要名词1.1 阿帕网1.2 TCP/IP协议 二、局域网和广域网三、IP地址3.1 基本概念3.2 划分(IPV4)3.3 特殊IP地址3.4 子网掩码3.5 重新组网 四、网络模型4.1 网络的体系结构&#xff1a;4.2 OSI与TCP/IP模型4.2.1 OSI模型4.2.2 TCP/IP模型4.2.3 OSI和TCP/IP模…

CNN之图像识别

什么是图像识别 • 图像识别技术是信息时代的一门重要的技术&#xff0c;其产生目的是为了让计算机代替人类去处理大量的物理信息。随着计算机技术的发展&#xff0c;人类对图像识别技术的认识越来越深刻 • 图像识别技术的定义为利用计算机对图像进行处理、分析和理解&…

Docker(二) Docker容器

在docker中的容器都是由镜像所创建的&#xff0c;一个镜像可以创建多个容器。 一、调试Docker 启动Docker systemctl start docker 查看Docker中有哪些镜像 docker images 下载镜像 docker pull hello-world 运行镜像 docker run hello-world 出现 Hello from Docker! 这…

构建系统自动化-autoreconf

autoreconf简介 autoreconf是一个GNU Autotools工具集中的一个命令&#xff0c;用于自动重新生成构建系统的配置脚本和相关文件。 Autotools是一组用于自动化构建系统的工具&#xff0c;包括Autoconf、Automake和Libtool。它们通常用于跨平台的软件项目&#xff0c;以便在不同…

[C语言]分支与循环

导言&#xff1a; 在人生中我们总会有选择&#xff0c;**如下一顿吃啥&#xff1f;**又或者每天都是在重复&#xff0c;吃饭&#xff01;&#xff01;&#xff01;&#xff01;&#xff0c;当然在C语言中也有选择和重复那就是分支语句与循环语句 文章目录 分支循环循环中的关键…

手写代码-前端面试

GitHub&#xff1a;手写代码集合

大数据-玩转数据-Flink营销对账

一、说明 在电商网站中&#xff0c;订单的支付作为直接与营销收入挂钩的一环&#xff0c;在业务流程中非常重要。对于订单而言&#xff0c;为了正确控制业务流程&#xff0c;也为了增加用户的支付意愿&#xff0c;网站一般会设置一个支付失效时间&#xff0c;超过一段时间不支…

一云多芯,智能化转型的下一个工程化挑战

进入2023年&#xff0c;产业数字化和智能化转型升级进入了大规模工程化落地阶段。根据中国信通院《中国数字经济发展研究报告&#xff08;2023&#xff09;》&#xff0c;数字经济已经占我国GDP比重达到41.5%&#xff0c;相当于第二产业占国民经济的比重。随着产业数字化和智能…

【数据结构】 LinkedList的模拟实现与使用

文章目录 &#x1f340;什么是LinkedList&#x1f334;LinkedList的模拟实现&#x1f6a9;创建双链表&#x1f6a9;头插法&#x1f6a9;尾插法&#x1f6a9;任意位置插入&#x1f6a9;查找关键字&#x1f6a9;链表长度&#x1f6a9;打印链表&#x1f6a9;删除第一次出现关键字为…

YOLOv5+deepsort实现目标追踪。(附有各种错误解决办法)

一、YOLOv5算法相关配置 🐸这里如果是自己只想跑一跑YOLOV5的话,可以参考本章节。只想跑通YOLOv5+deepsort的看官移步到下一章节。 1.1 yolov5下载 🐸yolov5源码在github下载地址上或者Gitee上面都有。需要注意的是由于yolov5的代码库作者一直在维护,所以下载的时候需…

【Unity小技巧】Unity探究自制对象池和官方内置对象池(ObjectPool)的使用

文章目录 前言不使用对象池使用官方内置对象池应用 自制对象池总结源码参考完结 前言 对象池&#xff08;Object Pool&#xff09;是一种软件设计模式&#xff0c;用于管理和重用已创建的对象。在对象池中&#xff0c;一组预先创建的对象被维护在一个池中&#xff0c;并在需要时…

OJ练习第152题——分割回文串 II

分割回文串 II 力扣链接&#xff1a;132. 分割回文串 II 题目描述 给你一个字符串 s&#xff0c;请你将 s 分割成一些子串&#xff0c;使每个子串都是回文。 返回符合要求的 最少分割次数 。 示例 Java代码 class Solution {public int minCut(String s) {int n s.leng…

听说你还不知道什么是python?本文将带你发掘python的魅力并让你爱上他

文章目录 前言什么是pythonpython的由来我们为什么要学习python帮助python学习的网站总结 前言 各位朋友们&#xff0c;大家好。龙叔我后台经常收到私信问什么是Python&#xff1f;有必要学习这门语言么&#xff1f;今天&#xff0c;将通过本文告知大家Python是什么&#xff1…

浅谈日常使用的 Docker 底层原理-三大底座

适合的读者&#xff0c;对Docker有过简单了解的朋友&#xff0c;想要进一步了解Docker容器的朋友。 前言 回想我这两年&#xff0c;一直都是在使用 Docker&#xff0c;看过的视频、拜读过的博客&#xff0c;大都是在介绍 Docker 的由来、使用、优点和发展趋势&#xff0c;但对…

QT学习笔记-开发环境编译Qt MySql数据库驱动与交叉编译Qt MySql数据库驱动

QT学习笔记-开发环境编译Qt MySql数据库驱动与交叉编译Qt MySql数据库驱动 0、背景1、基本环境2、开发环境编译Qt MySql数据库驱动2.1 依赖说明2.2 MySQL驱动编译过程 3、交叉编译Qt MySql数据库驱动3.1 依赖说明3.3.1 如何在交叉编译服务器上找到mysql.h及相关头文件3.3.2 如果…

【PHP】基础语法变量常量

文章目录 PHP简介前置知识了解静态网站的特点动态网站特点 PHP基础语法代码标记注释语句分隔(结束)符变量变量的基本概念变量的使用变量命名规则预定义变量可变变量变量传值内存分区 常量基本概念常量定义形式命名规则使用形式系统常量魔术常量 PHP简介 PHP定义&#xff1a;一…

【服务器】Strace显示后台进程输出

今天有小朋友遇到一个问题 她想把2331509和2854637这两个进程调到前台来&#xff0c;以便于在当前shell查看这两个python进程的实时输出 我第一反应是用jobs -l然后fg &#xff08;参考这里&#xff09; 但是发现jobs -l根本没有输出&#xff1a; 原因是jobs看的是当前ses…

Oracle Database12c数据库官网下载和安装教程

文章目录 下载安装Oracle自带的客户端工具使用 下载 进入oracle官网 点击下载连接之后右上角会有一个下载 我们只需要数据库本体就够了 运行这个下载器 等待下好之后即可 出现 Complete 之后代表下载成功&#xff0c;然后我们解压即可 安装 双击 双击setup.exe 根据…

NLP | 基于LLMs的文本分类任务

比赛链接&#xff1a;讯飞开放平台 来源&#xff1a;DataWhale AI夏令营3&#xff08;NLP&#xff09; Roberta-base&#xff08;BERT的改进&#xff09; ①Roberta在预训练的阶段中没有对下一句话进行预测&#xff08;NSP&#xff09; ②采用了动态掩码 ③使用字符级和词级…