【从零开始学习计算机科学】软件工程(三)需求工程

ops/2025/3/17 9:49:08/

【从零开始学习计算机科学】软件工程(三)需求工程

  • 需求工程
      • 好的需求应具备的特征:
      • 需求工程(Requirement Engineering, RE)
    • 起始
    • 导出
      • 需求讨论会
      • 头脑风暴
      • 调查问卷
      • 场景分析法
      • 实地考察
      • 原型法
    • 精化
    • 协商
    • 规格说明
    • 确认
    • 需求管理

需求工程

设计和开发一个计算机软件时,如果软件解决的问题不对,那么再精巧的软件也满足不了任何人的要求。
理解问题的需求是软件工程师所面对的最困难的任务之一。
困难的原因有二:客户不知道或无法全面的阐述需求;客户需求可能在项目实施过程中改变;
因此,在软件工程过程模型中,需求的获取与分析是最为重要的一环。

软件需求(Software Requirements) ——IEEE, 1997定义:

  • 主观需求:用户解决一个问题或达到一个目标所需要的一种状况或能力
  • 客观需求:系统或系统构件要满足的合同、标准、规范或其他正式文档所需具备的能力;
  • 需求文档:上述需求的文档化表示。

IEEE公布的需求定义分别从用户和软件工程师的角度阐述了什么是需求,需求一方面反映了系统的外部行为,另一方面反映了系统的内部特性,反映的方式是需求文档
软件需求以一种清晰、简洁、一致且无二义性的方式,描述用户对目标软件系统在功能、行为、性能、设计约束等方面的期望,是在开发过程中对系统的约束。
需求通常用于表达“做什么”,而不描述“如何做”。

我们可以将需求分为:

  1. 用户需求(User Requirements):从用户角度描述的系统功能需求与非功能需求,通常只涉及系统的外部行为而不涉及内部特性。
  2. 系统需求(System Requirements, SR):系统应该提供的功能或服务,通常涉及用户或外部系统与该系统之间的交互,不考虑系统内部的实现细节。
  3. 功能需求:指具体需要提供的功能和内容,比如用户登陆功能、收发邮件功能和论坛功能等。描述了系统与其独立于系统实现环境之间的交互。环境包括用户和任何其他与该系统进行交互的外部系统。还包含了数据需求。
  4. 领域需求:是由软件系统的应用领域所决定的特有的功能需求,或是对功能的约束。
  5. 非功能性需求(Non-Functional Requirements, NFR):指为满足客户业务需要必须达到初功能性需求之外的一些约束和限制。如:可用性(Usability)、可靠性(Reliability)、性能(Performance)、可支持性等。

好的需求应具备的特征:

  • 完整性:每一项需求都必须将所要实现的功能描述清楚;
  • 正确性:每一项需求都必须准确地陈述其要开发的功能;
  • 可行性:每一项需求都必须是在已知系统和环境的权能和限制范围内可以实施的;
  • 必要性:每一项需求都应把客户真正所需要的和最终系统所需遵从的标准记录下来;
  • 划分优先级:给每项需求、特性或使用实例分配一个实施优先级以指明它在特定产品中所占的分量;
  • 无二义性:对所有需求说明的读者都只能有一个明确统一的解释;
  • 可验证性:检查一下每项需求是否能通过设计测试用例或其它的验证方法,如用演示、检测等来确定产品是否确实按需求实现。

由于用户、视角不同,需求也必然不同。并且,由于以下因素的存在提高了需求的获取的复杂性和困难性。

  • 问题的复杂性:比如专业领域;
  • 理解的不完备性与不一致性
  • 交流障碍
  • 需求易变性
    并且,在需求获取的过程中通常会存在一些问题,这些问题会导致得到错误的需求。
  • 无足够用户参与,拒绝思想“我不明白为什么要花那么多功夫收集需求”、“与其与用户讨论浪费时间,不如写代码有意思”、“我已经明白用户需求了”。
  • 用户需求的不断增加:若不断增加新需求,项目就越来越庞大以致超过其计划及预算范围。开发中不断延续的变更会使其整体结构日渐紊乱,补丁代码也使得整个程序难以理解和维护。
  • 模棱两可的需求:诸多读者对需求说明产生了不同的理解,单个读者能用不止一个方式来解释某个需求说明。其后果通常是返工,重做一些你认为已做好的事情。
  • 不必要的特性

