一、需求工程过程概念介绍

(一)概述

1.规格说明

需求工程过程是系统开发中需求开发活动的集成,它以用户所面临的业务问题为出发点进行分析和各种转换,最终产生一个能在用户环境下解决用户业务问题的系统方案,并将其文档化为明确的规格说明。

2.生命周期

需求工程也有属于它自己的生命周期模型,即存在针对需求开发的需求工程过程,这个过程又作为系统工程和软件工程的一个子过程部署在系统开发的初期阶段。

3.活动分类

需求获取、需求分析、需求规格说明、需求验证为需求开发活动,需求管理为项目管理活动。

(二)需求开发活动成果文档类型简述

1.项目前景和范围文档

定义系统业务需求,明确系统开发的努力方向和工作范围。

2.用户需求文档

定义系统用户需求,以用户立场表达行为期望。例如,用例文档就属于用户需求文档中的一种。

3.需求规格说明文档

定义系统的系统级需求,指出开发者应该完成的任务。需求规格说明文档按照需求范围大致可以分为以下两类:

(1)系统规格说明文档

定义软、硬件需求、其他需求。

(2)软件规格说明文档

仅仅用于描述软件需求。

(三)系统开发后续阶段

在所有的系统开发活动结束之后,定义良好的需求被转入系统开发的后续阶段——设计、实现和测试等,这时往往会面对一个重要问题——需求变化。因此,在需求开发结束之后,在后续阶段中采取有效的方法统一管理开发的需求和需求变化,进行需求管理和变化控制。

二、需求工程过程分步介绍

(一)需求获取

需求获取主要包含五个步骤:

收集背景材料->获取问题与目标,定义项目前景与范围->识别涉众,选择信息的来源->选择获取方法,执行获取,获取功能与非功能要求->记录获取结果。

下面对每个过程的注意事项进行简要介绍:

1.收集背景材料

此阶段主要是通过与用户交流,发现用户的问题,经过需求分析步骤转化为用户的需求。

2.获取问题与目标,定义项目前景与范围

需求获取中面对的信息比较广泛,因此,为保证获取信息的有效性需要保证:

(1)不在无关内容上花费太多时间。

(2)不遗漏应该获取的重要内容。

3.识别涉众,选择信息的来源

此过程将涉及众多用户的需求采集,但是为了便于实现和收集信息的准确性,需要将用户按角色不同进行大致分类,分类后选择用户代表尽可能采集到全面的信息。这个过程叫做“涉众分析”。

4.选择获取方法,执行获取,获取功能与非功能要求

需求获取有许多技巧与方法,利用表单、报表、备忘录等硬数据进行需求获取,常用的获取方法还有面谈、调查表、观察和原型等。应该根据实际场景和业务类型选择合适的采集方法。

5.记录获取结果

对以上获取到的信息,需要对每个阶段进行记录,以便后期进行分析和处理,因此,获取笔录记录的内容往往具有凌乱、模糊、冗余和遗漏等诸多问题。

(二)需求分析

其主要工作为通过建模来整合各种信息、检查需求中存在的错误、遗漏和不一致等各种缺陷,并加以修正。这其中主要包含了六个方面的内容:

背景分析->问题分析、目标分析、业务分析,确定系统边界->软件需求建模->细化需求->确定优化级->需求协商。

1.背景分析

主要适用于大规模的系统中,因为系统环境难以梳理,此时就需要进行背景分析。例如,领域分析、企业建模等。

这个步骤在一般的项目中被省略,以免花费太多不必要的精力。

2.问题分析、目标分析、业务分析,确定系统边界

系统边界需要保证系统能够和周围环境形成有效互,并且在互动中解决用户问题,满足业务需求,这些都将依赖于分析技术与方法的使用。例如,系统用例图和上下文图。

3.软件需求建模

