阅读笔记一之《软件需求与分析》

 

关于我们怎样做需求分析:

  本学期《软件需求与分析》需要掌握需求调研、需求分析和需求确认三大基本内容。以下为针对每一个内容的自己的理解。

 

一、需求调研

初识:刚开始与客户接触的时候,一定要建立良好的职业微信。在对需求进行分析时,应分角色进行需求分析。并且从宏观上制定目标与方案。

拜访:“需求调研不是一蹴而就的事情,是一件持续数月甚至数年的工作(假如项目还有后期维护)。”在拜访中,我们需要与客户简历长期友好的关系。也一定要抱着相互尊重的态度与客户交往,因为这个过程中不可避免的有一些阻碍项目进行的一些基层人员。还可以在其中找到一些可以帮助我们的人。

研讨会:业务研讨会是重要的,但同时又是灵活的,没有一个定式,甚至有时都不能称之为会议。项目经理需要根据实际情况,合理地与客户组织研讨会。但不论怎样组织,必须注意两点:有效抑制个性化差异、分模块组织专项研讨会。

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

迭代:需求分析工作是一个迭代的过程:需求捕获->需求整理->需求验证->再需求捕获,需求捕获是这个迭代过程的开始,也是整个需求分析工作中最重要的部分。每深入一步,我们的软件就更接近客户的满意。所以,应该一点一步一步。

需求捕获:还有两类需求需要我们自己去挖掘:客户嘴中没有说出来的需求,和客户压根儿就没有想到的需求。在真正开始这个项目的编程之前,可以先给客户制作一个模型来参考。

 

二、需求分析

功能角色分析与用例图:绘制用例图对业务需求进行分析、抽象、整理、提炼,进而形成抽象模型的过程称之为用例建模,而这个模型就是用例模型。在画用例图的时候,应该尽可能的能使客户看的懂。

业务流程分析:我们进行业务流程分析,是要分析业务流程中哪些是需要信息化管理的,而哪些是不需要信息化管理的。

用例说明:在对需求进行分析时,不能是空对空且不落到纸上。所以需进行用例说明。其中一些基本元素还是相同的。

查询报表分析:一个有效的报表往往会揭示一些客观规律。每一个报表都有它的主要意图。报表作用体现的是报表对于不同用户的真实意图;输出列体现的是对各个数据项及其数据来源的说明;假设与约束罗列的是报表中各个数据项的运算公式、数据规则与约束;还有使用频率、数据链接、非功能需求,以及最后的界面原型等。

子用例与扩展用例:子用例与扩展用例的学习,能够帮助我们在后面的系统设计更好的复用,提高系统的内聚并降低了系统的耦合。

行动图和状态图:行动图和状态图能够有效的对业务流程进行整体的描述(是与子用例与扩展用例相比),并且生动形象。注意“在需求分析中,状态图并不是必须的,它仅仅出现在你认为需要对某个对象的状态进行说明的时候。 ”

业务领域分析:这是需求分析里的最后一项工作,我们进行业务领域分析,是通过与用户进行交流,掌握领域知识,绘制成业务领域模型,去指导我们软件开发的过程。

原文分析法、领域驱动设计:原文分析法和领域驱动设计是指导我们的业务领域分析的两种方法。原文分析发,是在用例说明与流程分析的基础上进行的业务领域分析,是一项在需求研讨会后整理和分析需求的工作。领域驱动设计(在我的理解)就是客户与你之间形成一种统一语言,这种语言有助于两者之间的交流。

非功能需求:非功能需求对于一个软件的开发是很重要的,可以有效避免以后存在的风险。

 

三、需求确认

需求列表:需求列表是用来记录原始需求,以此来验证最终的软件。这样使每一阶段每一个领域的需求分析都能够很清楚,没有变得越来越模糊。

快速原型法:快速原型法就是拿出一个模型。并且在展示模型之前一定要先跟客户说明情况,这并不是最终的软件,也就是软件不是一天两天就能做出来的。

需求规格说明书:需求规格说明书要分两种,一种是用户需求规格说明书,另一种是产品需求规格说明书。需求规格说明书也是非常重要的,它提供了一种切实可行的解决方案。

评审与签字确认会:需求评审会分为内部评审会与外部评审会两部分,要分开进行。

 

 

转载于:https://www.cnblogs.com/xiaxiaoshu/p/7602632.html

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

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

相关文章

java代码删除ElasticSearch索引

