第1讲,软件项目管理基础

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第一讲软件项目管理基础1.1软件项目管理的基本概念1.1.1项目与软件项目1.1.2项目管理和项目经理1.1.3项目干系人1.1.4项目管理组织1.1.1项目与软件项目项目(Project)是为提供某项独特产品、服务或成果所做的临时性努力。项目是在特定条件下,具有特定目标的一次性任务,是在一定时间内,满足一系列特定目标的多项相关工作的总称。软件项目要求在有限的资源条件下,在尽可能短的时间期限内,为客户提供技术创新性强、个性化程度高的软件产品、服务和成果。由于行业特殊性,软件项目除具有一般项目的公共属性之外,在很多方面表现出其特殊性。项目的定义包含三层含义第一,项目是一项有待完成的任务,且有特定的环境与要求;第二,在一定的组织机构内,利用有限资源(人力、物力、财力等)在规定的时间内完成任务;第三,任务要满足一定性能、质量、数量、技术指标等要求。软件项目的例子某省财政部门办公系统的研发;某市政府公文交换系统的研发;某大型纺织企业ERP系统项目;某软件企业的CMM5认证;某政府部门的政务网站建设项目的基本属性独特性。软件项目所完成的都是以前没有执行过的工作,因而是独特的。临时性。由于项目的一次性,项目团队一般也是临时性的。开放性。项目组织是开放性的,没有严格的边界。⑷渐进性。软件项目的项目范围和项目目标总是随着项目的进展渐进明晰的。⑸目标确定性。项目必定有确定的明确的目标,没有明确的目标,行动就没有方向,也就不成其为一项任务,也就不会有项目的存在。⑹成果的不可挽回性。在项目的特定条件下,个人和组织的资源有限,一旦失败就永远失去了重新实施原项目的机会。软件项目的特殊性知识密集型、技术含量高涉及多个专业领域、多种技术综合交叉项目范围易变化行业新颖、人员年轻、流动性强投资大、风险大、收益大软件项目的特殊性不可预见成分高高度的时效性目标的柔韧性客户化程度高过程管理的重要性1.1.2项目管理和项目经理项目管理(ProjectManagement)就是将各种知识、技能、工具和技术应用于项目之中,以达到项目的要求。项目管理是通过启动、规划、实施、监控与收尾等管理过程进行的。项目经理是负责实现项目目标的责任人,项目经理受软件项目实施组织的法定代表人或研管主管委托对软件项目全面负责。项目管理工作内容识别需求;确定清晰而又能够实现的目标;权衡范围、时间、成本、风险和质量方面所提出的互不相让的要求;最大限度地满足项目干系人的不同需求与期望。与传统部门管理的比较项目管理的对象是项目或被当作项目来处理的事务。项目管理的全过程都贯穿着系统工程的思想。项目管理的组织具有特殊性。项目管理的方式是目标管理。项目管理的体制是一种基于团队管理的个人负责制。项目管理的要点是创造和保持一种使项目顺利进行的环境。项目管理的方法、工具和手段具有先进性、开放性。合格的软件项目经理需要学历、职称、所学及所从事的专业、软件技术开发及项目管理经验等基本条件;具备激情与创新,敬业、奋斗与牺牲精神,社交能力与沟通能力,组织能力与协调能力,激励能力与助人精神,团队精神与配合能力,自我控制及感情承受能力,提出解决方案与临机处置能力,办事效率高等多方面素质。项目经理的职责对主管领导负责;对项目团队成员进行有效管理;对项目进行全方位(范围、进度、成本、质量等)管理;对项目进行全过程(系统分析、系统设计、系统实施等)管理。在管理、考核与培训方面,组织要建立严格的项目经理管理、考核与培训机制。没有有效的项目管理就不会有项目的成功,而没有合格的项目经理就不会有有效的项目管理。项目经理的权利人员安排及奖罚权;项目经费管理权;相关资源调配权。1.1.3项目干系人项目干系人(Stakeholder)是指积极参与项目、或其利益因项目的实施或完成而受到积极或消极影响的个人和组织,他们还会对项目的目标及结果施加影响。主要的项目干系人●项目经理——负责管理项目的个人。●客户和用户——使用项目产品的个人或组织。●项目实施组织——是指其员工最直接参与项目工作的企业或非企业组织。●项目团队成员——执行项目工作的群体。●项目投资人——以现金或实物形式为项目提供财务资源的个人或团体。●施加影响者——不直接购买或使用项目产品、但其在客户组织内的地位可能会正面或负面影响项目进程的团体或个人,如行业主管部门、行业协会等。●项目管理办公室(PMO)——如果项目实施组织内设有项目管理办公室的话,则其直接或间接地对项目结果负有责任。通常,解决项目干系人之间的不同意见应该以服从客户的需求为主。但是,这并不等于可以不考虑其它项目干系人的需求和期望。在分歧意见中找到恰当的解决办法是项目管理所面临的一项重要挑战。1.1.4项目管理组织组织是一切管理活动取得成功的基础,项目管理作为一种新型的管理方式,其组织结构与传统的组织观念有相同之处,但是由于项目本身的特性,决定了项目实施过程中其组织管理又有特殊之处。项目管理与传统组织管理的最大区别之处在于项目管理更强调项目负责人的作用和团队的协作精神,其组织形式具有更大的灵活性和柔性。一般软件项目的组织结构包括有职能型、项目型和矩阵型等几种形式。职能型组织项目型组织弱矩阵型组织平衡矩阵型组织强矩阵型组织复合型组织组织机构对项目的影响1.2软件项目生命周期1.2.1典型的软件项目周期模型1.2.2软件项目阶段的特征1.2.1典型的软件项目周期模型软件项目的类型、规模与复杂程度决定了软件项目的周期模型。典型的软件项目周期模型包括瀑布模型(waterfallmodel)、快速原型模型(rapidprototypemodel)、演化模型(evolutionarymodel)、增量模型(incrementalmodel)、螺旋模型(spiralmodel)和喷泉模型(waterfountainmodel)等。瀑布模型瀑布模型严格遵循软件生命周期各阶段的固定顺序:计划、分析、设计、编程、测试和维护,上一阶段完成后才能进入到下一阶段,整个模型就像一个飞流而下的瀑布。计划需求分析设计编码测试运行维护开发阶段定义阶段维护阶段瀑布模型的优缺点可强迫开发人员采用规范的方法;严格规定了各阶段必须提交的文档;要求每个阶段结束后,都要进行严格的评审。但瀑布模型过于理想化,而且缺乏灵活性,无法在开发过程中逐渐明确用户难以确切表达或一时难以想到的需求,直到软件开发完成之后才发现与用户需求有很大距离,此时必须付出高额的代价才能纠正这一偏差。快速原型模型快速原型是指快速建立起来的可以在计算机上运行的程序,它所完成的功能往往是最终软件产品功能的一个子集。快速原型模型的第一步是快速建立一个能反映用户主要需求的软件原型,让用户在计算机上使用它,通过实际操作了解目标系统的概貌。开发人员按照用户提出的意见快速地修改原型系统,然后再次请用户试用……,一旦用户认为这个原型系统确实能够满足他们的需求,开发人员便可据此书写软件需求说明,并根据这份文档开发出可以满足用户真实需求的软件产品。快速原型模型原型化方法基于这样一种客观事实:并非所有的需求在系统开发之前都能准确地说明和定义。因此,它不追求也不可能要求对需求的严格定义,而是采用了动态定义需求的方法。具有广泛技能高水平的原型化人员是原型实施的重要保证。原型化人员应该是具有经验与才干、训练有素的专业人员。衡量原型化人员能力的重要标准是他是否能够从用户的模糊描述中快速获取实际的需求。演化模型演化模型也是一种原型化开发方法,但与快速原型模型略有不同。在快速原型模型中,原型的用途是获知用户的真正需求,一旦需求确定了,原型即被抛弃。而演化模型的开发过程,则是从初始模型逐步演化为最终软件产品的渐进过程。也就是说,快速原型模型是一种“抛弃式”的原型化方法,而演化模型则是一种“渐进式”的原型化方法。增量模型增量模型是第三种原型化开发方法,但它既非“抛弃式”的,也非“渐进式”的,而是“递增式”的。增量模型,把软件产品划分为一系列的增量构件,分别进行设计、编程、集成和测试。每个构件由多个相互作用的模块构成,并且能够完成特定的功能。如何将一个完整软件产品分解成增量构件,因软件产品特点和开发人员的习惯而异,但使用增量模型的软件体系结构必须是开放的,加入新构件的过程必须简单方便,新的增量构件不得破坏已经开发出来的产品。系统/信息工程分析第1个增量的发布设计编码测试分析第2个增量的发布设计编码测试分析第n个增量的发布设计编码测试增量1增量2增量n……螺旋模型螺旋模型综合了瀑布模型和演化模型的优点,还增加了风险分析。螺旋模型包含了四个方面的活动:制订计划、风险分析、实施工程、客户评估。这四项活动恰好可以放在一个直角坐标系的四个象限,而开发过程恰好像一条螺旋线。采用螺旋模型时,软件开发沿着螺旋线自内向外旋转,每转一圈都要对风险进行识别和分析,并采取相应的对策。螺旋线第一圈的开始点可能是一个概念项目。从第二圈开始,一个新产品开发项目开始了,新产品的演化沿着螺旋线进行若干次迭代,一直运转到软件生命期结束。原型1风险分析原型3可运行原型风险分析风险分析软件需求需求确认开发计划需求计划生存期计划设计确认与验证软件产品设计详细设计原型2编码单元测试组装与测试验收测试实现提交线评审制订计划决定目标、方案和限制风险分析评价方案、识别风险、消除风险实施工程开发、验证下一产品客户评估组装与测试一个四次循环的例子方案论证循环——明确客户需求,确定方案论证的目标,提出系统方案设计和逻辑设计,方案论证,编制系统验收计划,进行风险分析,提出建议。第一轮编程循环——明确系统要求,确定第一轮编程循环的目标,完成逻辑系统设计,设计和编写第一轮程序,编制系统测试的计划,评估第一轮程序,并提出建议。第二轮编程循环——明确子系统要求,确定第二论编程循环的目标,完成结构设计,编写第二轮程序,编制子系统测试计划,评估第二轮程序,并提出建议。最后的循环——明确完成单元要求,完成最终的设计,编写最后的程序,并进行单元、子系统、系统测试和系统验收。1.2.2软件项目阶段的特征软件项目阶段的结束通常以对关键可交付成果和迄今为止的项目实施情况的审查作为其标志,其目的是:确定项目是否应当继续实施,并进入下一阶段;以最低成本最有效地发现和纠正错误与偏差。每个项目阶段都以一个或数个可交付成果的完成作为其标志。可交付成果是某种有形的、可验证的工作成果,如可行性研究报告、系统分析文档、工作原型、概要设计文档、详细设计文档、源程序、目标程序或测试报告等。软件项目阶段的审查结论已完成该项目阶段的工作目标,正常结束该项目阶段;尚未完成该项目阶段的工作目标,需要进一步的努力;项目持续下去风险太大,立即终止该项目。此外,软件项目生命周期和软件产品生命周期需要注意区分。软件产品特别是大型、复杂的软件产品和用户定制的非通用性软件产品,不能将软件产品交付作为软件项目生命周期结束的标志。实际上,在软件交付使用之后往往伴随着大量的软件维护工作。期的软件工程教科书中,并未严格区分软件项目生命周期和软件产品生命周期的概念,而是统称“软件生命周期”。有的软件生命周期包含了运行与维护阶段,另外一些则以测试或试运行作为软件生命周期的最后一个阶段。1.3软件项目管理过程1.3.1软件项目的过程和过程管理1.3.2项目管理过程组1.3.3项目管理过程组之间的相互关系和作用1.3.1软件项目的过程和过程管理过程(Process)是一组为了完成一系列事先指定的产品、服务或成果而需执行的互相联系的行动和活动。简单地说,过程就是我们完成某类工作的一种固有的方式。对于做一件事,有过经验的人对完成这件事的过程会很了解,他会知道完成这件事需要经历几个步骤,每个步骤都完成什么事,需要什么样的资源、什么样的技术等,因而可以顺利地完成工作;没有经验的人对过程不了解,就会有无从下手的感觉。关注开发的结果关注开发的过程过程管理和项目管理的基本关系过程管理的成果(即软件过程)可以在项目管理中辅助于项目管理的工作,在项目的计划阶段,计划项目的最佳参考是过去的类似项目中的实践经验,这些内容通过过程管理都成为过程管理的工作成果,这些成果对于一个项目的

1 / 58
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功