软件开发项目管理

软件开发项目管理
软件开发项目管理

软件开发项目管理的案例解说系列

软件开发项目的需求和范围管理- 系列(一)

引言

在今年第一期的程序员杂志中,我对软件开发项目管理的重要性和进行管理的十大工作内容作了一个介绍。你应该已经很清楚地知道今天绝大多数的软件开发已经不是简单地编写一些程序而已,而是一个综合了对多人合作的运作进行必要管理的流程。只要你经历过任何由多人参加的软件开发工作,你一定对整个开发过程是否具有良好的管理对团队的士气以及对开发结果所造成的影响深有体会。一个软件公司或开发团队对软件项目进行管理的素质和水平,是影响到项目是否能够成功完成、开发出来的软件是否能够真正满足市场或客户要求的关键因素。懂得软件开发的项目管理知识不仅仅是项目经理的责任,也是所有开发人员应该掌握的本领之一。

从这一期开始,我将在这里用理论与案例解析相结合的一个系列的介绍文章,来阐述软件开发项目管理的更多指南和实践方法。这一期我们从如何进行软件开发需求和范围管理开始,接下来在以后的几期中再分别讨论软件开发项目的计划制定、质量控制、以及项目的执行与驱动的管理指南、等等。

常有的项目需求和范围管理的挑战

在软件开发项目进行的早期阶段,项目经理以及开发团队的领导们在制定项

目计划时所经常碰到的一个令人头疼的问题是:如何有效地设定一个开发项目的范围,也就是如何确定所需要开发的软件的功能范围、质量的要求范围等各种所必须满足的条件以及相应的工作范围。很多项目管理人员和开发团队的领队往往被这个问题所困惑、无法有效地从大量的、貌似互不相连的各种技术、市场、用户的要求中得出明确的需求总结,从而妨碍了制定完善的项目计划。

其实这个问题并不是软件开发所独特具有的。任何大型和复杂的项目、包括各种高科技和工程开发项目,都会面临这个典型的问题。是否能够妥善处理这个挑战、并制定出相应的合理的开发项目的计划,是衡量一个开发团队的管理水准的衡量之一。

五年前我在从事微软的新一代嵌入式操作系统(Windows XP Embedded) 产品开发的项目管理时也碰到同样的问题和挑战:在众多的各种需求中,怎样确定哪些工作是我这个开发项目必须要包含的?怎样保证最主要的需求分析不被漏掉?怎样在开发之前建立整个团队对软件的质量期望的共识、事先确定软件必须达到的质量要求?

有效的需求和范围管理的运作流程

我们所采用的开发管理方法就是类似于我在《软件开发项目管理》一书中所总结的方法和运作流程来对付这个挑战:

1) 从需求分析总结确定大方向:

首先,对照任何一个软件开发项目所应该考虑到的九个需求范围的因素,逐步分析和判断这九个因素中对我这个项目影响最大的几个因素是什么、以及每个

因素对我这个项目的具体要求,由此确定和总结出所开发的软件产品的功能范围,同时并确定哪些功能是不在这个项目的范围之内。下图是对这九个需求分析的因素的总结:

图1:软件开发项目需求管理应该考虑的各种因素

根据这个管理指南和原则,我的项目计划的第一步就是首先对所有这些因素进行一个全面的总结,然后把它写在一份“软件需求规范书”(Software Requirement Analysis Specification) 里。这份项目计划的早期文件然后经过整个开发团队坐在一起像开“诸葛亮会议”一样进行审核,对所有的需求总结进行合理性与可行性的逐条分析和评判讨论,并为每条需求进行重要性与优先权的设定。有的无法可以立即确定的,还得通过开发团队进行必要的技术验证、或向我们的市场营销部门或直接向客户进行调查询问来进一步确证。通过几次这样的审核会议,整个项目团队能够很快对项目的具体目标以及主要的工作任务达到共识。

为了方便于该规范书让全体团队成员阅读、并便于在团队审核会议上的逐条讨论,我将这个总结用一个表格将所有的需求分析根据以上需求因素的范围给列出来,作为产品设计规范书的早期内容。这个总结做出来之后,大家就可以逐条审阅和讨论。

下面,我用这个项目的历史作为一个案例来举例说明如何制定这些内容(为了不透露公司的实际产品的开发战略,案例对具体内容作了改动、并用中文说明以便于读者阅读)。以下是这个表格的使用举例:

Item

条款Product Requirement Areas:

产品需求的范围Comments or Issues

(注解及问题): Priority

(优先顺序)

1 Business Requirements (商业需求):

A Windows XP Embedded (XPE) Studio tools Target Designer (TD) and Component Designer (CD) shall be the application development tool suite to enable embedded device developers to design special purpose devices that are based on the X86 platform, and be able to develop embedded applications on desktop and easily deploy to devices and boot immediately…

视窗嵌入式操作系统的一整套应用开发工具要能够为嵌入式设备开发商们提供一个能够在英特尔X86平台上运行的开发环境,使得他们能够在桌面计算机上使用目前已有的通用型软件开发工具方便地进行嵌入式应用软件的开发,然后很容易地将应用软件安装部署在嵌入式设备、并能够立即启动运行…对这个商业需求所应该达到的要求,需要与市场部门进行协商和确证P1

B 视窗嵌入式操作系统在开发早期需要能够同时支持来自世界范围的早期应用开发者的样板产品的开发,特别是对6种主要语言的应用软件开发的支持…对是否需在最初版本的发行时要支持世界范围的各主要语言,需要向营销部门确证。P2

C 视窗嵌入式操作系统的核心必须是与Windows XP Pro在运行上完全兼容的,任何开发商所开发的应用软件应该都能在XPE的嵌入设备上运行…P2

D 视窗嵌入式操作系统的开发工具必须满足各小型开发商使用现有开发工具的市场要求,使得他们能够不仅在Windows XP Pro上进行开发,也能够在Windows 2000 上进行开发…

E 视窗嵌入式操作系统产品的发行必须通过Windows 2000 Logo鉴定验证的各种要求,包括产品的初始安装、升级安装、消除等各种要求…

: …

2 Non-Requirements –Standards (非功能需求- 标准):

A 视窗嵌入式操作系统必须满足微软本身在世界范围内产品发行的本地化标准、包括不同文化、政治、地域等因素带来的各种要求,各软件组件本地化翻译必须通过公司的本地化名称检测…P1

B 开发工具所生成的各种设备接口的驱动组件必须包括支持相关的嵌入式设备在业界的标准,诸如销售记帐器专有的标准、多媒体机顶盒的标准,等等: …

2 User Requirements (使用者需求):

A XPE 产品的开发工具的客户和使用者是那些目前已经在X86平台上进行应用软件开发的开发商。他们对使用开发工具如Visual Studio应该很熟悉,但不见得了解操作系统的所有组件结构,对嵌入式操作系统的要求可能更不熟悉。需要与客户教育部门协商决定对用户的培训的要求以及使用说明书的要求P1

B …

3 Functional Requirements (功能需求):

A XPE 产品的开发工具为客户解决的第一个最主要的开发问题是:为客户提供一个能够快速、简易地生产基于Windows XP Pro基础上的嵌入式设备所需要的、经过客户个体化了的轻型操作系统。整个生产个体化的轻型操作系统的功能必须要经过对使用方案的确证。见使用方案总结的一章。P1

B XPE 产品的开发工具为客户解决的第二个最主要的开发问题是:客户要能够方便地加入他们所开发的嵌入式应用软件,然后将整个操作系统的映像部署到嵌入式设备上。加入客户应用软件的功能必须要经过对使用方案的确证。见使用方案总结的一章。P1

C XPE 产品的开发工具为客户解决的第三个最主要的开发问题是:客户要能够将他们自己的嵌入式应用软件进行模块化的组件生成,使得他们能够有效地控制操作系统映像的大小,满足小型嵌入式设备的生产需要。P1

D XP

E 产品的开发工具应该将开发商进行开发的设计过程用专门的文档储存下来,使得开发商能够很快地一个设计重新载入开发工具,在为不同的设备进行开发时能够很方便地使用已有的类似的设计。P1

E …

4 Performance Requirements (性能需求):

A XPE 产品的开发工具在使用者变换显示界面时不能有超过分之一秒的延迟。P1

B XPE 产品的开发工具在下载操作系统的组件的数据库信息时,显示列表的刷新的延迟不能超过1秒。P1

C XPE 产品的开发工具在生成新操作系统时的总体时间不应超出5分钟,而且必须要有生成进度显示(Progress Bar)。P2

E …

5 Quality Requirements (质量需求):

A XPE 产品的开发工具在开发阶段必须经过代表软件质量的12个质量属性的测试验证。具体测试要求见测试计划文件。P1

B 开发工具在发行前必须通过发行的里程碑终点衡量质量标准。具体要求见里程碑终点衡量文件(Exit Criteria)。P1

C 开发工具所碰到的任何使用错误必须显示于此相关的准确错误信息(Error Message)。所有错误信息必须包括3个部分:出现的具体错误,造成错误的原因,以及如何采取纠正的步骤以消除或避免错误。参见本规范书中对错误信息设计要求的部分。P2

