本文是一篇工程管理论文,工程管理专业培养具备管理学、经济学和土木工程技术的基本知识,高级管理人才。学生在校学习期间,要接受工程师和经济师的基本素质训练,打好工程技术、管理、经济、法律、外语及计算机应用方面的坚实基础。(以上内容来自百度百科)今天为大家推荐一篇工程管理论文,供大家参考。
第一章 绪 论
1.1 研究背景
互联网自诞生的那一刻起,就潜移默化的改变着人类的生活方式,推动着科技和时代的进步。美国马萨诸塞州麻省理工学院(Massachusetts Institute of Technology)的Leonard. Kleinrock 在 1961 年 7 月的硕士论文中论述了分组交换技术,分组交换为互联网的诞生奠定技术基础,后来成为互联网的标准通信模式[1]。1969 年美国国防部开始实施计算机网络开发计划 ARPANET,ARPANET 最初是为了军事目的开发抗核打击性的通信网络,却成为了互联网诞生的标志。伴随着互联网的大众化普及,市场风云变幻,迅速催生出了一批伟大的企业,同时也淘汰了不少曾经伟大却跟不上快节奏的公司。IBM 成就了微软,雅虎成就了谷歌,摩托罗拉、诺基亚、雅虎相继成为没落的贵族,小米、UBER 成为崛起的新贵,中国互联网代表三大门户曾风光无限却终被 BAT 所取缔。软件曾革了硬件的命,互联网软件再次蚕食软件的生存空间,国外巨头苹果、谷歌、Facebook、亚马逊的迅速成长以及国内互联网 BAT 的格局形成,一一案例无不显示出互联网的神奇力量,以及对传统软硬件和互联网行业革新产生愈来愈大的的推动力。互联网以及互联网思维正在并将不断推动传统产业和新兴产业的创新与发展。“八十年代的 IBM 讲用户满意度, 九十年代的微软讲用户体验,而今天互联网企业全部讲用户口碑。把用户口碑、用户体验一步一步地做到极致,是互联网带给传统产业最重要的思想[2]。”小米科技创始人雷军在 2014 年 IT 峰会上曾如此说道。对于互联网以及互联网思维,小米科技可谓做到极致,4 年多就从零开始做到估值 450 亿美元,而老牌手机厂商诺基亚却仅以 70 多亿美元被微软所收购,摩托罗拉更是先被谷歌收购再以26 亿美元卖给联想,与小米的成功形成强烈的反差。雷军把小米模式成功的要素归结为互联网七字诀---专注、极致、口碑、快,七字诀恰好总结了互联网软件项目开发的指导原则,也是互联网产品相对于传统软硬件产品的优势所在。
..........
1.2 国内外研究历史与现状
目前,软件开发项目还缺乏完整的计划,缺乏对整个开发过程的把握和理解,缺少良好定义的管理框架[3]。Wang 和 Li 认为对于生产高质量的软件产品和改善软件开发过程而言,软件过程管理被证明是有效的手段[4],因此,形成了面向软件过程的管理理论和方法,如软件能力成熟度模型(CMM)、ISO9000、6Sigma 等[5]。CMM 是美国卡耐基.梅隆大学的软件工程研究所开发的,该框架将一个开发过程评估为五个能力成熟度级别,即初始完成级、可重复级、定义级、量化管理级、优化级。美国卡耐基-梅隆大学(Carnegie-Mellon University)的软件工程研究所(SEI)在 1991 年研究制定的能力成熟度模型(CMM-CapabilityMaturity Model),最初目的是为了评估承包美国国防部软件类合同的组织的能力,后来由于一般软件企业应用 CMM 模型进行过程改进较为成功,于是 CMM 在全世界范围内逐渐被广泛应用[6]。SEI 在 2000 年发布了新版本能力成熟度集成模型(CMMI-CapabilityMaturity Model Integration),CMMI 改正了 CMM 的一些缺点,以便更加适用于企业实施过程改进,不仅涵盖了软件开发过程的改进,还涵盖了软硬件采购、系统集成等相关方面的过程改进[7]。CMM/CMMI 主要应用于过程改进和能力评估两个方面。CMMI 过程改进可以基于阶梯式表示模型中的 5 个成熟度等级分组依序完成某组所包含的过程域,以便组织达到相应的成熟度等级,也可以基于连续式表示模型中的 6 个能力度等级对单个过程域进行改进,以便该过程域达到相应的能力度等级。而 CMMI 是针对软件组织设计开发软件的能力进行评估,而非软件或项目本身,并未定义进行软件过程度量中收集并分析过程数据的详细方法[8]。国内较多软件质量管理的研究基于 CMMI 面向实际应用的过程改进。比如,方媛《基于 CMMI 的软件过程改进研究》中,通过对 CMMI 的研究,结合机载软件特点,依据 CMMI理论和过程改进规律,形成了可操作的实施框架,详细论述了基于 CMMI 软件过程改进的实施策略[9]。武燕华等《软件开发过程中软件质量管理技术探讨》分析了软件开发过程中软件质量管理存在的问题,通过对 CMMI 的应用实施研究,从实施项目度量、提高过程能力、过程改进、 提高项目管理能力等方面阐述了软件质量改进的方法,主要针对理论实施过程中的提高和改进方法进行突破研究[10]。陈斌《基于 CMMI 的敏捷软件改进过程研究》分析了敏捷软件思想潜在的缺点,以及传统的 CMMI 改进模型在实际实施过程改进中的问题,然后通过对两者的对比得出两者互补的价值,进而提出基于 CMMI的敏捷软件改进过程[11]。孙春燕等《基于 CMMI 质量管理体系引入敏捷方法的实践》针对依据 CMMI 模型进行质量管理的组织如何使用敏捷方法的问题,概述 CMMI 模型和敏捷方法的基本特点,单独使用 CMMI 或者敏捷方法时遇到的问题,分析了 CMMI 模型和敏捷方法的互补互利关系,说明依据 CMMI 建立的质量管理体系引入敏捷方法的可行性[12]。李国峰《基于 CMMI 的软件开发项目质量管理研究》以 HS 公司基于 CMMI 的软件项目为例,结合 CMMI 和 6sigma 方法分析了一个软件项目开发过程中的一些主要问题,找出问题的关键原因并给出相应改进措施,其中一些改进措施吸取了敏捷开发中的一些方法和优秀实践[13]。徐敏在《基于 CMMI 的 A 公司软件测试管理研究》中以 A 公司软件测试管理过程为例,通过阐述 CMMI 模型和软件测试管理等理论,分析整个软件生命周期的各个阶段和相应的测试管理活动,再和相关的 CMMI 过程域进行对比,寻找 A 公司软件测试管理过程存在的问题和需要改进之处,提出了基于 CMMI 的过程改进措施,从而形成规范的软件测试管理流程[14]。
.........
第二章 敏捷管理与敏捷软件测试
敏捷管理模式是当前 IT 软件业最为流行的开发管理模式,而敏捷测试是敏捷开发的关键组成部分。敏捷方法的广泛应用使人们尤为关注如何更为有效的测试,来提高测试的效率并保障产品的质量。
2.1 敏捷软件管理
软件工程学伴随计算机硬件和互联网的蓬勃发展而不断演化和完善,敏捷模式恰好是发展到目前被实践证明最为有效且适应当前软件开发特点的开发管理模式。20 世纪六十年代,个人电脑和互联网都未普及,软件开发需求并不大,处于软件作坊阶段,软件规模小,以作坊式开发为主。20 世纪七十年代,计算机硬件飞速发展,电脑应用于各种科研和教学活动,个人电脑也开始普及,软件的规模量骤增,许多大型的复杂的软件项目开发计划提了出来,然而开发技术的进步总不能满足发展的需求。软件开发过程中遇到的诸多问题难以找到解决的方法,逐渐累积起来,矛盾越来越尖锐,软件危机由此产生[18]。20 世纪八十年代,软件危机促使软件过程管控不断发展,软件业引入成熟生产制造管理方法,以“过程为中心”分阶段来控制软件开发(如瀑布模型),在一定程度上缓解了软件危机。20 世纪九十年代,互联网开始蓬勃发展,软件失败的经验让软件开发过程不断增多限制和约束,即愈来愈“重型化”,开发效率越来越低、反应速度越来越慢。这时,以应对快速变化的需求,一些新型软件开发方法开始出现,如极限编程、自适应软件开发、水晶方法、特性驱动开发等[40]。这些方法相对于“非敏捷”,更注重各类角色之间的紧密协作、面对面的沟通交流,频繁交付新版本、紧凑地组织团队,强调可以很好地适应需求变化的代码编写和项目团队组织方法,同时更加注重成员在软件开发过程中的作用[19]。21 世纪至今,敏捷模式迅速流行起来,随着软件互联网爆发式发展,信息时代用户需求变化的更频繁,交付周期越短就越成为企业的核心竞争力,更加适应变化的轻量级的敏捷开发管理模式被普遍接受和认可。
..........
2.2 敏捷软件测试理论
软件测试是为了度量和提高被测软件的质量,对测试软件进行工程设计、实施和维护的整个生命周期过程[20]。软件测试在达到软件产品质量和评估软件产品质量的过程中起到了重要的作用[21]。一方面,在软件开发工程中,通过不断地“测试-发现问题-修复”来提高软件产品的质量。另一方面,在发布产品之前,通过实施系统级别的测试来评估软件系统的质量如何。正如 Friedman 和 Voas 所描述的,“软件测试是为了软件质量的评估和提高而进行的验证过程”[22]。概括来讲软件质量评估的活动可以划分为两个主要的类别,即静态测试和动态测试。静态测试是基于一些文档,即需求文档、软件模型、设计文档和源代码,一般包括代码评审、审查、走查、算法分析、正确性证明等,不涉及开发过程中对代码的实际执行。动态测试涉及程序的实际执行,以暴露出程序的可能的缺陷,还将观察程序的行为和性能特性[23]。软件研发项目中的质量管理主要是围绕着质量保证(SQA)和质量控制两方面进行的,而软件测试是软件质量保证的一个关键手段,也是软件质量控制的关键活动[24]。软件测试及相关质量管理的活动包括测试需求和计划管理、测试用例管理、测试执行过程管理、缺陷管理、监测并度量、风险管控和预防、团队的组织和管理、测试技术和工具管理等。敏捷软件测试是在敏捷管理模式下进行的软件测试活动,即运用敏捷的思想和方法来开展测试工作。本文研究其改进框架主要是研究敏捷模式下如何改进和评估软件测试过程以及能力成熟度级别,以便更有效地解决测试和开发脱节的问题。敏捷软件测试也提倡“拥抱变化”,在不断的迭代中开展测试工作:每次开发都要与测试积极的交互,做完一小部分功能,就进行测试,测试并修复完缺陷后再进行下一次迭代,避免引起工程后期的极大危害。值得注意的是,这里的“测试”并不只是测试团队参与的测试工作,而是包括所有敏捷项目团队成员或自动化工具开展的测试工作,比如用户检测、文档检测、程序员代码审查和自测、单元测试、构建测试、集成测试、系统测试、自动化测试等[25]。#p#分页标题#e#
..........
第三章 基于 CMMI 的软件测试过程改进方法......12
3.1 CMMI 模型表示方法 ............. 12
3.2 敏捷软件测试的过程改进框架 ....... 14
3.3 敏捷软件测试过程改进框架的应用说明 ........... 20
3.4 本章小结 ............. 21
第四章 敏捷软件质量度量方法的改进.........22
4.1 质量和软件质量概述 ............. 22
4.2 传统软件质量度量方法的缺点 ....... 23
4.3 改进的敏捷软件质量预测度量法 ............. 24
4.4 本章小结 ............. 45
第五章 改进方法的应用案例与验证.............46
5.1 研究过程概述 ..... 46
5.2 软件测试过程改进框架的应用案例 ......... 46
5.3 质量度量与绩效验证 ............. 62
5.4 本章小结 ............. 66
第五章 改进方法的应用案例与验证
前面两章分别从软件测试过程的改进、软件质量度量方法的改进两个方面对敏捷模式下软件质量管理的改进方法进行了系统研究,本章则针对敏捷软件测试过程的改进框架、改进的敏捷软件质量度量方法,继续作进一步的应用案例分析与验证研究。
5.1 研究过程概述
本章采用案例分析法对所提出的软件测试过程改进框架进行应用分析和验证。首先该基于一个假设:项目内外部环境基本稳定的情况下,组织能力成熟度等级与项目整体绩效正相关,即组织能力成熟度等级越高,项目整体绩效越高。如果实施软件测试过程改进促成组织测试能力成熟度等级和项目整体绩效同时提高,就证明该过程改进框架是有效的,同时也能证实假设---能力成熟度等级和项目整体绩效正相关。在 AN 公司相关项目领导和团队组织成员的配合下,本课题选取两个类同的长期项目 A 和 B 进行为期两个季度(2015 年 Q4 和 2016 年 Q1,即 2015 年 10 月~2016 年 3 月)的研究,基于 CMMI 应用实施方法来对其中一个项目 A(作者所在项目)进行测试过程改进实施和评估,而对项目 B 仅作能力等级评估。通过项目 A 实践的测试过程改进和评估过程及其结果的可操作性,来实证软件测试过程改进框架的可行性;通过项目 A 伴随结果等级评估的 CMMI 晋级过程,来实证软件测试过程改进框架的有效性;通过项目 A纵向的数据对比---即项目 A 从框架定义的低 CMMI 等级改进到高 CMMI 等级前后的绩效变化,以及项目 A 和项目 B 横向的数据对比---即项目 A 从框架定义的低 CMMI 等级改进到高 CMMI 等级前后与项目 B 的绩效差距,项目 A 的绩效伴随 CMMI 等级的正向变化来进一步实证软件测试过程改进框架的有效性。另外,基于项目 B稳定在CMMI2 的能力等级,可以同时对第四章改进的敏捷软件质量度量方法进一步进行简单验证。
......
总结
当今社会已经完全步入互联网时代,衣食住行、金融、商务、高科技等各行各业,互联网无所不在。互联网的爆炸式普及,离不开软件产品开发的巨大生产力[40]。但传统软件开发管理模式却难以适应软件规模的不断扩大,生命周期的不断延长,以及用户需求变化多端,逐渐产生了软件危机。同时,互联网时代的软件产品开发越来越强调新的七字诀要求--专注、极致、口碑、快,强调快速反应的同时保障产品的质量和口碑。于是,解决软件危机并适应这些变化和要求的敏捷管理模式越来越流行,并已成为现在互联网软件行业的主流开发管理模式[40]。软件质量管理和敏捷的结合成为必然,但以快为先的敏捷并不一定就能保障效率和质量,实际情况中速度、效率、质量反而可能是相互冲突的。那么如何在软件质量管理和敏捷相结合的同时保障和改进生产效率、产品质量以及项目绩效?目前仍然缺少对敏捷管理模式的质量管理进行系统性的研究,软件质量过程改进研究较多,但多针对于研发全过程,很少专门研究软件测试领域,关于敏捷软件测试的过程改进研究更是几乎没有。同时传统的软件质量度量方法难以满足提前预测和管控风险的要求,现有研究又多停留于理论层面,脱离实际生产需求,难以应用。在此背景下,本课题作了基于敏捷模式软件质量管理过程的改进方法研究,主要研究工作是从软件测试和软件质量度量这两个质量管理必不可少的环节着手,解决如何改进软件测试的过程与改进软件质量的度量方法,以期软件质量管理活动在拥抱以快为先的敏捷的同时可以保障和改进生产效率、产品质量以及项目绩效。软件测试的过程改进方法研究,是基于 CMMI 模型表示方法,首先对敏捷软件测试的分类、过程域进行论述,分析得出 4 个分类以及 48 个过程域的分布和等级划分,接着据此得出软件测试的过程改进框架(分别用连续式和阶段式表示):
(1)基于软件测试的过程改进框架的连续式表示模型,组织能够先纵向沿着某一分类或某几个分类改进路径从初始级的过程域逐渐向高级的过程域“进化”,先把容易完成的分类做到最优,逐个分类完成改进。
(2)基于软件测试的过程改进框架的阶段式表示模型,组织能够先横向完成该能力成熟度等级下的所有过程域,从初始级到持续优化级逐个等级完成改进。
(3)互联网或软件组织可以应用软件测试过程改进框架方便的对内部进行软件测试过程改进或能力等级评估。
..........
参考文献(略)