资源描述
太原理工大学工程硕士课程试卷(论文) 课程 软件项目管理 软件开发团队建设研究 姓 名: 焦 虹 学 号:E200701102007年 9月 10 日软件开发团队建设研究【中文摘要】目前一些软件开发团队,特别是中小型团队,由于在低成本模式下运行,加之对软件过程管理的不规范,在团队建设上只重视代码开发,不重视设计;只重视编程技术,不重视需求分析;只重视开发过程,不重视测试过程;只重视任务,不重视风险,这些问题是许多软件公司不能很好的以高效率模式开发出稳定可靠的软件产品的重要原因。软件产品的开发理念,技术路线确定以后,团队组织以及过程建设就成为软件项目的核心工作内容。本文从建设团队的重要性、建设团队的核心内容以及如何建设团队等方面探讨了软件开发团队的建设。这些问题是建设一个有战斗力团队的基本问题,研究这些问题,就是确保团队具有共同的目标,有效的沟通,合作的氛围,坚强的领导和胜任的成员,从而形成一个高效,充满活力的团队。【关键词】团队协作 沟通 项目管理【Abstract】At present,owing to running in low cost pattern and manging unstandardly,some software development team,especially middle-sized or smalle-sized ones,they attach importance to exploit of code,write program,develop process and test.However they despise of designing、analyzing of demand,process of test and risking.All of these problems bring about unstable and unreliable software products.After definiting the ideal of software products and technicial route,team organization and process construction will become the core of software project.This thesis explores construction of software development team for the significance,core content and construction method of team.These issues are very important for how to construct an effective team.Discussing these problems is to ensure the team have common target,efficacious communication,cooperative ambience,firm leader and competent members.Thereby the team will become high efficiency and energy.【Key Words】team cooperation,communication,project management软件项目管理的主体是软件开发团队。软件工程的过程和软件设计的模块化、分层结构导致了软件开发团队中成员分工的不同,这就要求成员间要有很高的协作性、团结性。软件项目管理的好坏,很大程度就体现在软件开发团队的建设和管理上。高效的软件开发团队是软件项目实施的基础,是高质量软件项目或产品的保证,它直接影响和制约着软件项目管理的最终效果。一、软件开发团队建设在软件开发中的重要性团队建设非常重要,它是项目顺利进行的基础,对于一个球队来说,要大力培养他们的团队精神,要求队员深刻认识自己球队的特点,团队精神能使球队更具有竞争力,可以打败实力相同而没有团队精神的球队。同理,对于软件项目团队也一样,在开发复杂软件的时候,通常每个人开发不同的部分,运行这些软件的设备又可能来自不同的供应商,而事后将软件的不同模块集成在一起,会带来更多的问题。一个软件模块本身没有问题,但是合在一起却可能不能工作。所有这些都需要一个高效合作的团队来共同完成,所以建立一只工作效率高的队伍非常重要,能够加强团队精神,建立畅通沟通,形成开放氛围,增强趋前控制。(一)团队精神增效作用团队力量集合众智。当人们以团队的形式工作时,要比以孤军奋战的形式来得更加富有成效。团队的协同工作比个人竞争更能激励人们。软件开发过程中必须消除个人主义,形成团队精神。所谓团队精神,就是在共同愿望的基础之上,为实现共同的目标,为发挥团队的集合力量,而相互合作、相互支援的精神状态。团队精神包括下述要点:一是自我激励。基于一种成功、成就、成长的意愿而自我激励、自我督促、自我提升。在工作中不仅仅是执行上级的命令,更重要的是积极地参与,起到决策与辅助决策的作用。二是换位思考。站在其他项目组成员和项目管理者的立场上思考问题,避免产生误解,创造和谐互动的作业氛围。熟悉团队内其他成员的工作,保证工作协调顺利进行,避免因为自己的作业质量或者作业进度影响到团队的质量和作业效率。三是合作推断。决定团队作业效率的关键因素可能不是团队成员的能力,而是精诚合作的态度。假设别人会积极主动地进行合作为前提,以此来决定自己应该采取的行动,即以合作和开放的心态来回应别人的行为,以此形成一个“善的循环”。四是力量整合。团队存在的意义在于团队的整合力量远远大于每个成员的单独力量,能得到一种相乘效果,即超越个人力量之和。项目组成员的角色就在于,从团队整合力量的角度出发来整合众人的力量。五是责任驱动。团队意味着共同承担最终责任,因此项目开发流程的终断、项目进度的迟缓、项目问题的浮现、项目质量的脆弱等与团队每位成员紧密联系。在项目责任面前,每人肩上都有份量,因此必须彻底消除“与己无关”的思想。六是伙伴关系。软件开发团队成员之间需要基于共同成功的目标而相互支持和协作。具体而言,每位成员在工作中要积极地参与项目的各种活动;团队成员应比较熟悉团队内其他人员的工作,以保证工作的协调进行;在其他成员需要的时候,主动提供技术支持。 (二)畅通沟通打破屏障沟通是人员、观点和信息之间的关键链接。软件开发是一门艺术,沟通在其中占有很大比重,如报告、联络、商量、讨论、确认、会议、反馈、提案等。对于成功,最大的威胁莫过于糟糕的沟通,而阻碍沟通的主要因素有:(1)管理问题:信息不足、信息过多、时间选择不当、只听自己希望的消息。这就需要根据问题制定沟通计划,明确沟通规则、途径、手段、方法、报告标准等。(2)团队问题:开放性不足、信任欠缺、解释差异、偏见、词汇、文化差异、知识水平差异。这就需要进行组织结构和企业文化的重塑。(3)项目组成员个人特性问题:先入为主、个人认识与个人特质、妒忌等。沟通的瓶颈多发生在“预设立场”或者“先入为主”的主观假设上,要克服这一点可以采用“同理心态沟通”模式。一般情况下的沟通是带着“提供建议或意见”的意图来沟通,同理心态沟通是带着“了解对方”的意图来沟通,前者以“说服”为主,后者以“倾听”为主,能更加清楚地了解对方的立场、感受和想法,进而综合对方的观点来诊断问题。这就需要提高自身的思维水平和个人涵养。在沟通问题上,下列做法可资借鉴:第一,肯定个人尊严。人类本质中最殷切的需求就是渴望被肯定。肯定、尊重、信任每一位成员,对每位成员保持不变的尊重,使每位成员畅所欲言,表达真实的声音,提出中肯的意见和建议。第二,“我建议”。即以书面形式对软件项目提出意见和建议,积极参与到项目管理中来。“我建议”代表着一种主人公心态,代表着为项目出谋划策的积极意向,代表着致力于更佳改善的作为。第三,经理座谈会。定期召开座谈会,能使大部分问题即时解决,并在规定期限内对有关问题的处理结果予以反馈。 (三)开放氛围构筑信任第五代管理的作者查尔斯M萨维奇认为,怀疑和不信任是任何一个公司真正的成本之源。日裔美国学者弗朗西斯福山(Francis Fukuyama)在其著作信任:社会美德与创造经济繁荣(Trust:The Social Virtues and the Creation of Prosperity)中指出:“效能最高的组织却是那些享有共通伦理价值观的社团,先天的道德共识已经赋予社团成员相互信任的基础”。软件开发亦是如此:基于信任,即各成员之间彼此诚实、彼此合作。一个明显的结果是“交易成本”的下降,一方面是总成本的下降,另一方面是成员间由于普遍相互信任,富有活力。信任是畅游于团队作业中的弥合线,将团队成员紧密地联系在一起,使所有成员都随着这条神经线产生共振和共感。团队作业中构筑信任的基本要点包括:(1)避免只有自上而下的命令式单向正式链条,因为这会滞息团队的生机,还要重视自下而上的流动;(2)避免对项目组成员采取一种怀疑和不信任态度,怀疑以及由此引起的信息封锁是项目真正的成本之源,而信任关系和授权是项目组的精神动力;(3)避免项目管理者与项目组成员之间的职沟,因为当项目经理在日常工作中已经显示出级别意识的时候,项目组中的普通成员将与之渐行渐远;(4)避免破坏培养信任的因素,如沟通、支持、尊重、公平、可预见性和胜任工作等因素,因为构筑、维持和增进信任的最好办法就是从不破坏它,始终避免出现破坏信任的每一种可能。 (四)趋前控制预防胜于治疗趋前控制可以简单定义为:与其从后续作业开始实施控制,不如从前期作业开始控制;后续作业的质量依赖于前期作业的质量;后续作业的高质量必须以前期作业的高质量为条件,但前期作业的高质量并不必然带来后续作业的高质量;控制时机越趋向作业源头,作业质量的可靠性越大,否则作业质量的可靠性越小。具体而言,软件开发过程中,与其在测试阶段加大力度,不如在编码阶段避免植入缺陷;与其在编码阶段避免缺陷,不如在设计阶段提高质量;与其在设计阶段试错返工,不如在式样理解阶段明确顾客需求。所以,审查前的审查项目确定、测试前的缺陷纠正、编码前的设计内容、作业实施前的计划、计划制定前的规模估算、规模估算前的式样理解、式样理解前的项目洽谈等等,都可纳入趋前控制的范围。从“紧急对策”到“防止再发”再到“未然预防”,管理控制的理念在逐渐发生演变。事后控制不如事中控制,事中控制不如事前控制。对作业流程的某一阶段而言,趋前控制专注于“预防”而无需进入“治疗”这一阶段。预防问题发生最值得关注。项目开发问题的预防者,就是项目问题的最佳的解决者。团队是项目成功的基石。高效的开发团队可以有效地将团队成员的各种工作结果加以整合,保证开发项目能够按时完成,避免无谓的重复开发或造成浪费的无效益功能的开发,大大提高所开发的软件质量等等。二、软件开发团队建设的内容有效的软件项目团队是由担当各种角色的人员所组成。每位成员扮演一个或多个角色。其中一个人专门负责项目管理,而另一些人则积极地参与系统的设计与实现。常见的一些项目角色包括:项目经理,系统设计师,程序员,测试人员,用户教育培训人员。项目经理对整个项目的成败负责,需要关注项目的进度,与客户进行交流,理解客户需求。项目经理更多的是作为用户和开发人员之间沟通的桥梁。因此对项目经理,不仅要求在技术上能够解决项目中发生的各种问题,而且能够预测到项目的各种潜在风险,并规避风险。更重要的是作为产品的代言人,项目经理能向潜在客户清楚地阐述产品的用途、特色和性能,同时也能清晰地理解客户的需求描述,并和客户在需求问题上达成一致或折中。系统设计师和程序员共同对整个产品的架构、设计负责,确认开发语言,制定开发规范,预先架构潜在问题,解决开发中遇到的技术问题和测试问题。程序员分为主力程序员和一般程序员。主力程序员承担更多的责任,协助系统设计师的设计工作,并且具体指导一般程序员的开发工作。主力程序员一般由有多年项目经验的程序员担任。测试人员负责产品的测试工作,从方案设计就开始参与并撰写测试计划,测试人员分为不同的类型:能写测试代码的,完全不懂计算机只做用户测试的。其测试的侧重点各不相同。用户教育培训人员撰写用户使用文挡,产品说明书等,用户教育培训人员是一个项目很容易被忽视的角色,但事实中,在一个大项目中,他们的作用非常重要。将开发团队划分为不同的角色,目的就是要各个成员各司其职,相互倚重,共享前景。一个团队如果没有明确的职责分工,没有项目规划,没有分工协作,只会使事情乱做一团,遇到问题,人人推委,最终导致团队信誉下降。(一)激发项目成员的工作积极性和工作热情开发团队要保持工作的高效性,首要解决的问题是如何保持整个团队的精神状态和整体活力,如何去激发项目中每个成员的工作积极性和工作热情。一要重视个人技能的提升。在项目运作过程中,应该让每个项目成员感觉到自我技能的提升,其前提是项目成员有技能的提升愿望和学习热情。如果项目成员长期都是按部就班进行着重复的工作,那工作积极性和热情就很难持续。在项目进行过程中应该給每位项目成员承担项目挑战性工作的机会,应该充分信任项目成员的能力,让项目成员体会到完成挑战后的成就感和个人能力的提高。在一个项目中由于项目所使用的相关平台和技术都已经确定,对于优秀的项目成员应该更多的激发他们探索新知识和新技术的热情,为项目后期的技术规划,为公司的平台建设等方面夯实基础。二要加强表扬和鼓励。项目经理不时的通过各种方式表扬和鼓励项目成员,是对成员工作的最大肯定,也是对项目成员的激励。在项目中,经常用到的表扬方式主要有:通过邮件或电话等各种沟通方式对成员进行肯定,表扬和鼓励;通过项目例会对项目中表现突出的优秀人员进行表扬;通过项目聚会和活动等方式对整个团队完成工作进行祝贺和鼓舞。表扬和批评两者并不矛盾。项目成员连续犯错误时应该给予批评,一般可以采用单独沟通或邮件的方式进行;整个项目组也应该定期展开成员的自我批评,让项目成员感受到自己的不足和有待提高的地方。三要关注每个项目成员的职业发展。项目经理应该关注每个项目成员的职业发展和职业规划。对于项目成员自我的职业发展,项目经理可以给出一些建议,但更多的是应该尊重项目成员的想法,并为项目成员制定一些合乎实际的学习和成长路线。最好的情况是能够将项目成员的工作任务和自我的职业成长有机的结合起来,让每位项目成员都有一个很好的实现自己目标的远景。(二)发挥项目经理的核心作用项目经理是开发团队的沟通者,领导者,决策者,气氛创造者;是项目组织的核心和项目团队的灵魂,对项目进行全面的管理。他的管理能力、经验水平、知识结构、个人魅力都对项目的成败起着关键的作用。勇于承担责任。一个项目没有不好的项目成员,只有不好的项目经理,项目经理要从自身的角度找原因,分析问题。因为很多问题的根源确实是项目经理某方面工作没有做好,导致了成员不能够很好的完成工作。这里强调的是项目经理不应盲目承担责任而不做后续的分析和改进。应该对问题做全面细致的分析,或制定相关规范,或与项目成员沟通,以保证不再发生类似问题。积极主动沟通。项目经理在项目中更多担任的是协调员工作,因此更需要定期主动的和项目成员进行沟通,了解每个项目成员的真实想法,以此对自己工作进行改进。项目中的每个角色对项目同等重要,因此项目中各岗位包括项目经理都没有主次之分。项目经理只有认识到这一点才可能做到与项目成员间真诚的沟通。 尊重个性。每个项目成员都有一些不同于他人的工作方式和工作技巧,在项目实际运行过程中只要这些个性不违背公司规定,项目经理就应该尽可能的尊重成员的个性。软件开发是一门艺术,是团队中每个项目成员都需要思考的艺术。项目成员在遵守公司规章制度的基础上,可以发挥自己的聪明才智,使用对自己来说最高效的工作模式去完成项目相关任务。项目授权。灵活的授权,一方面显示了软件开发经理对团队成员的信任,有利于充分发挥项目团队队员的积极性和创造性,使得团队成员在自己的授权范围内可根据内外部环境的变化及时决策。另一方面,通过灵活的授权,软件开发经理逐渐将工作重点转向关键点控制、目标控制和过程监控,工作重心由内转向外,侧重于处理软件项目与企业或社会之间的关系,从外部保障了软件开发团队的运作。为项目成员树立榜样。项目经理的榜样作用对项目成员的影响是至关重要的。项目经理的一言一行和各种习惯会给项目成员留下深刻印象,最终潜移默化影响每个项目成员各自的行为。因此这就給项目经理提出了更高的要求,要时刻关注自己的言行,为项目成员树立良好的榜样。 (三)加强团队交流一项统计数据表明,一个软件开发团队即使没有高深的技术背景,没有突出的项目管理能力,只要其内部交流通畅并以务实态度解决问题,一样可以开发出优秀的产品。软件开发团队的内部交流是非常重要的,是建设高效团队的重要保障。团队内部交流包括两方面:技术交流和思想交流。软件开发团队作为一个技术类团队,技术是团队的立足之本。团队成员的技术交流不仅可以增进团队成员之间的友谊,而且能够拓宽成员的技术视野,迅速提高成员的技术水平。团队技术交流的方式有多种:技术研讨会,主题讲座,技术培训,代码评审等。技术研讨会可以就一项技术细节或开发中遇到的问题进行集体探讨,最后形成集体决议,用于指导以后的开发工作。主题讲座的主要目的是拓宽技术视野,主题讲座可以内部进行,也可以外部请专家。技术培训主要是做一些基础性培训。代码评审是直接对某个程序员的代码进行公开评审,共同发现代码的问题。而团队充分的技术交流可使是成员得到最大限度的相互培训,共同提高技术水平。团队成员的思想交流要解决的另一个重要问题是:工作是为谁干的问题。员工往往有这样的意识:主管让干什么就干什么,至于能不能把产品作好,不关自己的事。这种思想对团队的危害很大。团队中的每一个成员一定要形成一种意识:工作不仅仅是为公司工作,也是为自己工作。只有当成员产生主人翁的意识时,才能主动地付出时间,精力,与此同时才能收获更多的经验、感悟、成长和经历。所以在建设开发团队时,通过思想交流,要注重培养团队成员对产品的“拥有感”和“努力工作是为自己成长”的意识。三、软件开发团队建设的方法与技术一个高效的软件开发团队是高质量软件项目或产品的保证。建设高效的软件开发团队,是实现软件项目管理目标的前提和保证。具体的建设措施有以下六点:1、选拔或培养适合角色职责的人才软件项目是由不同角色的人共同协作完成的,每种角色都必须有明确的职责定义,因此选拔和培养适合角色职责的人才是首要的因素。软件项目开发经理要熟悉各种设计方法,愿意听取其他人的意见,并且要客观地把自己的思想与其他人的意见相比。此外,还要掌握激发团队成员积极性的方法。系统分析员要熟悉需要的设计方法,掌握系统分析和设计的原则,具有完成职责所需的技能和丰富经验。选拔或培养适合角色职责的人才,特别是合适的软件开发经理是建设高效软件开发团队的最重要的因素。2、增强软件开发经理的领导才能软件开发经理是项目的负责人,负责整个软件项目的组织、计划及实施的全过程,在项目管理过程中起着关键作用。软件开发经理必须以身作则,严格要求自己,起到榜样和示范作用;要明确具体的软件项目质量、范围、工期、成本等目标约束;明确各软件开发团队成员的角色和责任分工,充分发挥团队成员各自的作用。在软件开发过程中,由于严格的目标约束及多变的外部环境,软件开发经理必须运用各种激励理论对软件开发团队的成员进行适时的激励,鼓励和激发团队成员的积极性、主动性,充分发挥团队成员的创造力。3、营造良好的沟通氛围和交流环境与IT项目成功有直接关系的三个主要因素分别为:用户的积极参与,明确的需求表达,管理层的大力支持。这三要素全部依赖于良好的沟通技巧。要营造良好的沟通氛围和交流环境,具体来说应该:一要加强团队成员之间的沟通。成员之间由于价值观、性格、处世方法等方面的差异会产生各种冲突,人际关系往往会陷入紧张的局面,甚至有可能出现敌视情绪以及向领导者挑战等各种情况。为此,软件开发理要进行充分沟通,引导团队成员调整心态和准确定位角色,把个人目标与项目目标结合起来。二要促使团队成员尽快熟悉工作环境。团队成员与周围环境之间也会产生不和谐,如对软件开发团队采用的信息技术不熟悉等。软件开发经理要帮助团队成员熟悉工作环境,帮助成员学习并掌握相关的技术,以利于软件项目目标的及时完成。三要加强软件开发团队与其他部门之间的沟通。在软件开发过程中,开发团队与其他部门也会产生各种各样的矛盾冲突,这需要软件开发经理与这些部门的管理者进行很好的沟通和协调,为软件开发团队争取更充足的资源与更好的环境。4、充分发挥软件开发团队的凝聚力团队凝聚力是无形的精神力量,是将一个团队的成员紧密地联系在一起的纽带。一般情况下,高团队凝聚力会带来高团队绩效。一要设置较高的目标承诺。团队凝聚力在外部表现为成员的团队荣誉感,而团队荣誉感主要来源于项目目标。因此,应当设立较高的项目目标,并使团队成员对项目目标形成统一和强烈的共识,激发成员的团队荣誉感。同时,引导团队成员个人目标与项目目标的统一,增强团队成员对项目团队的向心力,使项目团队走向高效。二要创建良好的人际关系。团队凝聚力在内部表现为团队成员间的融合度和团队士气,良好的人际关系是高效团队的润滑剂。因此,必须采取有效措施增强软件开发团队成员之间的融合度,让成员在短期内树立起团队意识,形成对团队的认同感和归属感,形成高昂的团队士气,提高团队的工作绩效。5、建立共同的工作框架、规范和纪律约束软件项目的开发是创造性的工作,必须有严格的开发纪律。建立共同的工作框架使团队成员知道如何达到目标,建立规范使各项工作有标准可以遵循,建立一定的纪律约束使计划正常执行。6、学习国外成功经验学习国外的一些成功开发过程、分析方法、设计思想、体系结构、设计模式等,如学习合理统一开发过程(RUP)的一些实践,可以归纳适合自己的合理开发过程;学习先进的系统分析和设计的思想,可以完成更高质量要求的软件项目;学习各种体系结构优缺点及适应情况,可以设计出满足系统需求的软件体系结构;学习国外成功的设计模式,可以使代码的编写满足更高质量的需求。参考文献关于软件开发团队的一些思考 搜狐网沈宏宇 软件开发组的团队精神苏康胜 如何营造高效率强凝聚力的软件开发团队 Scott W. Ambler 如何组织软件开发团队 Gary Pollice,Liz Augustine,Chris Lowe,Jas Maadhur,小型团队软件开发,中国电力出版社,2004年8月怀特黑德,领导软件开发团队,电子工业出版社,2002年5月9
展开阅读全文