软工导论知识框架(九)软件项目管理

news2024/11/24 11:53:16

通过计划、组织、控制一系列活动,合理配置使用资源,达到既定目标的活动。项目管理优先于任何技术之前,并且贯穿于整个软件生命周期全过程。


一.软件规模度量

1.代码行技术

估计每个功能需要源代码(参考类似项目的历史数据);

累计;

估计整个软件源程序行数。

当程序较小时常用的单位是代码行数(LOC), 当程序较大时常用的单位是千行代码数(KLOC)

具体步骤:

  • 多名(n)有经验软件工程师估计

a:程序最小规模;b:程序最大规模;m:程序最可能规模

  • 求三种规模的平均值

 

  • 求程序规模

 

优点:代码是所有软件开发项目都有的“产品”,而且很容易计算代码行数。

缺点:源程序不等于软件, 实现语言不同代码行数不同,不适用非过程语言。(局限性)

2.功能点技术:依据软件信息域特性软件复杂性评估结果估算软件规模。

信息域特性:    

(1) 用户输入数:各用户面向不同应用的输入数据计数。  

(2) 用户输出数:为用户提供面向应用的输出信息。    

(3) 用户查询数:即是一次联机输入,以输出方式产生某种即时响应。    

(4) 文件数:每一个逻辑主文件都应计数。    

(5) 外部接口数:所有将信息传到另一系统中的机器可读写接口。

步骤:

(1)估算未调整功能点UFP

(2) 计算技术复杂性因子

(3)计算功能点数FP

 FP=UFP×TCF

功能点数与所用编程语言无关,比代码行合理但主观因素过多。(类似AHP层次分析法)

二.工作量估算

工作量是软件规模函数,单位为人月(pm)

(支持大多数估算模型的经验数据,都是从有限个项目的样本 集中总结出来的,因此,没有一个估算模型可以适用于所有类型的软件和开发环境)

