之前把软件工程中的测试部分,文档管理部分都已经做了一些简单的介绍,因为都是我实际工作中经常接触的,所以也算是我的一些经验吧,不过我也不是每个部分都接触得很深入,总是有些地方讲得不太好的,也请大家谅解,希望大家能提出宝贵经验,呵呵。

  下面是之前讲过部分的链接(点击就可以访问),如果之前没看过我的文章的话,有空可以看看。

  1、【浅谈在软件开发中的开发与测试】

  2、【敏捷测试理论以及实践】

  3、【谈软件开发过程管理系统、版本控制系统及它们之间的集成】

  4、【文档管理】

  但是软件工程中除了我已经讲过的部分,其实还有几个部分还没讲了,因为我们公司是用 TechExcel 的 DevSuite 系统的,所以还是借用他们的软件工程过程图来给大家讲一下。

  看下图,之前讲了知识管理(文档管理),测试管理,开发管理(任务跟踪),PPM,这篇文章的话,我会讲一下需求管理,至于其它几个部分,比如项目规划管理,我还在考虑之中,因为有些知识在前面几篇文章里已经部分提到了,所以讲起来可能就重复了。Anyway,先不管了,反正我这篇“需求管理”还是会正常写下去,谢谢大家阅读!

PPM

编辑本段十三、PPM项目组合管理

  PMI对组合管理的定义为“Project Portfolio management refers to the selection and support of projects or program investments. These investments in projects and programs are guided by the organization’s strategic plan and available resources .”,即项目组合管理是指在可利用的资源和企业战略计划的指导下,进行多个项目或项目群投资的选择和支持。项目组合管理是通过项目评价选择、多项目组合优化,确保项目符合企业的战略目标,从而实现企业收益最大化。

  项目和项目组合管理(PPM)是项目型组织创新的系统化管理理论和实践,过去项目管理的理论和工具都是基于单个项目管理的,解决的问题是项目如何使干系人满意,如何按时、在预算内成功交付项目。对于组织级层面如何管理项目,例如如何使项目目标与组织的业务目标一致,如何跨项目优化利用组织的资金和资源等,一直没有很好的理论和方法的支持。组合(Portfolio)管理是金融领域的方法论,在2000年左右被引入到项目管理领域,尝试解决组织级项目管理问题。

  自2002年初开始,PPM方法论首先在产品研发管理领域取得了重大成功,并逐渐扩展到IT治理和专业服务领域。这期间,欧美出现了一批非常成功的PPM独立软件厂商。从2005年开始,国际上PPM进入整合阶段,IBM、CA、HP、Microsoft、Oracle、蓝云软件等国际知名IT企业陆续通过收购进入PPM领域。PPM是未来项目型组织,尤其是IT组织管理优化的方向,这一点已成为业界共识。著名研究机构Forrester Research指出:“PPM已经成为IT企业的ERP”。

  什么是软件需求呢?为什么它需要管理呢?

  软件需求完全严格来解释就是:

  (1)用户解决问题或达到目标所需条件或权能(Capability)。

  (2)系统或系统部件要满足合同、标准、规范或其它正式规定文档所需具有的条件或权能。

  (3)一种反映上面(1)或(2)所述条件或权能的文档说明

  也许看起来有点深奥,其实简单来说,软件需求就是一个软件要实现的功能,当然这里所谓的“功能”可能分为两种情况,一种是有形的,一种是无形的:

  ● “有形”的应该很好理解,你实际可以用到的功能,比如在Word文档里能把字加粗。

  ● “无形”的其实也好理解,虽然你平常用不到,但是还是能感受到的,比如说软件的运行速度,稳定性,还有比如这个软件要达到什么目的(比如Word的目的是可以让你处理文字信息)。

  当然,其实最终所有“无形”的需求还是需要靠一个个的“有形”的需求来实现,只是有些“有形“的需求即使实现了客户也无法直接看到,只有设计、开发与测试才能看到它们。

  那为什么要对需求进行管理呢?

  软件需求是随着计算机的发展而发展的,在计算机发展早期,软件规模很小,所以当时大家关注的是编码,而对于需求并不怎么关注,后来随着“软件危机”的出现,诞生了软件工程,而需求阶段就是其第一阶段,至此,软件需求(也称之为需求分析)阶段开始慢慢被关注。

  大家都知道,“软件危机”的原因是落后的软件生产方式无法满足迅速增长的计算机软件需求,软件系统的规模越来越大,复杂程度越来越高,软件可靠性问题也越来越突出,原来的个人设计、个人使用的方式不再能满足要求,迫切需要改变软件生产方式,提高软件生产率,软件危机开始爆发。

  而软件需求分析阶段作为软件工程的第一阶段,需要为一个软件的开发搭好最初的框架并且还要考虑好后面可能的修改,所以对于软件可靠性、易用性、可扩展性和可维护性来说,需求分析阶段是及其重要的,直接关系到一个软件是否能够成功。

  如果一个产品在需求分析阶段没有被设计好的话,在以后的各个阶段,开发与维护的成本就会非常高,导致最后失败的可能性就会非常大,著名的例子比如微软的Vista,设计初期没有考虑好兼容性与硬件,导致发布以后发现与其他软件的兼容性很差,而且硬件要求又很高,很多客户不买他们的账,所以最后匆匆收场,赶紧推出Windows 7来,要知道Vista的开发成本估计要接近百亿美金了,都还没怎么赚钱就赶紧推出另外一个产品,足见其失败了。

  所以软件需求分析阶段对于软件工程而言,已经成为至关重要的阶段,其实按照我的理解,它已经成为软件工程最重要的阶段,记住,不是之一。(当然,我这里说的需求分析阶段是包含软件的设计阶段的)

  一个软件的成功与否,在需求分析与设计阶段已经可以基本上预见了,因为需求分析与设计阶段从概念上其实已经把这个产品做出来了,而之后的编码阶段只是去实现它,让产品能真正可以去用。那这个“实现”阶段其实相对来说就不会那么重要了,所以现在很多跨国公司只在总部保留设计部门,研发部门都外包出去,就是这个原因。 “苹果”就是这样一个公司,把需求分析与设计工作做好,让台湾人去把产品做出来,最后得到一个完美的产品。

  既然软件需求阶段已经变成如此重要,那对它的管理也就相应的变得特别重要了,只有把需求设计做好了,产品才有可能成功,所以我们就需要对这个阶段进行有效的管理,而且是非常有效的管理!

