参考书目:《软件项目管理》
出版社:清华大学出版社
编著:任永昌
目录
第一章 软件项目管理概述
·项目【定义】是一个特殊的将被完成的有限任务,它是在一定时间内,满足一些列特定目标的多项相关工作的总称。【含义】项目是一项有待完成的任务,且有特定的环境与要求;在一定的组织机构内部,利用有限的资源,在规定的时间内完成任务;任务要满足一定性能、质量、数量、技术指标等要求。【特征】一次性、目标明确性、整体性、后果不确定性、资源消耗性。【属性】唯一性、组织的临时性和开放性、相互依赖性、多目标属性。
·项目范围管理的三重约束:资源、时间、质量丨·项目的三重约束:时间、费用、性能。
·软件开发项目生命周期:需求分析、概要设计、详细设计、编码、测试、维护丨·项目生命周期:启动阶段(可行性研究、需求分析)、计划阶段(定义范围、安排进度、估算成本、创建WBS、建立基线)、实施阶段(进度控制、成本控制、质量控制、变更控制)、结束阶段(范围确认、项目验收、成果交付、费用清算)。
·检查点是在规定的时间间隔内对项目进行检查,比较实际与计划之间的差异,并根据差异进行调整,常见的间隔是每周一次丨·里程碑是完成阶段性工作的标志,通常是一些重要活动完工、重要文档交付、阶段评审通过等丨·基线指一个或一组配置项在项目生命周期的不同时间点上通过正式评审而进入受控的一种状态,基线是一些重要的里程碑,但相关交付物要通过正式评审并作为后续工作的基准和出发点,基线一旦建立后,任何改变都需要受到控制。
·管理就是在一定的环境下,为达到组织目标,对组织支配的资源进行有效的计划、组织、领导和控制的社会活动过程。【意义】管理是社会及其经济组织分工协作、共同劳动、共同运作的客观需要;管理是现代社会发展现代化大经济的客观要求;管理是保障人类社会生产力、发展生产力的必然要求和组织保障。
·管理者应具备的【知识结构】经济理论、经营管理知识、法律知识、人文科学知识、自然科学知识。【技能】技术技能、人际技能、概念技能。
·项目管理PM(统筹法、优选法)【定义】就是为了满足甚至超越项目涉及人员对项目的需求和期望,而将理论知识、技能、工具和技巧应用到项目的活动中去。【最终目标】满足或超越项目涉及人员的需求和期望。【重要目标】在时间、成本、范围、质量之间寻求平衡。【核心问题】就是对质量、进度、费用的折中控制,在有限的时间、空间、预算范围内,将人力、物力组织在一起,有条不紊地实现项目目标。【过程】启动过程(可研)、计划过程(制定计划)、执行过程(协调资源,完成计划)、控制过程(监督进展,采取措施)、结束过程(验收)。【特点】综合性、创造性、时间性。【要素】范围、时间、成本、质量、组织。
·两大项目管理研究体系:国际项目管理协会(IPMA)、美国项目管理协会(PMI)。
·软件项目管理:【难的原因】智力密集、可见性差;单件生产;劳动密集、自动化程度低;使用方法繁琐、维护困难;软件工作渗透了人的因素。【内容】人员组织与管理、软件度量、软件项目计划、风险管理、软件质量保证、软件过程能力评估、软件配置管理等。【原则】计划原则、Brooks原则、80-20原则(20%的工作耗费了80%的时间、20%的人员担当了80%的项目工作)、默认无效原则、帕金森原则、时间分配原则、验收标准原则、变化原则、软件过程标准原则、复用和组织变革原则。
·项目管理工具:CA-SuperProject(支持大型项目,包含一个资源平衡算法,缺点是用户界面不如其他一些程序友好)、Microsoft Project(用户可以在应用文件之间轻易地来回移动信息资料,缺点是关键路径处理,用户不太容易查看)、Project Scheduler(具备传统项目管理工具的所有特征,图形界面设计完好,报表功能强大,制图方面也较好。缺点是联机帮助和文件编制以及电子邮件功能有限)、Sure Trak Project Manager(是一个高度视觉导向的程序,具有优异的放缩、压缩及拖入功能,缺点是联机帮助及文件编制功能有限)、Time Line(对初学者来说使用时略微有些困难,但它的报表功能以及与SQL数据库的连接功能都很突出)。【选择标准】容量、文件编制和联机帮助功能、操作简易性、可利用的功能、与其他系统的兼容能力、安装要求、报表功能、安全性能、经销商的支持。
·工作分解结构WBS【定义】是一种层次化的树状结构,是将项目按一定的方法划分为可以管理的单元,通过控制这些单元的费用、进度和质量目标,使他们之间的关系协调一致,从而控制项目目标。【作用】将项目划分为方便管理的较小单元,有助于更好地理解和控制项目细节;界定项目的工作范围;把项目要做的所有工作都清楚地展示出来,不至于漏掉任何重要的工作;容易对每项分解出的活动估计所需时间、所需成本,便于制定完善的进度、成本预算等项目计划;通过工作分解,可以确定完成项目所需要的技术、人力及其他资源;便于将任务落实到责任部门和个人,有利于界定职责和权限;项目团队成员更清楚地理解任务的性质及其努力方向;能够对项目进行有效的跟踪、控制和反馈;可按需要对项目进行详细分析,有利于各个不同级别的基层单位向上一级管理部门汇总或汇报工作。【建立原则】可操作性原则(将工作分解到一个团队或一个人能够操作执行的程度)、百分之百原则、充分必要原则(凡是为实现软件产品功能的工作一个也不能少,凡不是为实现软件产品功能的工作一项也不能有)。【建立方法】模板法(类似项目)、自上而下法(常规方法)、自下而上法(开始就确定具体任务,然后整合。效果较好,可以促进团队协作,却很费时间)。
第二章 软件开发过程管理
·软件生命周期:从设计软件产品开始到软件产品不能再使用为止的时间周期。【阶段】需求阶段、设计阶段、实现阶段、测试阶段、安装和验收阶段、运行和维护阶段、引退阶段。【活动】可行性研究、开发计划、需求分析、概要设计、详细设计、代码编写、软件测试和软件维护。
·软件过程:软件过程是指软件生命周期中的一系列相关过程,是将用户需求转化为可执行系统的演化过程所进行的软件工程的全部活动,是用于生产软件产品的工具、方法和实践的集合。【必要性】提高效率、质量;实现预期效益;做出正确决策;提高可重用性和组间协作;改善对软件的维护;可以不断采用新的更好的开发经验。【过程】工程过程ENG(核心)、支持过程SUP、管理过程MAN(关键)、组织过程ORG(基础)、客户 - 供应商过程CUS。
·软件开发过程:【活动】需求分析、设计、编码、集成、测试、安装和验收等活动。【子过程】可行性研究、需求分析、设计、编码、测试。【阶段】开发计划和可行性研究阶段(回答“做什么?如何做?可不可能完成?”等问题,输出《可行性研究报告》和《项目开发计划》)、需求分析阶段(需求获取、需求分析、编写《系统需求规格说明书》和需求评审)、软件设计阶段(进行概要设计和详细设计)、编写代码阶段(把所设计的软件功能翻译成程序,并测试程序的正确性)、软件测试阶段(单元测试(开发者):检验模块内部的结构和功能;集成测试(开发者):把模块连接成系统,重点测试模块间的接口;确认测试(开发者和用户):对需求分析的软件功能和性能进行测试,确认是否达到要求;系统测试(开发者和用户):测试软件系统在真实系统环境中的运行情况;软件测试分为静态测试法和动态测试法,而动态测试法又分为白盒测试和黑盒测试)。
·瀑布模型:从时间角度对软件开发和维护的复杂问题进行分解。【模型】从上至下可行性研究、需求分析、软件设计、软件编码、软件测试、运行与维护。【理论模型含义】必须等前一阶段工作完成之后才能开始后一阶段工作;前一阶段的输出文档是后一阶段的输入文档,只有当前一阶段的输出文档正确,后一阶段的工作才能获得正确的结果。【理论与实际的区别】理论的瀑布模型过于理想化,因此实际的瀑布模型带有“反馈环”。【优点】定义清楚,应用广泛;强迫开发人员采用规范化的方法;严格规定每个阶段提交的文档;易于建模和理解;便于计划和管理;有支持生命周期模型的多种工具。【缺点】必须在开始时明确需求;不便于频繁变更;在项目接近完成之前,产品不能投入使用;可运行的软件交付给用户之前,用户只能通过文档来了解产品。【适用情况】待开发项目与以前的成功项目类似;需求稳定且明确;使用的技术经过验证并且成熟;开发周期长;用户不需要任何阶段性产品。
·V模型:每个阶段都有与之对应的测试(需求分析↔验收测试、概要设计↔系统测试、详细设计↔集成测试、软件编码↔单元测试)。【水平和垂直关联】从水平关系可以看出,V模型能使质量保证活动和项目同时展开。项目一旦启动,软件测试工作也就启动了,避免了瀑布模型所带来的误区——软件测试只能在编码完成之后进行。从垂直方向看,越在下面,白盒测试方法使用越多,到了集成测试、系统测试,更多是将白盒测试方法与黑盒测试方法结合起来使用,形成灰盒测试方法。而在验收测试过程中,用户一般要参与,所以使用黑盒测试方法。
·原型模型:【过程】制定规划、定义需求、开发原型、识别问题、修改原型、进行更详细的设计、系统运行与维护。【支撑环境】方便灵活的关系数据库系统、完整的程序生成软件、与数据库对应的方便灵活的数据字典、可以快速抽象或者容易提炼的原型。
·增量开发必须注意的问题:良好的可扩展性架构设计;定义良好的接口;与完整系统相比,增量方式正式评审更难于实现,所以必须定义可行的过程;要避免把难题往后推,首先完成的应该是高风险和重要的部分;客户必须认识到总体成本不会更低;分析阶段采用总体目标而不是完整的需求定义,可能不适应管理;需要良好的计划和设计,管理必须注意动态分配工作,技术人员必须注意相关因素的变化。
·软件开发过程模型选择:【为什么大多数项目都采用瀑布模型】软件开发单位的软件工程工作尚处于初级阶段,软件开发人员和管理人员既缺乏经验,又无历史数据可供借鉴,因此,需要一种简单易行的组织方式;结构化方法学是系统工程中最成熟的方法学,目前大多数软件开发都以结构化开发方法学为基础。在与结构化方法学相适应的软件开发过程模型中,瀑布模型最为简单实用,行之有效;有关软件开发的现行国家标准和国家军用标准都是以瀑布模型为基础制定的。【原则】开发过程模型应与软件项目的特点、开发技术相适应、应满足整个应用系统的开发进度要求、应有助于控制和消除软件开发风险、应有可用的计算机辅助工具的支持、应与用户和软件开发人员的知识和技能水平相适应、应有利于软件开发的管理和控制。
·传统开发过程存在的问题:管理方面,忽视软件过程管理、计划过程粗略,执行控制不力、缺乏需求基准、缺乏成本控制体系和过程、质量保证过程薄弱;技术方面,需求分析、软件设计、代码编写、测试。
·实施软件开发过程管理:管理方面,加强对技术过程的管理控制、完善的计划过程,严格的执行控制、建立需求基准和项目范围基准、基于WBS的成本控制体系,基于进度的成本控制过程、质量保证过程贯穿项目始终;技术方面,需求分析阶段、软件设计阶段、编码阶段、测试阶段。
END.