1、1/154 软件的概念与特点软件的概念与特点 软件危机软件危机 软件工程软件工程 软件生命周期软件生命周期 软件过程软件过程 敏捷软件开发敏捷软件开发 CASE工具与环境工具与环境第一章第一章 软件工程概述软件工程概述水利工程水利工程建筑工程建筑工程机械工程机械工程 本章将介绍软件的地位和作用、软件的特点、软件本章将介绍软件的地位和作用、软件的特点、软件 的发展、软件危机、软件工程、软件生命周期以及软件的发展、软件危机、软件工程、软件生命周期以及软件过程等方面的问题和基本概念过程等方面的问题和基本概念传统工程传统工程新兴工程新兴工程气象工程气象工程生物工程生物工程1.1 软件的概念与特点软件的
2、概念与特点1 1、软件、软件softwaresoft+ware软制品软制品(软体软体)软件是计算机系统中与硬件相互依存的另一部分。软件是计算机系统中与硬件相互依存的另一部分。它包括它包括程序、数据程序、数据及其相关及其相关文档文档的完整集合。的完整集合。2 2、软件特点、软件特点 软件是一种逻辑实体,而不是具体的物理实体软件是一种逻辑实体,而不是具体的物理实体 软件的生产与硬件不同软件的生产与硬件不同 在软件的运行和使用期间,没有硬件那样的机械在软件的运行和使用期间,没有硬件那样的机械 磨损,老化问题磨损,老化问题磨合磨合调整调整磨损磨损用坏用坏修改点修改点实际曲线实际曲线理想曲线理想曲线硬件
3、失效率曲线硬件失效率曲线时间时间失失效效率率时间时间失失效效率率软件失效率曲线软件失效率曲线 软件的成本相当昂贵软件的成本相当昂贵软件技术的发展落后于需求软件技术的发展落后于需求时间时间软软件件复复杂杂性性软件需求软件需求差距差距软件技术软件技术硬、软件成本比例的变化硬、软件成本比例的变化年份年份成本成本%1950197019851995硬件硬件3 3、软件的分类、软件的分类系系统统软软件件支支撑撑软软件件应应用用软软件件支撑软件 按开发软件所需的按开发软件所需的 人力、时间以及完成的人力、时间以及完成的 源代码行数。源代码行数。类别类别参加人数参加人数研制期限研制期限产品规模产品规模(源代码
4、行数源代码行数)软件项目开发软件产品开发上个世纪上个世纪60年代开始显现出来年代开始显现出来的的“软件危机软件危机”催生了催生了“软件软件工程工程”这门指导计算机软件开这门指导计算机软件开发和维护的工程学科。发和维护的工程学科。1、什么是软件危机、什么是软件危机软件危机是指在计算机软件的软件危机是指在计算机软件的开发和维护过程中所遇到的一系列开发和维护过程中所遇到的一系列严重问题。严重问题。1.2 软件危机软件危机2、产生软件危机的原因产生软件危机的原因 软件缺乏软件缺乏“可见性可见性”。对用户需求没有完整准确的认识、不能适应用户对用户需求没有完整准确的认识、不能适应用户需求的变化。需求的变化
5、。缺乏对软件产品和开发过程的质量控制。缺乏对软件产品和开发过程的质量控制。软件本身的可维护性差、开发商缺乏对维护的重视软件本身的可维护性差、开发商缺乏对维护的重视和准备、缺乏正确的维护方法。和准备、缺乏正确的维护方法。导致导致“对软件开发成本、工作量、进度的估计对软件开发成本、工作量、进度的估计不准确不准确”;导致导致“用户对用户对已完成的已完成的软件系统不满意的软件系统不满意的现象经常发生现象经常发生”;导致导致“软件产品的质量往往靠不住软件产品的质量往往靠不住”;导致导致“软件常常不可维护软件常常不可维护”;开发、维护过程中文档化工作做得不好、缺乏配开发、维护过程中文档化工作做得不好、缺乏
6、配置管理。置管理。硬件成本逐年下降,但软件成本居高不下。硬件成本逐年下降,但软件成本居高不下。近近10来年,软件开发生产率有较大的提高,但计来年,软件开发生产率有较大的提高,但计算机应用普及深入的速度更快。算机应用普及深入的速度更快。导致导致“软件通常不具有良好一致性的文档资料软件通常不具有良好一致性的文档资料”;导致导致“软件成本在计算机系统总成本中所占的软件成本在计算机系统总成本中所占的比例逐年上升比例逐年上升”;导致导致“软件开发生产率提高的速度,跟不上计软件开发生产率提高的速度,跟不上计算机应用普及深入的速度算机应用普及深入的速度”。3、解决软件危机的途径解决软件危机的途径首先,应该对
7、软件产品、系统有一个正确的认识首先,应该对软件产品、系统有一个正确的认识。软件不仅仅是程序软件不仅仅是程序。IEEE对软件的定义:对软件的定义:Computer programs,procedures,associated documentation and data pertaining to the operation of a computer system.应该充分认识软件开发是一种应该充分认识软件开发是一种组织组织良好、良好、管理管理严密严密、各类人员各类人员协同配合、共同完成的工程项目。协同配合、共同完成的工程项目。应该总结软件开发的成功经验,应用应该总结软件开发的成功经验,应用软
8、件软件工程领域的先进思想、原理、方法、技术工程领域的先进思想、原理、方法、技术(针对具体公司、项目进行定制)。(针对具体公司、项目进行定制)。最后,应该(开发)、采用适当的软最后,应该(开发)、采用适当的软件件工具工具,尤其是,尤其是CASE工具,来帮助完成软工具,来帮助完成软件开发工作。件开发工作。1.3 软件工程软件工程1、软件工程介绍软件工程介绍软件工程是指导计算机软件开发和维护的一门软件工程是指导计算机软件开发和维护的一门工程学科。工程学科。采用工程的概念、原理、技术和方法来开发和维护采用工程的概念、原理、技术和方法来开发和维护软件,并融合其他学科、行业(如:管理、建筑、客户服软件,并
9、融合其他学科、行业(如:管理、建筑、客户服务)的原理、技术和经验,以规范、高效、可度量、可管务)的原理、技术和经验,以规范、高效、可度量、可管理地开发出高质量的软件并维护它。理地开发出高质量的软件并维护它。“经济经济”?软件工程特性:软件工程特性:更多关注大型程序的构造;更多关注大型程序的构造;关注对复杂性、风险的控制,关注可度关注对复杂性、风险的控制,关注可度量、可管理性;量、可管理性;重视软件系统的变化,要求软件系统对重视软件系统的变化,要求软件系统对变化的适应性,要求变动控制;变化的适应性,要求变动控制;强调软件开发的效率(涉及方法、工具强调软件开发的效率(涉及方法、工具););强调合作
10、开发、团队协作、沟通强调合作开发、团队协作、沟通 重视用户(需求、反馈、技术支持等)重视用户(需求、反馈、技术支持等),重视和用户的交流;强调软件系统应,重视和用户的交流;强调软件系统应能为用户提供价值、可用性;能为用户提供价值、可用性;强调开发团队应具备相关行业的业务知强调开发团队应具备相关行业的业务知识、建立系统语境、通过有效沟通准确识、建立系统语境、通过有效沟通准确捕获用户需求。捕获用户需求。2、软件工程的基本原理软件工程的基本原理Barry W.Boehm总结既有的软件工程准总结既有的软件工程准则,提出了则,提出了7条软件工程条软件工程基本原理基本原理:1 用分阶段的生命周期计划严格管
11、理用分阶段的生命周期计划严格管理;2 坚持进行阶段评审坚持进行阶段评审;3 实行严格的产品控制(配置管理)实行严格的产品控制(配置管理);4 采用现代(先进的)程序设计技术采用现代(先进的)程序设计技术;5 结果应能清楚地审查结果应能清楚地审查;6 开发小组的成员应该少而精开发小组的成员应该少而精;7 承认不断改进软件工程实践的必要性承认不断改进软件工程实践的必要性;3、软件工程的方法学软件工程的方法学通常把在软件生命周期全过程中使用的一通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学整套技术方法的集合称为方法学methodology。软件工程方法学包含软件工程方法学包含3个要
12、素:方法、工具个要素:方法、工具和过程。和过程。*软件工程传统途径软件工程传统途径(传统方法学)把软件生命周期的全过程依次划分为若干个阶段,顺序地完成每个阶段的任务。每一个阶段的开始和结束都有准则或标准。每一个阶段的开始和结束都有准则或标准。采用结构化技术(结构化分析、设计和实采用结构化技术(结构化分析、设计和实现)来完成软件开发各阶段的各项任务。现)来完成软件开发各阶段的各项任务。每个阶段结束前都进行正式的技术审查和管理复每个阶段结束前都进行正式的技术审查和管理复审。审。技术审查技术审查 帮助即时、尽早发现、纠正工程技术方面帮助即时、尽早发现、纠正工程技术方面的错误;保证软件质量。的错误;保
13、证软件质量。软件错误的积累和放大效应图软件错误的积累和放大效应图 目标主要是各个阶段的工程制品。目标主要是各个阶段的工程制品。如:系统范围是否恰当?技术方案是否可行?如:系统范围是否恰当?技术方案是否可行?架构是否稳定?模型是否正确?架构是否稳定?模型是否正确?管理复审管理复审主要任务是对项目的开销、工作量、资主要任务是对项目的开销、工作量、资源(人力)、进度、风险等进行审查。源(人力)、进度、风险等进行审查。帮助决定开发是否继续,帮助对下一阶段的工作进行帮助决定开发是否继续,帮助对下一阶段的工作进行计划、对软件开发过程进行改进。计划、对软件开发过程进行改进。*面向对象方法学面向对象方法学客观
14、世界的问题都是由客观世界中的实体客观世界的问题都是由客观世界中的实体及实体间的关系构成的。及实体间的关系构成的。用计算机系统解用计算机系统解决客观世界的问决客观世界的问题,希望实现解题,希望实现解法的解空间与问法的解空间与问题空间的结构尽题空间的结构尽可能一致。可能一致。传统语言提供的解空间传统语言提供的解空间对象不能满足要求。对象不能满足要求。面向对象方法学提供的解空面向对象方法学提供的解空间与客观世界问题空间的结间与客观世界问题空间的结构更一致。构更一致。面向对象方法是把数据和处理相结面向对象方法是把数据和处理相结合的方法。对象是由数据及可以施合的方法。对象是由数据及可以施加于这些数据的操
15、作所构成的统一加于这些数据的操作所构成的统一体。体。面向对象方法把程面向对象方法把程序看作是相互协作序看作是相互协作而又彼此独立的对而又彼此独立的对象的集合;而不是象的集合;而不是工作在数据上的过工作在数据上的过程或函数的集合。程或函数的集合。要点:要点:1 面向对象方法学认识问题空间,分析、解决面向对象方法学认识问题空间,分析、解决问题是用对象的观点。问题是用对象的观点。2 把对象抽象为类,类中定义数据和方法;类把对象抽象为类,类中定义数据和方法;类实例化即为对象。实例化即为对象。3 类层次结构类层次结构4 对象之间通过传递消息相互联系。对象之间通过传递消息相互联系。1.4 软件生命周期软件
16、生命周期不同时期,不同的目标、任务。不同时期,不同的目标、任务。*生命周期各阶段的基本任务生命周期各阶段的基本任务:1 问题定义问题定义 要解决的问题是什么?性质、范围?要解决的问题是什么?性质、范围?客户的目标?软件系统的价值?客户的目标?软件系统的价值?最后系统分析员应提交开发方和客户都认可的书最后系统分析员应提交开发方和客户都认可的书面报告。面报告。2 可行性研究可行性研究对上一阶段提出的问题有可行的解决方案吗?3 需求分析需求分析用户有哪些具体需求?为了满足客户的需求,系统必须具备哪些功能?准确、完整地捕获用户需求。系统分析员要提出经用户确认的系统逻辑模型。技术可行性 经济可行性(时间
17、、人员等)操作可行性4 总体设计总体设计/架构设计架构设计要解决问题、满足用户需求,软件系统的总体架构是怎样的?首先,架构设计师应该考虑几种可能的解决方案(Windows/Linux、.Net/J2EE、C/S or B/S、满足不同需求功能集的不同方案)。选择、推荐最佳方案。对确定的方案进行更具体的设计、描述(建立模型图、说明),包括对软件系统进行模块化,划分子系统、确定接口。5 详细设计详细设计软件系统、子系统/模块 具体应该是怎样的?算法(PDL语言、流程图等)。数据结构、函数/过程、类的定义。建立模型图。6 编码和单元测试编码和单元测试 用选定的编程语言书写程序(子系统/模块、类/组件
18、、函数等),然后编译/翻译/汇编为机器代码。对这些子系统/模块进行单元测试。7 综合测试综合测试软件是否实现了功能需求和非功能需求?集成测试 系统测试 用户验收测试写:测试计划(测试策略、进度)、测试结果记录、测试结果分析、评估、报告。维护要求、审查、计划(维护方案)、维护、回归测试、维护记录、复查验收。8 维护维护 改正性维护 适应性维护 完善性维护 预防性维护1.5 软件过程软件过程软件过程是为了获得高质量软件所需要完成的一系列任务的框软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。架,它规定了完成各项任务的工作步骤。通常使用生命周期模型简洁、直观
19、地描述软件开发、运行、维护的过程。CMM(Capability Maturity Model)即能)即能力成熟度模型,是美国卡耐基梅隆大学软件工力成熟度模型,是美国卡耐基梅隆大学软件工程研究所(程研究所(SEI)在美国国防部资助下于二十)在美国国防部资助下于二十世纪八十年代末建立的,用于评价软件机构的世纪八十年代末建立的,用于评价软件机构的软件过程能力成熟度的模型。此模型在建立和软件过程能力成熟度的模型。此模型在建立和发展之初,主要目的在于发展之初,主要目的在于提供一种评价软件承提供一种评价软件承接方能力的方法,接方能力的方法,为大型软件项目的招投标活为大型软件项目的招投标活动提供一种全面而客
20、观的评审依据。而发展到动提供一种全面而客观的评审依据。而发展到后来,又同时被后来,又同时被软件组织用于改进其软件过程。软件组织用于改进其软件过程。1.不成熟的软件组织不成熟的软件组织 软件过程一般并不预先计划,而是在项目进软件过程一般并不预先计划,而是在项目进行中由实际工作人员及管理员临时计划行中由实际工作人员及管理员临时计划 有时,即使软件过程已计划好,仍不按计划有时,即使软件过程已计划好,仍不按计划执行执行 没有一个客观的基准来判断产品质量,或解没有一个客观的基准来判断产品质量,或解决产品和过程中的问题决产品和过程中的问题 对软件过程步骤如何影响软件质量,一无所对软件过程步骤如何影响软件质
21、量,一无所知,产品质量得不到保证。而且,一些提高知,产品质量得不到保证。而且,一些提高质量的环节,如检查、测试等经常由于要赶质量的环节,如检查、测试等经常由于要赶进度而减少或取消进度而减少或取消 产品在交付前,对客户来说,一切都是不可产品在交付前,对客户来说,一切都是不可见的见的 没有长远目标,管理员通常只关注解决任何没有长远目标,管理员通常只关注解决任何当前的危机当前的危机 由于没有实事求是地估计进度、预算,因此由于没有实事求是地估计进度、预算,因此他们经常超支、超时。当最后期限临近,他他们经常超支、超时。当最后期限临近,他们往往在功能性和质量上妥协,或以加班加们往往在功能性和质量上妥协,或
22、以加班加点方式赶进度点方式赶进度2.成熟的软件组织成熟的软件组织 具有全面而充分的组织和管理软件开发和维护过程具有全面而充分的组织和管理软件开发和维护过程的能力的能力 管理员监视软件产品的质量以及生产这些产品的过管理员监视软件产品的质量以及生产这些产品的过程程 制定了一系列客观基准来判别产品质量,并分析产制定了一系列客观基准来判别产品质量,并分析产品和过程中的问题品和过程中的问题 进度和预算可以按照以前积累的经验来制定,结果进度和预算可以按照以前积累的经验来制定,结果可行。预期的成本、进度、功能与性能和质量都能可行。预期的成本、进度、功能与性能和质量都能实现,并达到目的实现,并达到目的 能准确
23、及时地向工作人员通报实际软件过程,并按能准确及时地向工作人员通报实际软件过程,并按照计划有规则地照计划有规则地(前后一致,不互相矛盾前后一致,不互相矛盾)工作工作 凡规定的过程都编成文档凡规定的过程都编成文档 软件过程和实际工作方法相吻合。必要时,软件过程和实际工作方法相吻合。必要时,过程定义会及时更新,通过测试,或者通过过程定义会及时更新,通过测试,或者通过成本成本-效益分析来改进过程。效益分析来改进过程。全体人员普遍地、积极地参与改进软件过程全体人员普遍地、积极地参与改进软件过程的活动。在组织内部的各项目中,每人在软的活动。在组织内部的各项目中,每人在软件过程中的职责都十分清晰而明确,每人
24、各件过程中的职责都十分清晰而明确,每人各守其责,协同工作,有条不紊,甚至能预见守其责,协同工作,有条不紊,甚至能预见和防范问题的发生。和防范问题的发生。CMM提供了一个成熟度等级框架:提供了一个成熟度等级框架:1级级-初初始级、始级、2级级-可重复级、可重复级、3级级-已定义级、已定义级、4级级-已管理级和已管理级和5级级-优化级。优化级。1.初始(初始(initial)级:)级:软件过程的特点是无秩序的,甚至是混乱的。软件过程的特点是无秩序的,甚至是混乱的。几乎没有什么过程是经过妥善定义的,成功几乎没有什么过程是经过妥善定义的,成功往往依赖于个人或小组的努力。往往依赖于个人或小组的努力。2.
25、可重复(可重复(repeatable)级:)级:建立了基本的项目管理过程来跟踪成本、进建立了基本的项目管理过程来跟踪成本、进度和功能特性。制定了必要的过程纪律,能度和功能特性。制定了必要的过程纪律,能重复早先类似应用项目取得的成功。重复早先类似应用项目取得的成功。3.已定义(已定义(defined)级:)级:己将管理和工程活动两方面的软件过程文档化、标己将管理和工程活动两方面的软件过程文档化、标准化,并综合成该机构的标准软件过程。所有项目准化,并综合成该机构的标准软件过程。所有项目均使用经批准、剪裁的标准软件过程来开发和维护均使用经批准、剪裁的标准软件过程来开发和维护软件。软件。4.已管理(已
26、管理(managed)级:)级:收集对软件过程和产品质量的详细度量值,对软件收集对软件过程和产品质量的详细度量值,对软件过程和产品都有定量的理解和控制。过程和产品都有定量的理解和控制。5.优化(优化(optimizing)级:)级:整个组织关注软件过程改进的持续性、预见及增强整个组织关注软件过程改进的持续性、预见及增强自身,防止缺陷及问题的发生。过程的量化反馈和自身,防止缺陷及问题的发生。过程的量化反馈和先进的新思想、新技术促使过程不断改进。先进的新思想、新技术促使过程不断改进。5.5.优化级优化级4.4.已管理级已管理级3.3.已定义级已定义级2.2.可重复级可重复级1.1.初始级初始级标
27、准、一标 准、一致的过程致的过程有纪律有纪律的过程的过程可预测的过程可预测的过程持续改进的过程持续改进的过程软件过程成熟度软件过程成熟度的的5 5个等级个等级成熟度等级成熟度等级关键过程域关键过程域共同特性共同特性关键实践关键实践包含包含划分为划分为包含包含过程能力过程能力表明表明目标目标实现实现实施或制度化实施或制度化解决解决活动或基础设施活动或基础设施描述描述CMM结构结构 成熟度等级成熟度等级表明了一个软件组织的过程能力表明了一个软件组织的过程能力的水平。除初始级外,每个成熟度等级都包的水平。除初始级外,每个成熟度等级都包含若干个关键过程域(含若干个关键过程域(Key Process A
28、rea,简称简称KPA)(见表)(见表1.2)达到某个成熟度级别,该级别(以及较低级达到某个成熟度级别,该级别(以及较低级别)的所有关键过程域都必须得到满足,并别)的所有关键过程域都必须得到满足,并且过程必须实现制度化。且过程必须实现制度化。CMM提供了提供了18个关键过程域,每个个关键过程域,每个关键过程关键过程域域都有一组对改进过程能力非常重要的目标,都有一组对改进过程能力非常重要的目标,并确定了一组相应的关键实践并确定了一组相应的关键实践 目标目标说明了每一个关键过程域的范围、界限说明了每一个关键过程域的范围、界限和意义。和意义。关键实践关键实践描述了建立一个过程能力必须完成描述了建立一
29、个过程能力必须完成的活动和必须具备的基础设施,完成了这些的活动和必须具备的基础设施,完成了这些关键实践就达到了相应关键过程域的目标,关键实践就达到了相应关键过程域的目标,该关键过程域也就得到了满足。该关键过程域也就得到了满足。每个关键过程域的关键实践都是按照五个共每个关键过程域的关键实践都是按照五个共同特性(执行约定,执行能力,执行活动,同特性(执行约定,执行能力,执行活动,测量和分析,验证实现)进行组织的,主要测量和分析,验证实现)进行组织的,主要解决关键实践的实施或制度化问题。解决关键实践的实施或制度化问题。共同特性共同特性将描述关键过程域的关键实践组将描述关键过程域的关键实践组织起来。共
30、同特性是一些属性,指明一个关键织起来。共同特性是一些属性,指明一个关键过程域的执行和规范化是否有效、可重复和可过程域的执行和规范化是否有效、可重复和可持续。共有持续。共有5个共同特性个共同特性:执行约定,执行能执行约定,执行能力,执行活动,测量和分析,验证实现。力,执行活动,测量和分析,验证实现。1)执行约定执行约定:执行约定描述机构为确保过程的建立和持续执行约定描述机构为确保过程的建立和持续而必须采取的一些措施。典型内容包括建立而必须采取的一些措施。典型内容包括建立机构策略和领导关系。机构策略和领导关系。2)执行能力执行能力:执行能力描述了项目或机构完整地实现软件执行能力描述了项目或机构完整
31、地实现软件过程所必须有的先决条件。典型内容包括资过程所必须有的先决条件。典型内容包括资源、机构结构和培训。源、机构结构和培训。3)执行活动执行活动:执行活动描述了执行一个关键过程域所必需执行活动描述了执行一个关键过程域所必需的活动、任务和规程。典型内容包括制定计的活动、任务和规程。典型内容包括制定计划和规程、执行和跟踪以及必要时采取纠正划和规程、执行和跟踪以及必要时采取纠正措施。措施。4)测量和分析测量和分析:测量和分析描述了为确定与过程有关的状态测量和分析描述了为确定与过程有关的状态所需的基本测量实践。这些测量可用来控制所需的基本测量实践。这些测量可用来控制和改进过程。典型内容包括可能采用的
32、测量和改进过程。典型内容包括可能采用的测量实例。实例。5)验证实现验证实现:验证实现描述了为确保执行的活动与已建立验证实现描述了为确保执行的活动与已建立的过程一致所采取的步骤。典型内容包括管的过程一致所采取的步骤。典型内容包括管理部门和软件质量保证组实施的评审和审核。理部门和软件质量保证组实施的评审和审核。在执行活动这个共同特性中的实践描述了建在执行活动这个共同特性中的实践描述了建立一个过程能力所必须完成的活动。所有其他立一个过程能力所必须完成的活动。所有其他实践共同形成了一个使机构能将执行活动中描实践共同形成了一个使机构能将执行活动中描述的实践进行规范化的基础。述的实践进行规范化的基础。各关
33、键过程域的详细描述,参见各关键过程域的详细描述,参见能力成熟能力成熟度模型(度模型(CMM):软件过程改进指南):软件过程改进指南,卡,卡耐基梅隆大学软件工程研究所编著,刘孟仁等耐基梅隆大学软件工程研究所编著,刘孟仁等译,电子工业出版社出版。译,电子工业出版社出版。缺陷预防缺陷预防技术更新管理技术更新管理过程更改管理过程更改管理优化级优化级定量过程管理定量过程管理软件质量管理软件质量管理已管理级已管理级机构过程焦点机构过程焦点机构过程定义机构过程定义培训大纲培训大纲综合软件管理综合软件管理软件产品工程软件产品工程组间协调组间协调同行评审同行评审已定义级已定义级需求管理需求管理软件项目计划软件项
34、目计划软件项目跟踪和监督软件项目跟踪和监督软件分包合同管理软件分包合同管理软件质量保证软件质量保证软件配置管理软件配置管理可重复级可重复级初始级初始级能力成熟度级别中的能力成熟度级别中的关键过程域关键过程域机构过程焦点机构过程焦点第第3级的关键过程域:级的关键过程域:已定义级已定义级 机构过程焦点的目的是,为能改进机构整体软件过程能力的软件过机构过程焦点的目的是,为能改进机构整体软件过程能力的软件过程活动程活动 建立机构的职责建立机构的职责。机构过程焦点包括,建立和维护机构过程焦点包括,建立和维护机构的软件过程机构的软件过程和和项目软件过程项目软件过程(之间)的默契关系,并协调有关评估、开发、
35、维护和改进这些过程(之间)的默契关系,并协调有关评估、开发、维护和改进这些过程的活动。的活动。机构提供长期的约定和资源,以协调现在和将来的软件项目的软件机构提供长期的约定和资源,以协调现在和将来的软件项目的软件过程的开发和维护。该项工作由某个小组实施,例如软件工程过程组。过程的开发和维护。该项工作由某个小组实施,例如软件工程过程组。它负责机构的软件过程活动,特别是负责开发和维护机构标准软件过它负责机构的软件过程活动,特别是负责开发和维护机构标准软件过程和相关过程资源(如在机构过程定义关键过程域中说明的),并协程和相关过程资源(如在机构过程定义关键过程域中说明的),并协调软件项目的过程活动。调软
36、件项目的过程活动。目标目标目标目标1:机构内部软件过程的制定和改进活机构内部软件过程的制定和改进活动协调一致。动协调一致。目标目标2:相对于过程标准,所使用的软件过相对于过程标准,所使用的软件过程的优势和薄弱环节标识清楚。程的优势和薄弱环节标识清楚。目标目标3:机构级的过程开发和改进活动有计:机构级的过程开发和改进活动有计划。划。执行约定执行约定约定约定1:机构遵循书面的管理策略,协调整个机构遵循书面的管理策略,协调整个机构范围内的软件过程开发和改进活动。机构范围内的软件过程开发和改进活动。该策略一般规定该策略一般规定:1.建立一个小组,负责机构级的软件过程建立一个小组,负责机构级的软件过程活
37、动,使这些活动与各项目协调一致。活动,使这些活动与各项目协调一致。2.定期评估项目所使用的软件过程,以确定期评估项目所使用的软件过程,以确定其优势和薄弱环节。定其优势和薄弱环节。3.对机构标准软件过程进行合理地剪裁,对机构标准软件过程进行合理地剪裁,以得到项目使用的软件过程。以得到项目使用的软件过程。关于机构标准软件过程,参见综合软件关于机构标准软件过程,参见综合软件管理关键过程域的活动管理关键过程域的活动1。4.每个项目的软件过程、工具和方法的改每个项目的软件过程、工具和方法的改进和其他有用信息,可用于其他项目。进和其他有用信息,可用于其他项目。约定约定2:上级管理部门倡导和支持机构的软件上
38、级管理部门倡导和支持机构的软件过程开发和改进活动。过程开发和改进活动。上级管理部门上级管理部门:1.向机构成员和负责人说明有关软件过程向机构成员和负责人说明有关软件过程活动的约定。活动的约定。2.制定资金、人员配备和其他资源的长期制定资金、人员配备和其他资源的长期计划和约定。计划和约定。3.制定管理和执行有关软件过程开发和改制定管理和执行有关软件过程开发和改进活动的策略。进活动的策略。约定约定3:上级管理部门监督机构的软件过程开上级管理部门监督机构的软件过程开发和改进活动。发和改进活动。l.确保机构标准软件过程满足企业目标和确保机构标准软件过程满足企业目标和策略。策略。2.提出关于软件过程开发
39、和改进活动优先提出关于软件过程开发和改进活动优先次序的建议。次序的建议。3.参与制定软件过程开发和改进计划。参与制定软件过程开发和改进计划。a.上级管理部门与更高层人员和负责人上级管理部门与更高层人员和负责人共同协调软件过程需求及问题共同协调软件过程需求及问题 b.上级管理部门与该机构负责人进行协上级管理部门与该机构负责人进行协调,以获得负责人和机构成员的支持和参与调,以获得负责人和机构成员的支持和参与执行能力执行能力能力能力1:有一个负责机构的软件过程活动的小组。有一个负责机构的软件过程活动的小组。一个小组是一些部门、负责人和人员的组合,一个小组是一些部门、负责人和人员的组合,负责一组任务和
40、活动。小组的规模可以不同,既负责一组任务和活动。小组的规模可以不同,既可以是单个兼职的人,也可以是多个来自不同部可以是单个兼职的人,也可以是多个来自不同部门的兼职人员,也可以由几个专职人员组成。组门的兼职人员,也可以由几个专职人员组成。组成小组时考虑的因素包括:分派的任务和活动、成小组时考虑的因素包括:分派的任务和活动、项目规模、机构结构和机构文化。某些小组,如项目规模、机构结构和机构文化。某些小组,如软件质量保证组,集中关注项目活动软件质量保证组,集中关注项目活动;而其他一些而其他一些小组,例如软件工程过程组,集中关注机构范围小组,例如软件工程过程组,集中关注机构范围内的活动。内的活动。1.
41、条件可能时,小组成员以条件可能时,小组成员以专职工作专职工作的软件专业人的软件专业人员为核心,并尽可能有其他的兼职人员支持。员为核心,并尽可能有其他的兼职人员支持。该小组最一般的例子是软件工程过程(该小组最一般的例子是软件工程过程(SEPG)。2.小组成员中有小组成员中有软件工程软件工程及软件及软件相关科目的代表相关科目的代表。软件工程及软件相关科目的实例有软件工程及软件相关科目的实例有:软件需求分析软件需求分析软件设计软件设计程序编码程序编码软件测试软件测试软件配置管理软件配置管理软件质量保证软件质量保证能力能力2:为实施机构的软件过程活动提供了充足的资为实施机构的软件过程活动提供了充足的资
42、源和资金。源和资金。1.委派在特定领域具有特长的人员支持该小组。委派在特定领域具有特长的人员支持该小组。特定领域的实例有:特定领域的实例有:软件重用软件重用计算机辅助软件工程技术计算机辅助软件工程技术(CASE)测量测量培训课程开设培训课程开设 2.有支持该机构软件过程活动的工具。有支持该机构软件过程活动的工具。支持工具的实例有:支持工具的实例有:统计分析工具统计分析工具桌面出版工具桌面出版工具数据库管理系统数据库管理系统过程建模工具过程建模工具能力能力3:负责机构软件过程活动的小组成员接:负责机构软件过程活动的小组成员接受过实施这些活动所需的培训。受过实施这些活动所需的培训。培训的实例有:培
43、训的实例有:软件工程实践软件工程实践过程控制技术过程控制技术机构过程变动管理机构过程变动管理软件过程计划、管理和监督软件过程计划、管理和监督技术转变技术转变参见培训大纲关键过程域参见培训大纲关键过程域能力能力4:软件工程组和其他软件相关小组的成软件工程组和其他软件相关小组的成员接受过机构软件过程活动及其在这些活动员接受过机构软件过程活动及其在这些活动中的任务方面的定向培训。中的任务方面的定向培训。参见培训大纲关键过程域执行活动执行活动活动活动1:定期评估软件过程,并根据评估结果制定行定期评估软件过程,并根据评估结果制定行动计划。动计划。评估一般每隔一年、一年半至三年进行一次。评估一般每隔一年、
44、一年半至三年进行一次。评估可针对机构中所使用的所有软件过程,也可评估可针对机构中所使用的所有软件过程,也可通过对过程和项目进行抽样评估。评估机构软件通过对过程和项目进行抽样评估。评估机构软件过程能力的方法实例之一是过程能力的方法实例之一是SEI软件过程评估方法。软件过程评估方法。行动计划标识行动计划标识:涉及哪些评估结果涉及哪些评估结果针对评估结果实施更改软件过程的准则针对评估结果实施更改软件过程的准则负责实施更改的小组或个人负责实施更改的小组或个人活动活动2:机构制定和维护它的软件过程开发和改进活机构制定和维护它的软件过程开发和改进活动的计划。动的计划。该计划:该计划:1.以软件过程评估后的
45、行动计划和其他的机构过程改以软件过程评估后的行动计划和其他的机构过程改进倡议为基础。进倡议为基础。2.确定要实施的活动及实施这些活动的进度。确定要实施的活动及实施这些活动的进度。3.确定负责这些活动的小组和个人。确定负责这些活动的小组和个人。4.确定所需的资源,包括人员配备和工具。确定所需的资源,包括人员配备和工具。5.初始发布和有大改动时通过同行评审。初始发布和有大改动时通过同行评审。参见同行评审关键过程域。参见同行评审关键过程域。6.机构的软件负责人和上级负责人评审认可。机构的软件负责人和上级负责人评审认可。活动活动3:在机构级协调关于机构和项目的软件:在机构级协调关于机构和项目的软件过程
46、的开发和改进活动。过程的开发和改进活动。涉及的软件过程有:涉及的软件过程有:1.机构标准软件过程。机构标准软件过程。关于机构标准过程,参见机构过程定义关关于机构标准过程,参见机构过程定义关键过程域的活动键过程域的活动1和活动和活动2。2.项目定义的软件过程。项目定义的软件过程。关于项目定义的软件过程。参见综合软件关于项目定义的软件过程。参见综合软件管理关键过程域的活动管理关键过程域的活动1和活动和活动2。活动活动4:在机构级协调有关软件过程数据库的:在机构级协调有关软件过程数据库的使用。使用。机构的软件过程数据库用来收集机构和项机构的软件过程数据库用来收集机构和项目的软件过程以及生成的软件产品
47、的信息。目的软件过程以及生成的软件产品的信息。关于机构的软件过程数据库,参见机构过程关于机构的软件过程数据库,参见机构过程定义关键过程域的活动定义关键过程域的活动5。活动活动5:监控和评价机构中限制使用的新过程、监控和评价机构中限制使用的新过程、方法和工具。合适时,推广到机构的其他方法和工具。合适时,推广到机构的其他部分。部分。活动活动6:在机构内协调机构和项目的软件过程:在机构内协调机构和项目的软件过程的培训。的培训。1.制定有关机构和项目软件过程的专题制定有关机构和项目软件过程的专题培训计划。培训计划。2.合适时,培训由负责机构软件过程活合适时,培训由负责机构软件过程活动的小组(如软件工程
48、过程组)或培训小动的小组(如软件工程过程组)或培训小组准备和实施。组准备和实施。参见培训大纲关键过程域。参见培训大纲关键过程域。活动活动7:向与实施软件过程有关的小组通报机:向与实施软件过程有关的小组通报机构和项目中软件过程开发和改进活动的情构和项目中软件过程开发和改进活动的情况。况。通报方式的实例有:通报方式的实例有:过程电子公告板过程电子公告板过程咨询委员会过程咨询委员会工作小组工作小组信息交流会信息交流会调查调查过程改进组过程改进组日常讨论日常讨论测量和分析测量和分析测量测量1:测量机构的软件过程开发和改进活动测量机构的软件过程开发和改进活动的状态的状态 测量的实例有:测量的实例有:机构
49、在过程评估、开发和改进活动中已完成机构在过程评估、开发和改进活动中已完成的工作、工作量和耗费的资金,与计划相比的工作、工作量和耗费的资金,与计划相比较较每次软件过程的评估结果,与以前的评估结每次软件过程的评估结果,与以前的评估结果和建议相比较果和建议相比较验证实现验证实现验证验证1:上级管理部门定期评审软件过程开发和改进上级管理部门定期评审软件过程开发和改进活动。活动。上级管理部门实施定期评审的主要目的是适上级管理部门实施定期评审的主要目的是适当地、及时地掌握软件过程活动。在满足机构需当地、及时地掌握软件过程活动。在满足机构需求的前提下,只要有适当的机制来报告异常情况,求的前提下,只要有适当的
50、机制来报告异常情况,评审的时间间隔就尽可能长些。评审的时间间隔就尽可能长些。1.对照计划,评审有关开发和改进软件过程活对照计划,评审有关开发和改进软件过程活动的进展和状态。动的进展和状态。2.讨论低层不能解决的冲突和问题。讨论低层不能解决的冲突和问题。3.指定和评审行动措施,并跟踪到关闭。指定和评审行动措施,并跟踪到关闭。4.编写评审的总结报告,并分发给相关的小组编写评审的总结报告,并分发给相关的小组和个人。和个人。CMM的成功导致了各种模型的衍生,每一种模型的成功导致了各种模型的衍生,每一种模型都探讨了某一特定领域中的过程改进问题都探讨了某一特定领域中的过程改进问题SW-CMM:适用于软件开
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。