软件过程管理
2021-01-09 19:10:16 1 举报
AI智能生成
软件过程与项目管理课程思维导图
作者其他创作
大纲/内容
软件/软件的过程
什么是软件?
程序
完成特定任务而执行的指令的有序集合
数据
被程序处理的信息
文档
记录的数据和数据媒体
软、硬件的区别
软件是一种逻辑的产品,与硬件产品有本质的区别
软件产品质量的体现方式与硬件产品不同
软件产品的成本构成与硬件产品不同
软件产品的失败曲线与硬件产品不同
软件的生产方式与硬件的制造不同
大多数软件仍然是定制产生的
软件特点
软件是一种逻辑产品,具有抽象性
使用无磨损
生产主要靠脑力劳动
软件的开发和运行必须依赖特定的计算机系统
具有可复用性
软件开发的问题及困难
软件的时间、质量、成本,软件开发经常是不能在规定的时间、固定的开发成本内完成规定的软件质量。
三要素:技术、人、过程
三要素:技术、人、过程
软件危机(多选题)
软件危机
软件生产能力和业务发展需求不相适应的现象
弱的软件生产能力和强的业务发展需求之间的矛盾
软件危机表现
开发过程随心所欲
时间计划和费用估算缺乏现实的基础
管理者主要在应付突发事件
对产品质量缺乏客观基础
软件开发的成败建立在个人能力基础上
软件危机怎么解决?/为什么会有软件工程?
提出了软件工程方法用来解决软件危机,主要是提高软件产品质量、提高生产率并且降低开发成本
项目的特征
时限性
目标确定
唯一性
资源和任务的相互依赖
软件项目的特点
技术难
项目复杂
开发周期短
软件要求高,集成程度大,需求变更快
软件的过程模型
过程模型的分类
基本过程:5个
需求过程
输入:系统需求文档/问题陈述
输出:需求规范
设计过程
输入:软件需求规范
输出:详细设计说明书
编码过程
输入:详细设计说明书
输出:可运行产品及软件说明书
测试过程
单元测试
集成测试
系统测试
验收测试
输出:测试报告
运维过程
输出:变更运维报告
支持过程:8个
文档过程
配置管理过程
质量保证过程
验证过程
确认过程
评审过程
审计过程
问题解决过程
管理/组织过程:5个
管理过程
基础设置过程
改进过程
运行过程
培训过程
每种过程内的各种子过程的输入是什么、输出是什么?
传统的过程模型有哪几种?
瀑布模型
特点
阶段间具有顺序性和依赖性
文档驱动的
当前阶段的结果是下一阶段的输入
时间和成本卡的不太死
缺点
不可逆,需求必须特别清楚
发现问题后的改正的代价太大
瀑布模型的变体
生鱼片模型
小程序模型
子项目模型
应用的行业
需求易于完善定义且不易变更的软件系统
增量模型
特点
任务或功能模块驱动,可以分阶段提交产品
有多个任务单,这些多个任务单的集合,构成项目的一个总任务书(总用户需求报告)
优点
让用户很早的用上软件的核心功能
每次增量交付过程中获取的经验,有利于后面的改进,客户也有机会对建立好的模型作出反应
项目失败率低
主要应用于哪些行业?
软件产品可以分批次地进行交付
待开发的软件系统能够被模块化
软件开发人员对应用领域不熟悉,难以一次性地进行系统开发
项目管理人员把握全局的水平较高。
目标是什么?
分批次将软件的各个功能模块完善并提交给用户
螺旋模型
特点
风险驱动
兼顾了快速原型的迭代的特征以及瀑布模型的系统化与严格监控
成本高
螺旋模型更适合大型的昂贵的系统级的软件应用
用于新兴领域
原型模型
特点
克服瀑布模型的缺点,减少由于软件需求不明确带来的开发风险
适合预先不能确切定义需求的软件系统的开发
开发人员和用户在需求上达成一致
缩短了开发周期,加快了工程进度
降低成本,提高开发速度
作用
特定场所
需求复杂、难以确定、动态变化的软件系统
分类
抛弃型原型
将原型用于开发过程的某个阶段,促使该阶段的开发结果
更加完整、准确、一致、可靠,该阶段结束后,原型随之作废
更加完整、准确、一致、可靠,该阶段结束后,原型随之作废
非抛弃型原型
将原型用于开发的全过程,原型由最基本的核心开始,
逐步增加新的功能和新的需求,反复修改反复扩充,
最后发展为用户满意的最终系统
逐步增加新的功能和新的需求,反复修改反复扩充,
最后发展为用户满意的最终系统
喷泉模型(有一个题)
特点
用户需求为动力、对象驱动
优点
可以提高软件项目开发效率,节省开发时间
适应于面向对象的软件开发过程
缺点
各个开发阶段是重叠的
随时可以回旋、随时可变
开发过程中需要大量的开发人员,不利于项目的管理
现代的过程模型
敏捷开发过程(好几个题)
指导思想/核心理念
基于适应而非预测
以人为导向而非过程导向
目标
快速、增量地发布软件
开发过程中的特点
不强调文档,强调可运行的软件片段
开发者与顾客之间的频繁沟通
快速开发、反馈、修改
连续不断的短周期迭代
灵活
规范软件过程特点
强调计划驱动
人之初性本恶
敏捷的宣言
个人与交流 胜于 开发过程和工具
可运行的软件 胜于 面面俱到的文档
客户协作 胜于 合同谈判
响应变化 胜于 按部就班遵循计划
人的行为/特征归类为 人性本善、人性本恶和中立(题)
极限编程
基本特征
增量和反复式的开发----一个小的改进跟着一个小的改进
反复性,通常是自动重复的单元测试,回归测试
在程序设计团队中的用户交互
......
RUP
是一种流行的、构造面向对象系统的、迭代式软件开发过程
从三个视角来描述过程
动态视角
静态视角
实践视角
RUP的九个具体过程
6个过程工作流
业务建模
需求
分析设计
实现
测试
部署
3个支持工作流
配置和变更管理
项目管理
环境
软件的管理模型
敏捷开发的过程管理模型
Scrum
三个文档和四个会议
三个文档
产品待办事项列表
迭代待办事项列表
燃尽图
四个会议
计划会
站立会议
审计会议
回顾会议
人性本善
适用于小型项目或者十几个人的小团队
CMMI:用于管理大型项目,人性本恶,提前制定好规章制度和奖惩措施
过程域
阶梯式
特点
基于考验的分组和过程次序来实现构造
把过程域分为5个成熟度等级,指出达到每个等级必须实施哪些过程域
提供一个阶段式过程改进的建议顺序
五个等级的名字和特征
初始级
过程通常是混乱的
组织的成功往往依赖于组织中个人的能力和拼搏精神
管理级
组织已完成第2级所有过程域的特定目标和共性目标
组织的项目已经确保需求是被管理的
项目管理过程被文档化和遵循
以往项目的成功实践可以重复
定义级
组织已经完成第2级和第3级的所有过程的特定目标和共性目标,工程过程都已经详尽的说明
整个软件过程具有可视性、一致性、稳定性和可重复性
整个过程中,产品的生产是可视化的
定量管理级
组织已达到成熟度第2级、第3级和第4级的所有过程域的特定目标和共性目标
建立质量和过程绩效的量化目标,并以该目标为管理过程的准则。
具有良好的风险管理
优化级
组织已经达到成熟度第2级、第3级、第4级和第5级所有过程域的特定目标和共性目标
第五级专注于持续改进过程绩效
追求新技术、利用新技术,实现软件开发中的方法和新技术的革命
连续式
特点
应用灵活
将过程域分为4大类型
过程域又分为基础的和高级的
CMMI第2等级
过程域 PA
必须的
特定目标
共性目标
期望的
特定实践
共性实践
提供信息的
详细解释
典型工作产品
子实践
学科扩充
详细说明
关键过程域(7个)
需求管理(REQM/RM)
目标:管理需求 5个实践
获得需求的理解
获得对需求的承诺
管理需求变更
维护需求的双向可跟踪矩阵
识别工作产品和需求的不一致性
项目规划(PP)
目标
建立估算 4个实践
估算项目的范围
估算工作产品及任务的属性
定义项目生命周期
决定工作及成本估算
编制项目计划 6个实践
建立预算及进度
识别项目风险
策划数据管理
策划项目资源
策划干系人的参与
建立项目计划
获取对计划的承诺 3个实践
对影响项目的计划进行评审
调和工作及资源水平
获取对计划的承诺
项目监控(PMC)
目标
按计划监控项目 7个实践
监控项目计划参数
监控承诺
监控项目风险
监控数据管理
执行里程碑审查
执行过程评审
监控干系人参与
管理纠正措施至关闭 3个实践
分析问题
采取纠正行动
管理纠正行动
过程和产品质量保证(PPQA)
目标
客观评价过程和产品
客观评价过程
客观评价工作产品和服务
提供客观评价
沟通不符合问题确保得到解决
建立记录
度量分析(MA)
目标
分析度量和分析活动
建立度量目标
详细说明度量
详细说明数据收集和存储过程
详细说明分析过程
提供度量结果
收集度量数据
分析度量数据
存储数据和结果
提交结果
目的
开发和维护度量能力,以支持对管理信息的需要
配置管理(CM)
目标
建立基线
识别配置项
建立配置管理系统
建立和发布基线
跟踪和控制变更
跟踪变更需求
控制配置项
建立完整性
建立配置管理记录
执行配置审计
软件配置管理活动
配置识别
变更控制
配置状态统计
配置审计
配置管理的目的
建立和维护工作产品的完整性
主要任务
识别在指定时间形成基线的产品配置
控制配置项变更
由配置库构建和发布产品
提供精确的配置状态
维护在整个软件生命周期中配置的完整性和可跟踪性
基线(Baseline)
由一组配置项组成,这些配置项构成了一个相对稳定的整体
基线中的配置项被“冻结”了,不能再被任何人随意修改
通常对应于项目/开发过程中的里程碑,一个产品可以有多个基线,也可以只有一个基线
是项目储存库中每个工件版本在特定时期的一个“快照”
对基线的更改必须遵循变更控制规程
“放行”基线
交付给外部顾客的基线
“构造”基线
内部使用的基线
配置项和基线的主要属性
名称
标识符
版本
日期
......
大题:软件全生命周期中,分为早期阶段(制定规章制度、人员配置、配置项划分)、中期(开发)、
后期(集成、测试),怎么设置你的配置管理?各阶段的主要工作或者说是侧重点是什么?
后期(集成、测试),怎么设置你的配置管理?各阶段的主要工作或者说是侧重点是什么?
在软件开发的早期阶段,我们的主要工作是明确相关的项目需求。获取对需求的理解,承诺,并对需求的变更进行管理,维护双向可追踪矩阵,识别需求和工作产品的不一致之处。在此基础上,我们的配置管理重点是对配置项进行识别,只有识别配置项之后,才能相适应的建立配置管理系统,然后根据部分配置项来建立和发布基线,为后续的开发打下基础。
在软件开发的中期阶段,我们的主要工作是集中在软件开发和对客户提出来的变更进行配置管理。基于此,我们工作的重点应聚焦在跟踪和控制变更。根据开发过程中自身发现的问题和客户所提出来的变更进行跟踪,控制相应需要改变的配置项。确保整个项目和流程是在受控制的状态下进行。
在软件开发的后期阶段,我们的主要工作为测试工作,测试工作此时主要为集成测试,系统测试和验收测试。在测试流程中将产生大量的测试报告,同时此过程中对软件的变更流程将会更加严格,在跟踪变更申请和控制配置项的基础上,建立配置的完整性。通过配置管理管理系统建立配置管理记录,形成报告,并对配置管理记录进行配置审计最终生成审计结果。
0 条评论
下一页