一、需求的作用

需求是解决问题的前提。

其中标注为软件系统工程的一些活动,是作为系统工程工作的一部分被实施的。

Q:什么样的陈述可以被称为需求?
1.这个需求是否有必要?–>必要的(Necessary)
2.会不会产生歧义?–>无歧义(Unambiguous)
3.能不能测试?–>可测试(Testable)
4.能不能跟踪?–>可跟踪(Trackable)
5.能不能测量?–>可测量(Measurable)

二、需求分类

需求分为功能性需求;性能需求;外部接口需求;设计约束需求;质量属性需求。

功能需求是整个需求的主体,即没有功能需求,就没有非功能需求,即性能需求、外部接口需求、设计约束和质量属性。

非功能需求对功能需求而言,可以是一对多的,例如:

三、需求发现——怎么提需求?

常用的发现初始需求的技术,包括:

3.1自悟(Introspection)

需求人员把自己作为系统的最终用户,审视该系统并提出问题:“如果是我使用这一系统,则我需要……”

3.2 交谈

为了确定系统应该提供的功能,需求人员通过提出问题,用户回答,直接询问用户想要的是一个什么样的系统。
成功条件:交谈通常是一种比自悟更好的技术。
这种途径成功与否依赖于:
需求人员是否具有“正确提出问题”的能力,回答人员是否具有“揭示需求本意”的能力。

存在的风险:在交谈期间需求可能不断增长,或是以前没有认识到的合理需求的一种表现,说是“完美蠕行”(Creeping elegance)病症的体现,以至于很难予以控制,可能导致超出项目成本和进度的限制。
应对措施:项目管理人员和客户管理人员应该定期地对交谈过程的结果进行复审。

3.3 观察

通过观察用户执行其现行的任务和过程,或通过观察他们如何操作与所期望的新系统有关的现有系统,了解系统运行的环境,特别是了解要建的新系统与现存系统、过程以及工作方法之间必须进行的交互。尽管了解的这些信息可以通过交谈获取,但“第一手材料”一般总是能够比较好的“符合现实”的。

存在的风险:
一一客户可能抵触这一观察。其原因是他们认为开发者打扰了他们的正常业务。
一一客户还可能认为开发者在签约之前,就已经熟悉了他们的业务。

3.4 小组会(Group session)

举行客户和开发人员的联席会议,与客户组织的一些代表共同开发需求。其中:

通常是由开发组织的一个代表作为首席需求工程师或软件工程项目经理,主持这一会议。但还可以采用其它形式,这依赖于其应用领域和主持人的能力。主持人的作用主要是掌握会议的进程。

必须仔细地选择该小组的成员,不仅要考虑他们对现存的和未来运行环境的理解程度,还要考虑他们的人品。

3.5提炼(Extraction)

复审技术文档(例如,有关需要的陈述,功能和性能目标的陈述,系统规约接口标准,硬件设计文档以及ConOps文档),并提出相关的信息。

适用条件:提炼方法是针对已经有了部分需求文档的情况。依据产品的本来情况,可能有很多文档需要复审,以确定其中是否包含相关联的信息。在有的情况,也可能只有少数文档需更钉审

以上方法需要综合运用到一个项目中。

四、需求规约

一个需求规约是一个软件项/产品/系统所有需求陈述的正式文档,是一个软件产品/系统的概念模型。
一般来说,SRS应必须具有以下4个性质:
①重要性和稳定性程度(Ranked for importance and stability).例如:基本需求、可选的需求和期望的需求。
②可修改的(Modifiable):在不过多地影响其它需求的前提下,可以容易地修改一个单一需求.
③完整的(Complete):没有被遗漏的需求.
④一致的(Consistent):不存在互斥的需求.

其中,就功能的需求规约来说,还应考虑以下问题:
(1)功能源。
(2)功能共享的数据。
(3)功能与外部界面的交互。
(4)功能所使用的计算资源。

在获取以上初始需求的基础上,可采用ICEE标准830-1998所给出的格式,完成一个完整的需求文档草案的编制工作。

学习笔记来源于中国大学Mooc上北京大学的《软件工程》选修课。