D …

等等

因为篇幅关系,上面这个表格只是一个经过彻底简化了的内容,九个方面的需求分析中的每个方面我只列了几个因素,而实际的文件每个方面的因素至少有几十个之多。但从这个哪怕是十分简单的例子中你也可以看得出来,在开发项目进行计划的第一步,作为项目经理或团队的管理人员,对所有影响到一个项目的各种因素进行思考和验证的重要性。参照以上图1 中的需求管理的考虑因素,从九个方面对开发的要求进行分析和总结,可以帮助你很好地照顾到和把握住应该考虑的各种因素、而不至于遗漏掉重要的东西,从而达到对项目的工作范围起到良好的控制和管理的目的。将这些因素用列表的方法总结出来,可以有效地引导项目参加者和团队成员一起来帮助审核各个需求分析,它同时对整个开发团队在

项目的早期建立开发目的和任务的共识也极有帮助。

2) 从使用方案进一步确定功能需求:

光有一个高层次的需求总结对确定开发项目的范围还是不够的。要建立完整的开发计划,项目经理或开发团队的领导人员还必须对每个具体的软件功能进行确定。那么怎样从一个高层次的需求总结得出具体的功能设计呢?

答案是,最有效的方法根据高层次的需求总结,设计出完整的使用方案,我们把它叫做User Scenarios。所谓的使用方案设计就是,将用户会怎样使用你的软件为解决某个具体问题的整个过程给想象和设计出来,而且应该是一个完整的、从头到尾的使用过程。有了这个过程的总结,再从它的基础上进一步确定每个功能的具体需求。这些具体的功能需求也是需要用文字总结之后,经过整个团队的审核和确证才确定下来。这样的审核与确证可能要来来回回好几次才能最后确定。但是一旦确定之后,它就是一个较为成熟的总结了,它应该包含了整个开发团队对开发的目的的共同认识和意见的回馈,它同时也是对整个开发项目的范围的一个较为完整的确定。

采取我在软件开发项目管理一书中所阐述的从使用方案到功能设计的“三步法”,有了完整的功能需求总结之后,才进行最后的功能设计。这样你就可以保证,所设计和开发的每个功能都有于此相对应的功能需求、有于此相对应的使用方案,而不是毫无目标的、仅仅是因为看起来很“酷”而开发的功能。请参见《软件开发项目管理》有关这方面的论述。

3) 从软件的质量属性来帮助确定范围:

对软件开发项目的范围进行管理的另一个步骤和有效方法是,针对软件质量的12个属性进行对照,由此向客户、市场部门、或领导确定哪些是重要的、我这个项目是必须达到的要求;哪些是次要的、我这个开发可以疏忽的。这个管理方法的指南原则是,代表了一个软件质量的所有属性有的是有冲突的–见下图:

质量标志之间相互融合或对立的关系

图2:质量标志之间相互融合或对立的关系

图中所示的“+”号表示两个不同的质量标志属性相互融合、不矛盾。如果加强某一行的一个质量的属性,那么这个努力会使得所相对的带“+”号的纵栏里的另一个质量的属性也得到加强;“-”表示两个不同的质量标志属性互相对立,要满足其中一个就无法同时再满足相对的另一个。如果加强某一行的一个质量的属性,那么这个努力会使得所相对应的带“-”号的纵栏里的另一个质量的属性受到负面的影响。

例如,如果一个软件的开发和设计做了大量提高其重复使用性的功能,那么这些工作对提高这一软件的灵活性、兼容性、多用转换性等也有巨大的帮助。但是,为提高其重复使用性所必须做的设计上的一些改动,对这个软件本身的效率性的提高则很可能造成负面效果,像额外的程序码必然造成的对运行速度的影响,同时,额外的程序编码也会使“害虫”增多,影响到软件整体的稳定性能。

在有限的开发资源和有限的项目时间情况之下,你往往无法满足代表高质量象征的所有属性。所以你要向客户确证,到底哪些质量属性对他们来说是最重要的。在向客户了解开发质量的要求或分析赢得市场竞争的条件时,制定出满足这些质量需求的侧重点和所要照顾到的优先顺序,并知道避免相互矛盾的质量要求的开发需求。你由此将开发的计划根据客户的要求来安排,将软件的开发和测试的重点围绕着满足客户对质量的期望来做。这样做也就避免了花费时间和精力去做不必要的浪费性劳动,将你的开发项目的工作范围制定得更为紧凑、更讲究效益。一旦确定了满足不同质量要求的优先顺序,你就可以对各个工作注明优先代号,如P1 到P3,如上面表格中的例子。你的开发计划也能够根据这个优先顺序来制定了- 但然是先完成最重要的P1的工作。

总结

使用项目管理的本领在项目的计划阶段能有效的帮助你控制和确定一个软件开发的范围,从而能帮助你的开发团队集中力量开发对客户或赢得市场最重要的东西、并且避免无效开发的浪费。做好一个开发项目管理中的范围管理,也是帮助你建立合理的项目计划和时间表的基础。做好这个工作的技巧在于,按照本文所阐述的三个方法和步骤,先从需求分析的因素考虑出发,从高层次先确定开发项目的各个任务,然后根据功能设计的“三步法”从使用方案来确定具体的功能;最后将所要开发的软件根据质量属性的重要性向客户或领导确证它们的优先权和重要性,由此得出工作重点和范围。这样的开发项目管理方法能够有效地帮

助你管理你的开发的范围。

在下一期的文章里,我再来讨论如何在做完范围管理的基础上,制定合理的开发计划和时间表。

软件开发项目的计划制定- 系列(二)

引言

上一期(今年三月份)的《程序员》杂志所开始的软件开发项目管理的系列文章,以一个软件开发项目的需求和范围管理作了开始。我阐述了对任何一个给定的软件开发任务,我们如何利用需求管理的各个因素的考虑以及客户对代表产品质量的12个质量属性的要求来帮助我们确定整个开发项目的范围。这个项目管理的早期工作的目的,是为了帮助我们能够制定出合理的开发项目计划,也就是项目管理的下一步工作。

在这一期的连续文章里,我来论述你在具备了一个开发项目范围总结的基础之上,应该如何制定一个全面的开发项目的计划,以保证你的开发项目能够取得成功,并以我所管理过的开发项目作为案例来说明具体的管理手段和方法…

正确的计划制定过程以及合理的项目时间表的重要性

如果你是一个进行软件开发项目管理的项目经理或开发团队的领导,是否具备一个完善与合理的项目计划是影响到你所管理的项目成败的关键前提。就像缺少一个完善与符合科学规则的蓝图无法去建造一个大楼一样,没有一个完善的、符合软件开发原则和特性的项目计划,任何一个稍具规模和复杂程度、需要多人配合的软件开发项目也无法做到开发的成功。如果你是一个开发团队的开发技术

人员,哪怕你虽然并不做项目管理的工作,但是为了你的项目成功的利益和整个团队与公司的利益,你也应该期望并且要求你的团队领导或项目经理为你提供一个合理的项目管理计划。你也有责任积极地与他们一起进行协调和合作,在项目的开始之前共同制定一个完善的开发计划。

那么,一个完整的软件开发项目的计划应该包括什么呢?整个计划制定工作的具体任务和工作的顺序应该是怎样的呢?

我在《软件开发项目管理》一书中对开发项目的计划制定以及管理的运作流程作了详细的论述。下图是该书里的对如何进行计划制定的运作流程的概括总结:

具体的很多细节你可以从书中读到,这里我就将最重要的管理概念以及对与我所要举的案例相关的一些内容做一些解释。从上图你可以看到以下这些进行计划制定的管理和执行顺序的理念:

1. 确定软件的功能:在确定了项目范围的基础之上,第一步的计划工作任务是决定所要开发的软件的功能。而这个功能的确定过程是需要经过一个从具体的使用方案到功能需求、再由功能需求到具体的功能设计这样一个三步法来进行的。所以进行设计的项目经理们应该对软件如何被用户使用的整个使用方案做详细的分析总结。

2. 确定各个功能的优先顺序:在确定了软件的具体功能设计设计之后,你应该将所有需要开发的功能的重要性进行一个优先顺序的设定和排列,也就是确定哪些最重要、哪些次要、哪些不重要。我们通常使用从P1 到P3这样三个级别的优先顺序对所有的功能进行划分和排列。这样做的目的有两个:第一是根据事先定好的重要性顺序来安排开发计划,即最重要的功能先开发;第二是为了应付以后可能碰到的必须砍掉一部分功能的情况的出现做准备(在软件开发中常常会有因为市场竞争或客户要求、或开发完成的推迟而出现的某些功能无法按时完成的情况出现)。在这样的情况下你就应该根据事先定好的准则来做决定,而不是临时任意决定哪些功能可以被砍掉或推迟开发。

3. 确定工作任务单元和进行工作任务的分解:在软件各个功能的优先顺序被确定了之后,接下来根据所要开发的具体功能,确定具体的开发任务、并对各个开发任务进行工作任务的分解,达到一个项目的工作任务分解结构(WBS)。这个工作的过程中有一些过渡性的提交物需要完成:首先是将经过优先顺序排列的功能,绘制项目工作任务的网络图(Project network diagrams),然后采用分解方式进行分解,最后达到一个完整的工作任务单元的排列。(请参照我在《软件开发项目管理》一书中对WBS的做法以及绘制网络图的细节的叙述)。

