第二章 软件项目管理系统的理论基础
2.1 软件项目管理系统的理论基础。
2.1.1 软件项目管理的相关概念。
(一)项目:现在的社会中项目普遍存在。大型项目如城市建设项目,通信工程项目,高速道路建设等。企业开展的新产品研发、设备改造等项目都是具体的。各种层次的组织承担着不同的项目。这些组织在内少的有几个人,多则有几千人。有不足 100 小时完成的小项目,也有千万小时才能完成的项目。项目有时候只有相关组织的一部分,有的需要多组织联合完成。通常,项目是执行组织经营战略的钥匙。项目,就是以已存在的限制条件之下,为实现目标,而开展的互相联系的一次性工作。
从这个定义实际的意思理解项目包括以下内容:项目是一项未完成的任务,需要在特定的环境和要求下完成[5].项目需要在既定环境内,通过可见的资源来完成任务。项目的任务满足性能,质量、数量、技术指标等的要求。
每一个项目都可能迎来的是失败,没有完全相同的项目,每一个项目又具有各自的特性,每个项目有明确的目标。项目工作,以对可能实现、特定目标的追求作为工作目标,付出所有都是为了实现上述目标。客户支付需要的资金,达成目标的实体的可能性是一个人、一个或多个组织、政府等。客户不仅包括项目出资者,还包括在内的其他利益相关者,目标简单地表现为客户满意。
项目有一定的不确定性。在项目开始之前,首先要开展一定的预算和假设工作,来估量最基本的品质、成本等。因为预算、假定方面存在不确定性,导致了实现项目目标时的不确定性。另一方面项目一旦失败是无法挽回的,这决定了项目的不确定性是大概率事件。项目需要的资源,简单和复杂的项目同时都受到人力、物力,资金的限制。项目的生命是有限期的,项目是一种临时性的工作,那是在有限的时间内完成,当项目的基本达成目标时项目随即结束。
以下的活动都是一个项目:
(1)新产品和服务的开发,(2)改变的某组织的结构、人员配置和组织类型;(3)开发新的或改进信息系统;(4)无论是大楼建造,还是一项设施的建设;(5)开展政治性活动;(6)促使新的手续和程序得意完成;按照项目专业特点及其最终成果,我们可以将项目分为以下几种,如咨询项目、项目开发项目等等。对不同项目进一步分类,可以将该工程项目视为所有项目中数量最大的类。
(二)项目管理:为了让相关项目人员的期待获得满足,甚至是超越其期待,在项目中运用相应的技能、理论知识等,这就是项目管理。要想让人员的期待得到满足,就必须要在如下阐述的冲突之中,寻求它们的平衡:(1)范围、时间、成本、品质;(2)项目相关者对于项目不一样需求和期望;(3)明确显示的要求(需求)和未明确表达的要求(希望)。
"项目管理"也被认为是管理连续性操作的一种组织方法。这个方法更正确的是"项目的实施管理",连续性操作可以采用项目根据项目管理的方法。
(三)软件项目管理:为了确保软件项目可以结合既定的进度、成本等顺利实现目标,而开展的对过程、人员等各方面的管理、分析活动,这就是软件项目管理。
软件项目管理的根本目的是使管理者约束整个软件生命周期并在规定时间不超成本完成客户预期的软件并交付使用。软件项目管理以软件为对象,因此其在整个软件工程中均得以应用。基于软件工程相关观念角度来讲,软件在开发过程中,通过需要经历一下六个阶段,第一是需求分析,第二是概要设计,第三是详细设计,第四是编码,第五是测试,第六是维护与设置[6].无论是何种开发团队,还是软件开发,软件要想取得成功,必须经历上述六个阶段。要想实现成功开发,有必要对多个方面未雨绸缪,如可能涉及到的风险、必备的人等资源,项目管理者可以通过软件项目管理获取到相应信息。
2.1.2 软件项目管理组织模式。
软件开发项目可能是独立的,也可能和其他项目一起,共同构成完整的项目。如果只是为了开发,可以组建一个软件项目团队;而如果开发的是产品,则需要将相应的项目组、团队构建起来。项目管理委员会是顶层的管理组织,成员包括总经理和副总经理,下设软件产品项目组、管理组、评估组等。具体包括了如下职责:(1)结合管理项目的制度,开展项目管理活动[7];(2)对执行制度的状况,进行监督;(3)项目立项的决策及是否取消该项目的决策;4)项目管理相关机构组长的任命。
2.2 软件项目时间和进度管理。
一、软件项目时间管理。
项目管理是一系列的管理活动,通常情况下,为了实现某一任务,或者完成某一目标,而开展管理活动,并满足优先级、时间约束与资源约束的顺序。
我们应当在详细把握项目范围,掌控项目目标的基础上,细致分析项目资源所面临的各种制约因素,如资源约束等等,然后对项目进度管理计划予以科学合理的制定。有关项目时间管理,其实施步骤如下所示:
(一)项目活动定义。
项目活动定义是对项目进行识别和描述的一项具体活动。它会细化为多个小部分,更好的进行控制和管理。规划活动的确定,以此来对完成的工作进行记录和确定。将项目工作包分解成更小的组件,称之为项目活动,它为项目的估计、调度、执行和监控奠定了基础。
(二)项目活动定义基础。
以项目范围说明书、项目管理计划等作为活动定义的基础。作为活动的定义的基础,事业环境因素是否包括有一个项目管理信息系统和调度工具软件。在定义活动时,要明确项目范围说明书中项目交付成果,约束和假设;控制因素制约着项目管理团队的选择。
(三)定义项目活动的工具和技术。
分解、滚动规划、模板的使用、专家规划等都被包括在了定义项目活动的技术和工作中。
1 分解:就活动定义而言,分解技术则表明了,进一步实现对项目工作的分解,管理方面更加容易实现。有计划的活动是其最终结果,而不是能够交付的结果。结构等内容,都是编制时的基础,团队成员一般担负起完成活动定义的任务。
2 模型:标准或一部分以前的项目列表,通常用于新项目的模型。如需要的时间、预计的可交付成果、资源机能等相关的活动信息,都被包括在了模型之中。该模板也可用于识别一个典型的里程碑。
3 滚动计划:工作分解结构词汇表、分解结构等体现了项目从最初的大致范围,到后期工作组合,这一逐渐细致的演变进程,形式也不断完善之中。在不久的将来,有必要完成最详细的工作计划,并计划分解工作结构。所以,项目生命期之中,规划活动可以存在于不同的细节之中。
4 专家判断:有实践经验的项目成员、专家,能对活动定义等专业知识给予指导。
5 计划组成部分:如果此时项目范围的说明书并不充分,无法实现工作结构到工作组合的分解,最后实现到组成部分的分解,可以对高层次项目进度表进行制作。上述计划活动具体包括,无法在项目工作中进行详细估算、执行等的一些概括性活动。
(四)项目活动定义结果。
如清单、请求变动、里程碑清单等,都被包括在活动定义结果之中。
1 活动清单:活动清单具备了较为全面的内容,所有需要进行的计划活动,都被包括其中。部分计划活动不需要被包括在项目范围时,活动清单则不包括这部分计划。其必须要具备活动标准,要详细的对所有计划活动的工作范围进行说明,以便让成员对这一工作该如何完成有较为明确的认知,实体数量也可以被包括在计划活动的工作范围之内,比如说图纸的张数、书籍的行数、章数、页数等。在模型中,将运用到活动清单,其被囊括在了计划之中。
2 活动属性:活动属性是活动列表中活动属性的扩展,并表示每个程序活动的多个属性。活动属性还可以包括人的工作、工作区域或位置的执行、项目的类型、投资等,可以分为投入和评估。这些属性是用来开发一个项目的时间表,其中各种方法被选择在计划的活动中,以确定的顺序,并进行分类。属性的数目随应用程序的不同而不同。
3 里程碑:里程碑清单是项目管理计划的一部分,它是在进度模型中使用的。
4 变更请求:对项目范围说明等产生影响的变更请求,可以在活动定义过程中提出。可以结合整体变更控制过程来对上述请求进行处理和审核。
(五)项目活动的排序活动排序主要是对多种活动依赖关系的确认,并构建文档。为了对切实可行的进度计划等进行进一步的编制,首先必须要准确的对活动进行顺序排列,活动时间必须要包括其中,而进度的长与短很大程度上还会受到逻辑关系的影响。项目需求必须要具备部分的完成,需要由里程碑事件去保证。项目的里程碑则具体包括了最终需求的确认、汇报会的验收等。
(六)在项目活动的定义中,相关工具和技术包括:
1.PDM:也就是前导图,表示的是进度网络图的绘制技术,计划活动的进度结合方框来体现,图形当中的计划活动,主要是结合逻辑关系实现连接,逻辑关系可以是一种,也可以是多种,由此来体现出实施活动的顺序。
2.ADM:也就是箭线图法:活动由箭线来表示,此外该网络图绘制法的事件则由节点去表示。
3.计划网络样板:通过标准化项目进度网络图的运用,来实现工作的减少,加快工作进度,项目的所有或者是其中的部分,都可以被包括在网络图之中。
(七)项目活动工期估计结合项目资源、范围等,对项目活动所需工期进行罗列,这就是项目工期预算。必须要实现估算的工期,同时还必须要保证质量。因此在对其估算时,必须要对资源需求、人员、环境因素等予以考虑,同时每一活动估算方面,还必须要考虑好各种因素的影响。
在一般情况下,一个项目的时间限制,可以采取以下方式:
(1)专家审查:由专家学者开展评估以及分析活动;(2)模拟估计:使用类似的活动,作为未来活动的估计;(3)定量类型的基础:当该产品可用定量标准计算项目的时限时,定量标准可以用来估计总体数据。
(4)类比估计法:一种类似计划活动的实际持续时间为根据对未来计划活动的时间估计。当信息量有限时,类比法估计可以利用历史信息和专家判断。
(5)参数估计方法:根据工作量可以估算出活动就可以估算出活动持续时间的基数。
(八)计划评审技术 PERT.
项目评估技术是一种系统,它采用网络图表或表格或矩阵来表示每个作业的顺序和关系,找出最长的路线,并计划和控制系统实现目标。
二、软件项目进度管理。
项目的进度表计划项目何时开始和何时结束,并解释项目的主要阶段,包括项目的所有时间的估计,以及任务里程碑事件(里程碑)等的发展。最终设计出最恰当的活动进度表,其中涉及到了如下的技术、工具:
(一)进展压缩技术:以原项目范围作为基础,进度约束不与破坏,在预定计划目标、日期等基础之上,确保项目使用时间的缩短,如快速跟进、赶进度等方式。
(二)假设情景分析:分析如下问题:如果出现了情景 X,如何对其进行处理,可以对处于不利条件下的项目时间表是否可行进行估计,并提供相应的应急预案,克服或减轻意外所造成的后果。
(三)关键路径法。
CPM,这是网络分析技术的一种,是对网络图内所有线路的起始的确定,并从中发现最长工期线路的一种方式,也就表示这条最长的路线,能够决定项目的工期。在时间管理方面,这种方法极为实用,其具备了如下的工作原理:计算每一个最小任务单位的工期,并对起始时间进行定义,结合活动的关系,构建起顺序网络逻辑图,从中发现其中的最长路径,即为关键路径。
关键路径法的具体步骤如下:
(1)网络图的刻画,通过节点来实现对事件的标准,作业通过箭头代表。
由此就可以大致的了解整个项目。一般来说左方项目开始,右方结束。(2)将每一项作业的(T),也就是持续时间,结合箭头标准。(3)从左侧开始,对结束的最早时间,也就是(EF)进行计算[8].(ES)也就是最初开始的时间,以及持续的作业时间,就等同于(EF)。(4)当完成了全部计算之后,最终就获得了整个项目得以完成的全部时间。(5)从右侧开始,结合上述时间,对每一作业结束的最迟时间(LF)予以决定。(6)这一事件和持续时间之差,就获得了(LS),也就是最迟开始时间。(7)作业的时差,就为最迟、最早结束时间之差。(8)如果一个作业出现了 0 时差,那么这一作业就处于关键线路之上。
(四)ganttcharts 甘特图。
这是线条图的一种,时间由水平轴表示,代表的是开始以及活动结束的日期,此外还有预计的活动时间[9].活动安排由垂直轴来表示,代表的是实际项目活动的完成,以及项目计划状况。
由于这些数字是直观的和易于理解的,它往往是用来介绍项目信息的管理水平,以方便项目沟通和控制的图形工具。
三、软件项目进度控制。
主要是通过科学的方式,来实现各种计划、目标等的确定,开展控制活动等协调作为基础,来完成最终的工期目标。进度控制需要加强全面、协调和监督,在各个方面建立必要的项目信息报告系统。进度控制是一个动态的过程。
相关工具和技术包括:
(1)进展报告:报告项目进度计划的当前状态及描述项目所有的信息。
(2)进度变更控制系统:应遵循项目进度变更的程序,包括纸质材料,跟踪系统、审查和批准变更的审批级别。
(3)挣值分析法:这是对项目进展状况进行衡量的一种方式,货币量为涉及到的根本要素,由其来替代实物,开展度量工作。
四、通用软件项目管理成熟度模型。
(一) CMM/CMMI是一种开发模型[10].以美国国防部合同承包方搜集的数据为基础,卡内基梅隆大学的相关人员对此开展研究,最终总结出了 CMM 这一开发模式。美国国防部资助了这项研究。研究人员以上述模型作为基础,将 SEI,也就是软件工程研究所创办起来[11].改善软件的开发进程,是 CMM 的目标,同时在其他过程中也可以应用。
CMM 在十多年的发展历程中,也出现了较多的改进。美国国防部表示,希望能够将所有成熟的模型,向一个框架中集成。进入二十一世纪,其已经有了 CMMI,这是一个集成的模型。不仅在软件中可以适用,同时系统软硬件也可以适用这一模型,这是 CMM 改进最大的部分。
CMM,主要是用于判断软件承包能力,以此来实现改善质量,在工程能力评估、提升、软件开发进程的管理方面较为关注。
(二)项目管理知识体系(PMBOK)。
PMBOK,由 PMI,也就是美国项目管理协会,对其中涉及到的技能、知识等开展的概括性描述。