当前位置: 首页 > news >正文

软件工程与计算总结(四)项目管理基础

目录

一.项目和项目管理

二.团队组织与管理

三.软件质量保障

四.软件配置管理

五.项目实践


一.项目和项目管理

1.软件开发远不是纯粹的编程,随着软件规模的增长,软件开发活动也变得越来越复杂~

2.软件项目就是要将所有的软件开发活动组织起来,以有效地安排和控制这些活动,保证所有重要的工作都能得到应有的关注,都能顺利的完成,产生高质量道德软件产品~

3.项目是具有下列特征的一系列活动与任务:

  • 具有一个明确的目标
  • 有限定的开始和结束日期
  • 有成本限制
  • 消耗人力和非人力资源
  • 多工种合作

项目的核心是计划,计划的重要内容包括:项目需要的资源、项目中需要执行的活动、以及项目中需要产生的交付制品

4.项目管理的目标:

  • 在限定时间内
  • 在一定的成本内
  • 在要求的质量水平上
  • 高效使用资源
  • 获得客户认可

5.软件项目管理包括:项目启动、项目计划、项目执行、项目跟踪与控制、项目收尾5个过程

二.团队组织与管理

协作良好的团队是任何项目成功的基础。软件项目尤其依赖于有效的团队组织和管理:软件开发是一个以人为主的活动,人力资源是软件项目最大的资产。

1.团队的特征

一群人简单地集合到一起并不能自然形成团队,只有他们的组织和管理具备了某些特征才能称为团队。

  • 团队成员要具备共同的目标
  • 团队成员要共担责任
  • 团队成员要技能互补
  • 团队是小规模团体
  • 团队内部要有一个明确的结构

2.团队结构

  • 主程序员团队:主程序员团队中有一名技术能力出色的成员被指定为主程序员,负责领导团队完成任务
  • 民主团队:成员之间没有集中的瓶颈,每个成员都可以发挥自己的能动性,能取得更高的士气和工作成就感~
  • 开放团队:成员均为有创造性的产品开发者,对他们进行太多的管理会抑制他们的创造性~

3.团队建设

高凝聚力的胶冻团队不是一天形成的,需要长期的团队建设~

建立团队章程

  • 1)团队的目标。
  • 2)团队的共同追求。这些追求是超出项目之外的所有成员的共同追求,例如追求敏捷理念、开源理念等。
  • 3)团队结构和角色分工。
  • 4)团队的任务、活动与绩效。一定要明确团队的绩效标准,它体现了对团队成员的期望。
  • 5)团队规则与约束。明确团队对成员提出的行为规则要求,例如保持开放氛围、积极参与团队交流活动等。

持续成功

持续成功能够促进团队建设的原因在于:

  • 1)持续成功能够积累团队的信心,尤其是面对困难问题时仍然保持成功期望的信心。
  • 2)持续成功能够建立团队成员之间的信任,互相信任的团队才可能成为高凝聚力团队。
  • 3)持续成功能够激励团队的士气,因为成就感是最能够激励软件开发人员士气的因素。

和谐沟通

  • 和谐沟通的首要原则是建立开放的环境
  • 和谐沟通需要有制度保障

避免团队杀手

常见杀手类型:

  • 防范式管理:管理者要信任团队成员,不能总是担心成员工作不力并据此进行防范式管理
  • 官僚主义:官僚主义的管理者会导致团队的和谐交流氛围无法建立,团队的凝聚力也就无法形成。
  • 地理分散:地理分散使得团队成员之间无法保持持续、紧密的沟通,无法形成团队氛围和高凝聚力。现在的视频通信等手段能部分缓解地理分散带来的困难,但定期的集中交流仍然是必要的。
  • 时间分割:如果团队成员同时参与多个项目,为每个项目分割自己的一部分时间,那么团队就难以形成高凝聚力。“没有人可以成为多个胶冻团队的成员。胶冻团队的紧密人际互动是排他性的。太多分割的团队不会胶冻。
  • 产品质量的降低:这是持续成功的反面,会降低团队成员的成就感和互相信任。
  • 虚假的最后期限:之所以虚假是因为这些最后期限根本就不可能完成,完全是管理者为了驱动项目进度而强加的。一个做着自知不可能完成的任务的人会有士气吗?
  • 小圈子控制:如果团队中有少数成员建立了小圈子,就会破坏整个团队的信任和沟通氛围,自然也就无法建立高凝聚力。

三.软件质量保障

1.软件质量

作为工程师,要对产品的质量负责,保证使用者的生命健康和经济安全~

  • 显式的:指用户在软件创建之前就可以清晰地项开发者清晰地表达的要求
  • 隐式的:在系统投入使用之后要求补充的条件

如下是两个权威的软件质量标准:

 

2.质量保障

