“我们应当怎样做需求分析”——大纲卷

这是一篇关于怎么进行软件需求分析的文章,读完的第一个感觉就是累。真的是特别累,我大概估计了一下,得有40000个字。不过读完之后还是有一点收获的。下面是一个大概的内容。

一.需求调研阶段

初识
1.在客户组织的第一场见面会上,保持良好的态度(不卑不亢)。对需求进行深入的理解,从而提出更加合理的方案,建立良好的初期形象
2.对客户的用户角色进行详细的划分,为解决多元化的问题做好准备(“从高层领导着手,提出规范化管理的口号。同时,在进行需求调研时,尽可能地召集各个单位的代表在一起开会讨论。同时,应当有高层领导,或者指定一个负责人,在出现分歧的时候最终拍板决策。”)
3.了解客户方领导的期望值,建立双方达成共识的宏观目标。
拜访
1.也就是交友的部分,与各个角色和各个类型的客户建立联系,培养感情,保持友好的关系
2.判定客户群体对于软件的看法,团结能够因这个项目收益的人;尊重与交好,项目与他无关,但是他可以给予你巨大帮助的人;争取那些怀有敌意的人。
研讨会
1.有效的抑制个性化的差异
2.分模块进行专项的研讨会
3.通过对比,发现不同公司的问题所在,并且与客户交流,从而得到一个相对统一的答案(分散式研讨)
4.创建经典案例,例如在一个部门先推行下去,并且获取成功,从而激励其他部门。
需求研讨(怎样与客户讨论业务需求)
1.客户会提出不正确的需求的情况
1.1对软件不了解,提不出需求
1.2能提出需求,但是当软件做出来的时候需求就发生了改变
1.3详细的提出需求,甚至知道怎么实现,但是会提出一些不切实际的要求,或者我们会有更好的方案
2.同时还有的情况就是为了开发软件无限扩大学习领域的知识
3.用合理的方式去拒绝技术难以实现的或者根本无法实现的需求
  3.1提出一个更好的的方案
  3.2让对方意识到这是不可实现的
迭代
1.需求捕获
  1.1记录下业务流程
  1.2询问名词的含义
  1.3记录软件希望的功能
  1.4列出需求列表
2.需求整理
  2.1通过用例模型,划分整个系统的功能模块,以及各个模块的业务流程,之后细分流程,直到需求已经非常清楚为止)
  2.2制作领域模型,一般以对象图和类图的形式表达的,对产品的领域进行更加深刻的理解。
3.需求验证
  3.1应当对及时地与客户进行反馈,确认我们的理解是否正确,也就是需求验证工作
  3.2需求验证工作应当贯穿整个研发周期,并且在不同时期表现出不同的形式
  3.3通过每开发完一个迭代周期,将开发的成果与客户反馈。及时对产品进行修改和优化,从而将修复问题的成本降到最低。
 需求捕获
1.包括两种态度,主动询问信息和被动的接受信息。其中被动的接受信息,也就是单纯的记录用户所说的功能非常危险。
2.潜伏中的需求
  2.1用户嘴中没有说出来的需求
    2.1.1原因:在他们看来已经是天经地义,根本就不用说出来的业务规则
    2.1.2解决办法:在需求分析的整个过程,不断进行业务领域知识的学习。
2.2客户压根儿就没有想到的需求。
2.2.1原因:软件在最开始没有实体的时候,客户很难想象开发出来的软件是什么样子。而在软件研发的后期,客户能拿到那些研发成果的实物,去操作,可以看到。这时候,很多他们起初没有想到的需求就会源源不断地被提出来。
2.2.2解决办法:站在客户的角度去思考,我们的软件应当设计成什么样子,每个需求的真实意图是什么。站在这个基础上,再运用专业知识去整理、分析与设计。
二.需求分析阶段
功能角色分析
  1.采取用例图的方式来进行分析工作的细化
    1.1参与者(Actor)
    1.2用例(Use Case)
    1.3系统边界(Boundary)。
   2.绘制用例图的错误示范
    2.1没有正确理解用例图的视角。没有站在用户的角度方面来考虑,仅仅站在自己的角度来看问题
    2.2图形绘制杂乱无章,绘图不够清晰
    2.3用例不是一个场景,没有将一个案例真正放在事实上的案例上就会导致有考虑不周或者将问题想的太简单的问题。
   3.补充:
    3.1必须要对用例进行进一步的文字描述。
    3.2在每一个用例说明的后面与该用例相关的需求列表,便于需求跟踪。
