这个问题很大,这篇不想再去重复一个软件需求分析员的知识体系结构,而是挑重点来谈下成为一个合格的软件需求分析人员的关键点。

我原来对软件需求的定义或描述更多是偏于对现实世界的定义,而对软件架构的描述为现实到实现之间的第一层抽象。在这里纠正一下即:用户需求是对现实世界的定义,而软件系统需求是现实到实现的第一层抽象,即业务建模和软件系统用例建模。在原来的软件工程里面我们更多谈到的一个词是系统分析员,我现在将其拆分为了软件需求BA和系统架构SA两个角色。而实际上一个真正优秀的软件需求人员必须具备两方面的能力。

从软件需求在整个软件生命周期中的定位来看,其上接业务,下接设计和技术。从这个概念上来讲软件需求人员必须具备业务和技术两个方面的能力。

对于业务,首先要解决的是对业务的理解,然后才是在理解后业务的形式化表达和业务建模能力。而对业务如何理解,最核心的仍然是顶层的流程建模和分析能力,底层的业务活动和规则清晰的描述能力。在这里里面涉及到流程梳理和定义能力,业务单据和对象的抽取和定义能力,业务规则的清晰阐述能力,和流程配套的相关的岗位角色,交互等描述能力。要知道在这块往往并不需要太多的IT背景和软件工程的知识,更多的是对业务的熟悉,对流程管理和分析方法的了解。

上面一步的业务更多的是属于顶层方面的内容,而第二个层面往往会过渡到系统软件需求层面的内容,在这里我们更加强调的是类似面向对象的用例分析和建模的方法,这包含了业务用例和系统用例分析和建模,是一种很好的形式化的方式来定义和描述业务的方法。包括从流程分析转入到用例,单个具体的用例分析和建模,每个用例详细的基本流,扩展流,业务规则,参与角色,界面原型,业务对象和对象属性等各个方面内容的描述,要知道我们做用例建模的目的是能够按用例驱动的核心,平滑的转入到架构设计中去,因此用例分析建模已经不是简单的描述现实世界的问题,已经涉及到业务或用户需求到系统需求的第一层抽象转换。

要做好需求的第二步的事情,那么单纯的只有业务背景就不足够的,必须还具备相应的IT和软件工程的技术背景。这个背景往往并不是说要做过多久的软件设计开发,但是只是是做过,通过软件开发你能够很清楚的知道一个软件从需求调研和分析开始,最终是如何形成一个软件系统的。这个背景知识可以更加方便我们去考虑用例建模,去认识到为何要采用这种方式去用例建模,真正理解用例中每个描述点如何影响到最终业务系统的实现。

没有技术背景很难真正成为一个优秀的软件需求分析师,最多也就是一个业务需求分析师。

要知道,当你进行用户需求调研后,往往收集到的都是一个个的用户需求点,而一个软件需求分析员要做的是最终将这些需求实现为一个完整的业务系统。这里面就涉及到业务模块的划分,模块间的分析,需求层面的复用能力分析,各种性能,可靠性,安全等非功能性需求。这些更加已经是一个完全的系统分析方面的内容,或者说软件需求已经会兼顾部分软件架构设计的内容,因此作为一个软件需求人员更加需要去了解业务组件化,服务化,软件模块集成,复用等方面的技术内容。也需要去了解涉及到UCD,交互设计方面的内容,这些都是形成一个高质量的软件业务系统的重要输入。

一个优秀的软件需求人员既不应该因为具备技术和开发背景而导致在需求分析和建模中的各种程序员思维,也不应该完全抛弃技术单纯的去描述业务不管实现的难易度。软件需求人员衔接了最终用户和内部的设计开发,是两者之间重要的沟通和协同桥梁。各种沟通和人际关系处理技巧,各种软技能的要求更是必不可少的,在此不再展开去描述。

一个优秀的软件需求人员不存在是否能做新领域的软件需求的问题,因为最终真正有用的需求分析的方法论和模式,去理解和熟悉业务和快速形式化描述和建模的方法,有不断的实践总结出来的快速理解业务的能力。

