介绍了软件项目管理中沟通的重要意义,分析项日干系人间的相互联系,沟通与效率的关系,以及沟通的一些关键要素,并结合具体案例讲解沟通在软件工程中的应用。
项目沟通管理是现代项目管理知识体系中的九大知识领域之一,项目沟通管理在成功所必须的因素—人、想法和信息之间提供了一个关键性连接。在项目管理中,沟通是一个软指标,其所起的作用不好量化,沟通对项目的影响往往也是隐形的。但是,沟通对项目的成功,尤其是IT项目的成功非常重要,本文就围绕沟通的重要意义、项目于系人、沟通对效率的影响、沟通的关键要素这几方面展开一些探讨,最后结合高职外语教学、综合测评平台项目,对沟通在小组软件开发过程中的应用进行案例分析。
1沟通的意义及项目千系人分析
项目管理要素有:范围、时间、成本、质量、人力、风险、采购、沟通,一个成功的项目与这些因素是紧紧相关、不可分离的。但是在项目的实际参与和项目的操作过程中,可以发现无论是项目管理中的哪个因素,与其关联最多、涉及活动最多的是项目干系人,项目干系人一般包括最终用户、项目团队、项目公司的管理层等一些主要的利害关系者。项目管理中时间、成本、质量、人力、风险、采购等很大一部分是与人的沟通与人的管理有关,如何做好人的管理、如何组建一个成功的项目团队、如何在项目中发挥团队的所有潜力、如何与客户的关系日趋完善、如何做到让客户满意,这些都是在“沟通”管理中所必须及掌握的要素。
要做好各要素沟通,要实现于人的管理,就应站在这些“项目干系人”的角度上,从他们的需要及利益出发,最大限度地通过项目实现他们的价值,如果脱离这些,那么项目是很难获得成功的。项目经理在与客户进行需求调研及交流前,一般先要充分考虑项目的需求性及可行性,然后列一个需求管理(包括详细的沟通计划及沟通要求)计划,并且要考虑需求沟通中所需的人员、资源、时间的要求,这样才可以保证需求调研的准确性。很多软件项目在其开发过程中,客户突然提出需求变更,给项目的进展带来不利的影响,虽然很大程度上这是客户主观因素造成的,但也说明项目组在和客户进行前期沟通的时候,没有充分考虑一些假设或约束因素,也没有充分明确列举沟通要求。
同样,除了和客户进行沟通之外,在项目开发过程中,项目经理与项目成员之间的沟通方式及项目经理对团队的建设技巧也是直接影响到项目成败的关键。项目过程中沟通的目的是为了“保持项目进展、识别潜在问题、征求建议以改进项目绩效”,如果在项目的开发、设计过程中未把好沟通这道关,可能会产生意料之外的项目失败,同样一个好的配合团队能使项目达到事半功倍的效果,关于沟通的具体的一些方法和技巧将在下文谈到。
2沟通与效率的关系
2.1项目复杂程度与实施效率
沟通路径所消耗掉的工作量多少取决于软件项目本身的复杂度和祸合度。原IBM在马里兰州盖兹堡的系统技术主管Joel Aron,在他所工作过的9个大型项目的基础上,对程序员的实施效率进行了研究。他根据程序员和系统部分之间的交互划分这些系统,得到实施效率表(见表1)
一般说来,底层软件(操作系统、编译器、嵌入式系统、通信软件)的接口复杂度要比应用软件(MIS、操作维护软件、管理软件)要高得多。
在估算软件开发项目工作量时要充分考虑任务的类别和复杂程度,因为抽象的、接口复杂的系统开发过程,其沟通消耗必然大。另外,有深厚行业背景的软件,要考虑开发人员为熟悉行业知识所需付出的沟通消耗。
2.2团队规模与实施效率
需要协作沟通的人员的数量会影响开发成本,因为成本的主要组成部分是相互的沟通和交流,以及更正沟通不当所引起的不良结果(系统调试)。
人与人之间必需通过沟通来解决各自承担任务之间的接口问题,如果项目有n个工作人员,则有nx(n -1)/ 2个相互沟通的路径。假设一个人单独开发软件,年实施效率为10 00行代码,而每一条沟通路径上每年消耗掉的工作量可折合500行代码,则团队规模和沟通消耗以及实施效率存在以下关系(见表2)。
2.3团队的默契度与实施效率
团队的默契程度对软件实施效率影响很大。一个经过长期磨合、相互信任、形成一套默契做事方法和风格的团队,可能省掉很多不必要的沟通,其合力甚至可以超越这个团队本身,而做出一些平时他们连想都不敢想的成就来。相反,初次合作的团队因项目成员各自的背景和风格不同、成员间相互信任度不高等原因,就要充分考虑沟通消耗。
营造一个配合默契的团队并没有一个简单易行的规定和过程,但是有一个必不可少的因素,那就是团队中的所有成员对这个小组承担的全部义务,成员乐于为整个团队而放弃自己的利益和志向,这样整个团队就一定有很强的内聚力,而且一个人置身于氛围良好、合作默契的团队中心情一般都较好,这种良好的氛围所能带来的能量是不可估量的。
所以持续良好的沟通和交流是一个团队的无形资产,而由之形成的一个自然、稳定、默契的开发团队就是软件企业的核心竞争力所在。
3沟通的一些要素
一个优秀的团队组织和协调管理者所发挥的作用往往对目的成败起决定作用,他必然也是一个善于沟通的人。沟通研究专家勒德洛(LudIow,R.)提到,高级管理人员往往花费80%的时间以不同的形式进行沟通.普通管理者约花50%的时间用于传播信息。缺乏沟通这个问题是不能通过技术来进行改进的,现在技术发展很快,但人们对沟通和融洽相处的需求不但没有减少,反而显得越来越重要了。
沟通的效率直接影响管理者的工作效率,在项目成员间改善沟通将提高士气、生产率、质量,并可以减少成本,使得项目更好开展。但如果出现沟通问题,也可以遵循以下过程来有效地控制问题:找出问题的起因;实行纠错行为;加强工作环境中的沟通活动。
4项目中沟通运用的案例分析
笔者在负责开发外语学院的英语网络教学、考试综合平台时,就充分考虑软件项目管理中沟通的一些要素。整个项目按小组软件开发过程(TSP)进行开发,其中每个步骤都涉及到了沟通。
4.1技术调研
该项目是为教师和学生进行英语教学、考试、以及评估的综合性网络平台,学生可以通过网络进行全程的英语学习、测试,老师也可以利用这个平台动态的掌握学生的情况。在技术采用方案中,我们打算用ASP.NET+SQL SERVER进行开发,分三层体系结构。在听取了他们构思的同时,针对项目调研情况,我们也从技术层面上阐述了自己的看法、最后达成了一个初步共识。
4.2需求分析
项目的最终用户是外语老师和学生,我们开始与外语学院老师进一步接触,了解高职外语教学领域内的情况。为了防止或减少用户需求变更,产通目标中考虑了很多制约因素和假设因素,大概经过了一个星期的沟通,一份完整的SRS文档生成,并且我们将SRS的段和节编号,用来确定每一个说明的来源。
4.3概要设计
软件的大概要求和功能在得到确定后,项目流程到了概要设计阶段,这时项目开发小组完全启动,项目小组开始制定详细工作目标、角色目标等。
4.4详细设计
在概要设计阶段定义好了各功能模块、明确了开发者责任之后,开始了模块内的细节设计,在这个阶段我们定义了整个平台数据库,在定义数据表和字段时,有两位成员的想法互不相同.两人各持己见,争的面红耳赤,僵持不下,最终双方把各自的想法和理由列个清单,征求了小组其他成员和外语学院老师的意见,经过大家共同的分析,最终确定了某一个成员的数据库方案,另外那个成员也心服口服。
4.5编码设计
在编码阶段的每次会议中,我们都要掌握各个成员的进度,询问下个阶段的安排,并要求每个成员在会议中都要开城布公地对待问题,不能隐瞒,使小组保持一种透明的风格。这样我们就可以知道将要发生什么事情,并预见问题,以便能迅速进行调整。
4.6集成与测试
在开发后期,各个模块功能基本完成,在确认每个模块基本上无独立缺陷和比较好的质量后,进人了整体的测试。
这个项目在制作半年后完工,并测试合格,现运行非常正常,总结这个项目的一些经验,要确保软件开发质量和效率,与用户的有效沟通以及开发成员间的良好协作是关键,要达到这一点,一个团队至少应具备以下三个要素:透明性、聆听、协商。透明性能使整个小组知道将要发生什么事情、并能预见问题,知道什么时候谁最需要帮助,并能保持整个小组工作的一致性。最好的交流者应该是非常善于聆听的人,这种聆听应该是全身心的,只有这样,别人才会和你进行比较深的交流,你也会准确地领会对方的意图。协商最重要的作用是解决问题和分歧,能使得矛盾双方都得到一个满意的结果。
5结束语
项目沟通管理是一门艺术,这不仅仅表现在“项目干系人”相互之间的沟通技巧上,而且体现在项目负责人对项目的全局管理上,项目管理的八大要素记起来简单,但如何灵活地驾御它,使这些要素在操作上更方便,更适合应用到实际项目中去,这就需要艺术化的管理、技巧性的操作,管理上的条条框框虽然是定死的,但人可以动态地去应用它。无论在哪个领域的项目管理中,这些沟通技巧都可以通用,并且可以结合各自领域的一些独特要素去实施。