业务流程分析
1.通过流程分析,抛开软件实现,对一个流程进行梳理,并且分析我们的软件能做什么事:
2.明白软件系统的功能是为了提高客户的工作效率,而避免加重他们的负担。
3.流程改进的意见:
3.1清除低效环节
3.2简化业务瓶颈
3.3整合可用资源
3.4自动化繁重操作

查询报表分析

  1.报表的目的:通过一组一组的数据,揭示的都是一些客观规律、复杂活动与发展趋势。

   2.用户使用报表的频率,常常决定了报表设计的方式。

   3.一个报表的核心就是展现给客户的报表格式,以及报表与报表间的各种链接。

 

业务领域分析

1.原文分析法
1.1对原文进行分析,提取其中的名词,判定其中的实体
1.2名词的多义性,需要注意细致的措辞,以防引起开发人员的误解
1.3对原文进行分析,提取其中的动词
2.领域驱动设计
2.1建立双方都能理解的共同语言

非功能需求

  1.可用性(Usability):它泛指那些能让用户顺利使用系统的指标,包括易用性(易操作、易理解)、准确性、安全性(权限体系、访问限制)、兼容性(服务器、客户端的兼容度)
   2.可靠性(Reliability):系统可以可靠运行,包括系统成熟度(数据吞吐量、并发用户量、连续不停机性能等)、数据容错度、系统易恢复性,等等。
  3.性能(Performance):在设计的时候就解决的问题
  4.可支持性(Supportability):是维护系统的关键所在
  5.其它(+)
三.需求确认阶段
需求列表

  1.需求列表不掺杂我们对业务需求的任何分析与设计,这是需求列表的核心,

  2.需求列表应当是站在业务人员的视角,对业务需求的简明扼要的描述。

 

快速原型法

  1.利用快速开发出来的原型,来与用户进行交流。从而获取用户对软件的看法。
—————————————————————————————————————————————————————
四.之间的关系

原文链接,请参考链接:http://blog.csdn.net/yqmfly/article/details/7679781

转载于:https://www.cnblogs.com/tianxiayoujiu/p/8516920.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/367767.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

动态语言

这是动态语言和静态语言(例如Java)最大的差别之一。动态语言调用实例方法,不检查类型,只要方法存在,参数正确,就可以调用。 %d:输入输出中的格式控制,以整数的形式输入输出.%f:输入输出中的格式控制,以小数…

innodb和my查询速度_吃透MySQL:MyISAM和InnoDB存储引擎详细介绍

一,MySQL基本架构MySQL基础架构可以分为两大类:Server层和存储引擎层。Server层: Server层涵盖了MySQL大部分核心业务功能,并且所有存储引擎的功能都在这一层实现。存储引擎层:存储引擎有很多,各自有着各自…

Java EE EJB拦截器教程和示例

在此示例中,我们将看到如何在EJB中使用拦截器并使用简单的Web应用程序对其进行测试。 1.简介 顾名思义,当您想拦截对EJB方法的调用时,将使用拦截器。 如果为Bean声明一个拦截器,则每次调用该Bean的方法时,该拦截器的一…

HTML5结合ajax实现文件上传以及进度显示

基于原生html5实现,不需要falsh支持,进度可以自定义显示,控制灵活, 本来打算使用jquery插件进行异步文件上传,比如uploadfy但是需要额外的支持,也有人用iframe模仿异步上传机制,感觉都比较别扭。…

Mac python Tesseract 验证码识别

Tesseract 简介 Tesseract(/tesərkt/) 这个词的意思是"超立方体",指的是几何学里的四维标准方体,又称"正八胞体"。不过这里要讲的,是一款以其命名的开源 OCR(Optical Character Recognition, 光学字符识别) 软件。 所谓…

构建器模式:适用于代码,适用于测试

我发现生成器设计模式偶尔在代码中有用,但在测试中经常有用。 本文简要概述了该模式,然后介绍了在测试中使用该模式的一个有效示例。 请参阅github中的代码。 生成器模式的背景 根据GoF的书 ,构建器设计模式用于“将复杂对象的构造与其表示分…

如何判断html页面停止滚动?