4. 分配开发资源并进行初步时间估算:当具体的开发工作任务的单元被确定之后,接下来进行开发资源的分配,也就是确定到底由谁进行哪些单元或功能组件的开发。当每个开发工作任务都分配布臵了具体的开发人员之后,项目经理应该要求具体执行这些开发工作的人员来进行每个工作单元的时间长度的估算。在这个基础之上,项目经理再将所有的工作任务的时间估算进行汇总,得到一个整个项目的总体时间表。在绝大多数情况下,对有任何并列进行的开发工作的时间

表,项目经理还需要进行所谓的关键性通道(Critical Path)的计算,对整个开发项目的工作任务的网络图进行重新的排列和调整,以缩短总体开发时间,如采取将有太多宽松时间的工作任务给缩短、将处在关键通道上的工作分配给多人来完成等等手段,来进一步优化整个项目的时间。在这个基础上来产生整个开发项目的最终时间表。

这里我想强调很重要的一点是:任何一个开发项目只有按照这样的方法去制定开发时间表,才有可能得出一个比较能够符合实际情况的时间计划,因为这样的计划制定的运作流程充分考虑到了开发人员的具体因素。做具体开发的技术人员的实际经历、素质、和水平、和所要开发的软件的具体要求,直接影响到每一个开发工作任务的具体时间长短,因为同样一个开发任务,两个不同经验的人所要花的时间是不一样的。项目的时间估计当然还可以以其他方式来得到,但是只有在由真正进行开发的人员做时间估算的基础上得到的总体项目时间表,才最接近于实际的情况。这一点对软件开发特别重要。有不少软件开发项目因为时间表的制定不符合实际而造成严重拖延、甚至遭到被砍掉的下场,或者领导要求员工们用加班加点的方式来补救被拖延的时间表,最大的原因之一就是那些项目从一开始起就没有一个切合实际的时间表、或者是管理人员不懂如何去制定合理的时间表。那种脱离实际、人为想象的时间估算往往是导致项目失败的祸种,但却偏偏有太多的项目管理人员或领导不在乎听取具体开发人员对时间估算的反馈意见。所以,进行一个从下而上的,由做实际工作的执行人员先做估算,然后进行综合再订出总体项目时间表的方法,是任何软件开发组织必须追求去掌握的管理素质。

完整的软件开发项目计划的两个方面

完善的软件开发项目管理的工作要求管理人员在进行计划时同时照顾到两个并列的、几乎各自独立的计划工作任务:一个是软件本身的计划,它侧重于软件功能的计划、影响到软件的设计;另一个是项目的展开和执行的计划,它侧重于软件开发工作的具体运行和管理、影响到项目最终是否能够按时按质量完成。这两个工作所侧重的计划问题并不是一回事:一个与开发的结果有关,也就是对所要开发的软件本身的计划;而另一个与开发的运作流程有关,也就是开发中具体的工作任务的执行过程的计划和规章。但是这两个因素却又是紧密联结、互相影响、不可分割的。它们相互之间既有独立性也有依赖性。

要对软件开发项目有一个完善的计划管理,所要制定的计划就必须是同时包括这两个方面的计划。上面图中所总结的整个项目的计划制定过程,就是照顾这两个方面的具体体现:第一,软件本身的设计计划在决定了软件功能的基础上,用软件的设计规范书来体现;第二,整个开发过程的计划也是在确定软件功能的基础上,经过进一步的任务分解和资源的分配、由工作单元安排和优化后得到的项目时间表来体现。

换句话说,这样的计划方法是将软件功能的总结,同时作为计划软件设计和计划开发任务的前提,从而使得这两个工作的计划都建立在同一个基础上,同时又用分开的局部流程使它们能够独立完成,使它们都不被忽视。这是一个将它们相互之间的独立性和依赖性巧妙地结合在一起的计划制定的方法。它将两个方面

计划的依赖性来互相影响它们各自的结果,使得开发工作执行的计划不是建立在空虚的基础上,而是建立在所要开发的软件的实际功能需要的基础之上。

很多开发团队的管理人员或项目经理往往对软件开发项目的计划的范围感到困惑:到底是计划软件本身的内容还是计划开发工作的细节?它们之间的联系以及顺序是什么?通过对上面图中所总结的同时需要完成设计规范书和工作任务清单的分析,你现在应该明白了,完整的项目计划中这两个方面都要包括,而且要用图中所总结的这个计划流程来运作,才能保证开发工作的任务与所要开发的软件是一致的。这是一个非常重要的需要意识到和理解的管理理念。一个完善和成熟的开发团队或组织必须要求它的项目管理人员或懂得并执行这样的计划制定。

所以一个完善的开发计划最后应该包括两个最主要的计划文件:第一是总结软件中的所有功能设计的设计规范书(Design Spec),第二是一个与开发这些功能完全相应的开发工作任务的时间表(Schedule)。这两份各自独立的计划文件组成了项目总体计划的骨干文件,成为其他计划文件的依据。比如说,开发团队再根据设计规范书所描述的具体功能要求去进一步制定软件的构架设计以及每个功能组件的实行计划的制定;软件测试团队也根据设计规范书所描述的具体功能来制定测试计划和具体的测试方案。同时,进行项目管理的经理们也再根据工作任务分解结构以及时间表来进一步制定项目的开支计划,并同时根据设计规范书去制定其它的项目管理计划,如风险管理计划、进度状态通报计划、外报计划等等。

在下篇的连载中我会再仔细谈设计规范书的具体撰写内容,以及进行功能设计的“三步法”。这里我先将其它有关项目计划的工作内容作一个介绍…

软件开发管理中所需要的其它计划

除了体现软件的设计规范书和体现项目进度的时间表的制定这两项重要的计划文件之外,在项目的计划阶段,项目经理还必须与开发团队的领队和其它成员一起协作来制定其它几个和开发管理有关的重要计划:

1. 确定每个开发阶段的里程碑(Milestone):在建立了开发时间表的基础之上,通常我们都将整个软件的开发过程分成几个阶段来来进行。每个阶段先着重开发一部分功能。这样的阶段的终结点就叫这个阶段的里程碑,用M加一个号码来表示,比如从M0开始,到M1,再到M2,…等等。

这样的将开发任务分成几个不同的阶段、每阶段分别注重于先完成一部分开发任务的运作方法,对绝大多数软件开发来讲带有很大的好处。这样的运作流程有助于将所需要完成的整体开发任务,采取逐步开发的方法来渐渐加入和整合新的功能,同时又能够对开发出来的各个组件进行循环式的不断修改和调整、对设计上需要作的改动进行必要的调整、对出现的问题进行及时的修正。这种渐进式的开发方法要求对每个阶段的目标在刚开始就有一个明确的定义。因此,里程碑的制定、以及与此相关的每个阶段相对应的具体日期、以及每个阶段的重点任务等,都应该是项目计划的一部分。

下面我继续拿我所管理过的微软嵌入式操作系统工具的开发项目作为案例来说明这种项目管理的思路,以及里程碑计划的典型内容。以下这个表格就是一种对里程碑进行定义的方法之一:

里程碑里程碑定义里程碑必须完成的功能

M0

6/1/2000 Code complete for Alpha version

初版本功能开发的代码全部完成All key features completed: User shall be able to author a basic SLD file. Help content may not be complete.

所有关键性功能都开发完成。用户将能够使用这个产品进行最基本的嵌入式操作系统设定文件的制作。产品的使用说明书的内容可以还没有全部完成。

M1

7/1/2000 QA completion for Alpha version.

初版本的测试完成Be able to complete all key user scenarios, and including live database support for OS feature selection.

所有关键性的使用方案都能够被完全操作,包括使用实际的操作系统功能组件的分类数据库来选择操作系统的具体功能。

Alpha Release

7/15/2000 初版本的发行

Release to Internal team and JDP partners for dogfooding

初版本向内部发行、让内部用户先“吃狗食”(即开发团队内部先使用还不完善的初版本),并向开发合作伙伴发行。

M2

8/15/2000 Code complete for Beta version

试用版本功能开发的代码全部完成All major features for beta completed. User shall be able to use all major features: SLD creation and modification, browsing SLD files, browsing DB objects, etc.

试用版本中所有主要功能都开发完成。用户将能够使用所有主要的功能:包括嵌入式操作系统设定文件的设计和修改、浏览设定文件的内容、浏览操作系统功能组件的分类数据库等等。

M3

9/1/2000 QA completion for Beta version

试用版本的测试完成Visual freeze. All help content authored. Usability test completed.

使用界面的设计冻结。所有使用文件的内容都编辑完成。产品的可用性测试完成。

Beta Release

9/20/2000 试用版本的发行Release to both internal team for dog fooding, and to general external users for beta feedback.

初版本向内部发行、让内部用户先“吃狗食”,并向普通的外部客户发行,以获得外部客户的回馈意见。

M4

10/15/2000 Feature Complete