知乎问答-如何做一个软件需求分析师相关推荐

  1. 做一个软件工程师是什么感觉,工作过程中是否觉得开心?

    首先在这里谈一下做一个软件工程师的感觉: 1.开发完系统的成就感 当你完成了整个系统的开发,软件功能都完成的时候,你是很有成就感的,觉得终于完成的了感觉 2.系统稳定运行的成就感 当你开发完系统,经过 ...

  2. 北京高级软件需求分析师培训招生!

    中国科学院计算技术研究所是国家专门的计算技术研究机构,同时也是中国信息化建设的重要支撑单位,中科院计算所培训中心是致力于高端IT类人才培养及企业内训的专业培训机构.中心凭借科学院的强大师资力量,在总结 ...

  3. 某银行高级软件需求分析师内训圆满结束!

    2014年12月9--12日,某银行"高级软件需求分析师"培训,经过招标.讲标.开标的过程,最终由我单位中科院计算所培训中心中标,谢老师亲临授课,在某银行总部进行,参加人员涉及业务 ...

  4. 怎样利用python做一个软件,python可以自己做软件吗

    python能做什么软件? 主要可以做小程序,爬虫程序,用于系统编程等等还是很广泛的.Python 的应用领域分为下面几类.下文将介绍一些Python 具体能帮我们做的事情. 但我们不会对各个工具进行 ...

  5. 如何做一个软件项目经理? ----写给公司所有的开发人员

    第一部分:软件项目经理的要求 首先是一个管理者,其次熟悉某些工具,某几种语言,行业背景,项目管理技能. 软件项目经理面临的恶劣环境,我们绝大部分软件企业运行在相对混乱的状态(CMM一级),组织不大可能 ...

  6. 你为什么选择成为一个程序员,你适合做一个软件开发工程师吗?

    选择一个职业也许有许多理由,那你为什么选择做了一个程序员呢? 作为一个标准的80后老猿,我来说一下自己的亲身体会,也给想入门的小白一个心理评估. 本人开发15余年,随没有太大的建树,但也有自己的些许经 ...

  7. 若川知乎问答:做前端感觉很吃力怎么办?

    前些日,我发了一篇推文<做前端感到越来越吃力了!怎么办?>,虽然是推广,但阅读量却很高,推广标题我们大概率不能改,感觉骗了大家,掉粉挺多人.写稿的人可能就是看到了知乎这个问答.想起我自己曾 ...

  8. Linux Framebuffer驱动剖析之中的一个—软件需求

    嵌入式企鹅圈将以本文作为2015年的终结篇,以回应第一篇<Linux字符设备驱动剖析>.嵌入式企鹅圈一直专注于嵌入式Linux和物联网IOT双方面的原创技术分享,稍后会公布嵌入式企鹅圈的2 ...

  9. 做一个软件需要了解的知识

    问:做一个交互性软件应用程序,需要掌握哪几方面知识 答:您需要掌握以下几方面的知识: 1.编程语言,如Java.Python.C++等. 2.用户界面设计,包括交互设计.视觉设计.人机交互等. 3.软 ...

最新文章

  1. 0.2 秒居然复制了一个 100G 文件?怎么做到的?
  2. POJ 3126 Prime Path BFS搜索
  3. DL之Yolov3:基于深度学习Yolov3算法实现视频目标检测之对《俄罗斯总统普京对沙特王储摊的“友好摊手”瞬间—东道主俄罗斯5-0完胜沙特》视频段实时检测
  4. 十年磨一剑!SACC带你领略企业大数据平台实践优化!
  5. lisp求面与面的差集_AcGeVector3d是点阵的集合,通过等分点的差集得到。 新的点可以通过点与点阵相差得......
  6. linux (fedora 28) 制作启动U盘,启动盘
  7. tkinter python(图形开发界面) 转自:渔单渠
  8. 解决 Exchange 2013提示“出现意外错误,无法处理您的请求”,无法打开OWA和ECP...
  9. 3500振动监测系统培训总结
  10. 学习码 滚动码 固定码 有什么区别重码数,编码容量滚动码的原理
  11. 数据结构 图的邻接表
  12. matlab一元方差分析方法,多元方差分析matlab程序.doc
  13. 来自Carson_Ho大神的最6的Android事件分发机制详解
  14. C语言 数字实现字母表 链表实现字母表
  15. 需要network lightweight filter disk 上的文件netft.sys
  16. wps“公式编辑器”的MT Extra 字体无效,将无法显示和打印某些字体。请重新安装“公式编辑器”,以便正确安装其字体
  17. 小荷尖 - 发现更优质的企业服务
  18. x265探索与研究(一):x265下载安装与配置
  19. Python Eric7+PyQt6环境配置,GUI程序开发
  20. 网站建设的基本流程及服务端开发简介

热门文章

  1. 【python学习】python基础-数据
  2. 猴子管理法则的学习心得
  3. vue获取当前一周日期
  4. js实现将链接生成二维码,并对生成的二维码转换为图片,右击可保存至本地
  5. C++ 基础复习系列2(打印图形类(循环)经典问题类)
  6. Android 流行框架
  7. 阿里巴巴集团技术委员会主席王坚:我曾经被诺贝尔奖得主司马贺忽悠_相信人工智能就是未来!
  8. Java 实现 Html 转 pdf
  9. 飞康恢复oracle
  10. 生信人值得拥有的编程模板-Shell