软件开发中最重要的就是用户,我们必须了解用户到底需要的是什么,清楚的了解用户的的需求,所以软件的需求分析是至关重要的。如何才能做到将需求做到最完美,最清楚的了解。
一.需求分析
1.获取和引导需求
软件团队需要找到软件的利益相关者,了解和挖掘他们对软件的需求,引导他们表达出对软件的需求。有些时候用户并不知道自己确切的需求,或者不愿意表达完整的需求,软件团队需要设身处地的题用户着想,引导出需求。有些需求在实现之前,并没有用户明确表达具体的需求,但是,成功的团队还是可以从“用户需求和朋友之间玩游戏,用户有证明自己能力的需求”这些角度出发,挖掘出需求。另外,软件团队可以分析技术的发展趋势以及产业的变化,社会发展的大趋势,推测出用户会产生哪些新的需求。
需求还可以来自软件企业本身。企业所采用的商业模式还可以对软件提出需求,但是这个需求嗨必须是对用户有利的。
需求还可以来自技术团队本身,团队在考虑软件的代码,架构,所依赖平台的长期演化的时候,会对技术行的要求,架构的演化,平台的变化,或者引入新的技术。
2.分析和定义需求
这是从各个方面获取的需求进行规整定义需求的内涵从各个角度将需求量化,实现需求大致所需的时间和资源成本,各个不同需求的优先级需求带来的利益
3.验证需求
软件团队需要跟利益相关者沟通,通过分析报告技术原型用户调查火焰石等形式向他们验证软件团队与这些需求的认知
4.软件产品的周期中管理需求
在软件生命周期中,需求在发生变化,技术在发展,团队成员的能力也在提高,原来认为重要的事情,可能不在重要,有些功能原来技术上很难实现,现在出现了捷径,一些相关的法规会发生变化,外部的合作伙伴突然发生变化,这些都是我们不断对需求进行重新审核并作出相应的调整。
二.需求分析的划分
1.对产品功能性的需求
要求产品必须实现某些功能,
2.对产品开发过程的需求
要求软件开发流程必须满足某些约束条件,例如,开发过程中必须产生某种类型的文档,必须在某个时间点达到某个状态,必须对源代码施以某种约束,(安全性检查,代码版权核查,代码规范,和支持文档的核查)
3.非功能性需求
又叫服务质量需求
4.综合需求
有些需求并不是单单一个软件模块就能满足
三.竞争需求分析的框架
1.N(Need,需求)
你的创意解决了用户什么需求,这个需求可以使明确的,公开的,我们要了解用户的痛苦,他们对已有软件,服务不满意的地方
2.B(Benefit,好处)
你的产品给用户带来什么好处,如果用户花费大量时间精力金钱才能得到你的产品的好处,那么谁又会是用你的软件
3.C(Competions,竞争)
你的产品是否有竞争对手,你在你的竞争对手面前是否具有足够的优势让用户来选择你的产品,我们做竞争需求的目的就是清楚的看到我们的优势和劣势
4.A(Approach,做法)
我们使用什么来解决用户的需求呢?算法,java,还是数据处理,还是人脉关系,种种我们能使用的一切资源我们都要使用上。
5.D(Delibery,推广)
东西做好了,那么怎样才能让用户使用你的东西呢?就是推广。
以上就是我对软件需求的理解。