需求决定了软件做什么,要提供什么功能。
软件工程初期的一般过程是,软件开发的计划,确定要实现的目标和进度等,然后就是需求规格说明书,该说明书要得到用户的认可。用户往往提供了一份要求的说明,开发人员在这个基础上进行了加工和整理。此后的开发过程,都是围绕着需求规格说明书进行进一步地细化,直至开发出产品。当然,测试计划中也要针对需求进行验证,看看是否满足了用户的要求。
一般来说,用例视图可以很好地表现需求。用例图中,若干角色actor与系统提供的用例(功能)之间的连接关系。
以下是参考《IEEE推荐的软件需求规格说明的方法(IEEE 830-1998)》的一个系统规格说明书SRS模板:
一、引言
(一) 目的
(二) 文档约定
(三) 预期的读者和阅读建议
(四) 产品的范围
(五) 参考文献
二、综合描述
(一) 产品的前景
(二) 产品的功能
(三) 用户类型和特征
(四) 运行环境
(五) 设计和实现上的限制
(六) 假设和依赖
三、外部接口需求
(一) 用户界面
(二) 硬件接口
(三) 软件接口
(四) 通信接口
四、系统特性
(一) 说明和优先级
(二) 激励/响应序列
(三) 功能需求
五、其它非功能需求
(一) 性能需求
(二) 安全设施需求
(三) 安全性需求
(四) 软件质量属性
(五) 业务规则
(六) 用户文档
六、其它需求
附录A:词汇表
附录B:分析模型
附录C:待确定问题的列表
另外,《GB9385-88计算机软件需求说明编制指南》也为软件需求实践提供了规范化的方法。
需求的问题,是一个复杂的问题
有些时候,需求的问题会变得很复杂的。尤其是在做行业软件或者ERP的时候,你遇到不同的客户,每个客户都有他的想法或要求,而且有些客户没有明确的思路,有些则有他们很固执的思路,一时间仿佛需求是没完没了的。或许你的软件已经是一个产品,那么究竟对什么功能进行取舍,对什么功能要增加进软件的核心,对什么功能采用二次开发,都是需要仔细判断的事情。
1、需求的重复和变更
对于比较大的系统,客户不可能一次性地把需求完全提清楚。这是必须容忍的。只要你不断沟通和了解,用户需求就会不断增加。有些公司采用的方法是在需求规格说明书上让客户签字,然后严格按照该说明书来实现。如果以后客户有新的要求,则要另外考虑。但在另一方面,客户永远是上帝 ,一个软件的成功,应该是用户用得非常流畅和满意。
2、有些需求无法实现
和客户的沟通也很重要。什么是必须满足的需求,而另外一些需求可能暂时不能提供实现,这也需要解释清楚。
3、实现的功能和客户原来提出的需求会有所差别
很多软件的问题最后总结下来是因为需求没有明确。开发人员没有认准客户究竟需要什么。这时候只能修改软件。
需求的问题,是一个技术的问题
每个需求的特性可体现在很多方面:如优先级、有效性,效率,灵活性,完整性,互操作性,可靠性,健壮性,可用性;可维护性,可移植性,可重用性,可测试性等。
确定需求优先级:可以粗略地分为三级:
高一个关键任务的需求,必须在此版本实现;只有在这些需求上达成一致意见,软件才会被接受;必须完美地实现
中支持必要的系统操作,最终所要求的,但如果有必要,可以延迟到下一版本;实现这些需求将增强产品的性能,但如果忽略这些需求,产品也是可以被接受的;需要付出努力,但不必做得太完美
低功能或质量上的增强,如果资源允许的话,实现这些需求会使产品更完美;实现或不实现均可;可以包含缺陷
更精确的优先级设定如下表:
权值11 1 1
需求收益代价价值价值%成本成本%风险风险%优先级
<需求><1-9><1-9><><><1-9><><1-9><><>
其中各权值按实际情况而定,不能确定按1取值。
收益:实现此需求对用户的益处;
代价:未实现此需求对用户的损害;
价值=收益*收益权值+代价*代价权值
价值%=价值/(总价值)*100%
成本:实现此需求所需的各种成本;
成本%=成本/(总成本)*100%
风险:实现此需求所承担的风险,特别是技术上的;
风险%=风险/(总风险)*100%
优先级=价值%/(成本%*成本权值+风险%*风险权值)
最后按需求优先级排序,优先实现高优先级的需求。
风险的控制和避免:
对需求将可能面临的风险要有充分的估计并尽量避免风险的发生及其所造成的损失。建立风险跟踪 ,保持对危害最大的几项风险的控制,并在开发过程中周期性地更新风险跟踪项目。
需求的问题,是一个管理的问题
需求取得:市场销售部门、技术支持或客户服务所得到的需求,或者开发人员内部通过对业务的分析归纳得出的一些要改进的功能。
对需求进行管理的环节应该尽可能精简。最好直接由系统分析来做。经过很多环节的筛选,需求可能已经走样了。纸面上只有一两句话的需求,背后有你看不到的真正想法存在。 所以应该主动走出去寻找需求,应该选择最典型的客户进行访问。领会他们的管理思路和改革方向。
需求决策:对于相互矛盾的需求,在同类用户中由产品代表决策;对于不同类用户要根据重要性作适当折衷;对于用户的特别喜好要根据用户的重要性决定;用户中领导的需求要服从最终实际使用的用户需求;当开发者想象中的产品通常要服从用户的需求,但并不表示用户总是对的。
需求分析:分析需求的各个特性,制作出需求分析规格说明书。
需求评审:由相关人员共同对需求进行评审。
需求变更:如果遇到需求的变更,需要及时作出调整,即使与开发部门联系,提出变更的建议,并分析可能产生的影响,如对产品稳定性的影响。变更的需求需要严格的测试。
版本控制:确定需求文档版本,确定单个需求文档的版本;
需求跟踪:需求的跟踪记录需求的状态,包括未定义、放弃、需完善、已定义、实现中、待测试、测试中、完成、放弃实现等
需求管理工具:曾经看到过的工具有Rational Requsite Pro 4.5版。需要用Word 97支持。但对中文的支持不够好。
分享到:
相关推荐
在这个基于Node.js的分析与应用项目中,进行了一次需求评审,发现了若干问题,主要集中在规范性、完整性和格式一致性上。以下是对这些问题的详细解释和可能的解决策略。 1. **问题1(规范性)**:在1.5节的表1中,...
面向问题域的需求分析方法的主要思想是将问题域分解为多个子问题,每个子问题都是整个问题的一个投影,通过对子问题的分析,可以更好地理解问题域和问题之间的关系。 问题域的划分是面向问题域的需求分析方法的重要...
问题框架是问题域分析中的一个重要工具,它是一种模式,用于捕捉和定义常见简单子问题的类型。问题框架通常包括几个关键组成元素及其关系。例如,需求式行为问题框架关注的是如何控制客观世界的一部分以满足特定条件...
撰写优秀的需求没有一个简单的公式。很大程度上,它是从过去的需求问题中得来的教训与经验。这儿有几条当你写作软件需求时应记在心上的原则: 保持句子和段落简短。 从开发者的立场来看,检查需求陈述是否足够...
最后,一个有效的项目需求文档不仅指导开发过程,还为测试、验收和维护提供依据。因此,投入时间和精力确保需求的准确性和全面性是至关重要的。通过学习和参考“项目文档需求样本简单样本”,我们可以更好地理解和...
首先,一个有效的OA需求分析文档通常会包含以下几个部分: 1. **项目背景与目标**:这部分阐述了实施OA系统的初衷,可能包括企业的发展规划、现有工作流程的问题以及希望通过OA解决的具体问题。例如,提高协同效率...
编写需求规格说明是将分析和确认的需求转化为书面文档的过程,它需要一个清晰的模板,并且要求在项目驱动和问题描述上下功夫。需求规格说明书是需求分析阶段最重要的成果之一,它将作为软件开发的指导和依据。 高级...
但是,需求分析并不是一个简单的过程,它需要调研人员具备专业知识和良好的沟通技巧。 首先,需求调研是整个开发的基础,它的目的在于了解客户希望所要开发的系统能够解决的问题,以及了解他们对系统的期望等等。...
在数学建模中,运输问题是运筹学领域的一个经典模型,它主要应用于解决资源分配、物流调度等实际问题。这个模型假设有一批货物需要从多个产地运送到多个销地,目标是在满足供需平衡的同时,最小化运输成本。在这个...
- **搭建实验环境**:根据需求创建一个模拟的实际应用场景,用于测试和验证需求方案。 - **分阶段实施**:将整个项目分为多个小阶段,逐步推进并评估每个阶段的效果。 - **持续迭代改进**:基于实践中的反馈不断调整...
一个花瓶的价格是5 元。为了吸引顾客,商店提供了一组优惠商品价。优惠商品是把一种或多种商品分成一组,并降价销售。例如,3 朵花的价格不是6 元而是5 元。2 个花瓶加1 朵花的优惠价是10 元。设计一个算法,计算出...
这一定义强调了需求是从用户的角度出发,旨在解决实际问题或达成特定目标。 2. **系统或系统部件要满足合同、标准、规范或其它正式规定文档所需的条件或能力**。这一定义侧重于技术层面,确保软件开发遵循相关的标准...
对于多部电梯集中调度系统的开发,一个清晰、完整的需求规格说明书能够确保各个开发阶段的顺利进行,避免因需求不明确导致的返工和延误。在后续的修订中,应注重规范性、详尽性和可读性,以满足高质量软件开发的要求...
需求调研报告不仅是一个简单的文档,它还是理解用户实际需求、为用户提供可行解决方案的基础。接下来,我们将从多个方面详细阐述如何做好需求调研报告。 首先,需求调研报告是为需求说明书做前期准备工作的,它需要...
LINGO 是一个简易的优化问题解决工具,用于解决线性和非线性优化问题。LINGO 内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用 LINGO 高效的求解器可快速求解并分析结果。 知识点: 1. LINGO 是一...
用户故事的作用有两个,一个是作为进度跟踪的依据,一个是作为与人交谈的备忘录。用户故事卡片并不是很精确的需求,因此不需要把事情描述的非常清楚。将需求的详细分析推迟到实现前夕来完成,这是敏捷需求分析的精华...
在软件工程领域中,需求的定义、收集、分析、文档化及管理过程是一个复杂的任务,它直接关系到软件项目的成功与否。掌握需求过程是确保项目能够准确反映最终用户需求并成功交付的关键环节。 首先,需求可以简单理解...
reqheap是一个专为Linux环境设计的开源需求管理工具,旨在帮助团队高效地进行需求收集、组织、跟踪和管理。这个工具不仅限于需求管理,还包含了测试用例管理和bug管理功能,从而实现了一站式的项目管理体验。 **一...
需求获取是一个确定和理解不同的项目干系人的需求和约束过程,当今主流的需求获取技术有用户访谈、问卷调查、现场观摩、联合需求计划等。用户访谈是挑选有代表性的用户,去了解其主观想法,优点在于它的交互性较好,...
下面将详细阐述需求分析的六个原则,这些都是确保项目成功的关键要素。 **原则一:永远不要显得比客户更聪明** 在与客户交流时,产品经理应保持谦逊,充分理解和尊重客户的专业知识。即使在某些领域客户可能不如...