1.静态单变量模型(有关软件规模的函数,与时间无关

E=A+B*(ev)C    A、B、C为经验常数,ev是估算变量(LOC或FP)

面向LOC(代码行)估算模型

(1)Walston-Felix模型      E=5.2×(KLOC)0.91

(2)Bailey-Basili模型      E=5.5+0.73×(KLOC)1.16

(3)Boehm简单模型      E=3.2×(KLOC)1.05

(4)Doty模型(KLOC>9)      E=5.228×(KLOC)1.407

面向FP(功能点)估算模型

(1) Albrecht&Gaffney模型    E=-13.39+0.0545FP

(2) Maston、Barnett、Mellichamp模型    E=585.7+5.12FP

         不同的结果主要原因是:这些模型多数都是仅根据若干 应用领域中有限个项目的经验数据推导出来的,适用范围 有限。因此,必须根据当前项目的特点选择适用的估算模 型,并且根据需要适当地调整(例如,修改模型常数)估 算模型。

2.动态多变量模型

        工作量是软件规模和开发时间两个变量的函数。是根据从4000多个当代软件项目中收集的生产率数据推导出来的。

 3.基于过程的估算    

(1)将任务分解为相对较小任务集合。    

(2)估算完成每个任务需要的工作量。    

(3)累计

三.进度计划

        工作量估算完,估算开发时间。

        管理复杂工程项目,最好办法是把工程项目分解成许多逻辑步骤(作业),安排作业顺序,确定每项作业需要用时间,及作业开始和终止时间。

        把工作量分配给特定的软件工程任务并规定完成各项任务的起止日期,从而将估算出的项目工作量分布于计划好的项目持续期内。

 Gantt图(横道图)

 

 四.组织形式

多名软件开发人员合理组织起来,分工协作完成开发工作。

1.民主制小组(Democratic Team)

组内成员之间可以平等交换意见。      

优点:发挥每个成员积极性。      

缺点:削弱个人责任心和必要权威作用。      

适用领域:适合于研制时间长、开发难度大项目。

问题:通信路径多,组内成员少而精

若开发组n个人,两人之间都需要通信,则通信路径n×(n-1)/2  

 2.主程序员制小组

  • 专业化:每名成员完成受过专业训练的工作
  • 层次化:主程序员有绝对权威

 3.现代程序员组

主程序员由两人担任:

技术负责人and行政负责人,分工明确,明确划分技术负责人和行政负责人权限

软件项目规模较大,程序员组分成若干个小组。

 将民主式程序员组与主程序员组的优点结合进来,形成包含分散决策组织形式。


控制:使软件项目按预定计划和预期目标进行。接下来的五六七均为控制的内容~

五.风险管理

1.现代项目管理与传统项目管理的不同之处就是引入了风险管理技术

2.风险:在给定情况下和特定时间内,那些可能发生的结果与预期结果之间的差异,差异越大,风险越大

3.风险两个特性:

  • 不确定性:可能发生,可能不发生;                      
  • 损失

4.风险的类别

  • 项目风险:可能对项目的预算、进度、人力、资源、顾客和需求等方面产生不良影响的的潜在问题
  • 技术风险:潜在的设计、实现、接口、验证和维护等方面的问题,此外,规约的二义性、技术的不确定性、陈旧或不成熟的“领先的”技术都可能是技术风险
  • 商业风险:威胁要开发的软件的生存能力

 5.风险管理:

风险识别:采用系统化方法,识别特定项目已知和可预测的风险。

 

风险分析:对已识别风险进行估计和评价,确定风险发生的概率与后果。

  • 定性分析:评估已识别项目风险影响和可能性,按可能产生影响排序。
  • 定量分析:量化分析每一风险概率及对项目造成后果,得出风险大小   和严重程度等。

      可忽略的、轻微的、严重的、灾难性的四个级别。

风险驾驭:制定具体风险应对策略。

  • 风险规避是设法降低风险出现的可能性;
  • 风险缓解是设法减少风险产生的影响;
  • 风险转移是将风险转移给第三方;
  • 风险接受是采取应急方案应对风险的发生。

六.质量管理

1、软件质量定义(ANSI/IEEE):    与软件产品满足规定的和隐含的需求能力有关的特征或 特性全体。

(1) 软件需求是度量软件质量的基础。

(2) 按规范化标准定义开发准则,不遵守软件质量不能保证。

(3) 不能忽略隐含需求。

2、影响软件质量因素  

用软件质量模型描述,较著名模型为McCall等人1979年提出,这些因素是从管理角度对软件质量的度量。

 3.软件质量保证措施

  • 基于非执行的测试:复审或评审
  • 基于执行的测试:软件测试 程序正确性证明

(1)技术复审的必要性:保证编码前各阶段文档质量,及早纠正大部分缺欠。    

         需求规格说明,数据规格说明,概要设计说明等。

(2)走查 :是开发者的一次友好的会议,需要仔细规划,有明确的目的、日程、 持续时间和参与人员,许多小组以星期为单位走查。    会后将问题分发给相应人员进行解决。

(3)审查:最系统化严密的评审技术。    

      审查范围比走查广泛、步骤较多。    

     审查组成员:

        组长(同时是技术负责人);

        负责开发工作的项目组代表(当前阶段和下一阶段)

(4)程序正确性证明    用数学方法验证程序与说明一致。对评价小程序适用(工作量小) 

七.配置管理

1.软件配置项:

(1) 计算机程序(源程序及目标程序);

(2) 文档(包括技术文档和用户文档);

(3) 数据结构

2.基线:IEEE定义:已经通过正式复审的规格说明或中间产品,可作为进一步开发基础,并且只有通过正式的变化控制才能改变它。基线标志着软件开发过程的各个里程碑。

3.管理过程

(1)配置标识

标识两类对象:基本对象和复合对象。

  • 基本对象:软件工程师分析、设计、编码和测试时建立“文本单元”。    如需求规格说明一节,源程序清单、一组测试用例。
  • 复合对象:是基本对象或其它复合对象的集合。

(2)版本控制

版本控制是对配置对象不同版本标识和跟踪过程。保证软件技术的一致性。    

(3)变化控制:变化控制是建立一套组织结构和控制规程,有意识地控 制软件的变更过程。    变化控制过程: 

(4)配置审计:确保所有文档内容变动不超出当初确定软件要求范围。   

(5)配置状态报告:对开发过程做系统记录,反映开发活动历史情况。

软件配置项赋上新的或修改后标识,产生配置状态报告条目 变更被CCA(变更授权人)批准,产生配置状态报告条目 配置审计结果,产生配置状态报告条目

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

论文详解 ——《SNR-Aware Low-light Image Enhancement》

文章目录 Abstract1.Introduction2. Related Work3. Our Method3.1 Long- and Short-range Branches3.2 SNR-based Spatially-varying Feature Fusion3.3 SNR-guided Attention in Transformer3.4 Loss Function 4. Experiments4.1. Datasets and Implementation Details4.2 Co…

实验二十七、电压传输特性的测量

一、题目 利用 Multisim 测试图1 所示各电路的电压传输特性。 图 1 电压比较器 图1\,\,电压比较器 图1电压比较器 二、仿真注意事项 (1)仿真电路所有的 A \textrm A A 均采用虚拟电压比较器。合理选择稳压管的限流电阻,使其既稳压又不至于…

armbian使用1panel快速部署部署springBoot项目后端

文章目录 前言环境准备实现步骤第一步:Armbian安装1panel第二步:安装数据库第三步:查看数据库容器重要信息【重要】查看容器所在的网络查看容器连接地址 第四步:项目配置和打包第五步:构建项目镜像 前言 这里只是简单记录部署spr…

开源,微信小程序 美食便签地图(FoodNoteMap)的设计与开发

目录 0 前言 1 美食便签地图简介 2 美食便签地图小程序端开发 2.1技术选型 2.2前端UI设计 2.3主页界面 2.4个人信息界面 2.5 添加美食界面 2.6美食便签界面 2.8 美食好友界面 2.9 美食圈子界面 2.10 子页面-店铺详情界面 2.11 后台数据缓存 2.12 订阅消息通知 2.1…

FastApi-1-结合sql 增/查demo

目录 FastAPI学习记录项目结构部分接口/代码展示感受全部代码 FastAPI学习记录 fastapi已经学习有一段时间,今天抽时间简单整理下。 官网介绍: FastAPI 是一个用于构建 API 的现代、快速(高性能)的 web 框架,使用 Py…

配置容器以使其自动启动

配置容器以使其自动启动 配置容器 利用注册表服务器上的 rsyslog-custom-cert 镜像,创建一个名为 logserver 的容器。 将其配置为以 systemd 服务的形式运行,且仅面向现有用户 william 。 该服务应命名为 container-logserver , 并应在系统重新引…

每日一题——二叉树中和为某一值的路径

题目 给定一个二叉树root和一个值 sum ,判断是否有从根节点到叶子节点的节点值之和等于 sum 的路径。 该题路径定义为从树的根结点开始往下一直到叶子结点所经过的结点叶子节点是指没有子节点的节点路径只能从父节点到子节点,不能从子节点到父节点总节点…

Coreutils工具包,Windows下使用Linux命令

之前总结过两篇有关【如何在Windows系统下使用Linux的常用命令】的文章: GnuWin32,Windows下使用Linux命令 UnxUtils工具包,Windows下使用Linux命令 今天再推荐一个类似的工具包Coreutils 一、简介 GNU core utilities是GNU操作系统基本…

HCIP——堆叠技术

堆叠 一、简介二、堆叠的优势1、提高可靠性2、简化组网3、简化管理4、强大的网络拓展能力 三、堆叠的方式1、堆叠卡堆叠2、业务口堆叠 四、堆叠的原理1、角色2、单机堆叠3、堆叠ID4、堆叠的优先级5、堆叠的建立过程 五、堆叠的配置 一、简介 堆叠技术 — 可以将多台真是得物理…

Android之版本号、版本别名、API等级对应关系(全)(一百六十二)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

【刷题笔记8.13】【动态规划相关】LeetCode题目:斐波那契数列、爬楼梯

【动态规划相关】LeetCode题目&#xff1a;斐波那契数列、爬楼梯 &#xff08;一&#xff09;爬楼梯 题目描述 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 提示&#xff1a; 1 < n <…

【数学建模】清风数模更新5 灰色关联分析

灰色关联分析综述 诸如经济系统、生态系统、社会系统等抽象系统都包含许多因素&#xff0c;系统整体的发展受各个因素共同影响。 为了更好地推动系统发展&#xff0c;我们需要清楚哪些因素是主要的&#xff0c;哪些是次要的&#xff0c;哪些是积极的&#xff0c;哪些是消极的…

P1123 取数游戏

取数游戏 题目描述 一个 N M N\times M NM 的由非负整数构成的数字矩阵&#xff0c;你需要在其中取出若干个数字&#xff0c;使得取出的任意两个数字不相邻&#xff08;若一个数字在另外一个数字相邻 8 8 8 个格子中的一个即认为这两个数字相邻&#xff09;&#xff0c;求…

自动驾驶数据集汇总

1.Nuscenes 数据集链接&#xff1a;nuScenes nuscenes数据集下有多个任务&#xff0c;涉及Detection&#xff08;2D/3D&#xff09;、Tracking、prediction、激光雷达分割、全景任务、规划控制等多个任务&#xff1b; nuScenes数据集是一个具有三维目标注释的大型自动驾驶数…

从AI到人机再到人机环:十年四本书

写这四本书的初衷还是得从剑桥图书馆说起&#xff0c;自从2012年来到剑桥逐渐适应了这里的环境和学术氛围以后&#xff0c;除了与朋友们聚会聊天&#xff0c;就是准备好矿泉水和面包&#xff0c;到学校各个图书馆里去看书、找书、借书了。记得那是2013年春天的一个下午&#xf…

HLS+System Generator实现FIR低通滤波器

硬件&#xff1a;ZYNQ7010 软件&#xff1a;MATLAB 2019b、Vivado 2017.4、HLS 2017.4、System Generator 2017.4 1、MATLAB设计低通滤波器 FPGA系统时钟 50MHz&#xff0c;也是采样频率。用 MATLAB 生成 1MHz 和 10MHz 的正弦波叠加的信号&#xff0c;并量化为 14bit 整数。把…

Word(1):文章页码设置

1.需求 在文档的封皮页不设置页码&#xff0c;在目录页页码设置为罗马数字&#xff0c;在正文使用阿拉伯数字。 2.解决方法 step1&#xff1a; 在封皮页的最后&#xff0c;点击”插入“-分隔符-分节符&#xff08;下一页&#xff09; step2&#xff1a;在目录页的最后&…

掌握这5本书,转行程序员不再难

后台收到读者提问&#xff1a; 我想转行程序员&#xff0c;请推荐几本可以帮助我转行成功的书。 我自己也是大学毕业后&#xff0c;自学转行程序员的&#xff0c;走了很多的弯路。下面几本书&#xff0c;给了我很多帮助。 &#xff11;、推荐图书 以下是5本可以帮助你转行成为…

24届近3年上海电力大学自动化考研院校分析

今天给大家带来的是上海电力大学控制考研分析 满满干货&#xff5e;还不快快点赞收藏 一、上海电力大学 学校简介 上海电力大学&#xff08;Shanghai University of Electric Power&#xff09;&#xff0c;位于上海市&#xff0c;是中央与上海市共建、以上海市管理为主的全日…