为了展现和解释信息而进行的抽象描述活动,常用技术包括数据流图、实体关系图、状态转换图、类图等半形式化建模技术。需要注意的是,对于一些要求严格的项目(医疗器械控制),还需要利用严格形式化的技术进行建模。例如,Z模型。

4.细化需求

对于有模糊、有歧义的用户需求,通过系统建模,转化为一些有良好粒度和特性的需求细节,即“系统型需求”。

5.确定优化级

对于用户众多的需求,需求工程师需要对需求进行排序。

6.需求协商

当用户需求出现冲突时,需要与用户进行协商,对冲突的需求进行选择。

(三)需求规格说明

1.定制文档模板

通常组织会参考[IEEE 1998]推荐的规格说明文档,再根据自己的特点和需要进行调整,建立组织的参考模板。

2.编写文档

一般会同时使用模型语言(图形、表达式等)和自然语言(文本)两种表达方式,以确保文档内容准确、易读。

(四)需求验证

验证需求说明文档是否满足以下标准:

l  真实反映用户意图

l  记录的需求整体上具有完整性和一致性

l  组织方式和书写方式具有可读性和可修改性

需求验证主要包含以下任务:

1.执行验证

最好采取同级评审,如果必要的话,可采取原型或模拟但代价较高。

2.问题修正

对发现的问题,在验证之后需要及时修正。并对修正进行跟踪,以保证修正的落实。

(五)需求管理

在需求开发建立需求基线,在设计、实现等后续活动中处理来自客户、管理层、营销部门及其他涉众群体的变更需求。需求管理在项目的各项管理活动中具有非常重要的作用,CMMI(capability Maturity Model Integration,软件能力成熟度模型集成)将其作为所有二级成熟度企业都应该具备的一个关键过程域。

主要包含以下任务:

1.建立和维护需求基线集

建立良好的配置管理,对需求基线进行版本控制。首先要标识每项需求,记录相关属性。基线的版本控制工作可以使用版本管理工具来进行。

2.建立需求跟踪信息

系统的可跟踪性要求以系统级需求为出发点进行双向跟踪。

(1)后向跟踪

跟踪系统级需求被设计、实现为什么制品,并回溯到每个设计、实现制品是为何而存在。

(2)前向跟踪

回溯每个系统级需求是为支持哪些用户需求及业务需求存在。

3.进行变更控制

需求基线建立之后,仍应该积极接受来自外界的需求变化请求,并作出及时调整与反馈。

转载于:https://www.cnblogs.com/somedayLi/p/8686670.html

