2018.7.7日更新:添加黄色背景的知识需要重点掌握哦。
人机交互的考试结束啦,最近找出了很久没有过的一副耳机,发现音效好棒,脑袋里居然想起了交互设备的语音交互设备,耳机从单声道演变成多声道,四声道耳机可以更好实现三位立体音效;看到手机屏幕,开始翻小米的官网,想知道究竟是哪种LED屏;最近在一些学校的网站报名夏令营,有些网站没有保存的功能,第一反应是这个网站应该设计的减轻用户记忆的嘛……每门课程结束之后,无论最后的成绩如何,总会有意想不到的收获。
今天开始复习《软件过程管理》啦,我们学校使用的教材是清华大学出版社朱少民老师等人编写的《软件过程管理》(不知道能否猜到我是哪个学校的),于是一边看书,一边整理。那就还是从第一章开始吧。
软件过程管理可以为快速开发高质量软件、有效地维护软件运行等各类活动提供指导性框架、实施方法和最佳实践。软件过程规范可以保证过程活动的一致性、有效性和持续性。
第一章 软件过程规范
一、软件过程
1.过程定义
能力成熟度模型(Capacity Maturity Modal CMM)定义过程是用于软件开发及维护的一系列活动、方法和实践。
过程是指一组将输入转化为输出的相互关联或相互作用的活动,活动由输入、实施活动和输出三个环节组成。
过程一般可以分为:产品实现过程、管理过程和支持过程。
2.软件过程的分类
●ISO/IEC12207:基本、支持、组织过程
(1)基本过程:软件获取、供应、开发、运行和维护过程,包括了需求分析、软件设计和编码。
(2)支持过程:对软件的主要过程提供支持的过程,包括了文档编制、配置管理、质量保证、验证和确认、评审过程。
(3)组织过程:对软件主要过程和支持过程的组织保证过程,包括了管理、基础设施、改进、培训过程。
●ISO/IEC15504:工程、支持、管理、组织、客户-供应商
(1)工程过程:软件系统、产品的定义、设计、实现和维护 核心
(2)支持过程:被其他任何过程采用的、起到辅助作用的过程
(3)管理过程:提供指导、跟踪和监控的过程 关键
(4)组织过程 基础
(5)客户-供应商过程
3.软件过程定义的层次性
公用(通用)软件过程——组织标准软件过程——项目自定义的软件过程
二、过程规范
软件过程管理的目的就是最大限度地提高软件产品的质量与软件开发过程的生产率(依赖于过程、人和技术)。
1.软件过程规范的定义
过程规范就是对输入/输出和活动所构成的过程进行明文规定或约定俗成的标准。软件过程规范是软件开发组织行动的准则与指南,可以依据上述各类过程的特点而建立相应的规范,如软件基本过程规范、软件支持过程规范和软件组织过程规范。
软件过程规范是人们需要遵守的约定和规则,包括已经定义的操作方法、流程和文档模板。
2.软件过程规范的建立
软件过程规范是建立在软件组织之上,充分地结合软件组织的实际情况(如规模、行业和开发模式等),尽力地吸收先进的软件过程模型、过程框架或过程模式所包含的软件工程思想、方法及实践,引入适用的技术和工具,为软件开发和维护建立一部详细、可操作的过程指南。
可以借鉴的过程或模式有:
软件能力成熟度模型CMM、个体软件过程PSP、团队软件过程TSP、能力成熟度模型集成CMMI、RUP:IBM-Rational统一过程、极限编程XP、微软解决方案框架MSF
PSP:个体软件过程,是一种可用于控制、管理和改进个人工作方式的自我持续改进过程,是一个包括软件开发表格、指南和规程的结构化框架。
CMM:软件能力成熟度模型:用于评估和改进软件组织的过程能力。
TSP:团队软件过程,建立在个体软件过程之上,致力于开发高质量的产品,建立、管理好授权项目小组,产生开发团队过程、提高开发团队能力的指导性框架。
CMMI:能力成熟度模型集成,是在CMM的基础上,将现有的各种能力成熟度模型集成到一个框架中去,包含了健全的软件开发原则。
极限编程:XP,为适应快速地需求变化而积累的最佳实践,但需要适度实践。
3.软件过程规范的作用(积极影响和消极影响)
积极:
1) 帮助团队实现共同的目标;
2) 一个规范的软件过程必能带来稳定的、高水平的过程质量,确保产品的高质量;
3) 帮助确定目标产品的质量标准与特性,与用户达成共识,项目成员接受相应的培训,每个成员清楚知道产品的质量标准与特性,从而容易建立一致、稳定和可靠的而质量水平。
4) 使得软件组织的生产效率更高;过程规范执行的结果使得团队具有统一、协调、规范的行动与工作方式。
消极:可能会对过程的创新、技术创新有约束,产生消极影响。
规范的过程是达到软件开发目标、提高质量的必要条件,不是充分条件。过程规范可以保证正确地做事,但不能保证做正确的事情。
三、软件生命周期的过程需求
软件声明周期是软件获取、供应、开发、运行和维护的过程,ISO/IEC15504定义软件过程是:工程过程、支持过程、管理过程、组织过程和客户-供应商过程。
●工程过程:软件系统、产品的定义、设计、实现以及维护的过程。
1) 开发过程:需求分析、软件设计和编程
需求分析:定义功能、非功能需求
软件设计:数据结构、应用接口、模块、算法和界面设计
编程:开发可运行的软件单元
集成与测试:
2) 运行过程:软件部署
规定软件产品的运行和对用户的操作支持的各种活动,涉及到用户环境或产品运行环境的测试、部署、操作和支持。
3) 维护过程:修改、变更
保持系统操作完整性的前提下,对系统进行变更、移植与升级,包括硬件、软件、操作手册和网络等方面的维护。
●支持过程:文档编制、配置管理、质量保证、验证、确认、联合评审、审核、问题解决
a)文档编制 documentation process
记录软件生命周期过程产生的信息所需的活动。
b) 配置管理 Software Configuration Management SCM
包括了配置标识、配置控制、配置状态统计、配置评价、发行管理和交付。
c) 质量保证 Quality Assurance QA
工作产品以及活动遵循相应的标准和规范,包含了产品质量保证、过程质量保证、质量体系保证。
d) 验证 Verification
依据需求定义和产品规范,确定软件产品满足所给的要求和条件。
e) 确认 Validation
判断产品实现的功能、特性满足用户的实际需求。
f) 联合评审 review:供需双方共同参加
g) 审核 audit 内审
h) 问题解决 problem solution
●管理过程 指导、跟踪和监控
1) 项目管理过程 Project Management Process PMP
包括软件基本过程的范围确定、策划、执行和控制、评审和评价
2) 质量管理过程 Quality Management Process QMP
对项目产品和服务的质量加以管理,从而获得最大的客户满意度
3) 风险管理过程 Risk Management Process RMP
对风险不断的识别、诊断和分析,回避风险、降低风险或消除风险,并在项目以及组织层次上建立有效的风险管理机制
4) 子合同商管理过程 Sub-contractor Management Process SCMP
选择合格的子合同商并对其进行管理的过程
●组织过程
建立和实现相关的生命周期过程和热源组成额基础结构并不断改进结构的过程。
a) 业务规划过程 Bussiness Planning Process BPP
b) 定义过程 Definition
c) 改进过程 improvement of process
d) 人力资源和培训过程 Human Resource & Training Process HRTP
e) 基础设施过程 infrastructure
●客户-供应商过程CUS
内部直接影响到客户、外部直接影响开发、向客户交付软件以及软件正确操作与使用的过程。
1) 获取过程 acquisition
该过程的成功实施会导致最终生成一个明确的合同或条约,清楚地描述出客户与供应方的期望、职责与义务。
2) 客户需求管理过程 Customer Requirement Management Process CRMP
针对不断变化的客户需求加以收集、处理和跟踪,并建立软件需求的基准线,以作为项目中软件开发活动过程和产品度量和变更管理的基础。
3) 供应过程 supplying
按照客户、事先规定的要求对软件进行包装、发布与安装的活动过程
4) 软件操作过程 operation
5) 客户支持过程 Customer Support Process CSP
四、软件生命周期标准
最具有代表性的是ISO标准体系和IEEE标准体系。ISO标准体系:ISO/IEC12207 、ISO/IEC15504。
五、软件过程建模
开发过程模型化:为了更好的理解软件开发过程的特性,跟踪、控制和改进软件产品的开发过程。使用模型可以从全局上把握系统的全貌以及相关部件之间的关系。
软件过程模型描述了软件过程要素(活动、资源、角色、过程产品)以及要素之间的关系,描述的方法和工具:UML、IDEF3、Agent等。
转载自原文链接, 如需删除请联系管理员。
原文链接:《软件过程管理》 第一章 软件过程规范,转载请注明来源!