(一)需求的作用
我们平时用的软件究竟有什么作用呢?
1、起到了控制作用,如遥控系统
2、集成其他的软件硬件,形成一个综合性的系统,起到耦合作用
3、实现该软件本身具有的功能
认识软件的这样一个作用,以及怎么去捕获软件的这样一个需求呢?
所谓系统工程,是指从一定的问题 来出发,希望呢给出,分析出它诸多的解决方案,最终给出最优解。 也就是说,最优化是系统工程追求的一个目标,这是与我们软件工程中相当于 最大的这样的一个区别
注:所以说第一步是要研究这个软件所处于的系统环境。 第二点看一下 这样的软件需求,又可以如何去对它进行进一步的细化。
自顶向下开发:
类似瀑布模型,先需求,再分析设计,再编码、测试、维护等,按照这一套流程走下来
自底向上开发:
先考虑可以复用哪些成熟的软件构件,根据构件能提供的功能, 往上去堆积。最终把新开发出来的软件单元,跟已有可复用的软件构件集成在一起, 构成满足目标软件系统。
总之,需求很重要,它是指方向的,如果方向都错了,做的任何努力都白费
(二)需求的定义
描述了待开发产品或者系统功能上的能力,性能参数或其他的性质。
不光是功能的描述
所以说,并不是看到一段话的描述它就是作为需求。要从这几点来检验,看符不符合这个五个性质。
(三)需求的分类
其中,功能需求是主体,其他几个都是非功能需求
功能:
性能需求:
如:并发响应数
外部接口需求:
如:第三方插件
可以理解为,交互数据时,数据的参数个数和类型要与接口相符合
设计约束:
如:运行平台
质量属性:
质量属性规定了软件产品必须具有的一个 性质是否达到质量方面一个所期望的水平
(四)需求的发现
自悟:
自悟 是指把自己作为系统的最终用户,来审视这个系统并提出问题。
一般情况下你就要把自己放在一个用户的角度去考虑问题,如果我是这样一个用户, 那么我借鉴于以前使用过的经验以及我能查询的一些资料,想象这样的一个系统应该提供什么样的功能?
它适用的条件是指需求工程师不能直接与用户进行交流的情况
交谈:
能很好地提出问题
如果直接问客户 "你想要什么",客户可能会漫无天际地告诉你 说 "我想要什么,想要什么,想要什么"。 这就要求,要做一些相关领域的知识储备,可以给用户一些选择,叫用户选择,而不是让用户漫无边际地回答。
观察:
小组会:
提炼:
已经有了些可复用的文档,比如说有关需求的陈述,功能和性能目标的陈述(可能来自于其他类似的项目, 也可能来自其他地方),那么这个时候就可以采用提炼的方式 来从可复用的这样的一些技术文档里面 来针对已有的部分需求文档来提取出需要的东西。
总之,上述技巧要综合、灵活地运用。