http://www.ppmy.cn/ops/166458.html

相关文章

在Spring Boot项目中接入DeepSeek深度求索,感觉笨笨的呢

文章目录 引言1. 什么是DeepSeek?2. 准备工作2.1 注册DeepSeek账号 3.实战演示3.1 application增加DS配置3.2 编写service3.3 编写controller3.4 编写前端界面chat.html3.5 测试 总结 引言 在当今快速发展的数据驱动时代,企业越来越重视数据的价值。为了…

Hive SQL 精进系列:一行变多行的 LATERAL VIEW EXPLODE

目录 一、引言二、LATERAL VIEW EXPLODE 概述2.1 基本概念2.2 单词解析2.2.1 LATERAL2.2.2 VIEW2.2.3 EXPLODE 三、语法详解3.1 基本语法结构3.2 完整语法示例(针对映射情况) 四、使用场景4.1 数组数据展开4.2 映射数据展开 五、案例分析5.1 展开数组示例…

css模拟雷达扫描动画

<div class"radar-scan"><div class"radar-container" /></div> 样式&#xff1a; .radar-scan {background-image: linear-gradient(0deg,transparent 24%,rgba(32, 255, 77, 0.15) 25%,rgba(32, 255, 77, 0.15) 26%,transparent 27%,…

从LLM出发:由浅入深探索AI开发的全流程与简单实践(全文3w字)

文章目录 第一部分&#xff1a;AI开发的背景与历史1.1 人工智能的起源与发展1.2 神经网络与深度学习的崛起1.3 Transformer架构与LLM的兴起1.4 当前AI开发的现状与趋势 第二部分&#xff1a;AI开发的核心技术2.1 机器学习&#xff1a;AI的基础2.1.1 机器学习的类型2.1.2 机器学…

NocoBase 本周更新汇总:双因素身份认证(2FA)

原文链接&#xff1a;https://www.nocobase.com/cn/blog/weekly-updates-202503013 汇总一周产品更新日志&#xff0c;最新发布可以前往我们的博客查看。 本周我们发布了 NocoBase 1.6.0 版本&#xff0c;带来集群模式部署、安全策略优化和迁移管理等多项新特性。 NocoBase …

C# NX二次开发:在多个体的模型中如何实现拉伸操作布尔减

大家好&#xff0c;今天接着上一篇拉伸文章去讲。 UF_MODL_create_extruded1 (view source) uf_list_p_tobjectsInputList of objects to be extruded.char *taper_angleInputTaper angle (in degrees).char *limit [ 2 ]InputLimit of extrusion. This is declared as: char …

Mysql连接---语言连接和图形化界面

语言连接 在已经具备MySQL的基础知识后&#xff0c;需要学习如何进行使用&#xff0c;要用c语言连接mysql&#xff0c;需要使用mysql官网提供的库&#xff0c;用c接口库进行连接。 准备工作&#xff1a; 保证mysql服务有效 在官网上下载合适的mysql connect库 1.安装Connect…

宇树科技再落一子!天羿科技落地深圳,加速机器人创世纪

2025年3月5日&#xff0c;机器人行业龙头宇树科技&#xff08;Unitree&#xff09;在深圳再添新动作——全资子公司深圳天羿科技有限公司正式成立。这家注册资本10万元、法定代表人周昌慧的新公司&#xff0c;聚焦智能机器人研发与销售&#xff0c;标志着宇树科技在华南市场的战…