第27章 项目实战前的几点忠告——项目规划
本章视频教学录像:28分钟
一个项目系统从无到有要经历策划、分析、开发、测试和维护等阶段,我们将这样的一个阶段过程称为项目的生命周期。本章介绍面对项目的开发,如何对项目进行规划。
本章要点(已掌握的在方框中打钩)
□ 了解项目的开发流程
□ 了解项目开发团队
□ 了解项目开发文档
□ 了解项目的实际运作过程
□ 了解如何满足客户需求
□ 了解如何控制项目进度及预算
27.1 项目开发流程
本节视频教学录像:11分钟
每一个项目的开发都不是一帆风顺的。为了避免软件开发过程中的混乱,也为了提高软件的质量,开发人员需要按照项目开发流程进行操作。一个项目的开发往往会被分成很多步骤来实现,每一个步骤都有自己的起点和终点。
项目开发的流程如图所示。
下面从项目的整体划分介绍在项目开发过程中各阶段的主要任务。
27.1.1 策划阶段
项目策划草案和风险管理策划往往作为一个项目开始的第1步。当接到一个项目后,应根据公司高层负责人所制定的初步商业计划书来完成项目的策划草案,并确定、分析项目的风险和项目风险的优先级,同时,还要制定出一套面对项目风险的解决方案。项目策划阶段的主要目的是确立产品开发的经济理由。
当确定项目开发规划之后,则需要制订项目开发计划、人员组织结构定义及配备、过程控制计划等。
1. 项目策划草案
项目策划草案应包括产品简介、产品目标及功能说明、开发所需的资源、开发时间等。
2. 风险管理计划
也就是把有可能出错或现在还不能确定的东西列出来,并制定出相应的解决方案。风险发现得越早对项目越有利。
3. 软件开发计划
软件开发计划的目的是收集控制项目时所需的所有信息,项目经理根据项目策划来安排资源需求,并根据时间表跟踪项目进度。项目团队成员则根据项目策划,以了解他们自己的工作任务、工作时间以及所要依赖的其他活动。
除此之外,软件开发计划还应该包括项目的应收标准及应收任务(包括确定需要制订的测试用例)。
4. 人员组织结构定义及配备
常见的人员组织结构有垂直方案、水平方案和混合方案等3种。垂直方案中的每个成员会充当多重角色,而水平方案中的每个成员会充当一至两个角色,混合方案则包括了经验丰富的人员与新手的相互融合。具体方案的选择应根据公司人员的实际技能情况进行调整安排。
5. 过程控制计划
过程控制计划的目的是收集项目计划正常执行所需的所有信息,用来指导项目进度的监控、计划的调整,以确保项目能按时完成。
27.1.2 需求分析阶段
需求分析是指理解用户的需求,就软件的功能与客户达成一致,估计软件风险和评估项目代价,最终形成开发计划的一个复杂过程。
需求分析阶段主要完成以下任务。
1. 需求获取
需求获取,是指开发人员与用户多次沟通并达成协议,以对项目要实现的功能进行的详细说明。
需求获取过程是进行需求分析过程的基础和前提,其目的在于产生正确的用户需求说明书,从而保证需求分析过程产生正确的软件需求规格说明书。需求获取工作做的不好,会导致需求的频繁变更,影响项目的开发周期,严重的可导致整个项目的失败。需求人员首先应制订访谈计划,准备提问单进行用户访谈,获取需求,并记录访谈内容,以形成用户需求说明书。
2. 需求分析
需求分析过程主要是对所获取的需求信息进行分析,及时排除错误和弥补不足,以确保需求文档能正确地反映用户的真实意图,最终将用户的需求转化成软件需求,形成软件需求规格说明书。针对软件需求规格说明书中的界面需求以及功能需求,制作界面原型。
所形成的界面原型,可以有3种表示方法:图纸(以书面形式)、位图(以图片形式)和可执行文件(交互式)。
在进行设计阶段之前,应当对开发人员进行培训,以使开发人员能更好地理解用户的业务流程和产品的需求。
27.1.3 开发阶段
软件开发阶段是指具体实现项目目标的一个阶段,分为以下两个阶段。
1. 软件概要设计
设计人员在软件需求规格说明书的指导下,需完成以下任务。
⑴通过软件需求规格说明书,对软件功能需求进行体系结构设计,确定软件结构及组成部分,编写《体系结构设计报告》。
⑵进行内部接口设计和数据结构设计,编写《数据库设计报告》(定稿)。
⑶编写《软件概要设计说明书》。
2. 软件详细设计
软件详细设计阶段的任务如下。
⑴通过《软件概要设计说明书》,了解软件结构。
⑵确定软件部件各组成单元,进行详细的模块接口设计。
⑶进行模块内部数据结构设计。
⑷进行模块内部算法设计(可采用流程图、伪代码等方式,详细描述每一步的具体加工要求及种种实现细节),编写《软件详细设计说明书》。
27.1.4 编码阶段
编码阶段的主要任务如下。
1. 编写代码
开发人员通过《软件详细设计说明书》,对软件结构及模块内部数据结构和算法进行代码编写,并保证编译通过。
2. 单元测试
编写代码完成后,开发人员可以对代码进行单元测试和集成测试,记录并解决软件中的问题。
27.1.5 系统测试阶段
进行系统测试的目的在于发现软件的问题,通过与系统定义的需求做比较,发现软件与系统定义不符合或与其矛盾的地方。
系统测试过程一般包括制订系统测试计划、测试方案设计、测试用例开发和测试执行等,最后要对测试活动和结果进行评估。
1. 测试的时间安排
测试中各阶段的实施时间如下。
⑴系统测试计划在项目计划阶段完成。
⑵测试方案设计、测试用例开发和项目开发活动同时开展。
⑶编码结束之后对软件进行系统测试。
⑷完成测试后要对整个测试活动和软件产品质量进行评估。
2. 测试注意事项
测试时应注意以下几个方面。
⑴系统测试人员根据《软件需求规格说明书》设计系统测试方案,编写《系统测试用例》,进行系统测试,反馈缺陷问题报告,完成系统测试报告。如需要进行相应的回归测试,则开展回归测试的相关活动。
⑵进行系统测试是反复迭代的过程,软件经过缺陷更正、功能改动、需求增加后,均需反复进行系统测试,包括专门针对软件版本的功能改动或对增加部分而撰写的文档等依次回归测试来验证修改后的系统或产品的功能是否符合规格说明。
⑶测试人员对问题做记录并通知开发组。
27.1.6 系统验收阶段
系统验收阶段是指从系统测试完毕到客户验收签字的阶段。在该阶段内,双方相互配合确认软件已达到合同的要求,并要求客户在《客户验收报告》上签字。
27.1.7 系统维护阶段
项目维护是指在已完成对项目的研制(分析、设计、编码和测试)工作并交付使用以后,对项目产品所开展的一些项目工程的活动。即根据软件运行的情况,对软件进行适当的修改,以适应新的要求,以及纠正运行中发现的错误等。同时,还需要编写软件问题报告和软件修改报告。
27.2 项目开发团队
本节视频教学录像:6分钟
应根据实际项目来组建项目团队,人员一般可控制在5~7人,尽量做到少而精。组建项目团队时首先需要定岗,就是确定项目需要完成什么目标,完成这些目标需要哪些职能岗位,然后选择合适的人员组成。
27.2.1 项目团队组成
主要角色介绍如下。
1. 项目经理
主要负责团队的管理;制定开发的目标和各个工作的详细任务表,跟踪这些任务的执行情况,并进行控制;组织会议对程序进行评审;综合具体情况,对各种不同的方案进行取舍并做出决定;协调各项目参与人员之间的关系。
项目经理要具有领导才能,对问题能正确而迅速地做出确定,能充分利用各种渠道和方法来解决问题,能跟踪任务,有很好的日程观念,能在压力下工作。
2. 系统分析师
主要负责系统分析,了解用户需求,写出《软件需求规格说明书》,建立用户界面原型等。担任系统分析员的人员应该善于协调,并且具有良好的沟通技巧。担任此角色的人员中,必须要有具备业务和技术领域知识的人才。
3. 设计员
主要负责系统的概要设计、详细设计和数据库设计。要求熟悉分析与设计技术,熟悉系统的架构。
4. 程序员
负责按项目的要求进行编码和单元测试,要求有良好的编程和测试技术。
5. 测试人员
负责进行测试,描述测试结果,提出问题解决方案。要求了解要测试的系统,具备诊断和解决问题的技能。
6. 其他人员,如美工、文档管理等角色
成功的项目团队是一个高效、协作的团队。一个高效的项目团体对项目的目标要有共同的认识和理解,对每位成员的角色要有明确的划分、目标导向、高度的合作互助以及高度的信任。团队成员对自己要有一个高度的期望,要做好计划、控制并相信自己的工作。项目团队成员要共同营造一个积极向上的有效项目环境。项目团队成员不能仅限于完成自己的任务,还要协同其他成员共同完成承担的项目。有效的团队成员应开放、坦诚而又能及时沟通,包括交流信息、想法、感情。要在成员当中彼此作出建设性的反馈。在项目开发的过程当中,冲突矛盾会经常发生,要能对解决冲突和矛盾的对策达成一致的意见。有效的团队解决冲突的方法是通过沟通交流和协调,及时地反馈和正视问题,以积极的态度对待冲突,把它当做成长和学习的机会。团队成员要学会解决各种冲突的方法,冲突不能完全靠项目经理来解决,团队成员之间的冲突应该由团队成员来处理。每个人都必须以积极的态度来对待冲突,并对面临的冲突广泛地交换意见。冲突也有有利的一面,它能将问题暴露出来,以及时地得到重视。能引发讨论,澄清成员们的观念,可以培养成员解决问题的开放性和创造性。另外要有效地管理时间,团队成员要明确每月、每周的目标,每天制定一个日程表,以便进行时间管理。
27.2.2 项目团队要求
一个高效的软件开发团队需要建立在合理的开发流程及团队成员密切合作的基础之上,所有成员共同迎接挑战,有效地计划、协调和管理各自的工作,以期完成明确的目标。高效的开发团队具有以下一些特征。
1. 具有明确且有挑战性的共同目标
一个具有明确的且有挑战性目标的团队的工作效率会很高。因为在通常情况下,技术人员往往会为完成了某个具有挑战性意义的任务而感到自豪,而反过来技术人员为了获得这种自豪的感觉,会更加积极地工作,从而带来团队开发的高效率。
2. 具有很强的凝聚力
在一个高效的软件开发团队中,成员们的凝聚力表现为相互支持、互相交流和互相尊重,而不是相互推卸责任、保守、相互指责。例如,某个程序员明明知道另外的模块中需要用到一段与自己已经编写完成且有些难度的程序代码,但他就是不愿拿出来给其他的程序员共享,也不愿意与系统设计人员交流,这样就会为项目的顺利开发带来不良的影响。
3. 具有融洽的交流环境
在一个开发团队中,每个开发人员行使各自的职责,例如系统设计人员做系统概要设计和详细设计,需求分析人员制定需求规格说明,项目经理配置项目开发环境并且制订项目计划等。但是由于种种原因,每个组员的工作不可能一次性做到位,如系统概要设计的文档可能有个别地方会词不达意,做详细设计的时候就有可能造成误解,因此高效的软件开发团队是具有融洽的交流环境的,而不是那种简单的命令执行式的。
4. 具有共同的工作规范和框架
高效软件开发团队具有规范性及共同的框架,对于项目管理具有规范的项目开发计划,对于分析设计具有规范和统一框架的文档及审评标准,对于代码具有程序规范条例,对于测试有规范且可推理的测试计划及测试报告,等等。
5. 采用合理的开发过程
软件项目的开发不同于一般商品的研发和生产,开发过程中面临着各种难以预测的风险,比如客户需求的变化、人员的流失、技术的瓶颈、同行的竞争,等等。高效的软件开发团队往往会采用合理的开发过程去控制开发过程中的风险,提高软件的质量,降低开发的费用等。
27.3 项目开发文档
本节视频教学录像:4分钟
计算机软件是计算机系统中与硬件相互依存的另一部分,包括程序、数据及其相关文档的完整集合。文档是软件产品的一部分,是与程序开发、维护和使用有关的图文材料,没有文档的软件是不完整的。软件文档的编制在软件开发工作中占有突出的地位和相当大的工作量。高质量、高效率地开发、分发、管理和维护文档,对于转让、变更、修正、扩充和使用文档,对于充分发挥软件产品的效益有着十分重要的意义。
27.3.1 项目开发文档的作用
文档在产品的开发过程中起着重要的作用,主要有以下几点。
⑴提高软件开发过程的能见度:把开发过程中发生的事件以可阅读的形式记录起来,管理人员可把这些记载下来的材料作为检查软件开发进度和开发质量的依据,实现对软件开发的工程管理。
⑵提高开发效率:通过软件文档的编制,可使开发人员对各个阶段的工作进行周密思考、全盘权衡,从而减少返工,并且可在开发早期发现错误和不一致性,便于及时纠正。
⑶可作为开发人员在一定阶段的工作成果和结束标志。
⑷记录开发过程中的有关信息,便于协调以后的软件开发、使用和维护。
⑸提供对软件的运行、维护和培训的有关信息,便于管理人员、开发人员、操作人员、用户之间的协作、交流和了解。使软件开发活动更科学、更有成效。
⑹便于潜在用户了解软件的功能、性能等各项指标,为他们选购符合自己需要的软件提供依据。
从某种意义上来说,文档是软件开发规范的体现和指南。按规范要求生成一整套文档的过程,就是按照软件开发规范完成一个软件开发的过程。所以,在使用工程化的原理和方法来指导软件的开发和维护时,应当充分地注意软件文档的编制和管理。
27.3.2 项目开发文档的分类
按照文档产生和使用的范围,软件文档大致可分为以下3类。
⑴开发文档:这类文档是在软件开发过程中,作为软件开发人员前一阶段工作成果的体现和后一阶段工作依据的文档,包括软件需求说明书、数据要求说明书、概要设计说明书、详细设计说明书、可行性研究报告、项目开发计划等。
⑵管理文档:这类文档是在软件开发过程中,由软件开发人员制订的工作计划或工作报告,使管理人员能够通过这些文档了解软件开发项目的安排、进度、资源使用和成果等,包括项目开发计划、测试计划、测试报告、开发进度月报及项目开发总结等。
⑶用户文档:这类文档是软件开发人员为用户准备的有关该软件使用、操作、维护的资料,包括用户手册、操作手册、维护修改建议、软件需求说明书等。
国家标准局在1988年1月发布了《计算机软件开发规范》和《软件产品开发文件编制指南》,将整个软件开发过程应提交的文档归纳为以下13种。
1. 可行性研究报告
说明该软件项目的实现在技术上、经济上和管理上等方面的可行性,评价为合理地达到开发目标可供选择的各种可能的实现方案,说明并论证所选定实施方案的理由。
2. 项目开发计划
为软件项目实施方案制订出具体的计划。它应包括各部分工作的负责人员、开发的进度、开发经费的预算、所需的硬件和软件资源等。项目开发计划应提供给管理部门,并作为开发阶段评审的基础。
3. 软件需求说明书
也称软件规格说明书。其中应对所开发软件的功能、性能、用户界面和运行环境等作出详细的说明。它是用户与开发人员对软件需求取得共同理解基础上达成的协议,也是实施开发的基础。
4. 数据要求说明书
该说明书应给出数据逻辑描述和数据采集的各项要求,为生成和维护系统的数据文件做好准备。
5. 概要设计说明书
也叫总体设计说明书,该说明书是总体设计工作阶段的成果。它应当说明系统的功能、模块划分、程序的总体结构、输入输出及接口设计、运行设计、数据结构设计和出错处理设计等,从而为详细设计奠定基础。
6. 详细设计说明书
着重描述每一个模块是如何实现的,包括实现算法、逻辑流程等。
7. 用户手册
详细描述软件的功能、性能和用户界面,使用户了解如何使用该软件。
8. 操作手册
为操作人员提供该软件各种运行情况的有关知识,特别是操作方法细节。
9. 测试计划
针对集成测试和确认测试,需要为组织测试制订计划,包括测试的内容、进度、条件、人员,测试用例的选取原则、测试结果允许的偏差范围等。
10. 测试分析报告
测试工作完成以后,应当提交测试计划执行情况的说明,对测试结果加以分析,并提出测试的结论性意见。
11. 开发进度月报
是软件开发人员按月向管理部门提交的项目进展情况的报告,应包括进度计划与实际执行情况的比较、阶段成果、遇到的问题、解决的办法以及下个月的打算等。
12. 项目开发总结报告
软件项目开发完成之后,应当与项目实施计划对照,总结实际执行的情况,如进度、成果、资源利用、成本和投入的人力等。此外,还需对开发工作作出评价,总结经验和教训。
13. 维护修改建议
软件产品投入运行之后,可能存在修正、更改等问题,应当对存在的问题、修改的考虑以及修改的影响估计等做详细的描述,写成维护修改建议,提交审批。
上述13个文档,最终要向软件管理部门或向用户回答下列问题:要满足哪些需求,即回答“做什么?”;所开发的软件在什么环境中实现,所需信息从哪里来,即回答“从何处?”;开发工作的时间如何安排,即回答“何时做?”;开发(或维护)工作打算“由谁来做?”;需求应如何实现,即回答“怎样干?”;为什么要进行这些软件的开发或维护修改工作?具体在哪个文档要回答哪些问题,与软件开发人员及文档的编制有关。
然而在实际工作中,软件开发人员中普遍地存在对编制文档不感兴趣的现象。从用户方面来看,他们又常常抱怨:文档不够完整、文档编写得不好、文档已经陈旧或是文档太多,难于使用等。所以为了对软件开发流程进行更好的管理,一定要重视文档的编写工作。
27.4 项目的实际运作
本节视频教学录像:1分钟
软件开发一般是按照软件生命周期分阶段进行的,开发阶段的运作过程一般如下。
1. 做可行性分析,确定项目目标和范围
开发一个新项目或新版本的时候,首先应当和用户一起确认需求,进行项目的范围规划。项目是范围、进度、质量和资源四要素的平衡,用户对项目进度要求和优先级高的时候,往往要缩小项目范围,对用户需求进行优先级排序,排除优先级低的需求。另外做项目范围规划的一个重要依据,就是开发者的经验和对项目特征的清楚认识。在项目范围规划初期需要进行一个宏观的估算,否则很难判断清楚或给用户承诺在现有资源情况下,需要多长时间完成用户的需求。
2. 项目进度的确定
项目的目标和范围确定后,需要开始确定项目的过程,项目整个过程中采用何种生命周期模型?项目过程是否需要对组织级定义的标准过程进行裁剪等相关内容。项目过程定义是进行WBS(Work Breakdown Structure,工作分解结构)分解前必须确定的一个环节。WBS就是把一个项目按一定的原则分解,项目分解成任务,任务再分解成一项项工作,再把一项项工作分配到每个人的日常活动中,直到分解不下去为止。
WBS即是:项目→任务→工作→日常活动。
项目过程确认清楚后开始进行项目的WBS分解,WBS分解一般是项目组的核心成员参加,但项目经理应该起主导和协调的作用。WBS的最底层工作单元需要是可以独立核实的产品,需要去下达计划和任务,工作单元需要有明确的责任人,因此有的时候在没有做仔细估算时很难让工作单元满足这些要求,这样就难免在进行估算的过程中还要对WBS进行优化和调整。
WBS分解完成后可以开始进行工作单元的估算,估算出项目的总规模,结合项目的历史经验数据,即你在做历史项目的时候需求、设计、编码工作量的比例究竟如何?然后根据估算得到的需求阶段工作量数据去推算出设计和开发的估算工作量。估算数据出来后,可以使用Project工具安排整个项目的进度计划,项目进度计划安排中的两个重要内容就是关键人力资源的确定和关键路径的确定。在这两个因素确认清楚后,要排出整个项目的进度计划就很简单了。
在项目进度计划基本排出来后就可以规划和确定项目的里程碑和基线了,项目的里程碑和基线是项目重要的跟踪控制检查点。整个项目进度计划基本排出来后需要和项目组的所有项目成员确认,以获取项目的内部承诺,项目成员应该对整个进度计划安排基本达成一致。项目进度计划出来后可以通知QA(质量保证部门)和配置管理员分别制订质量保证计划和配置管理计划,项目经理协助测试负责人制订项目的系统测试计划。
3. 项目计划的其他关键因素的分析和确认
确定项目开发过程中需要使用的方法、技术和使用的工具。一个项目中除了使用常用的开发工具外,还会使用需求管理、设计建模、配置管理、变更管理、IM沟通(及时沟通)等诸多工具,使用面向对象分析和设计、开发语言、数据库、测试等多种技术。在这里都需要分析和定义清楚,这将成为后续技能评估和培训的一个重要依据。
进行项目相关人员分析。所有对项目有影响的相关人员都是项目的干系人,一般会按照项目内部角色和外部角色进行划分。在对所有的干系人分析清楚后,应通过责任矩阵来分析各个干系人涉及的项目各阶段的相关活动。对项目中的各个成员的技能进行评估,根据项目评估的结果来制订项目的培训计划,并对培训的效果进行跟踪。常用的方法和工具有《项目成员培训需求收集表》、《项目成员技能评估表》、《项目成员技能沟通确认表》和《项目培训计划》等。
项目的关键依赖和承诺。项目的内部关键依赖和承诺一般会直接体现到项目进度计划中,但项目的外部依赖和承诺则必须有专门的地方进行记录和定期进行跟踪。因为当外部关键依赖无法得到满足的时候将直接影响到整个项目的进度,打乱整个项目的步调。
项目风险分析。风险管理是项目管理的一个重要领域,整个项目管理的过程就是不断地去分析、跟踪和减轻项目风险的过程。风险分析的一个重要内容就是分析风险的根源,然后根据根源去制定专门的应对措施。风险管理贯穿整个项目管理过程,需要定期对风险进行跟踪和重新评估,对于转变成了问题的风险还需要事先制订相应的应急计划。
4. 项目开发阶段运作
根据开发计划进度进行开发,项目经理跟进开发进度,严格控制项目需求变动的情况。项目开发过程中不可避免地会出现需求变动的情况,在需求发生变更时,可根据实际情况实施严格的需求变更管理。
5. 测试验收
测试验收阶段主要是在项目投入使用前查找项目中的运行错误。在需求文档基础之上核实每个模块能否正常运行,核实需求能否被正确实施。根据测试计划,由项目经理安排测试人员,根据项目开展计划分配进行项目的测试工作。通过测试,确保项目的质量。
6. 项目过程总结
测试验收完成后紧接着应开展项目过程的总结,主要是对项目开发过程的工作成果进行总结,以及进行相关文件的归档、备份等。
27.5 项目规划中的常见问题及解决方式
本节视频教学录像:6分钟
项目的开发过程并不是一天两天可以做好的。而对于一个复杂的项目来说,其开发的过程更是充满了曲折和艰辛,其问题也是层出不穷、接连不断。
27.5.1 如何满足客户需求
满足客户的需求也就是在项目开发流程中所提到的需求分析。如果一个项目经过大量的人力、物力、财力和时间的投入后,开发出来的软件没人要,这种遭遇是很让人痛心疾首的。比如,用户需要一个人事管理的软件,而你在软件开发前期忽略了向用户询问软件中是否增加岗位培训的功能,而是想当然地认为岗位培训一般都用于现实生活中,没有哪家公司会用软件进行员工的岗位培训。然而,当你千辛万苦地将软件开发完成,并向用户提交时,才发现岗位培训功能在这个软件中对用户来说是多么的渴望与需要,这个时候是开发人员最为苦恼的时候。
需求分析之所以重要,就因为它具有决策性、方向性和策略性的作用,它在软件开发的过程中占据着举足轻重的地位。在一个大型软件系统的开发中,它的作用要远远大于程序设计本身。那么该如何做才能满足客户的需求呢?
1. 了解客户业务目标
只有在需求分析时更好地了解客户的业务目标,才能使产品更好地满足需求。充分了解客户业务目标,有助于程序开发人员设计出真正满足客户需要并达到期望的优秀软件。
2. 撰写高质量的需求分析报告
需求分析报告是分析人员对从客户那里获得的所有信息进行整理,它主要用以区分业务需求及规范、功能需求、质量目标、解决方法和其他信息,它使程序开发人员和客户之间针对要开发的产品内容达成共识和协议。需求分析报告应以一种客户认为易于翻阅和理解的方式组织编写,同时程序分析师可能会采用多种图表作为文字性需求分析报告的补充说明,虽然这些图表很容易让客户理解,但是客户可能对此并不熟悉,因此,对需求分析报告中的图表进行详细的解释说明也是很有必要的。
3. 使用符合客户语言习惯的表达方式
在与客户进行需求交流时,要尽量站在客户的角度去使用术语,而客户不需要懂得计算机行业方面的术语。
4. 要多尊重客户的意见
客户与程序开发人员,偶尔也会碰到一些难以沟通的问题。如果开发人员与客户之间产生了不能相互理解的问题,要尽量多听听客户方的意见,能满足客户的需求时,就要尽可能地满足客户的需求,如果实在是因为某些技术无法实现,则应合理地向客户说明情况。
5. 划分需求的优先级
绝大多数的项目没有足够的时间或资源实现功能上的每一个细节。如果需要对哪些特性是必要的,哪些是重要的等问题做出决定,那么最好询问一下客户所设定的需求优先级。程序开发人员不可以猜测客户的观点,然后去决定需求的优先级。
27.5.2 如何控制项目进度
大量的软件错误通常只有到了项目后期,在进行系统测试时才能够被发现,解决问题所花费的时间也将会很难预料,经常导致项目进度无法控制。同时在整个软件开发的过程中,项目管理人员由于缺乏对软件质量状况的了解和控制,也加大了项目管理的难度。
面对这种情况,较好的解决方法是尽早进行测试,当软件的第1个过程结束后,测试人员要马上基于它进行测试脚本的实现,按项目计划中的测试目的执行测试用例,对测试结果进行评估报告。这样,就可以通过各种测试指标实时监控项目的质量状况,从而提高对整个项目的控制和管理的能力。
27.5.3 如何控制项目预算
在整个项目开发的过程中,错误发现得越晚,单位错误修复的成本就会越高,错误的延迟解决必然会导致整个项目成本的急剧增加。
解决这个问题的较好方法是采取多种测试手段,尽早发现项目中潜伏的问题。
共有条评论 网友评论