本文出自seven的测试人生公众号最新内容请见作者的GitHub页:http://qaseven.github.io/

如何有效实现软件的需求管理(1)相关推荐

  1. 如何有效实现软件的需求管理 - 7

    [本篇为<如何有效实现软件的需求管理>第七篇,(第一篇,第二篇,第三篇,第四篇,第五篇,第六篇,第七篇,第八篇)] 在我们公司,获取了一个需求以后, 首先,相关人员会先在DevSpec建立 ...

  2. 如何有效实现软件的需求管理 - 1

    [本篇为<如何有效实现软件的需求管理>第一篇,(第一篇,第二篇,第三篇,第四篇,第五篇,第六篇,第七篇,第八篇)] 前言:   开始在CSDN写博已经有差不多三个月了,主要是把我这几年在软 ...

  3. 如何有效实现软件的需求管理 - 5

    [本篇为<如何有效实现软件的需求管理>第五篇,(第一篇,第二篇,第三篇,第四篇,第五篇,第六篇,第七篇,第八篇)] 好了,上面把需求处理过程的四个阶段简单介绍了一下,后面结合我们公司流程时 ...

  4. 如何有效实现软件的需求管理 - 3

    [本篇为<如何有效实现软件的需求管理>第三篇,(第一篇,第二篇,第三篇,第四篇,第五篇,第六篇,第七篇,第八篇)] 我们先看下面一个简单的软件开发中的流程图,大家可以看到需求阶段主要是由这 ...

  5. 如何有效实现软件的需求管理 - 2

    [本篇为<如何有效实现软件的需求管理>第二篇,(第一篇,第二篇,第三篇,第四篇,第五篇,第六篇,第七篇,第八篇)] 什么是软件需求呢?为什么它需要管理呢? 软件需求完全严格来解释就是: ( ...

  6. 如何有效实现软件的需求管理 - 8 (全文完)

    [本篇为<如何有效实现软件的需求管理>第八篇,(第一篇,第二篇,第三篇,第四篇,第五篇,第六篇,第七篇,第八篇)] 版本控制:   在我们公司的实际需求管理中,需求的版本控制用的地方非常多 ...

  7. 如何有效实现软件的需求管理 - 6

    [本篇为<如何有效实现软件的需求管理>第六篇,(第一篇,第二篇,第三篇,第四篇,第五篇,第六篇,第七篇,第八篇)] 需求分析阶段完了以后,就是需求设计,然后就是需求实现了,过程看起来很简单 ...

  8. 如何有效实现软件的需求管理 - 4

    [本篇为<如何有效实现软件的需求管理>第四篇,(第一篇,第二篇,第三篇,第四篇,第五篇,第六篇,第七篇,第八篇)] 第二阶段:需求分析与设计(怎么去做) 既然需求已经获取了,也就是说客户已 ...

  9. 如何有效实现软件的需求管理(6)

    在我们公司,获取了一个需求以后, 首先,相关人员会先在DevSpec建立一个条目,添加相应的一些属性信息,比如标题,内容描述,状态,对应文档,优先级,紧急程度,负责人,对应版本,对应浏览器,对应数据库 ...

最新文章

  1. 快速排序(快排)--->注释超详细
  2. bzoj2054 疯狂的馒头
  3. 云炬Android开发笔记 9主界面-通用底部导航设计与一键式封装
  4. SecureCRT突然假死的问题(Ctrl+S)
  5. 嵌入式根文件系统制作
  6. Lintcode--2(56)--两数之和
  7. lingo逻辑运算符
  8. ibm服务器更换主板怎么恢复系统,记号一次更换IBM X3650M4主板后RAID无法启动的解决...
  9. 模型加速——卷积通道裁剪的学习笔记
  10. 新浪微博放开140字限制:社交向左 原创向右
  11. Django模块学习- django-pagination
  12. 直击前沿技术:云原生应用低代码开发平台实践
  13. 金色圣诞幻灯片AE模板
  14. 博思英语计算机考试,博思英语考试经验及答题技巧
  15. GitHub 标星 15.3k,Java 编程思想最新中文版
  16. Leetcode---1818绝对差值和
  17. matlab 对角线相加,求和、转置和对角线 - MATLAB 系统中文帮助手册
  18. 易知大学“大数据挖掘与分析(Python)”免费学习平台
  19. 为什么docker的端口映射需要开启ip转发功能?
  20. Android开发之控制手机振动(Vibrator的使用)

热门文章

  1. UC:我们是怎么做出 Chromium M35 内核浏览器
  2. MJRefresh的使用
  3. 四:Cocos2d-x设计思想
  4. C# 串口操作系列(4) -- 协议篇,文本协议数据解析 .
  5. Windows Installer 3.1
  6. ERP项目实施记录08
  7. 基于Spring的包含特定注解bean的package扫描工具
  8. Erlang 基础学习笔记
  9. 《IT项目管理那些事儿》——CSDN蒋涛序
  10. screenX,clientX,pageX,offsetX,的区别