写在开始的话 查遍的文献,没有找到js或者jquery定义好的方法可用,最后迫不得已自己写了个方法。(如果哪位同学知道有其他方法,欢迎讨论) 代码 var count_index 0;$(window).scroll(function(e) {if(count_index 0) {…

HTML5教程之-文件拖拽功能实现

现在打开优酷的网站我们再观看视频时如果拖动滚动条,页面会自动出现一个小的播放窗口,而这个播放窗口是可以说随便拖拽的。这种对图片或者链接的拖拽效果是怎么实现的?其实用HTML5就很容易实现了,因为HTML5中有个html5中默认对图片…

php 打乱数组顺序_PHP实现大转盘抽奖算法

php中文网最新课程每日17点准时技术干货分享本文通过具体的实例向大家介绍了PHP语言实现大转盘抽奖算法,希望对大家学习PHP抽奖有所帮助。流程:1.拼装奖项数组;2.计算概率;3.返回中奖情况。代码如下:中奖概率 v 可以…

linux线程基础篇----线程同步与互斥

linux线程基础----线程同步与互斥 一、同步的概念 1.同步概念 所谓同步,即同时起步,协调一致。不同的对象,对“同步”的理解方式略有不同。如,设备同步,是指在两个设备 之间规定一个共同的时间参考;数据库同…

分布式系统开发注意事项

开发分布式软件系统时,要考虑许多因素。 如果您甚至不知道第一句话中我在说什么,那么让我为您提供一些见解,示例以及有关分布式系统的实例。 总览 分布式系统是指多个物理硬件设备与单独的离散用户交互并通过这些硬件设备协作以为这些离散的…

只需5步,轻松创建HTML5离线应用

1 – 添加 HTML5 doctype第一件要做的事情是创建一个符合规范的 HTML5 文档。HTML5 doctype 相比于 xhtml 版本的 doctype 而言&#xff0c;要简单明了得多&#xff1a; <!DOCTYPE html><html> ...创建一个名为 index.html 的文档&#xff0c;或者猛击这里下载这份…

软工读书笔记 week 1

这次读书笔记主要是就《程序员修炼之道》这本书的前半部分做一些总结以及发表一些自己的看法。 本书前面的一部分主要是一些程序员应该在工作中时刻注意的事情&#xff0c;一些关键的信息如下&#xff1a; 1、处理问题的态度与责任。 这是在本书序言中就提到的&#xff0c;可见…

mysql脚本解读_一篇很好的关于mysqld_safe脚本源码解读的文章,收藏了!!

#!/bin/sh# 一些状态变量的定义KILL_MYSQLD1; # 试图kill多余的mysqld_safe程序&#xff0c;1表示需要killMYSQLD# mysqld二进制可执行文件的名称niceness0# 进程的调度优先级标识# 下面的变量主要用于标识不使用错误日志和sysloglogginginit # 日志记录状态&#xff0c;init代…

Java EE 7发布–反馈和新闻报道

Java EE 7已经存在了几天。 我们所有人都有机会观看直播活动或可用的重播 。 最后的MR版本完成了将他们的工作推向JCP的过程&#xff0c;基本上是一个总结。 是时候反思发生的事情以及我对此的想法了。 启动活动中的社区参与 这不是一个大秘密。 即使Oracle的Java EE 7发行可以…

进制转换器

1 /*2 进制转换器 3 P进制数x转为Q进制数z4 过程模拟&#xff0c;先转十进制再转目标进制 5 */6 #include<cstdio> 7 #include<algorithm>8 #include<stack>9 using namespace std; 10 int main(){ 11 int p,q; 12 int x,y0,z; 13 int a1; 14 …

HTML5中的本地数据库-Web SQL Database

html5增加新的特性&#xff0c;那就是增加了本地存储&#xff01;改善用户体验&#xff0c;或许html5会带着我们走进新的互联网时代。 下面看看怎样操作web 数据库吧&#xff01;&#xff01;首先新建数据库&#xff01; var db window.openDatabase("mydata", &quo…

使用Apache CXF开发SOAP Web服务

在上一篇文章中&#xff0c;我逐步介绍了使用apache CXF开发简单的RESTFull服务的步骤。 在本文中&#xff0c;我将讨论使用CXF开发SOAP Web服务。 在继续前进之前&#xff0c;让我们了解构成SOAP Web服务的一些概念/元素。 SOAP或简单对象访问协议 SOAP是一种协议&#xff0c…

pkill mysql_每天一个linux命令:kill命令

终止一个进程或终止一个正在运行的程式&#xff0c;一般是通过kill 、killall、pkill、xkill 等进行。比如一个程式已死掉&#xff0c;但又不能退出&#xff0c;这时就应该考虑应用这些工具。另外应用的场合就是在服务器管理中&#xff0c;在不涉及数据库服务器程式的父进程的停…

HTML5中如何检查浏览器是否支持本地存储

如果你的浏览器支持该特性的话&#xff0c;那么全局对象&#xff1a;window上会有一个localStorage的属性&#xff0c;反之&#xff0c;你的浏览器不支持的话&#xff0c;那么该属性值为undefinedJavaScript function supports_local_storage(){ return !!window.localStorage…