所有功能开发完成All feature completed according to spec. All unit test done. All system tests done. Full regression on all test cases at least once.

浅谈敏捷项目管理在软件开发中的应用

浅谈敏捷项目管理在软件开发中的应用 摘要:本文先介绍了使用传统项目管理技术管理软件开发项目的方法,然后介绍了使用敏捷项目管理的初步实践,通过两者比较,提出了使用敏捷项目管理进行软件开发的方法。 一、使用传统项目管理技术管理软件开发项目的方法 按照《人月神话》的说法,软件开发是个焦油坑,书店里关于软件开发管理的书籍林良满目,各个软件开发组织也在尝试和应用不同的软件开发管理办法,希望寻找到“软件开发的银弹”。 在软件开发管理中,引入项目管理的办法,已经得到广大软件开发管理人员的一致认同,但对于具体实施何种项目管理办法,各个软件开发组织都有不同的答案,更多的迷茫,因为引入的项目管理办法不能从根本上解决软件开发项目面临的进度拖后、费用超支等问题,软件开发的银弹到底在哪里? 以下是笔者对国内软件开发组织不同项目管理成熟度的归纳和总结,大概可以分如下几类;1)小作坊、混沌形的,这样的组织还处在接单求生存的阶段,管理者还根本没有项目的意识,以满足客户需求、定制开发和回款为第一要务;2)尝试按照项目管理的思路与方法管理软件开发项目,但发现推

行困难,不得要领,目前很多中小型的软件开发组织都处于这个阶段;3)大型的软件企业,已经通过CMM|ISO认证、有足够的资源做保障,实行规范的项目管理做法,如一些软件外包工厂。 本文主要讲述处于第二个层次的软件开发组织的项目管理问题。软件开发项目管理涉及非常多的内容,从软件开发本身的业务出发,有需求管理、变更控制、配置管理、测试管理、系统分析与设计等;从项目管理的知识领域角度,有范围管理、时间管理、沟通管理、人力资源管理等内容。 按照传统的经典项目管理方法,通过一定的项目管理模板与IT工具,总结多个项目的经验,笔者总结有如下经典步骤来完成项目管理的计划编制与进度控制过程: 计划编制的经典步骤: ①建立企业和项目资源库:这个是进行项目管理的基础工作。 ②设置项目日历、资源日历。 ③设置项目的主要里程碑点。 ④在WBS(工作包)下列出工作清单(Task,Activity)。工作分解结构(WBS)和作业是进行项目范围管理的途径。 ⑤对每个Task估计工期。 ⑥连接每个Task间的逻辑关系(SS,FS,FS,FF,延时)。

软件开发项目管理中的常见问题和解决方案(精)

