zoukankan      html  css  js  c++  java
  • 《软件需求与分析》之读后感

    《软件需求与分析》

    不想进步的码农不是好码农,码农进阶路上,软件的需求与分析绝对是重中之重。

    每一个软件都像是我们的孩子,在他逐渐茁壮成长的过程中,我们付出了无数的汗水,辛劳。

    在软件的创作中,经常会遇到各种各样的问题。换句话来说,成功的项目都是一样的,失败的项目却各有各的问题。他们有的是需求的问题,有的是客户关系的问题,投的是设计的问题,技术的问题,时间管理的问题…..但归根到底是需求的问题,需求分析既是一份体力活儿,更是一份技术活儿,它既是人际交往的艺术,又是逻辑分析与严密思考的产物。正是我们在需求分析过程存在的巨大隐患,最终导致了那么多项目的失败。

    因此,要想让我们的孩子健健康康,软件的需求与分析就一定不能忽略。

    要想学好软件的需求与分析,我们一定要学好如下几点:

    需求调研:与客户的初识

    人与人交往,往往在接触的初期就决定了相互的行为方式,与客户交往也是一样。起初的唯唯诺诺,客户说啥就是啥,必然造成客户不再关注你的意见,对你发号施令就可以了。相反,起初展现出一位技术专家的姿态,能大方而得体地提出自己的意见,会使客户重视你的意见,甚至主动征求你的意见。这一方面要求我们对自己要有足够的自信,另一方面也要有循循善诱的表达能力。如果我们做到了这些,就会客户心目中形成一种威信,使项目向着一种良性的方向前进。

    这也就是说,在乎客户相处时一定要展现出自己自信的一面,让自己的自信感染客户,让客户潜移默化中相信你对客户提出相关要求做出的相关改进。

    在与客户相处中,建立自己的职业威信。和强大的职业嗅觉能力,能通过客户的只言片语和不详细的描述中准确抓到他想要项目的关键点。

    需求调研:拜访客户

    需求调研不是一蹴而就的事情,是一件持续数月甚至数年的工作(假如项目还有后期维护)。在这漫长的时间里,和客户的交谈不是一两次会面就能够解决问题的过程。要想做好软件的需求分析,拜访客户一定是必要的。

    需求调研:研讨会

    如果说之前的工作是项目经理和客户之间的交流互动,那么接下来的研讨会就是自己人的内部会议,既然是自己人,他都不算是正式会议,但是研讨会却是非常重要的。项目经理需要根据实际情况,合理地与客户组织研讨会。但不论怎样组织,必须注意两点:有效抑制个性化差异、分模块组织专项研讨会。

    需求调研:需求研讨

    需求分析不是一种简单的你说我记的收集活动,而是在大量业务分析与技术可行性分析基础上的分析活动。只有建立在这种分析基础上的软件研发,才能保证需求的正确与变更的可控。

    需求调研:迭代

    需求分析不是一蹴而就的,是一个反复迭代的过程。它将从第一次需求分析开始,一直持续到整个项目生命周期。

    在第一次的需求分析阶段,我们在一段时期内需要与客户进行反复地讨论,这个过程往往是这样一个反复循环的过程:需求捕获->需求整理->需求验证->再需求捕获••••••这样做的结果是,客户可以及时地提出我们对需求理解的偏差,或者及时提出对我们设计不满意的地方,使我们存在的问题得到及时地发现与解决。问题及时的解决,使我们修复问题的代价得以降至最小。之后,当开发进入到验收测试阶段,我们则是与客户一道,一项一项地验证我们的软件是否满足需求列表中要求的业务需求。最后,当软件迎来下一次升级开发时,我们将开启另一次轮回。

    需求调研:需求捕捉

    在软件需求捕获过程中,最根本、最容易犯错的问题是什么呢?我认为是一个态度的问题,是采用主动态度去捕获需求,还是采用被动的态度去捕获需求。如果需求分析人员总是诺诺诺,客户说什么,我们就记什么。客户处于非常强势的地位,给我们提出了非常多变态、技术难于实现的需求,而我们的需求分析人员却成为记录员,埋头记录客户说的每一句话,不加分析地就直接扔给了开发人员。这就是采用被动的态度去捕获业务需求的方式。毫无疑问,这样的需求分析必然将给项目开发的后期带来巨大的风险。

    我们的需求捕获最初是源于企业现有的操作流程,但当我们深入理解了客户现有的操作流程以后,应当有意识地发现那些不合理的部分,并最终提出更加合理、更适于信息化管理的流程。如果需求人员能上到这样一个高度,我们的需求分析就进入了一个更加崭新的层面

    需求分析:功能角色分析与用例图

    一般地,在一个用例图中通常有三种元素:参与者(Actor)、用例(Use Case)与系统边界(Boundary)。用例描述的是系统为用户提供的功能,也就是系统能为用户做什么,通常被绘制成一个椭圆;参与者,我认为称为角色更加合适,也就是系统为哪些类型的用户提供服务,他们都各自承担哪些不同的职责,通常被绘制成一个小人儿;最后是系统边界,也就是系统是对现实世界哪个范围的内容进行的模拟,它涉及到软件设计的工作范围与工作量,通常被绘制成一个方框。

    功能角色分析是对系统宏观的、整体的需求分析,它用简短的图形绘制出了一个系统的整体轮廓。但仅仅进行功能角色分析是远远不够的,我们还需要在它的基础上做更加详尽的分析。

    需求分析:业务流程分析

    计算机信息化管理并不是万能的,它并不能代替现实世界中的所有工作。因此,我们进行业务流程分析,就是要分析业务流程中哪些是需要信息化管理的,而哪些则不需要。信息化管理过细,无疑会加重基层业务人员的负担(这也正是为什么许多基层业务人员会排斥信息化系统的原因),而适当的信息化管理则可以提高工作效率。

    需求分析:用例说明

    需求分析:查询报表分析

    查询报表的需求分析与一般的业务操作的需求分析存在着巨大的差异。
    一个有效的报表,往往不是对数字的简单堆砌,它通过一组一组的数据,揭示的都是一些客观规律、复杂活动与发展趋势。客户方的领导,特别是那些中层和高层领导,通过对这些报表的阅读,就可以掌握他们的工作进程、加强他们的人员管理、发现他们的管理漏洞、指导他们的战略决策。总之一句话,每个报表都有他们的设计意图。

    报表作用体现的是报表对于不同用户的真实意图;输出列体现的是对各个数据项及其数据来源的说明;假设与约束罗列的是报表中各个数据项的运算公式、数据规则与约束;还有使用频率、数据链接、非功能需求,以及最后的界面原型,等等。只要我们把这些都分析到了,我们的查询报表就分析到位了。

    需求分析:子用例与扩展用例

    用例分析中对子用例与扩展用例的分析,使我们对系统的设计,从一开始就将公共的、可共享的部分提取出来,使我们在日后的设计与开发中得以很好地复用,提高了系统的内聚并降低了系统的耦合,是一个优秀软件设计的开始。

    需求确认:需求列表

    求列表,又称之为需求跟踪表,是最原始的、用户对业务需求的描述。它不掺杂任何需求分析人员对业务需求的分析与设计,而是以简短扼要的语句,以业务人员的口吻表述的,今后要开发的这个系统应当提供给他们的各项功能。

    需求确认:需求规格说明书

    需求规格说明书怎么写呢?不同的公司、不同的人、不同的项目,特别是在需求分析中采用不同的方法,写出来的需求规格说明书格式都是不一样的。

    例:RUP统一建模的方式分析需求,编写需求规格说明书的模板

    1. 引言
    1.1 编写目的
    如题,描述你编写这篇文档的目的和作用。但最关键的是,详细说明哪些人可以使用这篇文档,做什么。需求规格说明书是用来做什么的?毫无疑问,首先供用户与开发公司确认软件开发的业务需求、功能范围。其次呢,当然就是指导设计与开发人员设计开发系统。当然,还包括测试人员设计测试,技服人员编写用户手册,以及其它相关人员熟悉系统。描述这些,可以帮助读者确定,阅读这篇文档是否可以从中获得帮助。

    1.2 业务背景
    描述业务背景,是为了读者了解与该文档相关的人与事。你可以罗列与文档相关的各种事件,也可以描写与项目相关的企业现状、问题分析与解决思路,以及触发开发该项目的大背景、政策法规,等等。

    1.3 项目目标(或任务概述)
    就是项目能为用户带来什么利益,解决用户什么问题,或者说怎样才算项目成功。前面提到过,这部分对项目成功作用巨大。

    1.4 参考资料
    参考资料的名称、作者、版本、编写日期。

    1.5 名词定义
    没啥可说的,就是文档中可能使用的各种术语或名词的定义与约定,大家可以根据需要删减。

    2.整体概述
    这部分是对系统整体框架性地进行描述。

    2.1 整体流程分析
    绘制的整体行动图,及其对它的说明。

    2.2 整体用例分析
    绘制的整体用例图,以及对每个用例的用例说明。如果项目比较大,存在多个子系统,可以将用例图改为构件图,详细描述每个子系统及其相互的接口调用。

    2.3 角色分析
    一个用例图,描述系统中所有的角色及其相互关系。在随后的说明中,详细说明每个角色的定义及其作用。

    这部分还可以根据项目需要编写其它的内容,如部署方案、网络设备、功能结构、软件架构、关键点难点技术方案,等等。

    3.功能需求
    3.1 功能模块(子系统)
    一个一个描述系统中的每个功能模块(或子系统),即整体用例分析中的每个用例。这部分是需求规格说明书最主要的部分。

    3.1.1 用例图
    绘制该模块的用例图(详见《功能角色分析与用例图》)。

    3.1.2 用例说明
    对用例图中的每个用例编写用例说明(详见《用例说明》)。

    3.1.3 领域模型
    为用例绘制领域模型,并编写领域模型说明,对每个实体进行说明。对实体的说明包括对实体的定义、属性说明、行为说明、实体关系说明等等。如果实体间关系复杂,还要使用对象图说明实体关系的所有情况(如《领域驱动设计》中的描述)。

    4.非功能需求
    这里描述的是软件对非功能需求的一般要求,即整体设计原则。那些与具体功能相关的非功能需求应该放在用例说明的“非功能需求”部分(详见《非功能需求》)。

    5.接口需求
    如果项目涉及到与外部系统的接口,则编写这部分需求。
    5.1 接口方案
    详细描述采用什么体系结构与外部系统的接口。
    5.2 接口定义
    接口的中文名、英文名、功能描述、参数、返回值、使用者、使用频率,等等。

    部分章节雷同 摘自http://blog.csdn.net/yqmfly/article/details/7679781

  • 相关阅读:
    Nginx proxy开启cache缓存
    Nginx Server 配置
    nginx 全局配置
    Nginx 配置文件解析
    Python-Scrapy框架
    Python-shutil模块
    os模块3
    os模块
    python os模块atime ,ctime,mtime意义
    Python-正则表达式
  • 原文地址:https://www.cnblogs.com/du1269038969/p/7643063.html
Copyright © 2011-2022 走看看