一种软件开发的需求优先级评估算法

软件项目一般经过需求分析、概要设计、详细设计、软件开发、测试与部署、培训与维护等阶段,其中需求分析阶段,项目经理在面对诸多收集来的需求如何确定哪些做哪些不做,哪些先做哪些放在项目二期去做?笔者认为应该根据需求的可行性、重要性、工作量进行量化评估,业务、开发、生产、维护等相关部门都参与评估,确定需求优先级,按优先级分批次迭代开发,做到公开、合理,为保障成果及时交付奠定基础。

那么如何根据需求的可行性、重要性、工作量确定需求的优先级指标呢?笔者给出以下具体算法:

  1. 可行性:1=可实现;0=无法实现
  2. 重要性:1=很重要,如关系数据正确性、安全性,产品无法正常使用,影响多数客户、重要客户和市场;5=一般性需求,值得做但不着急;10=少数派需求,锦上添花型需求
  3. 工作量(含设计+编码+测试+培训):1=1周之内完成;2=1~2周完成;3=2~3周完成,以此类推
  4. 优先级=可行性*重要性*工作量

以上计算出的优先级中,结果为0表示忽略此项需求,结果1为最高优先级。量化评估虽然不能完全摆脱主观认为因素,但毕竟向客观决策迈进了一步,实际工作中以上具体数值可以根据情况调整,还可加入资金投入等因素,进一步完善优先级指标的评估。

时间: 2024-11-02 23:39:21

一种软件开发的需求优先级评估算法的相关文章

10种软件开发中 over-engineering 的错误套路

别把「不要过度使用 Generic」误解成「不用 Generic」.也别把「不要写一些不必要的 Wrapper」误解成「不写不论什么 Wrapper」.我仅仅是在讲 over-engineering 这个事.仅仅是在提倡不搞野路子编程. 套路1:攻城狮自觉得比业务人员聪明 攻城狮认为自己最聪明,由于东西是他们写出来的嘛! 然而这常常就是 over-engineering 的根源. 即使我们考虑好100件事情.还是会有第101件我们没想到的事情冒出来. 就算我们搞定了1000个问题,还是会带出10

2019-3-26列出几种软件开发中常见的设计模式并解释

设计模式主要分三个类型:创建型.结构型和行为型. 其中创建型有: 一.Singleton,单例模式:保证一个类只有一个实例,并提供一个访问它的全局访问点 二.Abstract Factory,抽象工厂:提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们的具体类. 三.Factory Method,工厂方法:定义一个用于创建对象的接口,让子类决定实例化哪一个类,Factory Method使一个类的实例化延迟到了子类. 四.Builder,建造模式:将一个复杂对象的构建与他的表示相分离,使

软件开发流程(转载)

软件开发流程 迭代化软件开发技术 1. 传统开发流程的问题 传统的 软件开发流程是一个文档驱动的流程,它将整个软件开发过程划分为顺序相接的几个阶段,每一个阶段都必需完毕所有规定的任务(文档)后才可以进入下一个阶段. 如必须完毕所有的系统需求规格说明书之后才可以进入概要设计阶段,编码必需在系统设计完毕之后才可以进行.这就意味着仅仅有当所有的系统模块所有开发完毕之 后,我们才进行系统集成,对于一个由上百个模块组的复杂系统来说,这是一个很艰巨而漫长的工作. 随着我们所开发的软件项目越来越复杂,传统的瀑

软件开发模式

软件的开发无非是这样几个环节 需求分析.设计.编码.集成.测试.维护 所有的开发模式都是在此基础上的变化 1.传统的瀑布式开发 由W.W.Royce在1970年最初提出的软件开发模型 典型特征是每个步骤都按照100%的进度来往下进行,不适应过程中的变化.要求每个环节做到完美,因此这种开发模式是效率最低,后期变化情况下基本上不可行. 2.迭代式开发    是一种与传统的瀑布式开发相反的软件开发过程,它弥补了传统开发方式中的一些弱点,具有更高的成功率和生产率. 实际上是一种主体开发,然后在此基础上完

敏捷软件开发简述

前言:由于我读了邹欣老师的<构建之法:现代软件工程(第二版)>,因此对敏捷软件开发有了比较大的兴趣.于是我在网上找了一些论文,比如Requirements Engineering and Agile Software Development.A decade of agile methodologies: Towards explaining agile software development.在读了这些论文之后,对敏捷软件开发有了大致的了解.这篇博文主要是简单介绍敏捷软件开发,重点集中在主

软件工程:传统软件工程 vs 敏捷软件开发

前言 软件工程(Software Engineering): 是一种层次化技术. 将系统化的.规范的.可量化的方法应用于软件的开发.运行和维护,即将工程化的方法应用于软件. 研究"建立和使用一套合理的工作原则,以便经济地获得可靠的.可以在实际机器上高效运行的软件"的方法. 敏捷软件开发(Agile software development): 一种应对快速变化的需求的一种软件开发方法.基于迭代和增量开发,通过自组织,跨团队,沟通协作完成开发工作. 一.传统软件工程 (一)产生背景 随着

浅谈敏捷软件开发与传统软件工程的对比与敏捷开发产生的原因

引言 在"计算机程序的蛮荒时代",人们对于程序的设计.编写是随想随写.灵活变化的.正如我们初学各种编程语言时那样,似乎把程序写对也不是什么很难的事情.然而,这种程序设计模式或许适用于几百行至几千行的小程序,而当我们面对更大的软件规模.更多的代码行数以及更复杂的人员架构时,这种随想随写的程序开发模式似乎不再适用,于是使人们遇到了「软件危机」,进而促使了软件工程这样一门学科的产生. 在我上一门程序设计的课程的时候,老师讲过,当我们学习各种语言.算法和数据结构时,我们学习的是怎样进行&quo

敏捷软件开发与传统软件工程——因果篇

因--差异之源 近来秋将尽,京中阴霾好几日不见好转,更有几天雨水扰人心烦.幸得一日周末,又逢雨过天晴,秋高气爽,捡得几番文笔来细述敏捷软件开发与传统软件工程之异同. 从字面看来,二者无非是"敏捷"与"传统"一词之差.然而这两个词又同属修饰之词,因此就这两个词之差自然就是两种开发方法的差别所在. 敏捷一词,自然是好理解.正如众人所云如游侠身手之敏捷,为称赞游侠反映之迅速,应对变化之机敏.此处用以修饰软件开发,我们亦可套用迅速应变之意,也就是在软件开发过程中能迅速应对需

敏捷软件开发VS.传统软件工程

敏捷软件开发 VS. 传统软件工程 本文主要介绍敏捷软件开发与传统软件工程分别是什么,并讨论二者各自的优缺点. 一.传统软件工程 1.传统软件工程的由来 进入上个世纪60年代,人们开始逐渐认识到了确实存在着"软件危机" 这样一个事实.例如: ·软件生产不能满足日益增长的需要 ·软件开发成本和开发进度估计往往不准确 ·软件开发人员和用户之间信息交流不充分,用户对完成的软件满意度很低 ·软件价格昂贵,软件成本在整个计算机系统中所占的比例急剧上升,软件已成为许多计算机系统中花钱最多的项. ·