软件项目管理常见问题及解决方案资料来源:互联网整理人:class4117 软件行业是一个极具挑战性和创造性的行业, 软件开发是一项复杂的系统工程, 牵涉到各方面的因素, 在实际工作中, 经常会出现各种各样的问题, 甚至面临失败。如何总结、分析失败的原因,得出有益的教训,对一个公司来说,是在今后的项目中取得成功的关键。 1 .项目管理在软件开发中的应用的成因 目前我国大部分软件公司,无论是产品型公司还是项目型公司,都没有形成完全适合自己公司特点的软件开发管理模式, 虽然有些公司根据软件工程理论建立了一些软件开发管理规范,但并没有从根本上解决软件开发的质量控制问题。这样导致软件产品质量不稳定, 软件后期的维护、升级出现麻烦, 同时最终也会损害用户的利益。 2. 软件项目管理常见问题及解决方案 (1缺乏项目管理系统培训 在软件企业中, 以前几乎没有专门招收项目管理专业的人员来担任项目经理, 被任命的项目经理主要是因为他们能够在技术上独当一面, 而管理方面特别是项目管理方面的知识比较缺乏。 解决方案:项目经理接受系统的项目管理知识培训是非常必要的, 有了专业领 域的知识与实践, 再加上项目管理知识与实践和一般管理的知识和经验的有机结合,必能大大提高项目经理的项目管理水平。 (2项目计划意识问题 项目经理对总体计划、阶段计划的作用认识不足, 因此制定总体计划时比较随意, 不少事情没有仔细考虑; 阶段计划因工作忙等理由经常拖延, 造成计划与控制管理脱节,无法进行有效的进度控制管理。

解决方案:计划的制定需要在一定条件的限制和假设之下采用渐近明细的方式进行不断完善。提高项目经理的计划意识, 采用项目计划制定相关知识、技术、 工具,加强对开发计划、阶段计划的有效性进行事前事后的评估。 (3管理意识问题 部分项目经理不能从总体上把握整个项目, 而是埋头于具体的技术工作, 造成 项目组成员之间忙的忙、闲的闲,计划不周、任务不均、资源浪费。有些项目经理没有很好的管理方法,不好安排的工作只好自己做,使项目任务无法有效、合理地分配给相关成员,以达到“负载均衡”。 解决方案:加强项目管理方面的培训,并通过对考核指标的合理设定和宣传引导项目经理更好地做好项目管理工作。技术骨干在担任项目经理之前, 最好能经过系统的项目管理知识,特别是其中的人力资源管理、沟通管理的学习, 并且在实际工作中不断提高自己的管理素质, 丰富项目管理经验, 提高项目管理意识。 (4沟通意识问题 在项目中一些重要信息没有进行充分和有效的沟通。在制定计划、意见反馈、情况通报、技术问题或成果等方面与相关人员的沟通不足, 造成各做各事、 重复 劳动,甚至造成不必要的损失 ; 有些人没有每天定时收邮件的习惯,以至于无法 及时接收最新的信息。 解决方案:制定有效的沟通制度和沟通机制, 提高沟通意识 ; 采取多种沟通方式, 提高沟通的有效性。通过制度规定对由于未及时收取邮件而造成损失的责任归属 ; 对于特别重要的内容要采用多种方式进行有效沟通以确保传达到位, 例如:除发送 邮件外还要电话提醒、回执等, 重要的内容还要通过举行各种会议进行传达。 (5风险管理意识问题

软件开发项目管理分析

软件开发项目管理分析 对于软件产品,软件开发的方法以及相关技术的提高,可以促进软件产品的质量以及使用效率。在提高软件产品质量以及功能的同时,不断地缩短软件开发的周期,降低软件开发成本,是软件市场的根本。使用现代化的信息技术,对软件开发工作进行项目的管理与创新,对于相关企业具有重要意义。 1软件开发的问题以及信息化的软件开发项目优势 1.1软件开发的现状及问题 大部分企业软件开发的实际情况,是在需求活动完成之前就进行实际的开发工作,大多数团队都未能做到按照规定执行瀑布开发工作。软件的开发与硬件的开发之间最大的区别是,随着开发程度的不断加深,软件开发常常会出现变更,这就要求软件要及时的做好更新与升级。目前大多数的软件开发团队并不具备有效的开发与管理工具,使得相关管理工作效率低下,很难做到及时的对软件进行更新与管理。并且对于相关需求从设计到编码,再到对软件的实际测试,缺乏一体化的管理以及监控机制。 1.2信息化的软件开发项目优势 信息化的软件开发项目优势的第一方面就是,由传统的手工向自动化进行转变。传统软件开发项目当中,对于工时、评审、缺陷等数据的记录,要进行人工书写,并且相关的审批工作都是采取纸质的形式完成。在这一过程需要花费大量的人力和物力。而信息化技术,可以使得数据信息的产生、评估、汇总等工作做到自动化,解放大量工作人员,提高软件开发工作效率;第二方面优势是可以有效的保证信息记录的及时性以及准确性。信息化手段可以做到对相关信息的及时性以及准确性进行保证。并且在实际的项目执行过程当中,信息系统会对操作记录、工时、软件缺陷等信息进行保存,确保在这一过程信息的实时性以及有效性;第三方面优势是使得信息具有可追溯性。传统的人工记录大多使用纸质对相关信息进行保存,纸质的信息会出现模糊丢失现象的发生,而利用信息化进行保存与管理可以为相关信息提供完整的追溯性。 2基于信息化的软件开发项目管理的实施方法 2.1专业工具的部署 实现软件信息化管理,首先要部署各个阶段需要的专业工具,具体如下:(1)需求开发活动,对软件管理信息化部署专业需求管理工具,将过去计划为主的方式变为以需求为主,驱动任务开展,建议全生命周期全维度管理模式,实现对软件的全过程跟踪管理,以需求作为信息化管理的主线,从需求到设计,再到编码与测试进行跟踪,自动识别变更影响域,收集各阶段需求信息;(2)设计活动,将线下设计工作逐渐转为线上设计,在设计工具的应用下,人们能够以需求框架作为参考,开展设计工作,按照要素输出情况进行文档设计,满足需求覆盖了与标准符合率;(3)编码活动,以往的电子或纸质配置流程方式逐渐被信息化手段取代,基于SVN服务器建立起专业的管理工具,开发库、受控库与产品库之间相辅相成,帮助工作人员完成编码工作与测试工作;(4)测试活动,专业的自动化测试工具可以对单元

稿:软件项目管理制度

**科技股份有限公司软件项目管理制度 目录

项目开发计划 编制项目开发计划的目的是用文件的形式,把对于在开发过程中各项工作的负责人员、开发进度、所需经费预算、所需软、硬件条件等问题作出的安排记载下来,以便根据本计划开展和检查本项目的开发工作。编制内容要求如下: 1引言 1.1编写目的 说明编写这份项目开发计划的目的,并指出预期的读者。 1.2背景 说明: a.待开发的软件系统的名称; b.本项目的任务提出者、开发者、用户及实现该软件的计算中心或计算机网络; C.该软件系统同其他系统或其他机构的基本的相互来往关系。 1.3定义 列出本文件中用到的专门术语的定义和外文首字母组词的原词组。 1.4参考资料 列出用得着的参考资料,如: a.本项目的经核准的计划任务书或合同、上级机关的批文; b.属于本项目的其他已发表的文件; C.本文件中各处引用的文件、资料,包括所要用到的软件开发标准。列出这些文件资料的标题、文件编号、发表日期和出版单位,说明能够得到这些文件资料的来源。 2项目概述 2.1 工作内容 简要地说明在本项目的开发中须进行的各项主要工作。 2.2主要参加人员 扼要说明参加本项目开发工作的主要人员的情况,包括他们的技术水平。 2.3产品 2.3.1程序 列出需移交给用户的程序的名称、所用的编程语言及存储程序的媒体形式,并通过引用有关文件,逐项说明其功能和能力。 2.3.2文件 列出需移交给用户的每种文件的名称及内容要点。 2.3.3服务 列出需向用户提供的各项服务,如培训安装、维护和运行支持等,应逐项规定开始日期、所提供支持的级别和服务的期限。 2.3.4非移交的产品 说明开发集体应向本单位交出但不必向用户移交的产品(文件甚至某些程序)。 2.4验收标准 对于上述这些应交出的产品和服务,逐项说明或引用资料说明验收标准。 2.5完成项目的员迟用限

软件开发与项目管理课后练习(参考答案)

软件开发与项目管理参考答案 第一章(软件开发模型和开发方法) (一)知识回顾与思考 1、软件产品的特性是什么? ①软件是一种逻辑产品,具有无形性; ②软件产品的生产主要是研制;主要是脑力劳动; ③软件不存在磨损和老化问题,但存在退化问题; ④软件产品的成本非常昂贵,其开发方式目前尚未完全摆脱手工生产方式; ⑤软件具有“复杂性”,其开发和运行常受到计算机系统的限制。 2、软件生产有几个阶段?各有何特征? ①程序设计时代:这个阶段生产方式是个体劳动,使用的生产工具是机器语言,汇编语言。 ②程序系统时代:这个阶段生产方式是小集团合作生产,使用的生产工具是高级语言,开发方法仍依靠个人技巧,但开始提出结构化方法。 ③软件工程时代:这个阶段生产方式是工程化的生产,使用数据库﹑开发工具﹑开发环境﹑网络﹑分布式﹑面向对象技术来开发软件。 3、什么是软件危机?产生的原因是什么? 软件危机:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。主要是指如何开发软件,怎样满足对软件日益增长的需求,如何维护数量不断膨胀的先有软件。 原因:一是软件产品的固有特性(软件的不可预见性、软件的规模大且逻辑较复杂),二是软件专业人员自身的缺陷。 4、什么是软件工程?它的目标和容是什么? 软件工程:是用科学的知识程和技术原理来定义,开发,维护软件的一门学科。 目标:付出较低开发成本;达到要求的功能;取得较好的性能;开发的软件易于移植;只需较低的维护费用;能按时完成开发任务,及时交付使用;开发的软件可靠性高。 容:研究容包括开发技术和开发管理两个方面。开发技术主要研究:软件开发方法,开发过程,开发工具和环境。开发管理主要研究:软件管理学,软件经济学,软件心。 5、软件工程面临的问题是什么? ①软件重用性差 ②软件可维护性差 ③开发出的软件不能满足用户需要 6、什么是软件生命周期?它有哪几个活动? 软件生命周期:一个软件从提出开发要求开始直到该软件报废为止的整个时期。 活动:可行性分析和项目开发计划,需求分析,概要设计,详细设计,编码,测试,维护。

软件开发项目管理

软件开发项目管理 ?启动阶段 这个阶段的工作目的是决定一个项目是否需要启动。为了达到这个目的,首先要明确项目的总体战略目标,对项目的需要建立认同。即确定到底需要做什么、开发什么产品或提供什么服务,以及需要解决什么样的问题和需要满足客户或市场的什么要求等,同时还要总结项目工作的范围、所需资源、大约开支、各种风险,以及该项目不执行的其他替代选择等。这些代表了对整个项目目标从战略角度和宏观层次所进行的分析,通过项目的意向书总结出来,由此确证客户或项目发起人和赞助者的要求与期望,并帮助他们判定项目是否上马。项目意向总结书的通过及项目被批准上马形成了这个项目的起始点。 ?计划阶段 这个阶段的工作是为整个项目做计划。项目开始后,首先要确定项目的具体范围,明确定出项目到底要做什么,总结、归纳并定出产品的功能。然后进一步制定项目的计划,列出每项具体工作,并建立所有工作任务的重要性及顺序;确定每项工作的执行人和所需资源;根据人员的配置和能力设定各项工作和整个项目的完成时间表。 ?执行阶段 这个阶段的工作是通过执行项目的计划来完成项目的任务。它包括落实一切所需资源,如:人员、设备、费用、技术、信息,由管理者领导全体项目参与者开展各项工作。同时跟踪各项具体工作和整个项目的进度,定期向全体项目人员及项目的发起人报告项目状态。 ?控制阶段 这个阶段的工作是确证项目工作的结果符合项目的计划。它通过对项目结果的衡量和审核,与项目计划所期望的结果进行比较,找出实际结果与计划的差别,并制定处理措施。这个阶段的工作还包括对项目进程中出现的任何更改要求进行审核和批准。同时调解项目进程中出现的各种问题,如:对缺乏的资源的补偿调节;对项目的进度表及各项具体工作的优先级或顺序的修订。 ?结束阶段 这个阶段的工作是确保项目的最终结果或提交物达到计划的要求,并对完成的结果作可接受的确认。还包括在项目完成之后的收尾工作,对整个项目的经历进行总结,修订项目文档,用户培训等。

软件项目管理试题与答案

16.2.1 填空题 1.在软项目管理中,控制包括,,和。 2.软件项目计划是由和共同经过阶段后制定的。 3.能协调软件开发,使得混乱减少到最小的方法是使用。 4.在软件的生产过程中,总是有大量各种信息要记录,因此,在产品的开发过程中起着重要的作用。 5.成本估算是在软件项目开发之前,估算项目开发所需的,和。6.软件工程管理不同于其他过程管理,它对保证高质量的产品更具有极为重要的意义。7.成本估算方法中,有自顶向下估算方法,自底向上估算方法和方法。 的制度突出了主程序员的领导,责任集中到少数人身上,有利于提高软件质量。 9.基线的作用是把各阶段的开发工作划分得更加明确,便于检查与确认阶段成果。因此,基线可以作为项目的一个。 10.在一个大系统的开发过程中,由于失误造成的后果要比程序错误造成的后果更为严重。 11.软件工程包含和两大部分内容。 12.在软件开发和维护过程中一个软件往往有许多版本,版本控制工具用来存储,更新,恢复和管理一个软件的。 13.参照以前完成的项目所耗费的总成本,来推算将要开发的软件的总成本,然后把它们按阶段,步骤和工作单元进行分配,这种方法称为方法。 14.软件工程管理的具体内容包括对开发人员,组织机构,用户,等方面的管理。15.差别估算的缺点是不容易明确“差别”的界限,但它的优点是可以提高。16.在一个软件项目的开发过程中要自始至终得到的密切合作与支持。 17.风险分析是实际上就是贯穿在软件工程中的一系列风险管理步骤,其中包括,,,和。 18.软件开发项目生存期详细实际阶段应包括的文档。 19.软件项目计划的第一项活动是确定() 20.行业标准是由行业机构学术团体或国防机构制定的适合某个行业的标准。指(),指();指()。 21.工程网络图是一种()图,该图中用()表示事件,有向弧或箭头表示子任务的进行,箭头上的数字称为(),箭头下面的括号中的数字表示该任务的()。 22.软件配置管理。简称,它用于整个软件工程过程。其主要目标是(),(),()和()。是一组管理整个软件生存期各阶段中()的活动。 23.软件配置项()是软件工程中产生的(),它是配置管理的()。 24.国家标准由政府或国家级的机构制定或批准,适合于全国范围的标准。中华人民共和国国家集注监督局是中国的最高标准化机构,它所公布实施的标准简称为(),用()标识;是指(),是指(),是指(),是指()。 25.软件项目计划包括()与()两个任务。 26.软件工程过程中某一阶段的变更,均要引起()的变更,这种变更必须严格加以控制和管理,保持(),并把精确,清晰的信息传递到软件工程过程的()。 27.变更控制包括建立()和建立()。 28.软件配置管理,简称()。软件配置项简称()。 29.根据软件工程标准制定的机构与适用范围,它分为(),(),(),()和()五个等级。 30.工程网络只有一个开始点和一个终止点,开始点没有流入箭头称为()为零。终止点

软件项目管理常见问题及解决方案

软件项目管理常见问题及解决方案 摘要:Web技术的网上学习系统提供了实施研究性学习的环境与技术手段。基于研究性学习 模式理念,探讨在网上学习系统中如何实现研究性学习。给出研究性学习模式形式,以及网上研究性学习系统的设计方案。 关键词:Web;研究性学习;教学网站 软件行业是一个极具挑战性和创造性的行业,软件开发是一项复杂的系统工程,牵涉到各方面的因素,在实际工作中,经常会出现各种各样的问题,甚至面临失败。如何总结、分析失败的原因,得出有益的教训,对一个公司来说,是在今后的项目中取得成功的关键。 1.项目管理在软件开发中的应用的成因 目前我国大部分软件公司,无论是产品型公司还是项目型公司,都没有形成完全适合自己公司特点的软件开发管理模式,虽然有些公司根据软件工程理论建立了一些软件开发管理规范,但并没有从根本上解决软件开发的质量控制问题。这样导致软件产品质量不稳定,软件后期的 维护、升级出现麻烦,同时最终也会损害用户的利益。 随着软件开发的深入、各种技术的不断创新以及软件产业的形成,人们越来越意识到软件过 程管理的重要性,管理学的思想逐渐融入软件开发过程中,应用开发的项目管理日益受到重视。 2.软件项目管理常见问题及解决方案 (1)缺乏项目管理系统培训 在软件企业中,以前几乎没有专门招收项目管理专业的人员来担任项目经理,被任命的项目经理主要是因为他们能够在技术上独当一面,而管理方面特别是项目管理方面的知识比较缺乏。解决方案:项目经理接受系统的项目管理知识培训是非常必要的,有了专业领域的知识与实践,再加上项目管理知识与实践和一般管理的知识和经验的有机结合,必能大大提高项目经理的 项目管理水平。 (2)项目计划意识问题 项目经理对总体计划、阶段计划的作用认识不足,因此制定总体计划时比较随意,不少事情没有仔细考虑;阶段计划因工作忙等理由经常拖延,造成计划与控制管理脱节,无法进行有效的 进度控制管理。 解决方案:计划的制定需要在一定条件的限制和假设之下采用渐近明细的方式进行不断完善。提高项目经理的计划意识,采用项目计划制定相关知识、技术、工具,加强对开发计划、阶段计划的有效性进行事前事后的评估。 (3)管理意识问题 部分项目经理不能从总体上把握整个项目,而是埋头于具体的技术工作,造成项目组成员之间忙的忙、闲的闲,计划不周、任务不均、资源浪费。有些项目经理没有很好的管理方法,不好安排的工作只好自己做,使项目任务无法有效、合理地分配给相关成员,以达到“负载均衡”。 解决方案:加强项目管理方面的培训,并通过对考核指标的合理设定和宣传引导项目经理更好地做好项目管理工作。技术骨干在担任项目经理之前,最好能经过系统的项目管理知识,特别是其中的人力资源管理、沟通管理的学习,并且在实际工作中不断提高自己的管理素质,丰富 项目管理经验,提高项目管理意识。

软件开发项目管理实施方案

项目管理实施方案 作为一个项目管理者,如何要成功的做好项目管理;首先必须先要明白的是在特定的领域中赋予这个角色所要实现的目标、承担的职责、以及项目管理者的具体工作内容是什么? 从我个人的浅见和角度以及我们所从事的IT领域来分析回答以上三个问题。 第一:目标 作为一个项目的管理者,必须要明确的知道自己的工作目标;我个人认为项目管理者的目标无非就是以下两点: 1、就是清晰明确地了解项目利害关系者的需求和期望,努力做到满足项目利害关系者的不同需求;项目利害关系者包括:项目团队成员和项目团队外成员(比如各部门的部门负责人和市场人员,客户等)。 2、就是保证开发项目按需按时保质的完成。 第二:职责 作为项目的管理者,首先要端正态度,要明确知道自己的工作职责,认识到这份工作职责的本质。项目管理者不是来管人的,而是来支持人的,是来协调资源的,是来营造一个适合团队成员比较认同的工作环境和氛围的,是来为一个共同的目标和大家一起战斗共同成长的。可以大概概括成以下几点: 1、建立有效的工作流程保证项目的顺利进行。 2、制定详细周密的项目计划。 3、跟踪,推动项目按计划进行。 4、积极解决项目过程中出现的问题和冲突。 5、调动开发团队的积极性,创造力,推动团队成员在项目过程中不断成长。 6、项目风险识别、风险评估、风险解决和风险管理策略以及做好突发风险的应急预案。 7、实现目标 第三:项目管理者的具体工作内容 最后一个是项目管理者的具体工作内容,作为项目管理者必须清晰的知道自己的工作范围和所要做的工作内容以及工作重心,分为以下六点: 1、项目前期阶段 对项目进行技术可行性分析、技术评估、成本评估以及风险评估。与需求提出方的代表进行需求讨论,明确项目的目标、价值;确定项目范围、功能及优先级。组建项目团队,特别要搞清楚项目的key person(对产品有决定权的人)。项目启动会议,相关的

软件开发项目管理

管理目标 1、所有关系人清晰明确地了解项目的需求和期望,努力做到满足项目所有关系人的不同需求;项目关系人包括:项目团队成员和项目团队外(内部/外部客户,内部/外部合作伙伴,经销商/客户等)。 2、项目管理三要素平衡(时间/成本/质量),即开发项目按需按时按质的完成。 3、目标:功能满足需求,设计支持变化,开发快速迭代,成果持续交付。 执行概述 1、建立有效的工作流程保证项目的顺利进行,初期使用传统RUP过程,引入部分敏捷方法, 团队磨合完成后逐步实现敏捷开发全流程管理。 2、明确项目目标,制定具有可行性的项目计划,有效明确的分解项目需求。 3、跟踪设计/开发/测试/回归/发布全流程,推动项目按预定计划执行。 4、解决项目过程中出现的问题和冲突,一般集中在需求不明/工作量或时长/开发难度/跨 部门协调等几个方面。 5、调动开发团队的积极性,创造力,推动团队成员在项目过程中的学习成长。 6、风险识别、风险控制以及风险的预案。 项目管理 1、需求阶段 对项目进行技术可行性分析、技术评估、成本评估以及风险评估。 与需求提出方的代表进行需求讨论,明确项目的目标、价值。 确定项目范围、功能及优先级。 组建项目团队,特别要搞清楚项目的关键人。 项目启动会议,相关的关系人都必须参加。 2、设计阶段 根据确认后的软件需求规格说明书,制定项目进度计划,工作任务分解(WBS);资源申请,项目涉及到的开发资源、测试资源、设计资源(包括人员和软硬件资源);数据库设计;系统设计;文档(包括系统用例、Demo、测试用例等);评审会议。 设计阶段结果交付一般为系统用例/系统原型/系统设计文档(概要设计和详细设计)/数据库设计文档等。 该阶段交付成果需要进行评审。 3、执行阶段(开发和测试) 准备开发环境、测试环境。 跟踪,推动项目按计划进行。 项目成员以日报/项目负责人以周报的形式通报各关系人当前项目的进展情况。 按里程碑对阶段成果进行评估,以确保该阶段完成的质量。 代码审核,包括CS审核、SQL审核、WEB审核等。 对需求变更进行控制管理。 测试阶段BUG响应及改进、收集反馈意见。 对项目风险进行管理。 4、发布阶段 包括制定项目发布计划,用户培训,发布上线。 5、试运行阶段 数据监控(日志、服务器状态),根据监控出现的问题,及时进行处理,改进性能问题,特定情况执行补丁升级。

软件公司研发项目管理制度()

软件公司研发项目管理制度 第一节总则 第一条为规范自有软件研发以及外包软件的管理工作,特制定本制度。本制度适用 于公司软件研发与管理。 第二条本制度中软件开发指新系统开发和现有系统维护或改造,此类工作均需要以项 目制管理。 第三条本制度中自行开发是指主要依赖公司自身的管理、业务和技术力量进行系统 设计、软件开发、集成和相关的技术支持工作,一般仅向外购置有关的硬件设备和支撑软件平台;合作开发是公司与专业IT公司(合作商)共同协作完成IT应用的项目实施和技术支持工作,一般形式是公司负责提供业务框架,合作商提供技术框架,双方组成开发团队进行项目实施,IT系统的日常支持由技术研发部承担;外包开发是指将IT应用项目的设计、开发、集成、培训等任务承包给某家专业公司(可以是专业的IT公司或咨询公司等),由该公司(承包商)负责应用项目的实施。? 第四条 ?软件开发遵循项目管理和软件工程的基本原则。项目管理涉及立项管理、项目计划和监控、配置管理、合作开发管理和结项管理。软件工程涉及需求管理、系统设计、系统实现、系统测试、用户接受测试、试运行、系统验收、系统上线和数据迁移。 第五条 除特别指定,本制度中项目组包括业务组(或需求提出组)、开发组(可能包括网络管理员和合作开发商)。 第二节立项管理 第六条 提出项目需求的部门参与公司层面立项,进行立项的技术可行性分析,编写《立项分析报告》,开展前期筹备工作。《立项分析报告》应明确项目的范围和边界。 第七条 需求提出部门将立项分析报告》交相关部门会签后,上交公司高层进行立项审批,以保证系统项目与公司整体策略相一致。 第八条 《立项分析报告》得到批准后,成立项目组(如果是外包开发,则成立外包商项目组; 如果是合作开发,则与外包商共同成立合作开发项目组,以下统称“项目组”),项目组应包括业务组(由公司技术研发部需求管理组和相关业务部门组成)和开发组(自行开发为技术研发部开发组、网络管理员;外包开发为技术研发部指定的开发组长、网络管理员和外包商成员;合作开发为技术研发部开发组指定人员、网络管理员和外包商成员)。公司技术研发部委派一名项目经理负责监督项目的进度,进行项目管理工作,确保开发能及时完成并能满足业务需要。项目组人员的选择应满足项目对业务及技术要求,项目组人员应有足够的业务和IT技术方面的专业知识来胜任项目各方面的工作。 第三节需求分析

【项目管理知识】软件项目管理的研究及在项目开发中的应用

软件项目管理的研究及在项目开发中的应用 针对软件项目开发的特点和软件开发包项目高失败率的善通过对软件项目管理方法的研究提出了软件项目开发过程的一种管理流程和相应的子流程,实现了对软件项目控制和管理。前言 软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对成本、人员、进度、质量、风险等进行分析和管理的活动。实际上, 软件项目管理的意义不仅仅如此,进行软件项目管理有利于将开发人员的个人开发能力转化成企业的开发能力,企业的软件开发能力越高,表明这个企业的软件生产越趋向于成熟,企业越能够稳定、持续地发展。 软件项目管理的特殊性表现在:①软件产品是无形的。软件项目管理者不能像其他项目管理者那样,能够从被开发的产品上看到进度、已经完工的部分 是否与设计相符等,他们只能从其他人所提交的文档中来掌握相关的情况。② 没有标准的软件过程。对软件过程的理解虽然已经取得了长足的进步,但是软 件管理者还是不能确切地预见某一软件过程何时有可能出现问题。③大型软件 项目常常是一次性的”。由于软件项目与一个国家、地区的经济政策相联系, 与用户的发展战略、经济实力、管理水平相适应,软件项目的开发过程中所采用的技术和管理方式与当时的计算机和通信技术有关,因此大型软件项目一般都不同于早先的项目,管理者纵使有在计划中降低不确定性的经验,也很难较准确地预见问题的出现,以前的经验教训也较难在新项目中发挥大的作用。 从目前国内外的软件企业来看,软件危机”的阴影仍然存在,软件行业的项目实施情况一直很不乐观。研究表明,软件项目失败的原因主要有两个: 是应用项目的复杂性;二是缺乏合格的软件项目管理人才。实践证明,缺乏有效的项目管理是导致软件项目失控的直接原因。

软件开发项目管理中的常见问题和解决方案

软件项目管理常见问题及解决方案 资料来源:互联网整理人:class4117 软件行业是一个极具挑战性和创造性的行业,软件开发是一项复杂的系统工程,牵涉到各方面的因素,在实际工作中,经常会出现各种各样的问题,甚至面临失败。如何总结、分析失败的原因,得出有益的教训,对一个公司来说,是在今后的项目中取得成功的关键。 1 .项目管理在软件开发中的应用的成因 目前我国大部分软件公司,无论是产品型公司还是项目型公司,都没有形成完全适合自己公司特点的软件开发管理模式,虽然有些公司根据软件工程理论建立了一些软件开发管理规范,但并没有从根本上解决软件开发的质量控制问题。这样导致软件产品质量不稳定,软件后期的维护、升级出现麻烦,同时最终也会损害用户的利益。 2.软件项目管理常见问题及解决方案 (1)缺乏项目管理系统培训 在软件企业中,以前几乎没有专门招收项目管理专业的人员来担任项目经理,被任命的项目经理主要是因为他们能够在技术上独当一面,而管理方面特别是项目管理方面的知识比较缺乏。 解决方案:项目经理接受系统的项目管理知识培训是非常必要的,有了专业领域的知识与实践,再加上项目管理知识与实践和一般管理的知识和经验的有机结合,必能大大提高项目经理的项目管理水平。 (2)项目计划意识问题 项目经理对总体计划、阶段计划的作用认识不足,因此制定总体计划时比较随意,不少事情没有仔细考虑;阶段计划因工作忙等理由经常拖延,造成计划与控制管理脱节,无法进行有效的进度控制管理。 解决方案:计划的制定需要在一定条件的限制和假设之下采用渐近明细的方式进行不断完善。提高项目经理的计划意识,采用项目计划制定相关知识、技术、工具,加强对开发计划、阶段计划的有效性进行事前事后的评估。 (3)管理意识问题 部分项目经理不能从总体上把握整个项目,而是埋头于具体的技术工作,造成项目组成员之间忙的忙、闲的闲,计划不周、任务不均、资源浪费。有些项目经理没有很好的管理方法,不好安排的工作只好自己做,使项目任务无法有效、合理地分配给相关成员,以达到“负载均衡”。 解决方案:加强项目管理方面的培训,并通过对考核指标的合理设定和宣传引导项目经理更好地做好项目管理工作。技术骨干在担任项目经理之前,最好能经过系统的项目管理知识,特别是其中的人力资源管理、沟通管理的学习,并且在实际工作中不断提高自己的管理素质,丰富项目管理经验,提高项目管理意识。 (4)沟通意识问题 在项目中一些重要信息没有进行充分和有效的沟通。在制定计划、意见反馈、情况通报、技术问题或成果等方面与相关人员的沟通不足,造成各做各事、重复

软件与项目管理

一、选择题 1、项目计划的制订是反复的过程,在实施的过程中,要求调整项目计划来协调成本、目标和进度,因此()。 A.在每个项目的阶段点上,都要求对项目计划进行变更 B.成本、目标和进度都要求体现在项目计划中 C.修改后的项目计划应该首先保证项目的进度符合要求 D.在大多数情况下,质量目标用来换取成本和进度 2、在软件开发过程中,通常会牵涉到机构、体制和管理方式的问题,这些问题的解决对于成功的软件项目管理很重要,有效地管理组织结构、质量政策、运行体制是()的责任。 A.项目经理B.职能经理C.高层管理者D.客户 3、下列不应该包含在项目计划中的是()。 A.范围的说明B.成本的分配和预算 C.实际的进度偏差D.需要达到的质量标准 4、()时,组织通常会外购产品或服务。 A.为了稳定现有人力资源B.需要保密 C.需要加强对产品质量的控制D.技术能力匮乏 5、小王负责一个管理信息系统项目,最近在与客户共同进行的质量审查中发现一个程序模块不符合客户的需求,进行追溯时,发现有相应的变更请求。最终小王被迫对这一模块进行再设计并重新编程。造成此项返工的原因可能是()。 A.未进行需求管理B.未进行范围确认 C.未进行变更管理D.质量管理过严 6、某正在进行中的项目,当前的BCWS=2200元、EV=2000元、ACWP=2500元,当前项目的SV和项目状态是()。 A.-300元;项目提前完成B.+200元;项目提前完成 C.+8000元;项目按时完成D.-200元;项目比原计划滞后 7、在关键路径上增加资源不一定会缩短项目的工期,这是因为()。 A.关键路径上的活动是不依赖于时间和资源的 B.关键活动所配置的资源数量是充足的 C.关键活动的历时是固定不变的 D.增加资源有可能导致产生额外的问题并且降低效率 8、某正在进行中的项目,当前的BCWS=2200元、EV=2000元、ACWP=2500元,该项目的CPI和成本绩效是()。 A.0.20;实际成本与计划的一致B.0.80;实际成本比计划成本要低 C.0.80;实际成本超出了计划成本D.1.25;实际成本超出了计划成本 9、编码阶段质量保证的措施不包括()。 A.程序员个性化的风格。B.严格遵守编程规范。 C.进行代码静态分析和代码审查。D.进行完善的单元测试。 10、关于项目团队成员的个人能力和对项目的影响,下列那些描述是正确的()。 A.对于按照工程化协作进行大的项目,个人能力对项目没有影响 B.项目无论大小,个人能力都会对项目的目标产生影响 C.从事项目对个人能力的提高没有影响 D.对于小项目,项目的最后成功与否,完全取决于个人能力 11、软件项目的工作量或者成本的估算,通常可以按照功能点或者单元数来进行估算,此时的估算是以()为依据的。

软件项目开发流程管控V2.0

一、目的 1.明确项目团队的管理和沟通流程,改善团队耦合性能。 2.部门内全面实施团队式管理机制,发挥广大员工各自的潜能,激励员工共同参与团队建设与发展。 3.使项目管理实现质量、资源、时间等要素的可控化。 4.规范项目开发管理,提高项目开发质量,提高工作效率,降低软件开发风险。 5.建立一套适合公司实际情况且又实用的有机管理体系。 6.为公司发展做好基层管理基础,为员工的发展提供有利的软环境保障。 二、原则 1.体现项目团队理念。 2.实用性。 3.有机性。 4.共同发展。 三、组织结构 1.约束条件 1)该项目管理和控制机制仅仅是用于全过程型和功能增加型软件开发。 2)该项目管理和控制机制必须与公司当前的发展状况、资源状况相匹配。 2.假定环境 1)公司具有一定的多项目同时开发的实力。 2)公司拥有几个能够带领项目开发的人员。 3)公司有能力组织测试和完备的文档管理。 4)公司有能力组织软件质量测评和监管。 5)公司软件部门管理为项目软件主管、项目团队式,且项目软件主管对各项目团队具有监控权 和工作质量跟踪权。 6)部门内有明确的岗位责任分工基础。 7)公司内有一批具有一定项目管理基础,能够带领人员完成项目开发的人才。

