版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章软件项目立项3.1软件项目立项方法3.2软件可行性分析3.3软件项目规模成本估算3.4成本—效益分析3.5制定软件项目开发计划3.6软件项目立项文档3.7软件项目团队的建立3.8实战训练 3.1软件项目立项方法
3.1.1委托开发项目
委托开发项目即用户为实现某一特定目标而委托软件开发单位所完成的软件开发。
委托开发项目又可分为公开招标项目和定向委托项目两种。委托开发项目一般是以招标、投标的形式开始的。作为软件的客户(需求方)根据自己的需要,提出软件的基本需求,并编写招标书,同时将招标书以各种方式传递给竞标方。每一个竞标方都会思考如何以较低的费用和较高的质量来解决客户的问题,然后都会交付一份对问题理解的说明书以及相应的解决方案,同时也会附上一些资质证明和自己参与类似项目的经验介绍,以向客户强调各自的资历和能力。有时,竞标方为了最后中标,会花大力气开发一个系统原型。在众多能够较好满足客户需要的投标书中,客户会选择一个竞标方。其间,竞标方会与客户进行各种公开和私下的讨论以及各种公关活动,这是售前的任务。此时,作为竞标方的项目经理已经参与其中的工作。经过几个回合的切磋,如果得到用户的认可并获得中标,中标者则开始着手合同书的编写等相关事宜,这时就有质量保证人员和相关的法律人员介入。合同签订是一个重要的里程碑,也是竞标方跨过的一个非常重要的“沟壑(Gap)”。软件项目合同主要是指技术合同,技术合同是法人之间、法人和公民之间、公民之间以技术开发、技术转让、技术咨询和技术服务为内容,明确相互权利和义务关系所达成的协议。3.1.2自主开发项目
自主开发项目即软件开发单位根据市场需求或科学研究需要而开发的具有自主知识产权的软件项目。
自主开发软件项目或产品,必须先立项,然后才能开发或施工。立项的具体表现形式就是在市场调研的基础上,分析立项的必要性(是否有市场前景)和可能性(是否有能力实现),并具体列出系统的功能、性能、接口和运行环境等方面的需求,当前客户群和潜在客户群的情况,以及投入产出分析。然后再按照编写参考指南书写立项建议书,并对它进行评审,评审通过以后才算正式立项。立项后应有项目任务书或项目合同书作为项目开发的输入项。 3.2软件可行性分析
3.2.1可行性分析的内容
可行性分析一般可从技术可行性、经济可行性、社会可行性及方案可行性四个方面进行。
(1)技术可行性。对要开发的项目的功能、性能、限制条件进行分析,确定在现有的资源条件下,技术风险有多大,项目是否能实现。
技术可行性是最难解决的,它一般要包括:
①开发的风险:在给出的限制范围内,能否设计出系统并实现必需的功能和性能。
②资源的有效性:人力资源以及用于建立系统的其他资源是否具备。
③技术:目前的技术水平能否支持这个系统。
开发人员在评估技术可行性时,一旦估计错误,将会出现灾难性后果。
(2)经济可行性:进行开发成本以及取得效益的评估,确定要开发的项目是否值得投资开发。
(3)社会可行性:要开发的项目是否存在任何侵犯、妨碍等责任问题,要开发项目的运行方式在用户组织内是否行得通,现有管理制度、人员素质、操作方式是否可行。
(4)方案可行性:提出并评价实现系统的各种开发方案并从中选出一种最优方案。3.2.2可行性分析的步骤
典型性的可行性分析有下列步骤:
(1)确定项目规模和目标。分析员对有关人员进行调查访问,仔细阅读和分析有关的材料,对项目的规模和目标进行定义和确认,清晰地描述项目的一切限制和约束,确保分析员正在解决的问题确实是要解决的问题。
(2)研究正在运行的系统。收集、研究、分析现有系统的文档资料,实地考察现有系统,在考察的基础上,访问有关人员,然后描述现有系统的高层系统流程图,与有关人员一起审查该系统流程图是否正确。这个系统流程图反映了现有系统的基本功能和处理流程。
(3)建立新系统的高层逻辑模型。根据对现有系统的分析研究,逐步明确新系统的功能、处理流程以及所受的约束,然后使用建立逻辑模型的工具——数据流图和数据字典来描述数据在系统中的流动和处理情况。因现在还不是软件需求分析阶段,故不用完整、详细地描述,只概括地描述高层的数据处理和流动即可。
(4)导出和评价各种方案。分析员建立了新系统的高层逻辑模型之后,要从技术角度出发,提出实现高层逻辑模型的不同方案,即导出若干较高层次的物理解法。根据技术可靠性、经济可行性、社会可行性对各种方案进行评估,去掉行不通的解法,就得到了可行的解法。
(5)推荐可行的方案。根据上述可行性分析的结果,应该决定该项目是否值得去开发。若值得开发,那么可行的解决方案是什么,并且说明该方案可行的原因和理由。要求分析员对推荐的可行方案进行成本—效益分析。
(6)编写可行性分析报告。将上述可行性分析过程的结果写成相应的文档,即《可行性分析报告》(见附录A),提醒用户和使用部门仔细审查,从而决定该项目是否进行开发,是否接受可行的实现方案。
3.3软件项目规模成本估算
3.3.1代码行估算技术
代码行(LineOfCode)估算技术简称代码行技术,是一种简单而直观的软件规模估算方法,它从过去开发类似产品的经验和历史数据出发,估算出所开发软件的代码行数。开发人员需要给出软件的范围描述,并进一步将软件分解成一些尽量小且可分别独立估算的子功能,通过估算每一个子功能并将其代码行数累加来得到整个系统的代码行数。
估算时,要求评估人员给出乐观的(a)、可能的(m)、悲观的(b)三种情况的值,并采用以下公式计算估算结果,其中L是软件的代码行数,单位是行代码(LOC)或千行代码(kLOC)。例如,某软件系统中有一个指定窗口对象,开发人员估计处理该窗口编辑所需的支持代码在200~400行之间,并且认为接近250行,这时最终的估算结果可能是计算代码行应遵循以下原则:
(1)保证每个计算的“源代码行”只包含一个源语句;
(2)计算所有交付的、可执行的语句;
(3)数据定义只计算一次;
(4)不计算注释行;
(5)不计算诸如测试行、测试用例、开发工具、原型工具等使用的调试代码或临时代码;
(6)在每一个出现的地方,每条宏的调用、激活或包含都作为源代码的一部分。代码行技术的优点是简单方便,在历史数据可靠的情况下可以很快估算出比较准确的代码行数;其缺点是需要依赖比较详细的功能分解结果,难以在开发初期进行估算,其估算结果与所用的开发语言紧密相关,且无法适用于非过程语言。3.3.2功能点估算法
功能点估算法是一种在需求分析阶段基于系统功能的一种规模估计方法,它通过研究初始应用需求来确定各种输入、输出、计算和数据库需求的数量和特性。这种方法的计算公式是功能点 = 信息处理规模 × 技术复杂度
信息处理规模包括各种输入、输出、查询、内部逻辑文件数、外部接口文件数等。技术复杂度包括性能复杂度、配置项目复杂度、数据通信复杂度、分布式处理复杂度、在线更新复杂度等。
功能点估算法采用软件执行功能的数量和复杂程度来衡量软件规模,适合于度量信息系统。这种方法根据软件信息域的基本特征和对软件复杂性的估计进行估算,其计算过程如下:
(1)计算每一个类别中的功能数量;
(2)应用复杂度权重因子计算未调整功能点;
(3)应用环境因素计算复杂度调整因子;
(4)计算调整后的功能点;
(5)将最后得出的功能点转化为代码行数。
功能点估算法的优点是与开发语言无关,考虑了应用环境因素的影响,它可以在开发初期进行估算;其缺点是在判断信息域的复杂等级和技术因素的影响程度时通常存在较大的主观性,不太适用于非信息系统。3.3.3类比估算法
类比估算法也称为自上而下估算法,是一种通过比照已完成的类似项目的实际成本,去估算出新项目成本的方法。估算人员根据以往完成类似项目所消耗的总成本(或工作量)来推算将要开发的软件的总成本(或工作量),然后按比例将它分配到各个开发任务单元中。通常在项目的初期或信息不足时(例如在合同期和市场招标时)采用此方法。它的特点是简单易行,花费少,但是具有一定的局限性,准确性差,可能导致项目出现困难。3.3.4自下而上估算法
自下而上估算法利用任务分解结构图,对各个具体的工作包进行详细的成本估算,然后将结果累加起来得出项目总成本。用这种方法估算的准确度较好,通常是在项目开始以后或者WBS已经确定的开发阶段等需要进行准确估算的时候采用。这种方法的特点是估算准确。它的准确度来源于每个任务的估算情况。但是这种方法非常费时费力,因为估算本身也需要成本支持,而且可能发生虚报现象。3.3.5专家估算法
专家估算法依靠一个或多个专家对项目作出估算,其精度主要取决于专家对估算项目定性参数的了解和他们的经验。
一般情况下,专家估算法是由多位专家进行成本估算的。一位专家可能会有偏见,最好由多位专家进行估算,取得多个估算值,最后得出综合的估算值。其中最著名的是Deiphi方法,其基本步骤是:
(1)组织者发给每位专家一份软件系统的规格说明和一张记录估算值的表格,请专家估算。
(2)专家详细研究软件规格说明后,对该软件提出3个规模的估算值。
①最小值ai;
②最可能值mi;
③最大值bi。
(3)组织者对专家表格中的答复进行整理,计算每位专家的平均值Ei = (a + 4mi + b)/6,然后计算出期望值:E = (E1 + E2+…+En)/n。
(4)综合结果后,再组织专家无记名填表格,比较估算偏差,并查找原因。
(5)将上述过程重复多次,最终可以获得一个由多数专家认可的软件规模。
3.4成本—效益分析
成本—效益分析的目的是从经济角度分析开发一个特定的新系统是否划算,从而帮助客户组织的负责人正确地做出是否投资于这项开发工程的决定。
成本—效益分析首先是估算将要开发的系统的开发成本,然后将其与可能取得的效益进行比较和权衡。效益分为有形效益和无形效益两种。有形效益可以用货币的时间价值、投资回收期和纯收入等经济指标来衡量;无形效益无法进行定量的分析,主要从性质上、心理上进行衡量和比较。系统的经济效益等于因使用新的系统而增加的收入加上使用新的系统可以节省的运行费用。运行费用包括操作人员数、工作时间和消耗的物资等。下面主要进行有形效益的分析。
1.货币的时间价值
通常以利率形式表示货币的时间价值。假设年利率为i,如果现在存入P元,则n年后可得到的钱数为F = P(1 + i)n
F就是P元钱在n年后的价值。反之,如果n年后能收入F元钱,那么这些钱的现在价值是
例如,有一项工程,最初投资为5000元,估计使用该工程后每年可节省2500元,五年共节省12 500元。但不能简单地把5000元和12 500元相比较,因为前者是现在投资的钱,后者是若干年后节省的钱。假定年利率为12%,利用上面计算货币现在价值的公式可以算出每年预计节省的钱的现在价值,如表3.1所示。
2.投资回收期
所谓投资回收期,就是工程累计经济效益等于最初投资所需要的时间。显然,投资回收期越短,获得利润就越快,这项工程就值得投资。如表3.1中,该工程的最初投资额是5000元,经过两年后可以节省4225.12元,比最初投资还少774.88元,第三年以后再次节省1779.45元,则774.88/1779.45 = 0.44,2 + 0.44 = 2.44年,因此这项工程的投资回收期是2.44年。
3.纯收入
衡量工程价值的另一项经济指标是工程的纯收入,也就是在整个生存周期内新系统的累计经济效益与投资之差。这相当于比较投资开发一个软件系统和把钱存入银行一样。但是开发一个系统要冒风险,因此从经济观点看这项工程可能是不值得投资的。如果纯收入小于等于零,则单从经济观点来看,这项工程不值得投资。
在表3.1中,该工程的纯收入为9011.94-5000=4011.94
4.投资回收率
通过工程投资回收率可以衡量投资效益的大小,并且可以用它和年利率相比较。
假定已知现在的投资额,并已估计出将来每年可以获得的经济效益,给定软件的使用寿命,如何计算投资回收率呢?设想把数量等于投资额的资金存入银行,每年从银行取回的钱等于系统每年可以获得的效益,在时间等于系统寿命时,正好把银行中的存款全部取完,那么,年利率等于多少呢?这个假想的年利率就等于投资的回收率。根据上述条件不难列出下面的方程式:其中:P是现在的投资额;Fi 是第i年年底的效益(i=1,2,3,
…,n);n是系统的使用寿命;j 是投资回收率。
解出上述方程式就可求出投资回收率。
假定,n=5,P=5000,F=2500,则其投资回收率是41%~42%。 3.5制定软件项目开发计划
3.5.1软件项目开发计划书的内容
根据项目管理知识体系(ProjectManagementBodyOfKnowledge,PMBOK)PMBOK2000,项目计划可以包含如下要素:
(1)项目范围说明。项目范围说明阐述进行这个项目的原因或意义,形成项目的基本框架,使项目所有者或项目管理者能够系统地、逻辑地分析项目关键问题及项目形成中的相互作用要素,使项目干系人在项目开始实施前或项目相关文档编写以前,能够就项目的基本内容和结构达成一致;项目范围说明应当形成项目成果核对清单,作为项目评估的依据,在项目终止以后或项目最终报告完成以前进行评估,以此作为评价项目成败的依据;范围说明还可以作为项目整个生命周期监控和考核项目实施情况的基础以及项目其他相关计划的基础。
(2)项目进度计划。项目进度计划是说明项目中各项工作的开展顺序、开始时间、完成时间及相互依赖衔接关系的计划。通过项目进度计划的编制,使项目实施形成一个有机的整体。项目进度计划是进度控制和管理的依据,可以分为项目进度控制计划和项目状态报告计划。
在项目进度控制计划中,要确定应该监督哪些工作,何时进行监督,监督负责人是谁,用什么样的方法收集和处理项目进度信息,怎样按时检查工作进展和采取什么调整措施,并把这些控制工作所需的时间和人员、技术、物资资源等列入项目总计划中。
项目进度计划常用的编制方法有甘特图与网络计划法,本书着重介绍甘特图。①甘特图及其特点。甘特图(GanttChart)是由亨利·甘特于1910年开发的。甘特图通过条状图来显示项目进度和其他与时间相关的系统进展的内在关系随着时间进展的情况。其中,横轴表示时间,纵轴表示活动(项目)。线条表示在整个期间计划和实际活动完成的情况。甘特图可以直观地表达任务计划在什么时候进行,及实际进展与计划要求的对比。管理者由此可以非常便利地弄清每一项任务(项目)还剩下哪些工作要做,并可评估工作是提前还是滞后,亦或正常进行。除此以外,甘特图还有简单、醒目和便于编制等特点。图3.1甘特图符号②制作甘特图的方法。甘特图中的符号及含义如图3.1所示。
制作甘特图有专门的软件,如Ganttproject、GanttDesigner和MicrosoftProject等,也可以在MicrosoftExcel中手工绘制。
③实例。已知某一项目的工作安排如下:
2008年1月进行可行性分析与计划;2008年2月至5月进行需求分析;2008年6月至10月进行系统设计;2008年9月至2009年3月进行系统实施;2009年4月进行验收与评价。用甘特图编制该工作计划如图3.2所示。图3.2甘特图示例
(3)项目质量计划。质量计划针对具体待定的项目,安排质量监控人员及相关资源,规定使用哪些制度、规范、程序、标准。项目质量计划应当包括与保证和控制项目质量有关的所有活动。质量计划的目的是确保项目的质量目标都能达到。根据ISO9001的要求和PMBOK2000,为实现质量目标,组织应遵循以顾客为中心、领导作用、全员参与、过程方法、管理的系统方法、持续改进、基于事实的决策方法、互利的供方关系等8项质量管理原则。
(4)项目资源计划。有了项目范围说明和进度计划后,资源计划用于决定在项目中的每一项工作中用什么样的资源(人、材料、设备、信息、资金等),在各个阶段使用多少资源。
(5)项目沟通计划。沟通计划就是制定项目过程中项目干系人之间信息交流的内容、人员范围、沟通方式、沟通时间或频率等沟通要求的约定。
(6)风险对策计划。风险对策计划是为了降低项目风险的损害而分析风险、制定风险应对策略方案的过程,包括识别风险、量化风险、编制风险应对策略方案等过程。
(7)项目采购计划。制定项目采购计划的目的就是识别哪些项目需求可通过从本企业外部采购产品或设备来得到满足。如果是软件开发工作的采购,也就是外包,应当同时制定对外包的进度监控和质量控制的计划。
(8)变更控制计划、配置管理计划。由于项目计划无法保证一开始就预测得非常准确,在项目进行过程中也不能保证准确有力的控制,导致项目计划与项目实际情况不符的情况经常发生,因此必须有效处理项目的变更。变更控制计划主要用于规定变更的步骤、程序,配置管理计划用于确定项目的配置项和基线,控制配置项的变更,维护基线的完整性,向项目干系人提供配置项的准确状态和当前配置数据。3.5.2项目计划编制过程
由于软件开发的手工性、个体性特征,软件开发项目计划不可能是一个静态的计划,因此在项目启动时,可以先制定一个颗粒度相对比较粗的项目计划,先确定项目高层活动和预期里程碑。粗颗粒度的项目计划需要不断地更新迭代,根据项目的大小和性质以及项目的进展情况进行迭代和调整。迭代和调整的周期也是根据项目的情况进行制定的,一般短到一周,长到两个月左右。经过不断的计划制定、调整、修订等工作,项目计划从最初的粗粒度变得非常详细。这样的计划将一直延续到项目结束,延续到项目的成果出现。制定计划的过程就是一个对项目逐渐了解和掌握的过程,通过认真地制定计划,项目经理可以知道哪些要素是明确的,哪些要素是要逐渐明确的,通过渐近明细不断完善项目计划。阶段计划中包含的工作汇报和下一阶段工作安排是掌握项目进度的依据,从阶段计划对照总体计划,才能一目了然地看出工作的进展情况。制定计划的过程也是在进度、资源、范围之间寻求一种平衡的过程。制定计划的精髓不在于写出一份好看的文档,而在于运用智慧去应对各种问题和风险并尽可能做出前瞻性的思考。一旦计划被负责任地完成,就可以获得一个和管理层或客户交流与协商的基础,有助于在项目开发过程中防范各种问题的出现,有助于按时完成项目。企业确定要开始某个项目时一般会下达一个立项的文件,称为“项目立项文件”,其主要内容是遵照的合同或相关协议、项目的大致范围、项目结束的截止时间和一些关键时间、指定的项目经理和部分项目成员等。
接下来的《项目计划书》的编写一般要按照以下过程进行:
(1)成立项目团队。相关部门收到经过审批后的“项目立项文件”和相关资料后,在“项目立项文件”中指定的项目经理正式组织项目团队,成员可以随着项目的进展在不同时间加入项目团队,也可以随着所分配的工作的完成而退出项目团队。但他们最好都能在项目启动时参加项目启动会议,了解总体目标、计划,特别是自己的目标职责、加入时间等。
(2)项目开发准备。项目经理组织前期加入的项目团队成员准备项目工作所需要的规范、工具、环境,如开发工具、源代码管理工具、配置环境、数据库环境等。前期加入的项目团队成员主要由计划经理、系统分析员等组成,但快要制定好的项目计划一定要尽可能经过所有项目团队成员和项目干系人之间的充分沟通。如果项目中存在一些关键的(指将影响项目成败)技术风险,则在这一阶段项目经理应组织人员进行预研。预研的结果应留下书面结论以备评审。说明:《项目计划书》必须在相应阶段对项目目标、阶段目标和各项任务进行精确的定义,就是要在相应阶段进一步进行项目目标的细化工作,特别是在概要设计完成、详细设计或编码实现开始之前对下一阶段的目标任务进行细化。应当充分调查并掌握影响项目计划的一切内部和外部因素;应当尽可能充分地分析项目工作分解结构,通过分析不仅可以获得项目的静态结构,还可以获得项目各工作任务之间动态的工作流程;应当将项目目标、任务进行分解,制定详细的实施方案。
(3)项目信息收集。项目经理组织项目团队成员通过分析接收的项目相关文档以及进一步与用户沟通等途径,在规定的时间内尽可能全面地收集项目信息。项目信息收集要讲究充分的、有效率的沟通,并要达成共识。通过电子邮件等方式沟通的效率不高,且不够充分,因此重要的内容需要开会进行Q&A讨论,确保所有重要问题都得到理解,最终达成共识。讨论会上达成共识的内容应当记录成文字,落实在具体的文档中。
(4)编制《软件项目开发计划书》。项目经理负责组织编制《软件项目开发计划书》。《软件项目开发计划书》是项目策划活动核心输出文档,它包括计划书和以附件形式存在的其他相关计划,如配置管理计划等,具体内容见附录B。《软件项目开发计划书》的编制可参考《计算机软件产品开发文件编制指南》(GB8567-88)中的项目开发计划规范。各企业在建立ISO9001质量管理体系或CMM过程中也会建立相应的《软件开发项目计划书规范》。编制《软件项目开发计划书》的过程应当分为以下几个步骤:
①确定项目的应交付成果。这里的“项目的应交付成果”不仅是指项目的最终产品,也包括项目的中间产品。例如通常情况下软件开发项目的项目产品可以是《需求规格说明书》、《概要设计说明书》、《详细设计说明书》、《数据库设计说明书》、《项目阶段计划》、《项目阶段报告》、《程序维护说明书》、《测试计划》、《测试报告》、《程序代码与程序文件》、《程序安装文件》、《用户手册》、《验收报告》、《项目总结报告》等。②任务分解。从项目目标开始,从上到下,层层分解,确定实现项目目标必须要做的各项工作,并画出完整的工作分解结构图。软件开发项目刚开始可能只能从阶段的角度划分,如需求分析工作、架构设计工作、编码工作、测试工作等,当规模较大时也可把需求、设计拆分成不同的任务。特别是在概要设计完成时,可以对下一阶段的目标任务进行横向的细化。
③在资源独立的假设前提下确定各个任务之间的相互依赖关系,以确定各个任务开始和结束时间的先后顺序,获得项目各工作任务之间动态的工作流程。④确定每个任务所需的时间,即根据经验或应用相关方法给出任务需要耗费的时间,确定每个任务所需的人力资源要求,如需要什么技术、技能、知识、经验、熟练程度等。
⑤确定项目团队成员可以支配的时间,即每个项目成员具体花在项目中的确切时间;确定每个项目团队成员的角色构成、职责、相互关系、沟通方式。⑥确定管理工作。管理工作是贯穿项目生命周期的,如项目管理、项目会议、编写阶段报告等。项目团队成员之间的沟通时间、项目团队成员和其他项目干系人之间的沟通时间比较容易被忽视,而且沟通时间比较不容易固定地量化和日程化。但这些工作在计划中都应当充分地被考虑进去,这会使项目计划更加合理,更有效地减少因为计划的不合理而导致的项目进度延期。
⑦根据以上结果编制《项目总体进度计划》。《项目总体进度计划》应当体现任务名称、责任人、开始时间、结束时间、应提交的可检查的工作成果。
⑧考虑项目的费用预算、可能的风险分析及其对策以及需要公司内部或客户或其他方面协调或支持的事宜。
(5)软件项目计划书评审、批准。进行项目计划书的评审、批准是为了使相关人员达成共识,减少不必要的错误,使项目计划更合理、更有效。项目经理完成《软件项目开发计划书》后,首先组织项目团队内部的项目团队负责人、测试负责人、系统分析负责人、设计负责人、质量监督员等对《软件项目开发计划书》进行评审,评审可采取电子或会议方式,并进行阶段成果项目团队内的评阅和记录。应当要求所有相关人员在收到《软件项目开发计划书》后的一个约定时间内反馈对该计划书的意见。项目经理应确保与所有人员就该计划书中所列内容达成一致。这种一致性是要求所有项目团队成员对该计划的内容进行承诺,无法承诺或者说是无法达成一致的,要么修改项目计划去适应某些项目团队成员,要么由某些项目团队成员采取妥协措施,去适应项目计划的要求。项目经理将已经达成一致的《软件项目开发计划书》提交项目高层分管领导或其授权人员进行审批,审批完成时间不能超过预先约定的时间。对于意义重大的项目,由过程控制部门,如质量管理部和项目分管领导同时对《软件项目开发计划书》进行审批。
批准后的《软件项目开发计划书》作为项目活动开展的依据及本企业进行项目控制和检查的依据,并在必要时根据项目进展情况实施计划变更。项目质量监督员根据《软件项目开发计划书》和《软件项目开发质量计划书规范》编制《软件项目开发质量计划书》。大型的项目应当编制单独的《软件项目开发质量计划书》;规模较小的可以在《软件项目开发计划书》的某个章节说明“软件项目开发质量计划”,也可单独编制类似《软件项目开发质量控制表》的文档。
配置管理员以《项目计划书》中的阶段成果为依据,根据《配置管理计划规范》编制《配置管理计划》。项目经理审批《配置管理计划》,并对该计划的有效性负责。
当项目策划工作完毕且软件项目计划书通过评审后,一般情况下,对软件开发项目来说,工作转入需求分析阶段。3.5.3项目计划内容确定
项目计划内容的确定一般要按照以下过程进行:
(1)确定项目概貌。合同项目以合同和招投标文件为依据,非合同项目以可行性分析报告或项目前期调研成果为依据,明确项目范围和约束条件,并以同样的依据,明确项目的交付成果。进一步明确项目的工作范围和项目参与各方责任。
(2)确定项目团队。确定项目团队的组织结构和与项目开发相关的职能机构,包括管理、开发、测试、QA、评审、验收等。确定项目团队人员及分工。与相关人员协商,确定项目团队人员构成。如内部不能满足人员需求,则提出人员支援申请。
(3)明确项目团队内外的协作沟通。明确与用户单位的沟通方法。明确最终用户、直接用户及其所在企业/部门名称和联系电话。客户更多的参与是项目成功的重要推动力量,加强在开发过程中与用户方的项目经理或配合人员的主动沟通,将有助于加强客户参与项目的程度。建议采用周报或月报的方式通告项目的进展情况和下一阶段计划,以及需要客户协调或了解的问题。
当项目团队需要与外部单位协作开发时,应明确与协作单位的沟通方式。确定协作单位的名称、负责人姓名、承担的工作内容以及实施人的姓名、联系电话等。明确本企业内部协作开发的部门名称、经理姓名、承担的工作内容以及工作实施责任人的姓名、联系电话。明确项目团队沟通活动。项目团队成员规模在3人以上的项目应该组织项目团队人员开周例会。项目团队采用统一的交流系统建立项目团队的交流空间。
(4)规划开发环境和规范。说明系统开发所采用的各种工具、开发环境、测试环境等。列出项目开发要遵守的开发技术规范和行业标准规范。对于本企业还没有规范的开发技术,项目经理应组织人员制定在本项目中将遵守的规则。
(5)编制工作进度计划。根据本企业的规定和项目的实际情况,确定项目的工作流程。编制项目的工作计划,此计划为高层计划,各阶段的工作时间安排要包括完成阶段文档成果、文档成果提交评审及进行修改的时间,各阶段结束的标志是阶段成果发布。在计划中要求明确以下内容:①工作任务划分;
②显示项目各阶段或迭代的时间分配情况的时间线或甘特图;
③确定主要里程碑、阶段成果;
④要求用文字对项目工作计划作出解释。
最终要用一张时间表格来完整说明整个工作计划。对于迭代开发的项目,应编制出第一阶段的阶段计划。阶段内的任务分割以2~5天为宜,特殊任务的时间跨度在两个星期内。在项目进行过程中,项目经理编制双周工作计划,指导成员的具体工作。
(6)编制项目的监控计划,其中说明进度控制、质量控制、版本控制、预算控制等。
(7)编制项目的风险计划,分析项目过程中可能出现的风险以及相应的风险对策。对于大型项目,建议以附件方式编制,以便于不断更新。
(8)制定辅助工作计划。根据项目需要,编制培训计划、招聘计划等。
(9)规划开发支持工作,如供方管理计划。
(10)规划项目验收,制定项目的验收计划。此项工作可以视需要进行裁减。
(11)规划项目收尾与交接活动。制定项目的验收、培训和项目进入维护阶段与技术支持部的交接工作。 3.6软件项目立项文档
案例分析
某高校(甲方)希望建立一个“教务管理系统”,为此他们提出了建立“教务管理系统”的需求,希望委托软件公司为其开发这样的软件项目。“教务管理系统”主要完成教学研究和教学改革、招生工作、教务和学籍管理工作、考试管理工作、实践教学管理工作、教学质量管理工作以及一些综合工作等任务,其目的是共享学校各种资源,提高工作效率和工作质量,使学校的管理登上一个新的台阶。
经过努力,××软件开发公司(乙方)获得了这个项目的开发权。双方经过多次协商和讨论,最后签署项目技术开发合同。合同文如下:合同登记编号:_________
技术开发合同
项目名称:教务管理系统
委托(甲方):
××高校
研究开发人员(乙方):
××软件公司
签订地点:沈阳市
签订日期:2006年12月26日
有效期限:2006年12月26日至2007年12月26日
根据《中华人民共和国合同法》的规定,合同双方就《教务管理系统》开发项目的技术开发(该项目属于市科技局计划)内容经协商达成一致,签订本合同。一、技术内容、范围及要求
根据甲方的要求,乙方完成教务管理系统软件的研制开发。
1.根据甲方要求进行系统方案设计,要求建立B/S结构的、基于SQLServer数据库、NT服务器和J2EE技术的三层架构体系的综合服务软件系统。
2.配合甲方,在与整体系统相融合的基础上,建立系统运行的软硬件环境。
3.具体需求见本合同附件。二、应达到的技术指标和参数
1.系统满足并行登录、并行查询的速度要求。其中主要内容包括:①保证1000人以上同时登录系统;②所有查询速度应在10秒以内;③保证数据的每周备份;④工作日期间不能宕机;⑤出现问题应在10分钟之内恢复。
2.系统的主要功能应满足双方认可的需求规格,不可随意改动。三、研究开发计划
1.第一阶段:乙方在合同签订后7个工作日内,完成合同内容的系统设计方案。
2.第二阶段:完成第一阶段的系统设计方案之后,乙方于50个工作日内完成系统基本功能的开发。
3.第三阶段:完成第一和第二阶段的任务之后,由甲方配合乙方于3个工作日内完成系统在×××信息中心的调试、集成。四、研究开发经费、报酬及其支付或结算方式
1.研究开发经费是指完成本项目研究开发工作所需的成本。报酬是指本项目开发成果的使用费和研究开发人员的科研补贴。
2.本项目研究开发经费和报酬(人民币大写):×××万元整。
支付方式:分期支付。
3.本合同自签订之日起生效,甲方在5个工作日内应付乙方合同总金额的50%,计人民币×××.00元(人民币大写×××元整)。验收后甲方在5个工作日内付清全部合同余款,计人民币×××.00(人民币大写×××元整)。五、利用研究开发经费购置的设备、器材、资料的财产权属:××高校
六、履行的期限、地点和方式
本合同自2006年12月26日至2007年12月26日在沈阳履行。
本合同的履行方式:
甲方责任:
1.甲方全力协助乙方完成合同内容。
2.合同期内,甲方为乙方提供专业性接口技术支持。乙方责任:
1.乙方按甲方要求完成合同内容。
2.乙方愿意在实现系统功能的前提下,进一步对其予以完善。
3.乙方在合同商定的时间内保证系统正常运行。
4.乙方在项目验收后提供一年免费维护。
5.未经甲方同意,乙方不得向第三方提供本系统中涉及的专业技术内容和所有的系统数据。
七、技术情报和资料的保密
本合同中的相关专业技术内容和所有的系统数据归甲方所有,未经甲方同意,乙方不得提供给第三方。八、技术协作的内容
见系统设计方案。
九、技术成果的归属和分享
专利申请权:技术成果归甲、乙双方共同所有。
十、验收的标准和方式
研究开发所完成的技术成果达到了本合同第二条所列技术指标,按照国家标准,采用一定的方式验收,由甲方出具技术项目验收证明。十一、风险的承担
在履行本合同的过程中,确因在现有水平和条件下难以克服的技术困难,导致研究开发部分或全部失败所造成的损失,风险责任由甲方承担50%,乙方承担50%。
本项目风险责任确认的方式:双方协商。
十二、违约金和损失赔偿额的计算
除因不可抗力因素(指发生战争、地震、洪水、飓风或其他人力不能控制的不可抗力事件)外,甲乙双方需遵守合同承诺,否则视为违约并承担违约责任:
1.如果乙方不能按期完成软件开发工作并交给甲方使用,乙方应向甲方支付延期违约金。每延迟一周,乙方向甲方支付合同总额的0.5%的违约金,不满一周按一周计算,但违约金总额不得超过合同总额的5%。
2.如果甲方不能按期向乙方支付合同款项,甲方应向乙方支付延期违约金。每延迟一周,甲方向乙方支付合同总额的0.5%的违约金,不满一周按一周计算,但违约金总额不得超过合同总额的5%。十三、解决合同纠分的方式
在履行本合同的过程中若发生争议,双方当事人和解或调解不成,可采取仲裁或按司法程序解决。
1.双方同意由沈阳市仲裁委员会仲裁。
2.双方约定向沈阳市人民法院起诉。
十四、名词和术语解释
如有,见合同附件。十五、其他
1.本合同一式
6份,具有同等法律效力。其中:正式两份,甲乙双方各执一份;副本
4
份,交由乙方。
2.本合同未尽事宜,经双方协商一致,可在合同中增加补充条款,补充条款是合同的组成部分。
合同附件:任务说明(SOW)
教务管理系统业务需求:《教务管理系统》是对学校教务和教学活动进行综合管理的平台系统,是一个学校和地区教育信息化的基础信息平台。它要完成教学研究和教学改革、招生工作、教务和学籍管理工作、考试管理工作、实践教学管理工作、教学质量管理工作以及其他的综合工作等。其目的是共享学校各种资源、提高学校的工作效率、规范学校的工作流程、便利校内外的交流。一、整体要求
(1)系统要求提供教师工作平台和学生工作平台。
(2)系统要求有严格的权限管理,权限要在数据方面和功能方面都有体现。
(3)系统要求有可扩充性,可以在现有系统的基础上,通过前台就可加挂其他功能模块。
二、一般学校的机构组成
一般学校的机构组成如图3.3所示。图3.3教学管理组织机构三、系统功能描述
1.教学计划管理
用于维护学校各系、各专业的课程及课程计划安排信息,作为选课和毕业审查的标准,包括的功能有课程计划登记、课程计划审批、选课情况查询、选课信息审批等。
2.学籍管理
主要包括高校学籍管理的常用信息,提供对学生学籍基本信息的录入、查询、修改、打印输出、维护等常用功能,并提供学号编辑、学生照片输入与显示、学籍变动(留级、休学、跳级、转班、转学、退学等)、奖惩登记、毕业情况等功能。
3.教师管理
用于管理教师相关的信息,提高教学质量,保证教学工作的高效运行,所包含的功能模块如图3.4所示。图3.4“教师管理”功能模块
4.注册、收费管理
“注册管理”用于记录学生新学期的注册情况,如果未注册,则记录学生未注册原因及未注册去向。“收费管理”功能模块用于记录学生开学初的收费情况,每个学生的收费标准来自学生学籍信息中的收费类别。
5.排课、选课管理
用于根据教学计划、教室资源、教师资源等,制定每学期的课程表,所包含的功能模块如图3.5所示。图3.5“排课、选课管理”功能模块
6.考务成绩管理
用于根据课程自动生成本学期的考试地点、考试时间、监考老师等数据,并对考试的过程和结果进行监控,包含的功能模块如图3.6所示。图3.6“考务成绩管理”功能模块
7.毕业管理
用于对学生毕业进行管理,同时对毕业信息、学位授予、证书授予及校友信息等进行管理,所包含的功能模块如图3.7所示。图3.7“毕业管理”功能模块
8.教材管理
用于对教材库存、教材计划、教材预订、班级预收款、教材采购及教材销售等工作进行有效管理,所包含的功能模块如图3.8所示。
注:从任务说明(StatementOfWork,SOW)可以看出,一般情况下用户提供的任务说明开始会很简单、很模糊,但随着项目的进展,客户会随时提出一些新的要求,这其实是项目管理过程中比较棘手、但却时常发生的事情。图3.8“教材管理”功能模块注:从任务说明(StatementOfWork,SOW)可以看出,一般情况下用户提供的任务说明开始会很简单、很模糊,但随着项目的进展,客户会随时提出一些新的要求,这其实是项目管理过程中比较棘手、但却时常发生的事情。项 目 任 务 书
3.7软件项目团队的建立
3.7.1团队定义
团队是由一定数量的个体组成的集合,这个团队包括公司内部的人、供应商、承包商、客户等。软件项目团队通过将不同潜质的人组合在一起,形成一个具有高效团队精神的队伍来进行软件项目的开发。团队开发先是发掘个体的个人能力,然后发掘团队的集体能力。当一组人称为团队的时候,他们应该承诺为一个共同的目标工作,每个人的努力必须协调一致,而且能够愉快地在一起合作,从而开发出高质量的软件产品。
要开发一个项目,就要组建一个团队来实施,而作为团队的核心,首先是要确定这个项目的总负责人,即项目经理。由项目经理来全权负责项目的重要事项,对项目进行合理的安排。
3.7.2项目组织形式
为了能够顺利地执行已制定的计划任务,需要建立相应的软件项目组织。
项目组织是为完成项目而建立的组织,一般也称为项目班子、项目管理班子、项目组等。一些大中型项目,如建筑施工项目的项目组织目前在我国叫项目经理部,由于其项目管理工作量很大,因此,项目组织专门履行管理功能,具体的技术工作由他人或其他组织承担。而有些项目,例如软件开发项目或某些科学研究项目,由于管理工作量不大,没有必要单独设立履行管理职责的班子,因此,其具体技术性工作和管理职能均由项目组织成员承担。这样的项目组织负责人除了管理之外,也要承担具体的系统设计、程序编制或研究工作。项目组织的具体职责、组织结构、人员构成和人数配备等会因项目性质、复杂程度、规模大小和持续时间长短等有所不同。
项目组织可以是另外一个组织的下属单位或机构,也可以是单独的一个组织。项目组织的一般职责是项目规划、组织、指挥、协调和控制。项目组织要对项目的范围、费用、时间、质量、采购、风险、人力资源和沟通等多方面进行管理。
目前常见的软件项目组织结构类型有工作队式项目组织、部门控制式项目组织、项目型组织、矩阵型组织、直线职能型组织。第一种是工作队式的项目组织,由项目经理在企业内抽调职能部门的人员组成管理机构。项目管理班子成员在项目工作过程中由项目经理领导,原单位领导只负责业务指导,不能干预其工作或调回人员。在项目结束后机构撤消,所有人员仍回原部门。这种组织结构形式适用于工期要求紧、工种要求多、多部门要密切配合的大型项目。其优点是能发挥各方面专家的特长和作用,各专业人才集中办公,减少了扯皮和等待时间,办事效率高,解决问题快。其缺点是各类人员来自不同部门,配合不熟悉。第二种是部门控制式组织,其主要特征是:按职能原则建立项目组织,把项目委托给某一职能部门,由职能部门主管负责,在本单位选人组成项目组织。这种组织结构形式一般适用于小型的、专业性较强、不需涉及众多部门的项目。它的优点是人事关系容易协调,从接受任务到组织运转,启动时间短,人员职能单一,关系简单。其主要缺点是不适应大型项目的管理需要。第三种是项目型组织,其主要特征是:企业中所有的人都按项目划分,几乎不存在职能部门。在项目型组织里,每个项目就如同一个微型公司那样运作,完成每个项目目标所需的所有资源完全分配给这个项目,专门为这个项目服务,专职的项目经理对项目组拥有完全的项目权力和行政权力。项目型组织的设置能迅速有效地对项目目标和客户的需要作出反应;缺点是资源不能共享,成本高,项目组织之间缺乏信息交流。第四种是矩阵型组织,其主要特征是:项目组织与职能部门同时存在,既发挥职能部门的纵向优势,又发挥项目组织的横向优势。项目经理对项目的结果负责,而职能经理则负责为项目的成功提供所需资源。矩阵型组织结构能够充分利用人力和物力资源,适用于同时承担多个项目的企业;缺点是双重领导,可能导致下属无所适从,在各项目之间、项目与职能部门之间容易产生矛盾。第五种是直线职能型组织。这是一种传统式的组织结构形式,我国目前传统企业常采用这种组织结构形式进行项目工作。直线职能型组织是一种层次型的组织结构,按专业化的原则设置一系列职能部门,将项目按职能分为不同的子项目。例如,当进行新产品开发项目时,项目前期论证作为“论证项目”由计划部门负责,产品设计工作作为“设计项目”由设计或技术部门完成,生产产品作为“生产项目”由生产部门完成,销售产品作为“销售项目”由销售部门完成。其优点与部门控制式组织结构相同,缺点是项目时间长,各部门协调困难。在选择了合理的组织结构形式以后,需要考虑如何合理地配备组织的成员。在项目开发的各个阶段,项目组织所需要的人员数量和结构是不同的。如果把人员分为高级技术人员、初级技术人员、管理人员三类的话,通常在软件计划、需求分析阶段需要更多的管理人员和高级技术人员,随着开发进入总体设计、详细设计、编码阶段,管理人员和高级技术人员的需要量则大幅减少,同时这些阶段则要求越来越多的初级技术人员加入。随后,在单元测试、集成测试、确认测试阶段,对管理人员、高级技术人员的需要量又逐渐增加,初级技术人员的需要量逐渐减少。因此,根据实际需要来配备人员数量和结构既可以减少人力资源的浪费,又能确保项目的进度和质量。3.7.3团队建设
创建团队首先是选择项目人员。项目人员的选择一般要根据项目的需要,参考项目计划进行人员编制,必要时招聘相应岗位的人员,对他们进行相应的培训,然后将他们放到合理的岗位,对他们在各自的岗位上的工作进行业绩考评,并将考评的结果与他们的报酬和职位升迁联系在一起。人是项目中最重要的资源,一个项目成功与否常常取决于工作人员的才干。软件项目是由不同角色的人共同协作完成的,每种角色都必须有明确的职责定义,因此,选拔和培养适合角色职责的人才是首要的因素。可以通过合适的渠道选择合适的人员,而且要根据项目的需要,对高中低不同层次的人员进行合理的安排,明确项目需要的人员技能。有效的软件项目团队由担当各种角色的人员组成。每位成员扮演一个或多个角色;可能一个人专门负责项目管理,而另一些人积极地参与系统的设计与实现。常见的一些项目角色包括:
(1)项目经理。
(2)系统分析员。
(3)系统设计员。
(4)数据库管理员。
(5)支持工程师。
(6)程序员。
(7)质量保证工程师。
(8)业务专家(用户)。
(9)测试人员。
(10)其他。项目团队组成人员的多少和比例要根据具体项目来决定。组建项目团队时首先需要定岗,就是确定项目需要完成什么目标,完成这些目标需要哪些职能岗位,然后选择合适的人员组成。项目组内各类人员的比例应当协调,那种认为编码人员(软件工程师)占的比例越大越好的观念是极端错误的,因为我们的目的是完成软件,而不是完成任意多的程序编码。项目也应该配备相应的文档编制人员、质量保证人员等。项目组内的组织结构宜采用程序员小组制,具体人数根据任务划分的大小而定。根据项目任务分解结构,对项目的各项活动进行归类,作为设置程序员小组的依据,从而使得小组的任务明确。项目经理对于小组长要给予适当的授权,授权的大小依项目的阶段和小组长的成熟度而定。一般而言,项目的前几个阶段由于涉及到技术方案等重大问题,因此对小组长的技术方面的授权要适度;项目的后期变化通常是局部的,因此在技术方面可以给小组长足够的权限;而当小组长的成熟度高、技术能力强时,可对其授予较大的权限,有时甚至是全权。项目组组建后要及时通过正规的沟通方式(如会议讨论)将项目目标贯彻到全体组员中去,以达成项目目标共识,形成群体目标。项目计划也要充分吸收骨干组员的意见,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 保险测评笔试题库及答案解析
- 适合高中生的单招内科试题与答案
- 重庆国显科技:LED高清屏产品供应加施工一体服务
- 2026年计算机三级网络技术综合测试卷
- 2026年幼儿自然观察与记录能力测试卷
- 2026年环境保护与可持续发展政策测试
- 2026年心理健康教育方法测试
- 2026年健康生活方式与慢性病预防知识测试
- 2026年湖南省人教版小学语文二年级上册第2单元课后练习题
- 2026网络安全态势感知与预警技术模拟试题
- 2026年学宪法讲宪法知识竞赛考试题库(含答案)
- 2026年文山州砚山县公安局第三批警务辅助人员招聘(46人)笔试备考试题及答案详解
- CSCO结直肠癌诊疗指南(2026版)
- 2026新教科版四年级科学上册知识点
- 2026年制造执行系统(MES)行业分析报告及未来发展趋势报告
- 2026部编版语文二年级上册全册教学评一体化大单元教学设计
- 中国对外文化集团公司招聘笔试题库2026
- 晋韵砖魂:山西晋中传统砖雕艺术的历史、技艺与传承
- 《2026年》肛肠科医生高频面试题包含详细解答
- 2026年装配钳工高级工技能鉴定典型试题及工艺含答案
- 子宫填塞术治疗产后出血的专家共识
评论
0/150
提交评论