软件过程与管理第1章
- 格式:doc
- 大小:1.17 MB
- 文档页数:18
1第1章 过程基础(个人建议,应付考试的话这章的内容再加上PSP 和TSP 的单独总结记得熟点儿基本就可以,后面葛叔讲的11到14章作为补充阅读吧,太详细的东西不要看了……)1.1 软件过程概述● 软件产品与传统产品的区别:软件产品不同于其他常规产品的一个重要特点是,软件产品是抽象的、不可触摸的,不受物质材料的限制,也不受物理定律或加工过程的制约。
这一方面可使软件工程得到简化,因为软件的潜能不受物理因素的限制;另一方面,由于缺乏自然约束,软件也就很容易变得极为复杂,难以理解。
● 软件工程的概念诞生于1968年召开的NATO 会议,在一个称谓“软件危机”的会议上首次提出。
作为软件工程领域的一个重要分支,软件过程研究的主要目标是以一种高效的、可靠的方式组织软件开发的过程,并通过保障和改进软件过程的质量来提高软件产品的质量。
1.1.1 软件质量与软件过程● 软件工程的诞生是为了应对复杂软件系统的开发,软件工程的目的是为了在复杂软件系统的开发过程中提高软件质量,提高开发效率,也就是软件工程是为了以一种高效的方式提高质量的软件产品的工程学科。
● 质量观:书上bla 了一堆,PPT 上那句(追求质量是一种低碳的生产生活方式)也很无语……主要意思是在追求卓越质量的过程中会付出更多的辛劳和原材料方面的消耗,但总的来讲,所产出的高质量产品,以及延长了更多的使用寿命,所减少的碳排放量和减少的对环境的污染,将远远弥补因为追求卓越质量付出的消耗。
● 软件质量下面两个模型都是层次结构模型:思想是把软件质量的因素按照一定的方式分成几组,每组反映软件质量的一个方面,成为质量要素,构成一个质量要素的诸多因素则是对该要素的衡量标准,每个衡量标准又由一系列具体的度量构成,如下图:1. McCall 模型:把软件质量要素分为三个方面:产品操作、产品修改和产品改型,如下图产品操作:概括有关操作一个软件产品的质量因素,如操作是否易于学习,操作是否高效,结果是否用户所要求的等等软件质量软件质量软件质量软件质量衡量标准衡量标准度量度量度量度量度量度量衡量标准度量衡量标准度量产品改型产品操作产品修改易维护性灵活性易测试性易移植性易复用性互用性正确性高效率易使用性可靠性完整性2产品修改:概括与修改一个软件产品有关的质量因素,如是否便于改正软件中的错误等等;该要素很重要,因为它通常是软件开发中开销最大的部分产品改型:概括与改变一个软件产品的运行环境和使用方法等有关的质量因素注:书上有一大段关于软件质量要素的描述,个人认为不需要记忆,也记不下来,一张图加理解足够。
2. Boehm 模型:软件质量的全体称为总体效用,并分为现存效用和易维护性,现存效用是指不涉及软件的修改的质量因素,与McCall 模型的产品操作质量要素基本相同,结构如下图:3. 两个模型的共同点(简单的总结,真问到可以发散下):1) 质量衡量标准以从用户出发的质量观为基础提出的,实践中是软件设计者和开发者标准的子集 2) 这些要素和标准的定义放映当时的认识,现在新的软件质量因素和度量出现在实践中 3) 模型着重软件开发者较易分析的软件质量因素,衡量标准都是与技术有关的4) 都是层次结构模型,要素和标准以非形式化讨论建立,基于直觉,难检验和证明,软件度量的目的是预测质量和提高客观数据5) 使用时需要根据具体情况决定质量要素的相对重要性 这两个模型共同缺陷之一是未能反映质量要素之间的关系。
Perry 的两个质量要素直接相关(要高都高)、反向相关(一高一低)以及无关的示意如下:总体效用现存效用易维护性易移植性可靠性效率人机界面易理解性易测试性易修改性硬件独立性自我包含性易更改性结构性可认性自我描述性简明性易存取性坚定性/完整性设备效率完备性可依靠性准确性一致性易交流性互用性这种关系划分的缺点是:都是对称的关系,不能表示复杂关系;要素间关系不是显而易见的。
软件质量管理哲学1.戴明(Deming):质量运动的主要人物之一,日本质量管理之父,贡献如下1)质量改进:提出了质量改进连锁反应图2)PDCA循环:又称戴明环,能使任何一项活动有效进行的一种合乎逻辑的工作程序。
3)十四点原则:树立改进产品和服务的坚定目标;采用新的思维方法;停止依赖检验的办法获得质量;不再凭价格标签进货;坚持不懈地提高产品质量和生产率;岗位培训制度化;管理者的作用应突出强调;排除畏难情绪;打破部门和人员之间的障碍;不再给操作人员提空洞的口号;取消对操作人员规定的工作定额和指标;不再采用按年度对人员工件进行评估;创建积极的自我提高计划制度;让每个员工都投入到提高产品质量的活动中去2.朱兰(Juran):质量运动另一位巨人,主编的《质量控制手册》为质量控制科学的圣经。
贡献:1)适用性质量:适用性——使产品在试用期间能满足使用者的需求。
Juran提出质量不仅要满足明确的需求,也要满足潜在的需求。
2)质量三部曲:质量计划——质量控制——质量改进。
具体内容在书P8,需要就看吧……33)Juran质量螺旋(quality loop)4)80/20原则:提出了质量责任的权重比例问题。
企业产品或服务质量问题,追究其原因,只有20%来自基层操作人员,而80%的质量问题是由于领导责任所引起的。
3.克劳士比(Crosby):质量运动的另一位巨人(汗),提出零缺陷概念,即第一次就把事情做对1)质量管理的绝对性:有一些原型式绝对基本的a)质量就是符合要求,不是“完美”b)质量来自于预防,而不是检验c)质量的标准是“零缺陷”,而不是可接受质量水平d)质量的衡量标准是“不符合要求的代价”2)质量改进的基本要素:由三个独特的管理行动组成——决心、教育和实施。
a)变更管理的六个阶段——6C①领悟(comprehension)——理解质量真谛②承诺(commitment)——制定质量策略的决心③能力(capability)——教育与培训④沟通(communication)——成功的经验文档化、制度化⑤改正(correction)——预防与提高绩效⑥坚持(continuance)——强调质量管理称为一种工作方式1.1.2软件过程定义软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
4●概括的说,软件过程描述为为了开发出客户需要的软件,什么人(who)、在什么时候(when)、做什么事情(what)以及怎样(how)做这些事以实现某一个特定的具体目标。
●过程定义了运用方法的顺序、应该交付的文档资料、为保证软件质量和协调变化所需要采取的管理措施,以及标志软件开发各个阶段任务完成的里程碑。
●通常使用生命周期模型简洁地描述软件过程。
生命周期模型规定了生命周期划分成哪些阶段以及各个阶段的执行顺序,因此,也称为过程模型。
1.1.3软件过程发展历史1.瀑布模型:下面左图为传统瀑布模型(理想化的),右图为实际的瀑布模型(带反馈环的)●按照传统的瀑布模型开发软件,有下述的几个特点:(1) 阶段间具有顺序性和依赖性:必须等前一阶段工作完成之后才能开始后一阶段的工作;前一阶段的输出文档就是后一阶段的输入文档,只有前一阶段的输出文档正确,后一阶段的工作才能获得正确的结果(2) 推迟实现的观点:在编码之前设置了系统分析与系统设计的各个阶段(3) 质量保证的观点:每个阶段都必须完成规定的文档;每个阶段结束前都要对所完成的文档进行评审●优缺点:优点有——强迫开发人员采用规范的方法,严格规定每个阶段必须提交的文档,要求每个阶段交出的所有产品必须经过质量保证小组的仔细验证;缺点——文档驱动,实现前只有书面文档供验证,可能导致开发的软件不能真正满足用户要求2.快速原型模型(如下页左图)●指快速建立起来的可运行于计算机的程序,所完成的功能往往是最终产品能完成功能的一个子集。
●快速原型模型第一步是快速建立一个能反映用户主要需求的原型系统让用户试用,通过实践来了解目标系统的概貌。
●优点:不带反馈环,线性顺序,本质是快速,节约软件开发成本;原型系统已经通过与用户交互得到验证,开发人员通过建立原型系统已经学到了血多东西5●也称为渐增模型,把软件产品作为一系列的增量构件来设计、编码、集成和测试。
每个构件由多个相互作用的模块构成,并且能够完成特定的功能。
使用增量模型,第1个增量构件往往实现软件的基本需求,提供最核心的功能。
●优点:能够在较短时间内向用户提交可以完成部分工作的产品,逐步增加产品功能可以是用户有较为充裕的时间学习和适应新产品●困难:在把每个新的增量构件集成到现有软件体系结构中的时候,必须不破坏原来已经开发的产品,软件体系结构必须是开放的,某种意义上自相矛盾。
●风险驱动:软件开发过程中必须及时识别和分析风险,并且采取适当措施以消除或减少风险的危害。
构建原型是一种能使某些类型的风险降至最低的方法。
●螺旋模型的基本思想:使用原型及其他方法来尽量降低风险,可以把它看作在每个阶段之前增加了风险分析过程的快速原型模型。
●优点:对可选方案和约束条件的强调有利于已有软件的重用,减少了过多的测试和测试不足的风险,维护只是一个周期和开发测试没有本质区别,主要适用于内部开发的大规模软件项目。
6缺点:主要优势是风险驱动,而这也可能是一个缺点,除非具备专业丰富的风险评估知识和经验,否则当真正风险出现时开发人员可能还认为项目正常Winwin螺旋(看下就好)●迭代式软件开发过程中普遍存在的一种内更加常见。
●喷泉这个词体现了面向对象开发过程迭代念“对象”。
●为了使用喷泉模型开发软件时开发过程过分无序,要把一个线性过程作为总目标1.1.4以过程为中心的软件工程环境(PSEE)●软件过程是指软件工程过程(常规的软件的需求分析、设计、编码、测试,以软件工程为主)、软件管理过程(为使软件工程过程顺利进行而进行的软件活动的集合,以软件工程为主)和软件组织过程(企业级对软件的组织活动,以企业为主)三者的有机结合。
●以过程为中心的软件工程环境(PSEE,Process-centered Software Engineering Environment)或者过程支持系统(PSS,Process Support Systems),是计算机辅助软件工程环境(CASE,Computer-Aided Software Engineering environment)的一个分支,专门支持软件开发过程全面管理的软件系统。
●PSEE的基本原理:软件过程建模——软件过程建模语言;形式化方法,半形式化方法;以活动为中心的建模方法,控制结构:顺序、条件、循环、并发⏹过程引擎:解析软件过程建模语言所描述的过程模型,形成过程实例,分解出其中的活动,派发给与某个活动相关联的角色/执行者。