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