软件工程导论(13)
第13章 软件项目管理
13.1 估算软件规模
代码行技术
特点:比较简单的定量估算软件规模的方法
优点:代码是所有软件开发项目都有的“产品”,而且很容易计算代码行数
缺点:
1)仅是软件配置的一个成分,用它的规模代表整个软件的规模并不合理;
2)不同语言实现,代码行数不同
3)不适用于非过程语言
功能点技术
概念:对软件信息域特性和软件复杂性的评估结果,估算软件规模(使用功能点FP为单位度量软件规模)
信息域5特性:输入项数(Inp)、输出项数(Out)、查询数(Inq)、主文件数(Maf)、外部接口数(Inf)
*估算功能点的步骤:
- 计算未调整的功能点数UFP
- 计算技术复杂性因子TCF
- 计算功能点数FP
FP=UFPxTCF
13.2 工作量估算
工作量估算单位:人月
*静态单变量模型
总体形式:
(A、B、C是常数,ev是估算变量,E是以人月为单位的工作量)
*动态多变量模型
形式:
(是以人月为单位的工作量、t是以月或年为单位的项目持续时间、B是特殊技术因子、P是生产率参数)
启示:开发同一个软件,延长项目持续时间可降低完成项目所需的工作量
*COCOMO2模型
与COCOMO模型相比,改动有:新增加了4个成本因素、略去了原始模型中的两个成本因素、增加某些成本因素的影响降低另一些成本因素的影响
13.3 进度计划
估算开发时间
Brooks规律描述的现象:向一个已经延期的项目增加人力,只会使得它更加延期
*项目规模与项目组总生产率的关系:(给定L、l、r,存在最佳项目组规模P使得总生产率最高)
Gantt图
作用:制定进度计划的工具
工程网络图
用箭头代表作业,圆圈代表事件
事件不占事件和资源,作业占时间和资源
估算工程进度:圆圈中加入最早开始时间EET和最迟发生时间LET,估计出EET和LET
关键路径:EET=LET的事件连成的路径,这些事件必须准时发生
13.4 人员组织
民主制程序员组
组员完全平等,相互协商共有n(n-1)/2条信道
多用于开发人员大多经验丰富的情况下
主程序员组
用经验技术好的程序员作为主程序员,其它组员只用和主程序员交流
多用于开发人员大多缺乏经验的情况下
缺点:主程序员难找
现代程序员组
取消主程序员的大部分行政管理工作,把民主制程序员组合主程序员组的优点结合起来
13.5 质量保证
软件质量
概念:软件与明确和隐含地定义的需求相一致的程度
软件质量保证措施
软件质量保证措施(SQA):
- 技术复审
- 走查
- 审查
早期发现错误的好方法 - 程序正确性的证明
13.6 软件配置管理
概念:软件配置管理是在软件的整个生命期内管理变化的一组活动
目标:使变化更正确且更容易被适应,在必须变化时减少所需花费的工作量
软件配置
软件配置项:应用于整个软件过程的软件质量保证活动
基线:
有助于人们在不严重妨碍合理变化的前提下来控制变化
可以作为进一步开发的基础,只有通过正式的变化控制过程才能改变它(软件需求规格书是一个基线)
软件配置管理过程
5项任务:标识、版本控制、变化控制、配置审计、状态报告
13.7能力成熟度模型
概念:用于评价软件机构的软件过程能力成熟度的模型
能力成熟度由低到高的5级:
- 初始级
软件过程的特征是无序的,有时甚至是混乱的 - 可重复级
建立了基本的项目管理过程(过程模型),可跟踪成本、进度、功能、质量 - 已定义级
已定义了完整的软件过程(过程模型),软件过程已经文档化和标准化 - 已管理级
软件过程可度量,能在可度量的范围内运行 - 优化级
软件过程是可优化的
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律