3. 组织结构 1) 说明:该结构为行政式结构,对于系统分析人员和软件工程师、开发人员都在项目团队或无项目员工的队列中。专职维护暂为预留组织。 2) 项目组内实行团队式组织结构 a) 每个项目组都是一个项目团队,具体称谓:angel 项目团队。 b) 一个项目团队要由以下几个基础机构组成: 项目经理; 软件总体设计工程师; 开发人员; 注:如果项目较小时可以进行机构合并,如项目主管、系统分析可以合并为一人来做。 如果项目运做前期需要时,还可以一人担负整个项目,但仍可以依据流程和控制机制来开展工作。 总体设计工程师和系统分析员在项目运做前期可能同时负责多个项目,即一个项目的系统分析员或总体设计工程师完成其所担负的任务后(交付所有文档和完成对开发人员培训后)可能转做另一个项目。 c) 机构内部领导模式为:民主式领导模式(项目经理与软件系统分析员、总体设计工程 师以及程序编码人员之间的关系是一种民主式方式,是同一个团队的不同成员,仅存在职能、职责的分工不同,没有高低贵贱之分,严禁摆资格和论权利等级。)。 项目组 项目组 项目组 项目经理 项目经理助理 项目总工程师 测试组 项目组 维护组

软件开发项目管理制度