【软件工程】二、需求分析——怎么提需求?,怎么写需求?相关推荐

  1. 软件工程中需求分析的重要性

    此篇文章系在网易博客上转来他人的编程经验分享----纯属学习借鉴 定义 在软件工程中,需求分析指的是在建立一个新的或改变一个现存的电脑系统时描写新系统的目的.范围.定义和功能时所要做的所有的工作.需求 ...

  2. 【PM】【需求】项目管理-需求:管理软件需求分析过程

    文章概括为,纵向,横向,从面到点,最后是需求质量控制. 软件的需求分析必须要有对原业务的一个深入了解.提取.抽象.升华的过程. 软件的需求分析是从用户的业务中提取出软件系统能够帮助用户解决的业务问题, ...

  3. 都是写需求,高手和菜鸟为何差别这么大?

    同样是写需求,为什么有的人能一次过,而有的人改了又改,甚至还要推倒重来? 同样是写需求,为什么有的人考虑全面,而有的人丢三落四,直到评审的时候被怼得体无完肤? 同样是写需求,为什么有的人简单易懂,而有 ...

  4. 需求获取的三阶段:需求背景、需求调研、需求分析 (3)

    收集到了客户的需求后,下一步就到了对需求进行分析的阶段,在这个阶段就要理解需求.分析需求.最后确定系统需要实现的功能需求.这一阶段非常重要,因为前期收集到的需求表达形式各种各样,不一定都是用" ...

  5. 第一次写需求文档的心酸历程

    先划重点: 功能需求 就是把具体的用户需求,变成软件的功能要求. 比如客户要把交通事故照片通过app发给保险公司.这是用户需求. 那么功能需求就是在这个模块下,要具有提交报险事故照片功能,上传现场照片 ...

  6. 软件工程导论——需求分析总结

    软件工程导论--需求分析总结 需求分析是软件定义的最后一个阶段,它的基本任务是准确的回答"系统必须做什么"这个问题(系统必需完成哪些工作,而不是确定系统怎样完成它的工作) 需求分析 ...

  7. 软件工程 之需求分析2

    软件工程需求分析2 软件工程需求分析 基本概念 需求分析阶段的任务 需求工程过程 需求分析的原则 1.能够表达和理解问题的信息域以建立数据模型 2.建立描述系统的功能和行为的模型 3.能够对问题进行分 ...

  8. 软件需求分析-需求开发-需求定义与需求捕获

    需求开发 C4需求定义 一.任务 二.五步法进行问题分析 三.需求定义的产物与要素 四.定义需求范围 C5需求捕获 一.需求捕获的策略 二.需求捕获的主要方法 三.记录工具 C4需求定义 一.任务 确 ...

  9. 需求获取的三阶段:需求背景、需求调研、需求分析(1)

    软件需求的获取是软件开发过程的第一步,需求质量是决定软件成功与否的重要前提,如果获取的需求有了偏差或是遗漏,其结果可能导致后续的分析.设计与开发都出现问题:反之,如果获得了全面.严谨.逻辑表达清晰的需 ...

  10. 「需求广场」需求词更新明细(十二)

    进入需求广场,选取你擅长的领域开始上传资源.获取流量吧! 2022.6.29上线需求词: No. 需求词 No. 需求词 No. 需求词 1 flex布局 116 matlab保存图片 231 基于链 ...

最新文章

  1. 【Memcache】下载与安装
  2. 返回页面顶部最简单方法
  3. 进程通信之二 管道技术第二篇 匿名管道
  4. mysql 平均月份_Mysql按月份统计和按时段统计SQL
  5. nagios错误: 无法打开要更新的命令文件
  6. ELMo代码详解(二)
  7. Error: getaddrinfo ENOTFOUND localhost
  8. 计算机专业必懂知识,学习计算机知识必须懂得50个专业术语
  9. tinypng本地批量压缩图片
  10. 【科普】当手机遭遇短信验证码轰炸,这几点尤其要注意
  11. ubuntu禁用smap
  12. 2020南京市(徐庄)高层次创业人才引进计划开启申报
  13. 见山只是山 见水只是水——提升对继承的认识
  14. 初始化云硬盘切换云主机挂载验证lvm跨主机可读
  15. 苏轼:醉笑陪君三万场 不诉离殇
  16. 樱花飘落的季节——樱花(Python代码实现)
  17. SAP JCo应用方案
  18. 阅读笔记-阿里妈妈AI智能文案
  19. Android Studio快捷键记录
  20. 静态方法与非静态方法的相互调用

热门文章

  1. linux的常用的安装命令
  2. linux端更新pip
  3. 卧槽!字节跳动的面试算法题,实在太变态了
  4. 解决win10系统安装ch341驱动程序显示“预安装成功”的一个方法
  5. 华为手机怎样关闭鸿蒙系统,华为手机怎么升级鸿蒙系统-华为手机升级成鸿蒙系统教程汇总...
  6. 作为项目经理如何开展BI项目
  7. mysql数据脱敏_数据脱敏|静态脱敏|动态脱敏—数据库脱敏_产品
  8. 微信小程序开发之——WebView
  9. OBS教程:3分钟学会直播推流与视频录制
  10. obs录制视频做up主流程