zoukankan      html  css  js  c++  java
  • 阅读博客——我们应当怎样做需求分析? ------阅读笔记

                                                                                        我们应当怎样做需求分析

    -- 张生辉

       需求分析是我们软件设计的一大重点,在需求分析的学习之中,我们应当掌握很多内容,经过阅读前辈的经验之谈。在文章中处处都会显现出一个特别突出的重点,就是面对不同的人群必须采用不同的出发点,不同的沟通方式,不同的需求分析方式。比如在高阶层,就是不需要注重细节。他们一般只会注重宏观。在面对中阶层。我们就必须注重其中的中间连接。在面对低阶层。我们就必须要想到操作的简单,或者是容易理解的操作方式。方便快捷。而且在与客户沟通的过程中。交流能力十分重要,在交流中既要显得谦恭。又要不失去自己的主动权。不会被客户牵着走。需求分析中还有很多需要注意的内容下面我将逐一来总结。

      拜访,在与客户约定的见面会中,能够有良好的表现。并且在客户面前树立职业威信。与西方人不同,在我国我们应该是在在培养感情的前提下去进行协商,软件供应商与客户建立的是长期共赢的战略协作关系,这更需要我们与客户建立长期友好的关系。分析一个客户人群的关系,就是在分析这个人群中,谁有意愿支持我们,而谁却在自觉不自觉地阻碍我们。那些通过这个项目可以提高政绩,提高自身价值的人,都是我们可以争取的盟友。他们是我们最可以依赖的人,我们一定要与他们站在一起,荣辱与共,建立战略合作伙伴关系。

      研讨会,由于业务人员自身的局限,不可能对所有业务领域的细节全面掌握,往往总是有自己熟悉的部分,也有自己不熟悉的部分。划分业务组,可以让业务人员分别在自己最熟悉的业务范围内参与讨论,可以有效提高业务讨论的质量。同时,一个管理系统涉及的业务是复杂而系统的,如果划分成多个模块并行地进行业务讨论,也可以大大提高业务研讨的工作效率。这个项目采用这种方式,使这个项目在运行数年后依然能保持统一的版本,而不至于形成一个一个的地方版本。统一的版本使得软件的升级维护成本大大降低,使项目进入良性的进化、完善的循环中。

      需求研讨,客户存在的最大问题就是提不出正确的需求,这表现为几种形式:

    1. 由于对软件不了解,客户提不出需求,不知道软件最终会做成什么样子。这类客户在需求讨论过程中,往往只能描述目前自己手工管理的方式是怎样的,不知道计算机会怎样管理。

    2. 能提出一些业务需求,但当软件做出来摆在自己面前时,需求就变了。这类客户,他们能熟练使用电脑,对信息化管理是清楚的。他们提出的业务需求从整体上应当是八九不离十的。但是,由于没有实物,在软件中的一些具体操作并没有完全想清楚。因此,当软件真正做出来摆在自己面前时,甚至经过一系列流程操作以后,会对一些操作提出变更需求。他们正如那句经典的话说的:“I have changed when it saw it.”

    3. 能非常详细地提出业务需求,甚至有时候该怎么做的提出来了。这类客户,参与过很多软件信息化建设,甚至有些还是软件开发的半专业人士。但是他们提出的业务需求过于具体,甚至怎样实现都说出来了,但这些有时候不是最佳设计方案、可能在技术上难于实现,甚至有些就是过于理想化而不可实现。

    所以在需求分析方面,不仅仅只是他说什么我们记下来什么。而是能够听懂理解他的需求,并且考虑软件设计可行性。这样才能保证需求的准确性。

      迭代,就是在客户提出需求并且经过开发小组进行一系列讨论研究总结之后再进行汇总讲给客户听。之后再由客户对内容进行深入纠正。然后在进行一遍又一遍的这个程序过程,最后离得目标要求越来越靠近。

      需求捕获,就是在客户进行需求的提出的时候能够不仅听出客户所提出的要求。也要从客户的角度出发决定一些人性化的功能进行完善,。考虑必须要周到。

      功能角色分析与用例图,所谓功能角色分析,就是从一个外部用户的视角分析整个软件系统能够提供的功能,以及这些功能到底是提供给哪些角色使用。一般地,在一个用例图中通常有三种元素:参与者(Actor)、用例(Use Case)与系统边界(Boundary)。用例描述的是系统为用户提供的功能,也就是系统能为用户做什么,通常被绘制成一个椭圆;参与者,我认为称为角色更加合适,也就是系统为哪些类型的用户提供服务,他们都各自承担哪些不同的职责,通常被绘制成一个小人儿;最后是系统边界,也就是系统是对现实世界哪个范围的内容进行的模拟,它涉及到软件设计的工作范围与工作量,通常被绘制成一个方框。但是,通常情况下系统边界只是一个概念而不用真正绘制出来,因为被绘制成用例的必然是系统内部的功能,被绘制成参与者的必然是系统外部事物。从这个意义上讲,用例图中的参与者不仅包括人,还包括那些外部系统和自动触发器。根据这样一个思路,我以往常常将外部系统和自动触发器绘制成一个小人,这常常令客户感到困惑。随后我改变了思路,将外部系统和自动触发器绘制成另一种表达形式——类元符号表示法,并在构造型上标注为Actor。

    业务流程分析,1. 高层领导通过信访、举报、数据查询分析等方式发现一批问题;
    2. 将这批问题制作成一个调查清册;
    3. 自查或将清册下派给下级去调查;
    4. 下到基层执行调查;
    5. 从基层回到自己的单位,填写调查工作底稿,详细描述调查情况,并结束调查工作。

    然后,在对原始需求分析的基础上,分析我们的软件能做什么事:
    第一步:信访和举报虽然有自己的操作流程,但那些都在这个系统之外,在这个系统中仅仅只需录入最后的结果。数据查询分析过去只是业务人员在相关业务系统中根据自己的经验执行各种查询,现在则可以上一套数据采集和分析系统,提高数据分析的质量。
    第二步:形成调查清册,可以在系统中设计一个功能实现。
    第三步:自查或下派,可以在系统中设计一个流程实现。
    第四步:下到基层执行调查,由于网络条件等因素的限制,业务人员不可能也不必要在系统中去完成调查,只需要执行一个标志调查工作开始的操作,并打印或导出调查清册,然后去基层调查。最终,这部分被设计成一个“开始实地核查”的操作,并提供打印导出功能。
    第五步:调查人员从基层回到自己的单位都是系统外的事情,而填写调查工作底稿,详细描述调查情况,并结束调查工作,则是系统内的功能。最终,这部分被设计成一个“调查完结”功能,标志调查工作结束,并提供工作底稿的填写功能。

  • 相关阅读:
    Ajax数据爬取
    数据存储之非关系型数据库存储----MongoDB存储(Python操作)
    数据存储之关系型数据库存储---MySQL存储(Python操作)
    数据存储之文件存储
    使用pyquery
    使用Beautiful Soup
    使用XPath
    正则表达式和python中的re模块
    Android优化之ViewPager的懒加载
    开源框架Slidingmenu的基本使用
  • 原文地址:https://www.cnblogs.com/shenghuizhang/p/7643185.html
Copyright © 2011-2022 走看看