第一章:需求概述

       已完成的软件通常伴有各种各样的问题,一部分是因为软件开发与维护的方法问题,但是没有对用户的需求进行正确的分析也是软件开发失败的主要原因之一,Standish集团总结的十大成功保证之中,有三个是直接与需求挂钩的,权重高达37.1%,而十大失败因素中与需求相关的更是高达5个,权重比51.6%,由此可见需求分析在软件开发中的重要性。

       不同的软件项目根据其特点都有不同的分析方法,拿信息系统来说,它是人、数据、过程和接口的结合,它们之间相互作用,支持并改进企业的日常动作,并支持管理人员和用户解决问题和做出决策。主要包含以下几个要素:1、支持企业日常动作

                                2、支持解决问题  

                                3、支持决策。

       在信息工程框架中包含联机事务处理系统、管理信息系统、主管信息系统、决策支持系统、专家系统、办公自动化的主要类型,其中各类信息系统的关系又可分为以下几种:联机事务处理系统是数据的生产者、管理信息系统是数据的消费者、主管信息系统、决策支持信息是数据的高级消费者、专家系统是个人知识的沉淀 同时也是数据的消费者、办公自动化系统是沟通与协作的直接支持。                                 


 

一、软件需求分析有几个基本的问题

1、需求是谁的需求

2、怎样获取需求

3、怎样真正理解和描述需求

4、需求是不断发生变化的

 

我对这几个基本问题的理解:  

1、首先需求是客户的需求,这一点毫无疑问

2、从客户方面获取需求需要对业务背景有大体上的理解,然后与客户进行沟通,获取客户的需求

3、对客户需求的理解是项目中极为重要的一部,他决定的项目的成功与否,我认为想要真正理解需求就需要与用户进行良好的沟通,因为口头传递信息可能发生的失误例如我就曾经在晚上看到一个驳论说文字的顺序并不会影响人对文字的阅读,下面给了一段许多文字顺序发生了错乱的文字,但是我们依旧可以读懂文字,这是为什么呢?为什么明明是错乱的文字却依旧没有影响我们的阅读呢?这是因为我们在这段文字上加入了自己的理解,因此可以阅读文字错乱的一段话。获取客户需求也是这样,我们通常会下意识的对用户的需求加入自己的理解,因此可能对用户需求的理解有些许变差,所以我们需要不断的与客户进行确认以及复述等来保证真正的理解客户的需求。而想要真正的做出一个优秀的需求描述,需要具备完整性、正确性、无歧义性、可行性、有优先级、必要性、可验证性等等,为正确描述 需求可将需求写成需求文档,并适当采取形式化描述,例如UML等。

4、需求为什么会发生变化?产品应用越多,用户对应用的理解也就越多,需求也就会随之发生变化,同时当产品成型后,用户也会对其中的不足之处要求进行更改,但并不能以此性将所有的不足之处指出,因此需求是不断发生变化的。


 

二、需求的层次和分类

1)、软件需求包括三个不同的层次1、业务需求

                                                                                2、用户需求

                                                                                3、功能需求

 

我对这三个需求层次的理解以及一些举例:

1、 业务需求:从宏观上描述需求,它代表了需求链中最高层的抽象,它为软件系统定义了项目视图和范围,反应了企业或组织对软件系统的高层次目标要求,它是彻底从业务角度描述的,是指导软件开发的高层需求。这个目标通常体现在问题与机会两个方面,它追求可行性和利益的最大化。

例:如何引导用户使用,如何盈利,如何推广运营,这些都属于微信的业务需求。

2、 用户需求:用户需求是指描述的是用户使用软件需要完成什么任务、怎么完成的需求,简单的来说就是用户需求是需求捕获的产物,它具备零散、存在矛盾等几个方面的特点,因此需要对用户需求(原始需求)进行分析整理,从而整理出更加精确的需求说明。

例:微信中中用户希望可以个性化设定自己的头像,于是上传用户头像是一定要满足的用户需求之一。

作为卖家,你用淘宝怎么收款,发货,管理订单,这也是用户需求

3、功能需求:功能需求需要对用户需求进行分析、提炼、整理,它是对用户需求的一个延续因为用户需求具有零散、存在矛盾的特点。功能需求是需求分析与建模的产物,这能生成指导开发的、更精确的软件需求

:上传头像的用户需求,图片格式有很多种,但上传的头像一定只能是有限的某几种格式,所以,只能上传XXX格式的图片作为头像属于功能需求

微信好友数量上限

电脑qq消息同时闪烁等等都属于功能需求

 

2)、软件需求的分类:

              1、功能需求

              2、非功能需求

              3、设计约束  

 

我对这三类软件需求的理解及举例:

1、功能需求:开发人员必须实现的软件功能,使得用户能完成他们的任务,从而满足业务需求

例:微信发送信息的功能,淘宝下单的功能,加入购物车的功能,图书馆系统查询图书的功能等等。

2、非功能性需求:它描述了系统展现给用户的行为和执行的操作等。

例:微信发送的消息对方是否回复,网上购物何时到达等等。

3、设计约束:开发人员在软件产品设计和构造上的限制,产品必须遵从的标准,规范和合约。

例:必须采用什么样的数据库系统,系统开发必须使用什么技术等             


 

 三、需求分析与其他软件项目过程的关系

需求阶段在系统开发的整个生命周期中处于最基础、最重要的位置。

posted @ 2018-03-16 21:36  yang19961111  阅读(650)  评论(0编辑  收藏  举报