软件开发项目管理制度 一、总则 为保障公司软件开发项目的工作能有效、有序的执行,保证项目的开发质量,维护公司及开发人员的利益特制订本制度。 二、组织 软件开发项目的实施以软件开发项目组的形式进行,项目组中设有项目责任人(即项目经理)、项目开发工程师、测试工程师、辅助人员等。一般情况下,一个项目组负责一个软件项目的开发工作。对于特大型的项目可以组织多个项目组分块进行实施。项目组人员各负其责,在项目经理的统一领导组织下共同完成项目实施工作。 三、责任 项目经理:全面负责项目的开发组织工作,包括需求分析、系统设计、 人员分工、进度安排等。项目经理负责组织完成项目系统分 析报告、系统总体设计报告、开发进度计划表、系统测试大 纲等技术文档编写工作。负责开发进行中的进度检查,联合 调试、技术资料文件收集等工作。 开发工程师:按照项目经理的分工安排完成软件开发项目中自己所承担 的开发工作。负责完成模块设计报告的编写工作。协助完成

软件的安装调试及售后服务工作。

测试工程师:按照项目经理的分工安排完成对开发软件的测试工作。负责 完成测试方案设计、测试报告的编写工作。负责完成软件使 用手册、培训教材等的编写工作。完成软件的安装调试及售 后服务工作。 辅助人员:按照项目经理的分工安排完成项目开发中的辅助工作,包括 文档录入、资料整理等。 四、流程 软件开发项目应按照以下流程进行 整个软件开发项目可分为四个阶段: A段:设计阶段。完成系统分析、总体设计、进度计划等工作。以提交系统分析报告、系统设计报告及开发计划进度表为完成标志。