《需求工程——软件建模与分析》阅读笔记03相关推荐

  1. 《程序员修炼之道:从小工到专家》阅读笔记03

    <程序员修炼之道:从小工到专家>阅读笔记03 第六章 当你编码时 靠巧合编程应该避免靠巧合编程,避免依靠运气和偶然的成功.而要深思熟虑的编程. 怎样深思熟虑的编程:1)总是意识到你在做什么 ...

  2. 阅读笔记03——魔鬼搭讪学

    这次阅读笔记没有继续写软件需求分析,正好最近在看魔鬼搭讪学,而与人交往在软件这一行也是很重要的. 以前我是怎么做的? 四个字形容,率性而为,说话不经大脑思考,不会考虑对方的感受. 书中是怎么做的? 对 ...

  3. 梦断代码阅读笔记03

    经过几天的阅读,终于将这本书看完了,读完了整个故事,我进行了简单的总结,感觉不仅仅是在写代码与计算机或软件交流,更多的是做事行为. 首先是做事得有目标.无论做什么事情都要有目标和动力,这样做起事来无论 ...

  4. 构建之法阅读笔记03

    又到了一周的结尾,时间过得真快.这一周,阅读了<构建之法>关于团队和流程的部分.正好,这周我们用的就是结对开发的模式.算是理论加上实践吧. 和以往的单独编程不同的是,团队开发增加了与同学的 ...

  5. 大道至简阅读笔记03

    每一个程序员在自己的编程道路上都会遇到问题,所以也难免为遭遇失败,<大道至简>第五章的标题是"失败的过程也是过程",当我看到这个标题时,我就已经猜到了里面的大致内容.因 ...

  6. 人月神话阅读笔记 03

    形式化定义仅仅用于外部功能,说明它们是什么. "今天,我比以往更加确信.概念完整性是产品质量的核心.拥有一位结构式是迈向概念完整性的最重要一步.这个原理不仅限于软件系统,它适用于所有的复杂事 ...

  7. 人月神话阅读笔记03

    在软件开发过程中,软件开发人员必须要设立规模目标,考虑减少规模的方法,在规模预算上,要明确所占内存空间.程序对磁盘访问次数.指明每个模块的功能.在对项目开发和管理时,要写文档,比如对目标.用户手册.内 ...

  8. 云时代架构--阅读笔记03

    安全意识十原则(一) 我是软件工程的学生,精力主要集中在业务开发中.功能实现中,较少的注意软件的安全意识,在校的我们所做的项目还比较小型,如果针对工作后,公司项目的业务实现,我们只是简单做一下扫描和渗 ...

  9. 用户故事与敏捷方法阅读笔记03

    今天读完了<用户故事与敏捷方法>的第12章:用户不是什么 用户不是IEEE 830,不是用例,不是场景.读完这一章,我了解到对于任何方法,总会碰到不顺的情况,我们会看看发生问题时的一些不良 ...

  10. UML大战需求分析阅读笔记——03

    什么是面向过程的?什么是面向对象的?这个疑问在我刚入学学习C++的时候就有了,当时什么都不懂,遇见的全部都是闻所未闻的新名词.新概念,搞得自己一头雾水,今天看到第三章的开头语时发现了一种很有趣很通俗的 ...

最新文章

  1. 第二次作业 郭昭杰 201731062608
  2. Cloud.com今天正式上线了
  3. ssd测试工具crystaldiskmark_使用SSD增强Ceph性能并对比测试
  4. [云炬创业基础笔记]第七张创业资源测试10
  5. 专注于 web报表, web打印, 自定义web表单, web工作流管理系统 方面的技术
  6. golang redis获取所有key_Redis 内存分析神器
  7. RAX,eax,ax,ah,al 关系
  8. C#网络连接 socket支持post,get之类http协议(chunked,gzip),同时支持webservice协议。...
  9. ASM相关概念及实例创建
  10. 数据结构 5-3-1 二叉树四种顺序遍历递归实现
  11. python定位相邻节点_Python selenium 父子、兄弟、相邻节点定位方式详解
  12. Jquery中拿到相同的对应的所有的标签
  13. 《Linux/UNIX系统编程手册(上、下册)》
  14. C#学习(十一)——IntPtr类型
  15. Linux用户管理:新建用户组和新建用户
  16. MAC帧经过路由器,源目标MAC地址会改变,但是IP的源,目的地址不会改变
  17. 七问西方主流经济学,考考你的经济学常识
  18. css之sticky定位
  19. 仙剑游戏系列..感想
  20. SQL 各种锁等待类型 wait type--sys.dm_os_wait_stats 表

热门文章

  1. 当AD(Altium Designer)画PCB时Ctrl+H快捷键无法选中连线时的解决办法
  2. 武汉2022专技公需课必修答案
  3. win10 輸入法怎麽切換繁體
  4. 手机怎么把几个PDF文件合并到一起?教你一分钟搞定
  5. 金泰克/tigo S300 240G SM225K H27QFG8PEM5R 完整开盘教程
  6. 隐私保护联邦学习之差分隐私原理
  7. Synch4j数据同步系统的开源版
  8. 23-高级路由:BGP配置(MPLS-解决路由黑洞)
  9. 记录css实现边框渐变色
  10. 流量回放框架jvm-sandbox-repeater的实践