软件过程与管理知识回顾以及个人总结
软件过程与管理知识回顾及个人总结
一、概论
- 软件工程的三要素。
软件工程以关注软件质量为目标,包括过程、方法和工具三个要素
过程:支持软件生命周期的所有活动
方法:为软件开发过程提供“如何做”的技术
工具:为软件开发方法提供自动的或半自动的软件支撑环境
- 软件过程的定义。
软件过程是用于软件开发及维护的一系列活动、方法及实践。
软件工程的定义
将系统性的、规范化的、可定量的方法应用于软件的开发、运行和维护,即工程化应用到软件上。
- 常见的软件过程分类。常见的软件过程。
IEC12207软件过程分类:主要过程,支持过程,组织过程
ISO/IEC15504软件过程分类:客户-供应商过程,工程过程,支持过程,管理过程,组织过程。
二、软件质量管理
- 软件质量的定义。
软件质量是软件产品满足明确或隐含需要能力的性能和特性的总体。
2. 软件度量
对软件开发项目、过程及其产品进行定量化的过程,目的在于对其加以理解、预测、评估、控制和改善。
- ISO/IEC 9126的结构
4.六个一级质量特性
①功能性,与一组功能及其指定性质有关的一组属性;
②可靠性,与在规定的一段时间和条件下,软件维持其性能水平的能力有关的一组属性;
③易使用性,与一组规定或潜在的用户为使用软件所需做的努力和对这样的使用所做的评价有关的一组属性;
④效率,与在规定的条件下,软件的性能水平与所使用资源量之间关系有关的一组属性;
⑤可维护性,与进行指定的修改所需的努力有关的一组属性;
⑥可移植性,与软件可从某一环境转移到另一环境的能力有关的一组属性。
5.一级特性对应的二级特性(理解)。
- 朱兰质量管理三部曲。
质量计划:确定项目应达到的质量标准,以及如何满足质量标准的计划安排和方法
质量保证:确保项目达到有关标准,而开展的有计划、有组织的工作活动
质量控制:是确定项目结果与质量标准是否相符,并及时纠正产品缺陷的过程。
质量计划方法:试验设计、基准对照、质量成本分析(CoQ)、流程图方法、因果分析图
质量保证方法:正规的质量评价(质量审计);通常在项目执行的过程中进行
总结性质量评价(质量改进):通常在项目结束时进行
质量控制方法:
静态方法:评审(技术评审、代码评审)
动态方法:测试(单元测试、集成测试、确认测试)
缺陷跟踪
4.缺陷密度
缺陷率=缺陷数/软件大小
两个计算方式(通常千行源代码数KLOC、功能点)
5.ISO9126-1:2001 一级特性(10个)
内部质量和外部质量
功能性、可靠性、有效性、可维护性、可移植性和可使用性
使用质量
有效性、生产率、安全和满意度
6.质量管理
质量管理是指确定质量方针、目标和职责,并通过质量体系中的质量策划、控制、保证和改进来使其实现的全部活动。
7.质量成本
质量成本是为了达到产品或服务的质量而付出的所有努力的总成本
包括三部分
预防成本:为防止将缺陷引入软件而进行的预防工作所消耗的费用
评价成本:检查软件是否包含缺陷的功能所消耗的成本
失效成本:修复缺陷工作所消耗的成本
三、软件项目管理
- 基本概念:
项目;
项目是为完成某一独特的产品、服务或成果所做的一次性努力
项目管理;
项目管理就是在项目活动中运用相关知识、技能、工具和技术满足项目的要求。
项目管理的五大过程组;
启动、计划、执行、控制和收尾
项目管理的十大知识领域。集范时成质,人沟风采利
项目集成管理
项目范围管理
项目时间管理
项目成本管理
项目质量管理
项目人力资源管理
项目沟通管理
项目风险管理
项目采购管理
项目利益相关者管理
2.软件的特点
复杂性、可变性、不可见性
- 可行性分析:
给定贴现率R计算公式为:净现值=
1.0/(1+r)t为第t年的贴现因子
一般的,初始投资是没有贴现的。
净现值的优点。
第一,适用性强,能基本满足项目年限相同的互斥投资方案的决策。
第二,能灵活地考虑投资风险。
使得净现值为0的贴现率称之为内部回报率。
内部回报率不唯一,采用最低值,不会做内部回报率低于利率的项目。
4.成本效益评价技术
净利润:在项目的整个生命周期中总成本和总收入之差
缺点:(1)没考虑到投入的成本(2)没考虑到现金流的时限
回收期:收支达到平衡的时间
优点:计算简单
缺点:忽略了收益的大小,仅要求项目收支平衡即可。
投资回报率
公式:ROI=(平均年利润/总投入)*100
优点:计算简单
缺点:没考虑现金的时限,没考虑利率和利息
净现值
内部回报率
5.识别软件项目的活动:WBS。任务分解结构
WBS是面向交付成果的对项目任务的分组,它组织并定义了整个项目范围。它是一个分级的树形结构,是对项目由粗到细的分解过程。
6.项目计划的关键步骤:
工作量估计、识别项目的任务(活动)、资源进度安排、风险计划
- 软件工作量估计方法:常见的软件工作量估计方法,记住名称,并理解每个方法。
- 软件项目的进度安排:甘特图、关键路径法、关键链法、PERT技术。(关键路径法必须全面理解掌握,只需要掌握活动节点,活动箭头不需掌握;后两种方法了解,能够了解计算步骤)
(1) http://www.doc88.com/p-5763050345476.html
(2) https://wenku.baidu.com/view/6368fe9e51e79b8968022620.html
(3) http://www.cnitpm.com/pm/5933.html
7.关键路径法CMP
缺点:活动周期是确定的,固定不变的,与现实不太符合
8. 软件项目的资源管理:
资源定义:资源是执行项目所需要的任何项和人
资源分配直方图。
9.软件项目的风险管理:
风险的定义:一个不确定的事件或者情况,若其一旦发生,会对项目的目标,例如,范围、进度、成本和质量,产生积极或消极的影响。
风险是未来可能发生的问题,而不是当前已经发生的事情。
风险的三要素:事件、事件发生的概率、事件的影响。
风险的基本性质:客观性、不确定性、不利性、可变性、相对性、同利益的对称性。
风险管理的框架
风险识别、风险分析与优先排序、风险策划、风险监督
风险处理的方法。
避免、预防、自保转移风险
9.PERT技术
考虑到了进度管理中的风险,将不确定性引入到了进度管理中
对活动周期进行了三次估计(最可能的时间,乐观的时间,悲观的时间),不再是CPM中的确定值
(1)估计每个活动的最可能时间,乐观时间,悲观时间,计算活动的期望周期与标准偏差。
(2)正向遍历得到期望达到事件的日期
(3)满足目标的可能性
10.软件项目的监督和控制:挣值分析。
(1) https://wenku.baidu.com/view/7bcf90280066f5335a81211b.html
(2) https://blog.csdn.net/pmpljp/article/details/19299077
11.软件项目的配置管理:
是指一套管理软件开发和维护过程中所产生的各种中间软件产品的方法和规则。它是控制软件系统.演变的学科
配置管理的任务
标志变更、控制变更、确保变更正确实现、向受变更影响的组织和个人报告变更
配置项。
配置项:软件配置管理的对象,一个软件配置项是项目中一个特定的、可文档化的工作产品集。例如,程序,文档等
四、经典的软件过程管理
- CMM/CMMI
(1) CMM(软件过程能力成熟度模型):
CMM不是过程,不是技术,不是方法。是一种理念,一种指导思想。说明做什么,不是说明如何去做或者谁做
出发点:
描述软件组织一条从无序的、混乱的过程到成熟的、有纪律的过程的改进途径,描绘出软件组织如何增加对软件开发和维护的过程控制,如何向软件工程和管理的优秀文化演变等方面的指导。
体系结构
关键过程域KPA:
一系列相互关联的操作活动,标识了达到某个成熟度级别时所必须满足的条件
CMM一共有18个KPA,每一级都有自己的KPA,分为三大类:管理过程、组织管理和工程过程
关键实践活动。
描述对KPA的有效实施和制度化起最重要作用的基础设施和活动。
(2) CMMI与CMM的区别和联系
CMMI的两种表示方法
阶段式:作为整个组织已建立的一个过程域集合
优点:提供一个预定义的组织级改进的路线图,基于一组过程,其组成和顺序及相关的组织关系已证明
从SW-CMM转移过来的常见结构
连续式:作为单一过程域或者过程域集合
优点:根据商业目标及目的,选择所关注的特定过程域,为过程改进提供最大的灵活性
从系统工程社团转移过来的常见结构
- PSP:
PSP注重于个人的技能,能够指导软件工程师如何保证自己的工作质量,估计和规划自身的工作,度量和追踪个人的表现,管理自身的软件过程和产品质量
结构
两种日志:时间记录日志、缺陷记录日志
评审比测试有效的原因
四个设计模板:操作规格模板、功能规格模板、状态规格模板、逻辑规格模板
- 软件过程模型:
瀑布模型:适用于需求可变性小的,早期可以完全定义的
缺点:每个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量;开发过程中很难响应客户的变更要求;早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重的后果。
快速原型模型:快速响应用户的变化,快速和哟用户进行沟通交流
优点:加强用户和软件人员之间的沟通,明确系统的需求;尽早得到系统可用性的反馈信息,及时修改以获得完整、正确需求
缺点:用户会由于看到的原型系统不完善,而对产品产生怀疑;可能为了快速开发原型系统,而采用未经充分论证的技术(如操作系统平台、主要的算法)导致质量低下。
增量模型:每次交付一部分
螺旋模型:大型、负责的系统。将原型和瀑布合在一起。强调风险评估
形式化方法模型:公式化、数学化。安全可靠保密性极高
基于组件的开发模型:可重用
- MSF(Microsoft Solution Framework微软解决方案框架):
六个角色:产品管理、程序管理、开发、测试、发布管理、用户体验
过程模型中的五个阶段:构思、计划、开发、稳定、部署
- RUP(Rational Unified Process 统一软件开发过程):
特点:用例驱动、以构架为中心、采用迭代和增量模型
九个软件过程:
6个核心过程:商业建模、需求、分析和设计、实现、测试、部署
3个核心辅助:配置和变更管理、项目管理、环境
四个阶段:初始、细化(关键)、构造、移交
六大经验:迭代式开发、管理需求、基于组件的体系结构、可视化建模、验证软件质量、控制软件变更
五、敏捷软件开发
敏捷开发是一种思维方式和软件过程方法论
敏捷开发是有一些业界还价针对一些企业现状提出了一些让软件开发团队具有快速工作、响应变化能力的价值观和原则。
- 敏捷宣言。
注重个人及互动胜于过程和工具
注重可用的软件胜于详尽的文档
注重客户协作胜于合同谈判
注重相应变化胜于恪守计划
- 常见的敏捷软件过程,SCRUM和极限编程。
SCRUM:是一个敏捷开发框架,是一个增量的、迭代的开发过程
极限编程XP:是一种全新而快捷的软件开发方法。XP团队使用现场客户、特殊计划方法和持续测试来提供快速的反馈和全面的交流。这可以帮助团队最大化地发挥他们的价值。
层次关系从大到小是:敏捷过程>极限编程>SCRUM