B段:编程阶段。完成系统子模块设计、程序编写、组装测试等工作。以提交系统子模块设计报告、测试报告为完成标志。 C段:安装阶段。完成系统安装、用户培训、手册编写等工作。以提交用户手册培训教材、安装计划、培训计划为完成标志。 D段:验收阶段。完成系统的最后修改、进行工作总结。以提交项目验收报告、开发技术文档及源文件光盘、开发工作总结为完成标志。 完成A,B,C,D四个阶段后,标志一个软件开发项目工作的结束。 五、奖罚 软件开发人员的工资收入由二部分组成:基本工资、项目奖励。基本工资为开发人员的月固定工资,按月发放,基本工资的分配按公司有关规定执行。项目奖励为软件开发项目完成后的奖金,软件开发项目完成后第二个月随基本工资一起发放。 1.奖励: 对按期完成的软件项目,参与项目开发的所有人员均可得到项目奖励金,奖励金的分配根据每个开发人员参与项目的工作量大小由 公司主管领导与项目经理协调统一分配。 (1)项目奖励金的计算方法: 奖励金 = 软件项目开发费总额× 10% (2)项目奖励金的分配比例为: A阶段20%,B阶段40%,C阶段30%,D阶段10%(3)按期完成的定义 a.在软件开发项目规定的期间内完成; b.在项目业主认可的期间内完成。 2.处罚: (1)由于自身原因未能完成的软件开发项目不发放项目奖 励金; (2)由于自身原因连续三个月以上不参加项目开发工作的, 基本工资减半。 六、文档 一个软件开发项目完成后,应提交以下文档资料:

软件开发项目管理制度

软件开发项目管理制度 1 目的和适用范围 为规范公司自有软件研发的管理工作,特制定软件项目的立项、开发、测试、发布、备份及软件发布后问题跟踪与处理、设计更改及升级的管理制度,最大限度满足用户的需求。 本标准适用于聚龙股份有限公司(以下简称公司)软件开发项目的管理与控制。 2 涉及的相关部门 公司所有部门 3职责与管理控制 职责 参见《设计和开发控制程序》中相关条款。 管理控制 3.2.1 软件开发项目分类与立项管理分类 1. 软件开发项目分类 (1)软件产品项目:公司或部门提出的,可以作为公司独立产品或配套产品的软件开发项目; (2)内部管理软件项目:公司或部门提出的,仅限于公司内部管理应用的管理软件项目; (3)内部工具软件项目:公司或部门提出的,仅限于公司内部生产调试使用的各种工具软件项目。3.2.2 软件项目管理分类 软件项目管理分为正式立项管理与设计更改管理。 1. 正式立项管理 软件开发需求之前没有相同的正式软件产品,或者软件在功能和结构上与原有软件相比有较大改变,能够作为一个独立的应用软件,均可作为软件开发项目进行正式立项,并按3.3.2进行软件立项管理。 2. 设计更改管理 如果需求部门需求的软件与当前已发布的软件功能有差异需要更改或升级时,由项目组按照需求部门要求进行设计更改,并按3.3.3进行软件设计更改管理。 软件项目各阶段管理 软件项目开发管理过程划分为需求分析阶段、立项阶段、设计编码与测试阶段、软件发布与实施阶段、项目验收阶段。 3.3.1各阶段工作内容及形成表单

软件开发项目管理流程 软件设计更改管理 软件设计更改分类 软件设计更改可分为两个类型:软件升级需求和软件缺陷修改。

软件项目开发管理制度

软件项目开发管理制度 1 第一节总则 特制定本为规范自有软件研发以及外包软件的管理工作,第一条 分公司参制度。本制度适用于股份公司软件研发与管理,照执行。 本制度中软件开发指新系统开发和现有系

统重大改造。第二条 业务和第三条本制度中自行开发是指主要依赖公司自身的管理、 软件开发、集成和相关的技术支技术力量进行系统设计、持工作,一般仅向外购置有关的硬件设备和支撑软件平 公司(合作商)共同协作完台;合作开发是公司与专业IT 应用的项目实施和技术支持工作,一般形式是公司负成IT 双方组成开发团合作商提供技术框架,责提供业务框架,系统的日常支持由信息中心和合作商队进行项目实施,IT 共同承担,信息中心负责内部(一级)支持,合作商负责外应用项目的设计、开部(二级)支持;外包开发是指将IT (可以是专业发、集成、培训等任务承包给某家专业公司公司或咨询公司等),由该公司(承包商)负责应用的IT

项目的实施。 项目管理第四条软件开发遵循项目管理和 软件工程的基本原则。 涉及立项管理、项目计划和监控、配置管理、合作开发管理和结项管理。软件工程涉及需求管理、系统设计、系统 2 实现、系统测试、用户接受测试、试运行、系统验收、系 统上线和数据迁移。 除特别指定,本制度中项目组包括业务组(或需求提出第五条 。组(可能包括网络管理员和合作开发商)组)、IT

项管理第二节立 提出开发需求的信息技术部门参与公司层面立项,第六条进行立 开展前期筹《立项分析报告》项的技术可行性分析,编写 备工作。《立项分析报告》应明确项目的范围和边界。 上交公司总裁应用系统主要使用部门将第七条《立项分析报告》 室进行立项审批,以保证系统项目与公司整体策略相一

相关文档
最新文档