用java代码删除ElasticSearch索引 public class ElasticsearchDeleteIndexTest {public static void main(String[] args) throws IOException {RestHighLevelClient restHighLevelClient new RestHighLevelClient(RestClient.builder(new HttpHost("localhost", 9…

今天

微博一篇。 今天,发烧了,冬天第一次 今天,上海下雪了,冬天第一次 今天,听说是我生日.一年也一次

java代码查询elasticsearch索引

用java代码查询ES索引 public class ElasticsearchSearchTest {public static void main(String[] args) throws IOException {RestHighLevelClient restHighLevelClient new RestHighLevelClient(RestClient.builder(new HttpHost("localhost", 9200, "http&…

强制修改上网本分辨率

强制修改上网本分辨率,上网本分辨率修改工具这个方法可以让上网本实现更高的分辨率,而且不需要装任何软件,对任何显示器都有效哦!不用装任何软件,轻松实现上网本虚拟分辨率(新方法)众所周知,上网本的屏幕分…

什么是全局锁?它的应用场景有哪些?

全局锁 顾名思义,全局锁就是对整个数据库实例加锁。MySQL提供了一个加全局读锁的方法,命令是 Flush tables with read lock (FTWRL)。当你需要让整个库处于只读状态的时候,可以使用这个命令,之后其他线程的以下语句会被阻塞&…

67 个JavaScript和CSS实用工具、库与资源

在这篇文章中,我不会与大家谈论大型的前端框架,如 React、Angular、Vue 等,也没有涉及那些流行的代码编辑器,如 Atom、VS Code、Sublime,我只想与大家分享一个有助于提升开发人员效率的工具列表合集。 或许&#xff0c…

NGINX生命周期-转

转载于:https://www.cnblogs.com/justart/p/7611427.html

ARP防治攻略————服务器防护

根据ARP***的原理,以下介绍全面的防治解决方法,采用下面的解决方法二加方法三,效果就不错了,当然交换机性能许可情况下,最好还是加上交换机绑定MAC地址、服务器端绑定IP MAC。本文是转载网上的资料,在此感…

Flush tables with read lock (FTWRL)全局锁就是对整个数据库实例加锁

一:加全局读锁命令 FLUSH TABLE WITH READ LOCK; 二:执行新增语句 报错了 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near VALUES3,"语文&qu…

阅读笔记,软件需求分析

从头读下来,第一眼看到,成功的软件都是一样的,失败的软件却各有各的失败处,我们编写程序的最终目的是什么,不是让别人知道自己编程能力有多厉害,只要能卖钱就好了,就算你使用的语言已经跟不上版…

深入研究Servlet线程安全性问题

Servlet/JSP技术和ASP、PHP等相比,由于其多线程运行而具有很高的执行效率。由于Servlet/JSP默认是以多线程模式执行的,所以,在编写代码时需要非常细致地考虑多线程的安全性问题。然而,很多人编写Servlet/JSP程序时并没有注意到多线…

查看当前数据库存储引擎

一:查看当前数据库支持的存储引擎 show ENGINES; 二:查看指定数据库所有表使用的存储引擎 使用 show table status from dbname;命令,可以查看指定数据库所有表使用的存储引擎,其中“dbname”为数据库名。 show table status from 库名; 三…

HDU 4857 拓扑排序 优先队列

n个数,已经有大小关系,现给m个约束,规定a在b之前,剩下的数要尽可能往前移。输出序列 大小关系显然使用拓扑结构,关键在于n个数本身就有大小关系,那么考虑反向建图,优先选择值最大的入度为零的点…

很难找齐的常识

【三教】儒教、道教、佛教 【九流】儒家、道家、阴阳家、法家、名家、墨家、纵横家、杂家、农家 【三皇】伏羲、女娲、神农 【五帝】太皞、炎帝、黄帝、少皞、颛顼 【三山】安徽黄山、江西庐山、浙江雁荡山 【五岳】〖中岳〗河南嵩山、〖东岳〗山东泰山、〖西岳〗陕西华山、〖…

元素上下左右居中的几种方法

定位居中1 让外层div相对定位(得设置宽高),内层div绝对定位,top、left分别设为50%,然后通过设置margin-top、margin-left值为宽度的负数并且是内层div的一半,就可以成功实现垂直水平居中了。如下&#xff1…

System.gc() 和 Runtime.gc() 会做什么事情?

System.gc()和runtime.gc()用于提示jvm进行垃圾回收。立即开始回收还是延迟回收回收取决于jvm 会触发full gc 调用 System.gc() 实际上等效于调用: Runtime.getRuntime().gc()

西门子博途编程 - 另类状态机

这次我们用博途来写上次的控制任务,发现还是有些不一样。 和AB比,还是有点复杂啊。转载于:https://www.cnblogs.com/TomDing/p/7617427.html

提升面对电脑的工作效率

用ubuntu已经有一段时间了。现在还不得不在WIN上用的东西就是OUTLOOK和MS OFFICE了。OPENOFFICE还需要很长的路要走呀。不过有一个比较深的感受,就是我会越来越多的使用快捷键来完成原来需要鼠标点好几次的动作。不知道是不是因为我的工作原因,需要长时间…

面试题finalize() 方法什么时候被调用?析构函数 (finalization) 的 目的是什么?

finalize是Object类的一个方法,该方法在Object类中的声明 在垃圾回收器执行时会调用被回收对象的finalize()方法,可以覆盖此方法来实现对其资源的回收。注意:一旦垃圾回收器准备释放对象占用的内存,将首先调用该对象的finalize()方…

MFC下CSocket编程详解

MFC下CSocket编程详解: 1. 常用的函数和注意事项(详细的函数接口说明请查看MSDN): CSocket::Create 初始化(一般写服务器程序都不要用为好,用下面的 CSocket::Socket 初始化) CSocket::Socket初始化 CSocket::SetSockOpt 设置socket选项 CSocket::Bind 绑定地址端口 CSocket::…