由于软件开发过程是不可见的,且越晚发现缺陷,修复的代价越高,因此软件质量的保障活动要贯穿整个开发过程独立、持续地进行

主要方法有:评审、测试和质量度量3种方式

3.评审

由作者之外的其他人来检查产品问题,是静态分析手段

  • 1)规划阶段(planning):制定审查计划,决定审查会议的次数,安排每次审查会议的时间、地点、参与人员、审查内容等。
  • 2)总体部署阶段(overview):向所有参与审查会议的人员描述待审查材料的内容、审查的目标以及一些假设,并分发文档。
  • 3)准备阶段(preparation):审查人员各自独立执行检查任务。在检查的过程中,他们可能会被要求使用检查清单、场景等检查方法。检查中发现的问题会被记录下来,以准备开会讨论或者提交给收集人员。
  • 4)审查会议阶段(inspection meeting):通过会议讨论,识别、确认、分类发现的错误。
  • 5)返工阶段(rework):修改发现的缺陷。
  • 6)跟踪阶段(follow-up):要确认所有发现的问题都得到了解决,所有的错误都得到了修正。
  • 在评审中发现问题是整个评审过程的关键。为了更好地发现问题,需要使用一些检查方法来系统化地帮助和引导检查人员。常见的检查方法是使用检查清单(checklist)[Laitenberger2002],后面的章节会提供各项评审活动的检查清单。 

4.质量度量

依据统计控制思想,要保障软件产品的质量,就要用数字量化的方式描述软件产品。测度(measure)就是为了描述软件产品而提供的定量指标。通过给软件产品或中间制品建立度量描述,可以分析和确定它们的质量。所以软件产品质量度量是质量保障的常用手段。

  • 进行测度的活动称为测量( measurement)
  • 度量(metric)是软件产品在特定属性上的量化测度程度

四.软件配置管理

1.配置管理动机

配置管理的定义:用技术的和管理的指导和监督方法,来标识和说明配置项的功能和物理特征,控制对这些特征的变更,记录和报告变更处理及其实现状态,并验证与需求规格的一致性~

2.配置项

需求进行配置管理的软件开发制品,包括最终制品和中间制品。

3.基线

已经经过正式评审的规格说明或制品,可以作为进一步开发的基础,并且只有通过正式的变更控制过程才能变更

(基线的建立意味着第一个里程碑)

4.配置管理活动

  • 标识配置项
  • 版本管理:赋予版本号
  • 变更控制:已纳入配置管理中的配置项发生变化时,需要依据变更控制过程进行处理~

  • 配置审计
  • 状态报告
  • 软件发布管理

相关文章:

软件工程与计算总结(四)项目管理基础

目录 一.项目和项目管理 二.团队组织与管理 三.软件质量保障 四.软件配置管理 五.项目实践 一.项目和项目管理 1.软件开发远不是纯粹的编程,随着软件规模的增长,软件开发活动也变得越来越复杂~ 2.软件项目就是要将所有的软件开发活动组织起来&#…...

【Python】datetime 库

# timedelta(days, seconds, microseconds,milliseconds, minutes, hours, weeks) 默认按顺序传递参数 # 主要介绍 datetime.datetime 类 # 引入 from datetime import datetime today datetime.now() # 获取当前时间 2023-10-05 15:58:03.218651 today1 datetime.utcnow() #…...

从0开始python学习-28.selenium 需要图片验证的登录

url https://test.com/login driver.get(url) # 获取登录页面需要输入账号密码进行模拟登录操作 user driver.find_element(By.XPATH,//*[id"login"]/div[2]/div/form[2]/div[2]/div/div/input).send_keys(username) pwd driver.find_element(By.XPATH,//*[id&qu…...

Nginx搭建Rtmp流媒体服务,并使用Ffmpeg推流

文章目录 1.rtmp流媒体服务框架图2.nginx配置3.配置nginx4.使用ffmpeg推流5.实时推摄像头流 本项目在开发板上使用nginx搭建流媒体服务,利用ffmpeg进行推流,在pc上使用vlc media进行拉流播放。 1.rtmp流媒体服务框架图 2.nginx配置 下载:wge…...

IDEA 将一个普通Java工程转化为maven工程

打开IntelliJ IDEA并打开Java工程。 在项目窗口中,右键单击项目名称,选择“Add Framework Support”。 在弹出的窗口中,选择“Maven”。 在“Maven Information”窗口中,填写Group Id、Artifact Id和Version等基本信息。 点击…...

linux下的永久保存行号

linux下的永久保存行号 1.首先 这里是引用 输入命令:vi ~/.vimrc 其次 这里是引用 输入命令 set number...

92岁高龄的创始人张忠谋谈台积电发展史

