开题报告
来源:互联网 发布:最大最小距离算法代码 编辑:程序博客网 时间:2024/06/10 06:04
基于CMM的软件项目管理系统的设计与实现
The Design and Implementation of software project’s management system based on CMM
1题目简介
本课题是为软件项目研发服务的一个辅助管理系统,之所以称之为系统,是因为它将集成若干可应用于软件项目研发不同阶段或过程的工具,其中包括需求管理、成本核算、人员管理、项目跟踪、软件维护和配置管理等。
课题参考的主要理论是CMM(Capability Maturity Model)和其他一些先进的软件工程、项目管理理论,如ISO9000、8thmanage等。关于这些理论我将在第2节“研究现状”中给出简要说明。
2研究现状
课题应归于软件项目或过程管理的范畴,国内外对此的研究主要集中在如下几个方面:
2.1软件过程改进标准和规范的研究。
这方面,以美国卡耐基梅隆大学软件工程研究所(SEI)推出的CMM系列标准为代表。
CMM的实质是软件过程改进( Software Process Improvement) 的系统方法,它通过履行一系列的关键过程域中的关键实践来达到改进软件过程的目的。CMM建立在“好的软件过程是产生好的软件质量”的假设前提下,通过改进软件过程达到最终提高软件质量的目的。软件过程在CMM 中的确切定义是:人们用以开发和维护软件及其相关产品的一系列活动,包括软件工程活动和软件管理活动。CMM的具体应用是: (1) 评估软件过程,确定组织当前的软件过程状态,发现与软件过程有关的急需解决的问题,并作为企业软件过程改进的指导图。(2) 评估各个软件企业的软件过程能力,为选择软件承包商提供依据。
软件过程能力是指通过实施既定的软件过程能实现预期结果的程度。软件过程能力的改进是基于许多小的、进化的步骤,而不是通过一次革命性的创新来实现的。这一结论为Humphrey将Crosby 的质量管理成熟度网格中的五个进化阶段引入到过程成熟度框架提供了依据,并在软件成熟度模型中形成了初始级、可重复级、已定义级、已管理级和优化级5个等级,每个等级又包含几个关键过程域和若干关键实践。[1][2]
为了避免间接参考的误解,参考原始CMM文档后本人给出了图1所示的有关软件过程改进5个层次的表述。
CMM规范在提到可管理级时提到了组织范围内建立软件过程数据库的思想,这也是本题目重点参考的地方,建立软件过程数据库的一般过程是:按照一定的原则确定度量指标à选择度量项/指标à采集度量数据(遵循最小开销、问题导向和循序渐进原则)[3]。
图1 CMM:软件过程改进的5个层次
国内的许多硕博士论文都是围绕CMM开展的,大致可以分为如下几类:
1)对国内实施CMM的状况进行调查分析,给出改进建议 [13] ;
2)基于CMM的软件过程评估或估算方法的研究[14-16]
3)基于CMM的过程改进模式或模型的研究 [17-21];
4)基于CMM的过程改进实践总结[22-23];
5)基于CMM特定过程域的系统工具的研究与开发[24-26];
6)基于CMM的微观技术研究[27]。
除了CMM,还有许多其它著名的软件过程改进理论和规范,如“ISO/IECl5504软件过程评估的技术报告草案”、“ISO/IECl5504评估操作指导草案”、“BOOTSTRAP软件过程评估”等。[4]
2.2质量认证体系和企业管理理论的研究。
在质量认证体系方面,以国际标准化组织(ISO)制定的9000系列标准为代表。
ISO9000系列标准是一个大家族,由5个部分组成:质量术语标准,质量管理标准,质量保证标准,质量管理和质量保证标准的选用和实施指南,支持性技术标准。适用于各种范围广泛的工作活动,包括设计,开发,生产,安装和服务。
质量保证标准是ISO9000系列的核心内容,也是质量体系认证的依据。此标准包括三个模式,即ISO9001,ISO9002,ISO9003。其中ISO9001是专门为软件行业颁发的标准。
2000版ISO9001标准以客户为关注焦点,以如何满足客户需要为出发点,通过过程管理控制来看待SQA。ISO9001标准要求从软件项目的“合同评审à项目开发à安装à服务à质量改进”全过程进行完善的SQA控制,其中包括了对人员的培训及用于质量改进的统计技术。要求软件企业应建立SQA的定量度量方法,以便进一步改进软件质量。
ISO9001标准要求的是软件企业起码应达到的要求,通过了ISO9001认证的软件企业在SQA方面可能有一些差距,但具备了起码的SQA能力(至少应当建立相当于CMM二级水平,即可重复级)[5]。
无论是软件过程改进还是质量认证体系,其最终目的都是为了改善软件企业的管理状况,保证软件产品的质量,提升企业的信誉度。因此,对于该课题的另一个分支是从管理学的角度进行的研究。这些研究大多集中于对软件企业管理中存在的问题的研究,并给出一些可行性的建议。
这里,要特别提到一种新兴的理论,8thmanage管理理论[6],该理论通过分析软件企业的特殊性并结合作者实践经验,提出了解决智力资源管理的有效方法——承诺管理。该理论将软件行业的管理划分为资源管理、成本管理、产出管理和质量管理四个领域,并提出将承诺贯穿于这四个领域来实现软件行业的有效管理。
2.3软件工程理论和软件项目管理工具的研究和开发。
软件工程理论的诞生源于人们对软件危机的认识,自20世纪60年代提出软件危机的问题,至今也没有哪种方法能够彻底解决它。
软件工程具有下述的本质特性[12]:
1) 软件工程关注于大型程序的构造
2) 软件工程的中心课题是控制复杂性
3) 在变化中求生存
4) 开发软件的效率非常重要
5) 和谐地合作是开发软件的关键
6) 软件必须有效地支持它的用户
7) 在软件工程领域中是由具有一种文化背景的人为具有另一种文化背景的人创造产品
软件工程理论的研究贯穿于软件生命周期的各个阶段。
先进的理论,要想在实践中起作用,就必须借助于工具。通常,项目管理软件具有预算、成本控制、计算进度计划、分配资源、分发项目信息、项目数据的转入和转出、处理多个项目和子项目、制作报表、创建工作分析结构、计划跟踪等功能。这些工具可以帮助项目管理者完成很多工作,是项目经理的得力助手。
根据项目管理软件的功能和价格,大致可以划分两个档次:一种是高档工具,功能强大,但是价格不菲。例如, Primavera 公司的P3、Welcom公司的OpenPlan、北京梦龙公司的智能PERT系统、Gores公司的 Artemis等等。另外一种是通用的项目管理工具,例如TimeLine公司的TimeLine、Scitor的 Project Scheduler、 Microsoft的 Project、上海沙迪克软件有限公司的ALESH等,他们功能虽然不是很强大,但是价格比较便宜,可以用于一些中小型项目。 但对于一般的软件项目管理,目前最常用的是Microsoft Project项目管理工具[7]。
除了这些比较完整的项目管理系统外,还有许多优秀的辅助于项目管理特定过程域的工具软件,但由于不是本课题关注的重点,不再详述。
在此,特别要提到的是对于本课题有很大借鉴意义的SPP(Simplified Parallel Process,精简并行过程)方法论和相关工具的开发[8]。SPP是基于“CMMI、软件工程和项目管理”知识创作的集成化研发管理方法论,它由众多的过程规范和模板组成,过程模型如图2所示。“精简并行”的含义是:
1)对CMMI 3级以内各过程域的内容和要求作了“精简”处理。
2)项目管理过程、项目研发过程和机构支持过程“并行”开展。
SPP的主要特征和优点如下:
1) 清晰直观的过程模型:产品生命周期和项目管理过程、项目研发过程、机构支持过程的结构清晰,相互关系直观明了。根据SPP模型,机构领导、项目经理、项目成员(开发人员、测试人员等)很容易知道自己“应该在什么时候、按照什么规范做什么事情”。SPP模型有助于使企业内部的各个职能单位有条不紊地开展工作。
2) 融合了CMMI、项目管理与软件工程知识:SPP吸纳了CMMI 3级以内的大部分关键过程域,补充“立项管理”和“结项管理”两个过程域(CMM不涉及立项与结项),使研发管理有始有终。SPP细化了项目研发过程的规范(这是CMMI的薄弱环节),如“需求开发与管理”、“软件硬件设计”、“软件硬件实现”、“测试与改错”、“发布与试用”、“服务与维护”等过程域,更加适合于项目研发团队。
3) 容易裁剪与扩充:SPP模型的三类过程贯穿了产品的整个生命周期,所有过程域都合理地安排在产品生命周期中的某些阶段。用户可以根据本企业的特征,适当地裁剪或扩充SPP的过程域,很容易制定出最适合于本企业的过程模型。
图2 SPP模型
该模型的提出者林锐博士,创办了自己的公司,开发出了名为“集成化研发管理平台RDMS”的产品,并提供在线体验,网址:http://demo.rdms.mansuo.com/。
3选题意义
在阐述选题意义之前,有必要看看软件项目管理的特殊性和重要性。
1)不同的软件研发团队,其软件开发过程虽然不一致,但针对某一个团队,由于其业务对象相对固定,因而,是可以统一其软件研发过程的。
2)有很多软件研发团队的目标产品都是针对特定的行业,因此,随着时间的积累,关于该行业的开发经验就必然会沉淀下来,但由于缺少经验记录机制,而难于重复利用。
3)与传统产业不同,软件产业依赖的主要是智力资源,即贯穿于软件研发过程中的各类人力资源,包括前期的需求分析人员、软件设计人员,中间的编码人员,后期的测试人员和软件维护人员,都是有很高的智力需求的。由于脑力劳动所具有的特殊性,也就决定了软件研发管理中必然存在如下的问题[6]:
l 从劳动时间上看,要衡量汽车流水线上工人的产量只要知道他的劳动时间就行了;而对于程序员来说,在办公室坐了多久并不代表他的头脑也运作了这么久,投入与产出不一定相符;
l 工厂里可以通过对工人的产量进行计算(量化)即可,而脑力劳动的产出难以量化;
l 脑力成果可见性低,很难转移,并且以团队来进行的智力活动相互依赖性很高;
l 质量检验问题:脑力成果,如一个复杂的软件系统,没有轻易分辨其优劣的方法。需要专业人士进行事后判断。
l 员工的评价问题:机器通常是诚实的,99%可控的;而在以人为利润载体的组织里,一个棘手的问题即是如何建立一种相对公正且可以长期保存的人事评价方法,以对抗责任推卸和公司政治。
4)大部分软件企业,都存在软件研发人员流动的问题,特别是那些小型软件企业(公司),由于缺乏完善的过程管理体系,造成对人员的依赖性较强,一旦核心人力资源流失,将影响整个研发项目的进程,甚至不得不转型。
传统的项目管理工具,大多是基于普通项目管理的通用工具,而且使用对象也很局限。而本课题所关注的是软件研发过程中的特殊性,即基于软件研发工作的上述特征和其中存在的问题,试图借鉴包括CMM在内的若干先进的软件过程改进和项目管理理论,开发一套实用的软件项目管理工具,通过从项目经理、开发人员以及软件维护人员的全员参与,帮助软件企业或研发团队有效的组织研发过程、沉淀开发经验、管理智力资源并尽可能的摆脱由于人员流动性大而带来的负面影响。
4预期成果和研究内容、方法
4.1预期成果
如前所述,本课题就是开发一套集成了若干研发管理工具的项目管理系统,在这里不妨称之为目标系统。图3反映了目标系统的初步设计,在最终实现上可能会有不同。
图3 目标系统结构
1)目标系统关注的重点:人员及项目组织管理。
应用软件系统,不论其规模大小,复杂性高低,均可被视为一个“项目”,要想保证项目成功,除了软件技术、开发方法等因素外,人员及项目的组织管理是至关重要的。因为软件系统的开发与维护工作都是由人来完成的,人的因素是第一位的。适当的人员与项目组织管理是确保项目成功的重要基础,特别对大型复杂的应用软件系统而言,人员与项目组织管理是否合理有效对项目的成功起着决定性的作用。
3)目标系统的开发框架:通过基于工作流引擎的软件系统组织项目管理中涉及的关键过程和人员角色,建立过程数据库以收集成熟的业界规范、记录研发团队的开发经验。
4)目标系统的技术架构:JSP页面和JAVA架构的J2EE模式,便于剥离系统的实现层和表现层,增强可复用性和可维护性。
4.2研究内容和方法
1)深入学习CMM、ISO等先进的软件过程改进标准和规范,从中提取可借鉴的内容。
通过查阅相关的国际和国家标准规范,收集可利用的参考框架,建立和丰富标准过程数据库。
2)从网络上收集有价值的文章,特别是那些专业公司和个人的经验性文章,并总结个人实践经验,建立初步的项目经验数据库。
3)研究目前市场上流行的项目管理工具,取长补短。
由于目标系统重点关注的是需求过程和研发相关的人力资源管理,所以在这两个方面要充分借鉴那些成熟的产品,避免走弯路。
4)深入学习关键性技术,做到准确应用。
目标系统将用到的关键技术涉及工作流技术,J2EE相关技术等(详细介绍请参看下一节),这些技术都是相当庞杂的,因此,必须在短时间内掌握重点,对关键技术做到准确应用。
5关键技术和难点
5.1关键技术
1)工作流引擎[9]。
工作流的概念起源于生产组织和办公自动化领域,针对日常工作中具有相对固定程序的活动而提出的一个概念。工作流是一种反映义务流程的计算机化的模型。在实际工作中,凡是由计算机软件系统控制并执行的过程都称为工作流。而按照CMM的阐述,成熟的软件过程所必须的特征就是有相对固定的开发流程和管理可见度,所以完全可以采用工作流技术来对其进行管理。
作为工作流技术的核心模块,工作流引擎的主要功能是对工作流过程进行监视、解释、控制、执行,负责解释工作流流程定义。创建并初始化流程实例,控制流程流动的路径,记录流程运行状态,挂起或唤醒流程,终止正在运行的流程,与其他引擎之间通讯等工作。
采用工作流技术优势:
(1) 将应用逻辑和过程逻辑分离:可以在不修改具体功能实现方式(硬件环境、操作系统、数据库系统、编程语言、应用开发工具、用户界面),也无需修改应用程序的情况下,通过修改业务模型来改变系统功能。
(2) 实现集成管理:对全部或部分过程进行集成管理,有效地把人、信息和应用工具合理地组织在一起,发挥系统的最大效能。
(3) 提高迭代开发:使得新业务流程很容易部署,当业务过程发生变化时,能迅速地进行流程修改、重组来满足需求,更加方便地使用迭代的软件开发方式,使开发更有效、风险更低。
(4) 更好流程控制:通过标准的工作方法和跟踪审计,提高了业务流程的管理控制。
(5) 采用工作流技术搭建的软件项目管理系统可以很好地满足软件项目管理中所涉及的需求特征,通过将工作分解成定义良好的任务、角色、按照一定的规则和过程来执行这些任务并进行管理监控,实现软件项目管理中每一个具体工作流程在项目相关人员之间准确地传递并执行,有效地管理整个项目开发过程。
在这方面已有许多成熟的产品可以借鉴,如微软就专门开发了一套面向开发人员的工作流开发库Microsoft Windows SharePoint Services(V3)和 Microsoft Office SharePoint Server 2007 [28],其工作流功能构建于Windows Workflow Foundation (WF) 之上,该开发库支持两种典型的工作流模型:顺序工作流和状态机工作流,图4给出了Microsoft Windows SharePoint Services中封装的工作流体系结构。
图4 Windows SharePoint Services V3 中的工作流体系结构
2)J2EE相关技术。
J2EE,即Java 2 平台企业版,其设计目的是提供对服务端和客户端的支持从而推动企业及企业中多层应用程序的发展。图5描述了组成一个典型的J2EE环境的各种组件和服务[10]。
图5 J2EE平台架构
3)数据挖掘。
目标系统经过一段时间的运行,必然沉淀大量数据,而怎样合理利用这些数据,从中提取有用信息,为软件过程改进提供持续性的服务,这是该课题将来要解决的问题。而数据挖掘技术正好可以满足这一需求。
数据挖掘,又称知识发现,是从大量的历史数据中提取有用的模式或知识的过程[11]。图6反映了数据挖掘的具体过程。
图6 数据挖掘过程
如图所示,数据挖掘的基础是通过数据清理,在现有数据的基础上建立合理的数据仓库,所以,系统在设计时要考虑建立合理的数据库结构,以涵盖足够的和有效的元数据。
5.2重点、难点
1)对标准的把握程度将影响目标系统的规范性。
CMM等软件过程改进规范和标准,之所以受到大众的欢迎,是因为他凝聚了大量科技工作者的集体智慧,所以目标系统借鉴这些标准是十分必要的,但如何在短时间内领会这些标准的内涵并从中提炼有效元素,合理的应用到目标系统中,是本课题的一个重点,也是难点。
2)软件架构的设计。
目标系统旨在提供一个平台,为软件研发过程的管理服务,因此,其本身的设计就必须具有较大的灵活性,充分考虑可变因素,所以架构设计的合理性和有效性是本课题的另外一个难点。
3)数据库设计。
数据库结构设计是否合理,直接影响目标系统的可扩展度,特别是针对将来可能面临的数据挖掘问题,数据库的设计要预先考虑相关的数据特征,便于可持续性应用。
4)实践条件制约。
要想确认系统运行的有效性,必须经过实践的验证,因此,能否找到一个试运行的环境和收集大量使用数据,是目标系统改进的关键。
6时间安排
时间
任务
2006年12月 / 2007年3月
基本理论和关键技术学习
2007年3月 / 2007年5月
概要设计和详细设计
2007年5月 / 2007年7月
编码
2007年7月 / 2007年10月
测试和试运行
2007年10月 / 2007年12月
撰写论文
参考文献
[1] 《Capability Maturity ModelSM for Software, Version 1.1》,SEI,1993
[2] 何帆等.CMM与软件工程融合的应用.计算机与现代化.2005第1期,P33-40
[3] 温剑峰,李舒扬.CMM中过程数据库的设计与实现. 铁路计算机应用,第14卷第4期,P187-189
[4] 扎赫兰著, 陈新等译.软件过程改进.中信出版社.2002
[5] 刘澄等. 软件企业ISO9000与CMM结合模式研究. 现代管理科学,2005.10 P3-5
[6] 罗叶明.第八个管理:怎样赶超印度、美国软件.清华大学出版社.
[7] 软件项目管理工具简介.http://www.51cto.com/art/200603/23265.htm
[8] 集成化研发管理方法论SPP.http://www.chinaspis.com/
[9] 邓惠建.基于工作流技术的软件项目管理系统的研究与实现.湖南大学工程硕士学位论文.2005年6月
[10] Nicholas Kassem/Enterpise Team 著,涂翔云、姚欣、李春阳等译.J2EE权威指南.北京:中国电力出版社,2002年7月第一版: 5-18
[11] Jiawei Han and Micheline Kamber.Data Mining: Concepts and Techniques (2nd edition). Morgan Kaufmann Publishers, 2006[http://www-faculty.cs.uiuc.edu/~hanj/]
[12] 张海藩.软件工程导论.清华大学出版社.北京.2003年12月第4版
[13] 张友生等.CMM/CMMI在中国的实施状况调查报告.计算机工程与应用,2006.07 P31-32
[14] 刘寅斌等.基于CMM的企业信息化价值评估模型研究.计算机科学2003Vol.31No. 9 ,P71-73
[15] 马海涛.基于CMM的软件项目估算方法的研究.复旦大学硕士学位论文.2004年11月
[16] 郭欣荣.CMM集成软件管理过程域的度量研究.首都经济贸易大学硕士学位论文.2006年3月
[17] 朱艳.基于CMM的软件测试管理支持系统研究.大连海事大学硕士学位论文.2006年2月
[18] 谢芸.基于CMMI的配置管理工作流模型的研究与实现.合肥工业大学硕士学位论文.2006年5月
[19] 刘瑞芳,谢长生,谭志虎.基于CMM的软件开发过程研究.计算机应用研究,2004.7 P133-137
[20] 朱小冬 王小巍.基于CMM的软件维护过程研究.计算机工程与应用,2005.59, P66-69
[21] 乔钢柱, 郭银章, 曾建潮。基于CMM软件过程的阶段并行开发模型研究.电脑知识与技术,2006.4 P164,211
[22] 喻海棠.基于CMM的SPI实践.四川大学工程硕士论文.2005年4月
[23] 冯娜等.基于CMM中需求管理活动的应用研究.大连大学学报.2006年4月第2期第27卷,P63-67
[24] 阮 航.基于CMM的软件缺陷跟踪管理平台的设计与实现.吉林大学硕士学位论文.2005年8月
[25] 孙延海等.基于CMM和工作流的软件项目管理系统的研究.微计算机信息.2006年22卷2-3期,P244-264
[26] 许平等.基于CMM的CPMS平台的角色定义工具的设计与实现.计算机科学2004Vol.31No.7,P123-126
[27] 费立蜀.CSDPL-一种基于CMM的软件过程定义语言.计算机科学2004Vol.31No.5, P77-81
[28] http://www.microsoft.com/china/MSDN/library/Office/sharepoint/ms406057.mspx
- 开题报告
- 开题报告
- 开题报告
- 开题报告
- 开题报告
- 开题报告
- 开题报告
- 开题报告
- 开题报告
- 开题报告
- 毕业设计-开题报告
- 开题报告基本要求
- 毕业设计之开题报告
- 开题报告弄好了
- 准备GCT开题报告
- 开题报告格式
- 开题报告基本要求
- 开题报告下载网址
- JSP动态输出Excel及中文乱码的解决
- 安装VS2005 SP1补丁攻略
- 入侵Oracle数据库时常用的操作命令整理
- 提升JSP应用程序的七大绝招
- 如何在web.config文件中限制上传文件大小
- 开题报告
- 提升JSP应用程序的七大绝招
- 为你完全解析Oracle 10 gas全面集群配置
- 在jsp程序中使用com组件
- Fireworks 组合路径功能小解
- 数据库设计指南
- ◎VBS脚本运行库手册之五 ——文本文件的建立、追加、删除等
- 在jsp程序中使用com组件
- 城市旅游问题