- 浏览: 41234 次
- 性别:
- 来自: 北京
最新评论
-
抛出异常的爱:
halida 写道抛出异常的爱 写道mock1234 写道mo ...
为什么在添加一个新功能前先整理代码? -
halida:
抛出异常的爱 写道mock1234 写道mock1234 写道 ...
为什么在添加一个新功能前先整理代码? -
javajdbc:
公司管理 -
抛出异常的爱:
mock1234 写道mock1234 写道根据行业经验来判断 ...
为什么在添加一个新功能前先整理代码? -
抛出异常的爱:
futily 写道我的推荐添加完功能后整理;有时间的话我会在功 ...
为什么在添加一个新功能前先整理代码?
作者:黄绍良
任何从事IT行业的人员都清楚,软件开发项目失败的其中一个主要原因是项目在启动的时候功能需求模糊,导致开发过程的不断修改,让项目不断延误,功能不断扩张,资源越来越吃紧,最终影响交付的质量和客户的满意度。希赛网软件工程频道有很多文章介绍如何去把握需求,很多业内人士也常在网上分享他们把握客户需求的方法,可惜效果并不太理想。因为我们绝对不能够把握基本上不存在的“客户需求”。
作为一个软件工程的专业人员,如何能够从客户所提供的模糊需求建立一个明确的范围,然后从这个范围中建立整个系统的功能需求,让我们可以控制软件开发的过程,减少项目的范围变动,降低开发过程中的修改需求,让我们能够按预算、按工期,提交符合质量要求的交付物,达到客户的预期目标,我们便需要理解问题的根源,打破过去的工作习惯,寻找一套可行的方法。
在项目管理知识体系(PMBOK)中我们学习范围变动管理,而不是需求变动管理,范围变动才是需求变动的主要原因。其实在这里PMBOK做了一个假设,就是有了明确的范围便可以建立明确的功能需求,如果能够控制范围,便能够控制功能需求。
功能需求变动是导致软件工程在开发过程中进行修改的主要原因,那是说我们在软件工程项目启动的时候没有把握好项目的范围,才会发生我们面对的问题。所以,我们首先需要理解范围与功能需求的关系,什么是范围?什么原因导致需求模糊?能够明确理解两者的异同,才能够找出解决的方法,建立明确的项目范围,转换成功能需求。让我们能够从模糊的需求转变成为明确的需求。
建立明确的项目范围代替不明确的范围,才能够减少开发过程中的修改。本人最近一直从过去30多年的科技项目开发和管理经验中,结合近年回国后对国内IT企业运营模式的理解,我国技术人员的工作习惯,客户的思维、心态和期盼,总结出一套建立明确项目范围的方法,特在此与读者分享,共同改善我国软件企业的困境(请参考希赛顾问黄绍良教授的《我国软件企业的未来生存空间》一文)。
70年代的项目范围与需求
项目范围与项目需求是两个完全不同的概念,但两者却不能单独处理。让我们回到上世纪70年代的时候,国外企业正进行自动化的过程。项目基本上是把人工作业流程转变成计算机程序。那时候并没有项目范围这个名称,我们用Terms of Reference (ToR)来界定项目的边界,采用文字描述的方法说明这个项目要做什么。例如,要为希赛公司建立一个库存管理系统,这个项目的ToR会说明货品从进入仓库开始,到货品因应生产或销售申领要求离开仓库为止,其中包括货品存入量的统计,存放位置记录,总库存量统计、申领数目、检货、提取货品、准备出仓,最后更新货品存量统计等工作过程。这个项目的Term of Reference只说明这个项目的范围,包括一些需要执行的工作和记录等。
在项目实施过程中,系统分析员会对库存管理全过程进行调查或调研,采用访谈或观察等方法,记录上述范围中的整个工序的过程,每一个数据的更新,参考记录数据的报告格式和任何有关的工作单据。这些工序,数据更新时间和地点,报告打印等工作最后便成为系统的功能需求。这些需求能够让最终用户明确开发人员已经把握了整个工作流程,明确每一个工作的内容,保证完成的系统能够提供库存管理的功能。
这段时间软件工程的焦点是在范围确认后的信息搜集(Facts Finding)和需求分析(Requirement Analysis)中。依据PMBOK的论述,我们在20世纪70年代,的确可以从范围的建立带出明确的功能需求,减少开发过程中的修改,降低项目延误的风险。这个模式在我国软件产业发展初期采用,大概是20世纪80年代后期至90年代中期的时间进行自动化过程。
80年代的项目范围与需求
到上世纪80年代中后期,国外企业的自动化过程已经接近尾声,企业开始整合部门的计算机系统,加上个人电脑开始取代终端,项目多数包括跨部门或跨地区的系统集成、综合数据库应用、远程计算(Remote Access)、网络连接等为项目主体。在这种情况下,传统的ToR已经不能够明确说明项目属于哪个部门,从哪里开始,如何才是项目完结。ToR已经不能够有效地界定项目的范围,所以,我们利用多个工作描述来说明,成为我们知道的工作说明“Statement of Works (SOW)”,其中包括项目开发过程中需要处理(inclusive)的工作说明和开发过程中不需要(NOT-inclusive)处理的工作说明,整合这些SOWs 后成为我们今天所认识的项目范围,利用工作说明以明确的语句来说明项目中包含的每一个工作内容。例如,在一个项目范围中包括的工作说明可能是:“连接A市及B市两地办公室的主机,通过A市数据中心的中央货品库存数据库,为A市工场和B市销售中心提供即时货品存量查询及货品预订功能”。
这些工作说明便成为这个工程需要提交的最终成果。利用项目范围中的SOW替代ToR,一个项目可以容许多个SOW来描述系统建设的内容,所有的SOW描述的建设内容都包含在这个项目的范围中。但实际上每一个SOW的结果如何实现,还是需要技术人员透过调查和进行分析后才能够清楚具体的操作该如何实现。每一个SOW的具体操作过程都成为这个SOW的功能需求。整合全部SOW的个别操作过程,才是项目的最终功能需求。
简明的说,每一个SOW都是一个小范围,它本身也不是一个需求。我们还是需要通过理解SOW的内容才能够把握这个SOW的需求。每一个SOW可以成为一个独立的项目,“子项目”的名称也是在这个时候诞生。
从上述的历程中可以看到,用户或客户告诉我们的永远都不是需求,是客户或用户希望在最后交付物中看到的部分成果,永远不会完整,只是客户或用户的部分期盼、愿景和目标。如果把这些期盼、愿景和目标当作了需求,那么我们永远不能在项目初期建立满足用户对交付物的期盼。需求从来不是用户或客户提供,需求是技术人员依据范围中需要实施的工作过程进行分析后寻找出来可以提交项目最终交付物的结果,然后才能够把这些需求转变成一个软件工程,在项目指定的范围中利用科技达到用户的最终目的。
系统集成项目在PMBOK论述的范围管理仍然有效,但在软件工程中能否包含全部SOW是影响范围变动的主要因素,遗漏了一个SOW便会带来范围变动,所以当时的软件工程多以SOW为主,需要客户方确认,只要客户确认SOW后,任何不包括在SOW中的功能便成为范围变动,也是PMBOK中范围变动管理的主要意义。改变范围便需要改变项目基线,增加工作量和项目成本,延长项目工期。我国的软件产业发展从2O世纪90年代中期到本世纪初期才开始进行系统集成的过程。
自动化到信息化的年代
IT在上世纪70、80年代的项目是流程自动化与系统集成年代,基本上是先确认范围后才开始把握功能需求,大部份项目所采用的开发体系也是依据这个构思对软件开发进行管理。但到了90年代进入信息化年代,范围的意识开始模糊,范围开始被误解成为需求,最主要的原因是技术人员仍然采用过去流程自动化的开发思维,希望客户能够明确说明范围,但在范围建立的过程中,每当客户提出“我需要这个系统能够提供 …… ”,技术人员便把客户的说明演绎成为系统需求。
故此从90年代中期开始到现在,很多软件工程师对需求的定义非常模糊,系统需求与功能需求把握不准,把范围建设的过程与功能需求混在一起,导致今天大部份软件在开发过程中不断修改,让项目不断延误。
90年代的项目范围与需求
自上世纪90年代中期开始,企业从流程自动化的“科技应用方法”开始转型到信息化的“科技应用价值”为最终目标。项目的目标也渐渐地从明确的技术应用过程转变成为如何利用科技来完成虚拟的理想及模糊的愿景。例如,建立一个系统为企业提供业务方向决策,让管理层能够判断产品在市场上哪个地域的市场需要和进行产品调整或改善,属于哪类消费群,如何开拓一个新市场等,又或者希望利用因特网为企业提供一个产品推广和销售渠道。
这些项目可能包含现有市场的地域或推进到新的地域环境,包含一个或多个部门的分工与协调,也可能包含现有数据库的组合、信息分享或需要成立新的数据来提供所需的信息,但大多数需要包含现有系统和建立新系统的集成体。如何实现项目的人工或系统操作流程等等多是客户在项目启动前没有考虑过的内容。在这张情况下,范围的建设依据是一个相当困难去完成的子项目。客户在项目调研过程中能够提供的只能是一部份的愿景和期盼,需要技术人员透过这些信息建立项目的范围,才能够降低后期的变动。
大部分技术人员在软件开发过程中对开发体系的应用未能融合信息化项目的特色。盲目依从开发体系的过程,忘记开发体系应用前的一些先决条件:建立项目的范围。所以从90年代开始,项目管理开始扮演重要的角色,在项目章程(Project Charter)中建立范围、预算、资源和投资回报等内容,让技术人员依据项目章程的指导,更能有效地发挥技术应用的能力。
如何实现用户的愿景,便需要项目经理、技术人员与用户共同寻找实现的过程,才能够把握有关的需求,才能够利用科技让用户获取期盼的项目最终交付物。很多项目的重点已经不是科技的应用,而是科技应用所带出来的价值。今天的项目主要是支撑业务的发展,辅助市场的开拓,创新的科研成果等最终目标,SOW已经不能够在项目初期进行编制,项目范围也无法在项目前期界定。
大部分愿景型的项目中,要提供一个全面的项目范围,我们必须进行信息搜集、分析后组合成业务流、数据流。建设出具体的操作过程,再转换成SOWs后才能够建立项目的范围,然后才能够从范围建立项目的明确的功能需求,这些工作都应该在项目启动前便执行,是项目章程的主要内容,但可惜大部分用户缺乏这个概念,而我国技术人员从不重视、也不理解范围的重要性,只把工作重点放在“调研”过程,希望从调研过程中理解客户的需求。
项目在缺乏明确范围的时候要能够把握系统的功能需求相当困难。项目愿景是客户希望最终能够达到的目标,如何达到预期的目标?过程如何操作?将来需要哪些类型的工作人员负责执行?应用过程,处理的方法和模式如何应用?这些问题客户可能从来没有考虑过,更不能够为技术人员提供所谓需求,只希望透过技术人员的专业知识和经验,提供客户能够达到目的的应用系统。
今天软件工程的挑战
要能够有效完成项目的交付,我们便需要在项目前期建立明确的范围,只要我们能够完成范围内的工作,客户便能够进行有效的验收过程。但是我们在软件工程中没有把范围建立起来,我们便需要不断满足客户的思维,来提供客户所希望达到的目的。
很多IT项目经理在项目启动的时候,把工作重点放在把握“客户需求”上,但执行调研的技术人员却把“客户需求”误解成系统的“功能需求”,希望通过调研的过程去理解系统需要哪些应用功能。回顾20世纪70、80年代的开发过程,客户需求是项目范围,与开发过程中的“需求说明(Requirement Statements)有一定的差异。
我国的软件产业有本身的特色,我国的技术人员也有本身的工作习惯,我国的用户对软件要求有个别的期盼和要求,这些都影响软件开发模式的应用,采用欧美的软件开发制度基本上不能够满足我国的软件产业现状,也不一定能够解决我国软件产业的困境。大部分软件项目的失败不是技术应用的失败,是未能把握项目的焦点和项目重心所导致的失败。那么软件项目的焦点和项目重心究竟是什么呢?
客户提供的所谓需求,实际上在今天的项目中是未来交付中所必须涵盖的功能,也是交付物的一些基本质量要求。客户对项目的验收是依据我们在项目完成后的最终交付物,我们必须摆脱过去的传统思维,不要在项目起动的时候尝试把握那些基本上不存在的需求,必须明确项目交付的验收目标,在项目启动时能够把有关的最终交付明确下来,便能够降低项目失败的比例。
我在未来数月会继续跟希赛的网友分享过去进行信息化项目的一些经验,如何采用“项目组件分拆方法”(Project Components Decomposition Method ,PCDM),在项目初期确认项目的最终交付物,让项目在开发过程中减低客户的修改要求,让我们能够更有效地把握IT专业知识,提供社会所需的高质软件,提升我国软件人员的专业水平。
发表评论
-
潘正磊谈微软研发团队管理之道
2009-12-23 09:31 940潘正磊谈微软研发团队管理之道 概要 近日InfoQ有幸独家 ... -
计划的作用
2009-11-02 11:35 1264计划的作用 计划的作用总计如下: 1、计划的目的是实现目标 ... -
专访PMI总裁兼首席执行官贝格雷:企业应对金融危机的新路径
2009-05-12 13:41 900项目管理能帮助企业建立明确的战略和更有效的管理架构,与此同时 ... -
IT企业项目管理的应用误区
2008-12-22 18:04 771作者:黄绍良 ... -
四步创新软件开发模型
2008-12-22 17:47 1454作者:黄绍良 来源: ... -
项目组件分拆法PCDM
2008-12-22 17:35 914作者:黄绍良 ... -
项目如何快速实现1-----测试驱动
2008-10-20 12:04 706在把项目文档写完后,业务流程图就是我们要实现的东西,具体怎么实 ... -
项目管理流程的建立过程
2008-10-20 11:26 1020建立项目管理流程的过程就是把要待建立的流程把做一件事情的具体过 ... -
我们是一群凡人, 在作着一件不平凡的事, 如果你认为自己是个牛人, 请你离开, 我们不需要你.
2008-09-22 17:39 1125我们是一群凡人, 在作着一件不平凡的事, 如果你认为自己是个牛 ... -
世界顶尖运动队教练的成功秘诀
2008-09-10 10:53 758http://www.infoq.com/cn/article ... -
管理的重要任务1-推和控
2008-09-04 11:29 681管理中很重要的任务之一是推动和控制项目向前发展,其中包括两个点 ... -
项目如果为客户服务_业务指导思想
2008-09-02 17:23 876今天听了领导的关于本行业业务软件的介绍,领导从本行业软件的发展 ... -
怎样做好一个管理者
2008-08-25 16:41 25531、把自己的事情做好, ... -
润物细无声
2008-08-25 15:49 766管人是一件头痛的事情,相同的出发点,方法不同,效果可 ... -
从需求到设计
2008-08-22 15:14 955从需求到设计分为:需求、分析、设计三个步骤。 1、需求收集和整 ... -
系统分析步骤
2008-07-17 17:37 2277拿到需求资料该怎样进行系统分析呢? 步骤如下: 1、业务对象 ... -
软件专业化
2008-06-05 09:48 688刚看了一篇文章,说程序员必须专业话,个人认为程序员的专业化就是 ... -
公司管理
2008-05-28 14:07 882软件公司的管理框架和思路应该是相通的,不同的是根据公司或项目组 ... -
软件项目管理
2008-05-27 10:30 911以前看了一些 ... -
在系统开发方面不同层次的人关注的内容不一样
2008-05-22 10:37 882在系统开发方面不同层 ...
相关推荐
### 信息系统项目管理师需求管理论文知识点解析 #### 一、引言部分解析 - **论文准备阶段**:作者从今日起着手准备论文,并决定每天分享一个知识领域的论文范文供他人参考。 - **论文写作态度**:作者认为撰写论文...
1. 项目管理概述:包括项目的目的、价值约束以及环境需求。项目经理需要使用过程方法来管理项目,这个方法通常分为五个主要部分,即P(项目管理)M(项目经理)法。项目具有六个特征:道、天、地、人、法、道,这些...
### 项目管理—用户需求说明书模板解析 #### 一、文件说明 1. **编写目的**:本《用户需求说明书》旨在明确项目的目标、范围、功能需求以及其他非功能性需求,确保项目的开发工作能够准确地满足用户的期望。通过该...
5. 软件项目管理生命周期的更新:Favaro在引入中提出,软件项目管理生命周期需要更新以应对现代软件开发的需求。 6. 质量驱动的软件开发项目管理过程:Mohapatra等人通过量化项目管理实践来提升软件开发的质量,...
项目管理是一个涉及众多要素的复杂过程,它要求对项目需求、成本、人员、进度、质量和风险等多个方面进行科学分析和有效管理与控制。在CAD制造业信息系统的需求分析中,通过项目管理理论的应用,可以确保信息系统的...
7. 不确定性:项目中存在不确定性和风险。 二、项目管理的三要素约束 项目管理的三要素约束是指项目的三个基本约束条件:范围、时间和成本。项目经理需要在这三个约束条件之间找到平衡,以确保项目的成功。 三、...
1. 项目管理体系不完善:F 公司在启动项目时并未建立一个完整的项目管理体系,没有制定详实的项目管理计划,并且没有按照计划执行。 2. 需求管理混乱:项目初期对用户需求的理解不够深入,未形成书面的《系统需求...
高级项目管理师应试背诵口诀是一份针对项目管理师考试的知识点整理资料,它将项目管理的重要知识点编排成易于记忆的口诀形式。下面将详细介绍文件中提及的知识点: 1. 项目管理基础: - 资质人数和注册资金:描述...
软件项目管理案例教程习题答案 软件项目管理是指在项目的整个生存期内,协调项目管理其他各管理知识域,将项目管理的方方面面集成为一个有机整体,保证项目的总目标的实现。项目集成管理从一个宏观的角度将项目作为...
敏捷项目管理是一种以用户需求进化为核心、采用迭代、循序渐进的方法进行项目管理的方式。它强调在整个项目周期内持续地评估和调整策略,以确保最终产品的质量和满足用户需求。这种管理方式在软件开发领域尤其流行,...
在项目管理领域,需求池管理是一项至关重要的任务,它涉及到项目的初期规划、需求收集、优先级排序以及跟踪管理。"项目管理简易需求池管理模板"是专为简化这一过程而设计的工具,它帮助项目经理和团队高效地组织和...
总结来说,信息系统项目管理师需要理解项目的基本属性,掌握管理技巧,灵活应对需求变化,熟悉项目生命周期的不同阶段,以及在不同组织结构下如何有效地进行项目管理。此外,良好的沟通、领导和协调能力也是成功管理...
系统集成项目管理工程师教程是一本为准备参加项目管理软考的学员准备的完整教材。该教材覆盖了项目管理的各个方面,包括信息化基础知识、信息系统服务管理、信息系统集成专业技术知识、项目管理一般知识以及项目管理...
项目管理具备几个显著特性:普遍性意味着项目存在于各种社会活动中;目的性强调满足项目目标和潜在需求;独特性使项目管理区别于常规运营管理;集成性要求整合项目各要素以实现协同;创新性体现在对每个项目采用独特...
- 需求分析:针对流通企业的仓储痛点进行深入分析,揭示当前管理存在的问题。 - 方案概述:提出WMS系统总体设计,包括基础规划、作业方案等。 - 规划细节:详细描述了上架、下架、移库、盘点、越库发货和配送等业务...
信息系统项目管理师下午真题及答案解析的知识点涵盖了信息系统项目管理的多个方面,包括项目范围管理、项目成本管理、项目沟通管理、敏捷开发模式的应用以及变更管理等内容。 首先,从项目范围管理的角度,案例中...
- **项目管理基础知识体系**(PMBOK)是项目管理领域的重要指南,涵盖了项目管理的核心知识领域,包括但不限于项目集成管理、项目范围管理、项目时间管理等。 #### 五、信息系统项目管理 - **信息系统项目管理**...
在项目管理领域,需求文档评审是一项至关重要的活动。它确保项目的成功执行,通过明确、完整且一致的需求定义,为团队提供了清晰的方向。本实例聚焦于如何有效地进行需求文档的评审,以便在项目启动阶段就建立坚实的...
根据提供的文件信息,我们可以将这些内容归纳为一系列与项目管理相关的知识点。以下是对这些知识点的详细解释和扩展: ### 一、项目管理基础知识 #### 1. 知识领域 项目管理的知识领域主要包括:整合管理、范围...
精益项目管理实践也存在一些挑战: 1. 需要改变传统的思维方式:精益项目管理实践需要改变传统的思维方式,鼓励团队成员更多地参与和创新。 2. 需要对流程的优化:精益项目管理实践需要对流程的优化和自动化,以...