一、张忠谋和台积电 在台北一间办公室里,张忠谋最近拿出一本印有彩色图案的旧书。它的标题是《VLSI 系统导论》,这是一本研究生水平的教科书,描述了计算机芯片设计的复杂性。92岁的张先生满怀敬意地举起它。 92岁高龄的台积电创始人张忠谋 “…...

【VIM】VIm初步使用

玩转Vim-从放弃到入门_哔哩哔哩_bilibili...

教育类《中学政史地》收稿方向-投稿邮箱

教育类《中学政史地》收稿方向-投稿邮箱 《中学政史地》收稿方向:中学政治、历史、地理类稿件 《中学政史地》创办于1987年,是我国唯一一份集中学政治、历史、地理三门学科为一体的综合性月刊。每月两期,分初中版和高中版。以服务学生、服务…...

数据库的备份与恢复

数据备份的重要性 备份的主要目的是灾难恢复。 在生产环境中,数据的安全性至关重要。 任何数据的丢失都可能产生严重的后果。 造成数据丢失的原因: 程序错误人为操作错误运算错误磁盘故障灾难(如火灾、地震)和盗窃 数据库备份…...

string类的模拟实现(万字讲解超详细)

目录 前言 1.命名空间的使用 2.string的成员变量 3.构造函数 4.析构函数 5.拷贝构造 5.1 swap交换函数的实现 6.赋值运算符重载 7.迭代器部分 8.数据容量控制 8.1 size和capacity 8.2 empty 9.数据修改部分 9.1 push_back 9.2 append添加字符串 9.3 运算符重载…...

C 函数指针

就像指针可以指向一般变量、数组、结构体那样,指针也可以指向函数。 函数指针的主要用途是向其他函数传递“回调”,或者模拟类和对象。 形式如下: int (*POINTER_NAME)(int a, int b) 这类似于指向数组的指针可以表示所指向的数组。指向函数…...

zkVM设计性能分析

1. 引言 本文主要参考: 2023年9月ZKSummit10 Wei Dai 1k(x) & Terry Chung 1k(x)分享视频 ZK10: Analysis of zkVM Designs - Wei Dai & Terry Chung 当前有各种zkVM,其设计思想各有不同,且各有取舍,本文重点对现有各z…...

调用gethostbyname实现域名解析(附源码)

VC常用功能开发汇总(专栏文章列表,欢迎订阅,持续更新...)https://blog.csdn.net/chenlycly/article/details/124272585C软件异常排查从入门到精通系列教程(专栏文章列表,欢迎订阅,持续更新...&a…...

面向无线传感器网络WSN的增强型MODLEACH设计与仿真(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

前端页面初步开发

<template><div><el-card class"box-card" style"height: 620px"><el-input v-model"query.name" style"width:200px" placeholder"请输入用户姓名"></el-input>&nbsp&nbsp&nbsp…...

【赠书活动第3期】《构建新型网络形态下的网络空间安全体系》——用“价值”的视角来看安全

目录 一、内容简介二、读者受众三、图书目录四、编辑推荐五、获奖名单 一、内容简介 经过30多年的发展&#xff0c;安全已经深入到信息化的方方面面&#xff0c;形成了一个庞大的产业和复杂的理论、技术和产品体系。 因此&#xff0c;需要站在网络空间的高度看待安全与网络的…...

基于SpringBoot的智能推荐的卫生健康系统

目录 前言 一、技术栈 二、系统功能介绍 用户管理 科室类型管理 医生信息管理 健康论坛管理 我的发布 我的收藏 在线咨询 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在…...

几种开源协议的区别(Apache、MIT、BSD、MPL、GPL、LGPL)

作为一名软件开发人员&#xff0c;你一定也是经常接触到开源软件&#xff0c;但你真的就了解这些开源软件使用的开源许可协议吗&#xff1f; 你不会真的认为&#xff0c;开源就是完全免费吧&#xff1f;那么让我们通过本文来寻找答案。 一、开源许可协议简述 开源许可协议是指开…...

通过usb串口发送接收数据

USB通信使用系统api&#xff0c;USB转串口通信使用第三方库usb-serial-for-android&#xff0c; 串口通信使用Google官方库android-serialport-api。x 引入包后在本地下载的位置&#xff1a;C:\Users\Administrator\.gradle\caches\modules-2\files-2.1 在 Android 中&#x…...

【WiFi帧结构】

文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成&#xff1a;MAC头部frame bodyFCS&#xff0c;其中MAC是固定格式的&#xff0c;frame body是可变长度。 MAC头部有frame control&#xff0c;duration&#xff0c;address1&#xff0c;address2&#xff0c;addre…...

在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能

下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能&#xff0c;包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

shell脚本--常见案例

1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件&#xff1a; 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...

前端导出带有合并单元格的列表

// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南

文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...

STM32HAL库USART源代码解析及应用

STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...