【愚公系列】软考高级-架构设计师 074-需求工程

举报
愚公搬代码 发表于 2024/07/29 17:24:36 2024/07/29
【摘要】 🏆 作者简介,愚公搬代码🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。🏆《近期荣誉》:2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主...

🏆 作者简介,愚公搬代码
🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。
🏆《近期荣誉》:2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主等。
🏆《博客内容》:.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。
🏆🎉欢迎 👍点赞✍评论⭐收藏

🚀前言

需求工程(Requirements Engineering)是指软件工程中的一个重要领域,专注于确定用户需求、系统需求和软件需求,并确保这些需求被正确地捕获、分析、规范和管理。需求工程是软件开发生命周期的早期阶段,关注于确保软件系统开发过程中对需求的准确理解和有效管理。

需求工程的主要目标包括:

  1. 需求获取:识别、理解和记录系统用户和利益相关者的需求。

  2. 需求分析:分析需求,识别需求之间的关系、优先级和约束条件。

  3. 需求规范:将需求转化为可验证、可跟踪的需求规范,确保需求清晰、完整和一致。

  4. 需求验证:确保需求规范符合用户和利益相关者的期望,并满足系统和业务需求。

  5. 需求管理:跟踪和控制需求变更,确保需求在软件开发过程中的有效管理和更新。

通过有效的需求工程实践,软件开发团队能够更好地理解客户需求、降低开发过程中的风险,并提高最终软件产品的质量和用户满意度。

🚀一、需求工程

软件需求:是指用户对系统在功能、行为、性能、设计约束等方面的期望。是指用户解决问题或达到目标所需的条件或能力,是系统或系统部件要满足合同、标准、规范或其他正式规定文档所需具有的条件或能力,以及反映这些条件或能力的文档说明。

分为需求开发和需求管理两大过程,如下所示:
在这里插入图片描述

🔎1.软件需求分类

在软件工程中,需求工程涉及不同类型的需求,包括业务需求、用户需求和系统需求。这些需求在软件开发过程中起着关键作用,帮助确保软件系统能够满足用户和利益相关者的期望。

  1. 业务需求

    • 来源于企业或客户,反映系统的高层次目标要求。
    • 确定项目的视图和范围。
    • 通常由项目投资人、客户、市场营销部门或产品策划部门提出。
  2. 用户需求

    • 描述用户的具体目标和要求系统必须完成的任务。
    • 用户需求确定了用户如何使用系统。
    • 通过用户访谈、问卷调查等方式整理用户使用场景,建立用户需求。
  3. 系统需求

    • 从系统角度说明软件的需求,包括功能需求、非功能需求和设计约束。

    • 功能需求

      • 规定开发人员必须在系统中实现的软件功能。
      • 用户利用这些功能来完成任务,满足业务需要。
    • 非功能需求

      • 包括软件质量属性(如可维护性、可靠性、效率等)、性能需求以及其他非功能需求。
    • 设计约束

      • 也称为限制条件或补充规约,对系统的一些约束进行说明。
      • 例如,必须采用国有自主知识产权的数据库系统,必须在UNIX操作系统上运行,金钱相关要求需精确到小数点后2位等。

🔎2.需求获取

需求获取是一个确定和理解不同项目干系人的需求和约束的过程。

  1. 用户访谈

    • 形式:1对1至1对3,找有代表性的用户进行访谈。
    • 要求:对提问者的水平有要求。
    • 类型
      • 结构化访谈(有剧本)
      • 非结构化访谈(随意发挥)
  2. 问卷调查

    • 适用场景:用户数量多,无法一一访谈。
    • 优缺点
      • 优点:能够快速收集大量数据。
      • 缺点:收集到的需求不够精准,比较杂乱,考验问卷编写者的水平。
  3. 采样

    • 定义:从种群中系统地选出有代表性的样本集的过程,类似于数学中的数理统计。
    • 样本数量计算公式:样本数量 = 0.25 * (可信度因子 / 错误率)^2
  4. 情节串联板

    • 形式:通过一系列图片来叙述需求。
    • 优缺点
      • 优点:生动形象,容易理解。
      • 缺点:耗时较长。
  5. 联合需求计划 (JRP)

    • 形式:通过联合各个关键用户代表、系统分析师、开发团队代表一起,通过有组织的会议来讨论需求。
  6. 需求记录技术

    • 常见形式
      • 任务卡片
      • 场景说明
      • 用户故事
      • Volere白卡

在这里插入图片描述

🔎3.需求分析

需求分析是软件工程中的关键阶段,旨在将混乱的用户需求和期望转化为清晰、可管理的用户需求,以确保软件系统开发的成功。

🦋3.1 特性要求

  • 无二义性
  • 完整性
  • 一致性
  • 可测试性
  • 确定性
  • 可跟踪性
  • 正确性
  • 必要性

🦋3.2 需求分析工作内容

  1. 转化用户要求为用户需求:将用户提出的需求和期望整理转化为清晰的用户需求。

  2. 常见需求分析任务

    • 绘制系统上下文范围关系图(数据流图)
    • 创建用户界面原型
    • 分析需求的可行性
    • 确定需求的优先级
    • 为需求建立模型
    • 创建数据字典
    • 使用QFD(质量功能部署)将需求与QFD进行关联

🦋3.3 结构化的需求分析

结构化特点:自顶向下,逐步分解,面向数据。

三大模型:功能模型(数据流图)、行为模型(状态转换图)、数据模型(E-R图)以及数据字典。

在这里插入图片描述

☀️3.1.1 数据流图

数据流图DFD基本图形元素:外部实体、加工、数据存储、数据流
在这里插入图片描述
数据流:由一组固定成分的数据组成,表示数据的流向。在DFD中,数据流的流向必须经过加工。

加工:描述了输入数据流到输出数据流之间的变换,数据流图中常见的三种错误如图所示:

  • 加工3.1 .2有输入但是没有输出,称之为“黑洞”
  • 加工3.1 .3有输出但没有输入。称之为“奇迹”。
  • 加工3.1 .1 中输入不足以产生输出,我们称之为“灰洞”。

在这里插入图片描述

数据存储:用来存储数据。

外部实体(外部主体):是指存在于软件系统之外的人员或组织,它指出系统所需数据的发源地(源)和系统所产生的数据的归宿地(宿)。

☀️3.1.2 分层数据流图

在这里插入图片描述
在这里插入图片描述

☀️3.1.3 数据字典DD

数据流图描述了系统的分解,但没有对图中各成分进行说明。数据字典就是为数据流图中的每个数据流、文件、加工,以及组成数据流或文件的数据项做出说明,即为了描述数据流图的。

数据字典有以下4类条目:数据流、数据项、数据存储和基本加工。(注意这里没有描述外部实体,因为外部实体不是系统内部的内容)

加工逻辑也称为“小说明”。常用的加工逻辑描述方法有结构化语言、判定表和判定树3种。

在这里插入图片描述

🔎4.需求定义

需求定义(SRS)概述:

  • 定义:需求定义,即软件需求规格说明书(SRS),是需求开发活动的产物,旨在确保项目干系人和开发团队对系统的初始规定有共同理解,成为整个开发工作的基础。
  • 重要性:SRS是软件开发过程中最重要的文档之一,任何规模和性质的软件项目都应该具备。

需求定义方法:

  1. 严格定义

    • 也称为预先定义或结构化定义。
    • 基本假设:所有需求能被预先定义,开发人员与用户能准确交流。
    • 采用图形或文字体现最终系统,适用于需求明确的情况。
  2. 原型方法

    • 迭代循环型开发方式。
    • 需注意并非所有需求能在系统开发前准确说明。
    • 原型解决项目干系人之间交流困难问题。
    • 特点:需要实际、用户参与的系统模型,合适的开发环境。
    • 重复是必要的,一旦需求确定,应遵从严格方法。

需求定义方法,可以确保在软件开发过程中,需求明确、项目干系人理解一致,为开发团队提供清晰的工作基础,从而保障软件项目的顺利开展。

🔎5.需求验证

需求验证概述:
需求验证,也称为需求确认,旨在与用户一同确认需求的准确性,评审和测试需求规格说明书(SRS)。该过程包括以下两个步骤:

  1. 需求评审

    • 分为正式评审和非正式评审。
  2. 需求测试

    • 设计概念测试用例和场景,用以测试需求,不牵涉到编写代码。

一旦需求验证通过,需要邀请用户签字确认,作为验收标准之一。此时,需求规格说明书成为需求基线,不得随意更新。若需更改,必须经过需求变更流程。通过需求验证确保了软件开发过程中需求的准确性和一致性,为后续开发工作提供了稳定的基础。

🔎6.需求管理

定义需求基线:通过了评审的需求说明书就是需求基线,下次如果需要变更需求,就需要按照流程来一步步进行。需求的流程及状态如下图所示:
在这里插入图片描述

🦋6.1 需求变更和风险

需求变更和风险管理概述:

在需求变更过程中,需求风险管理至关重要。以下是主要关注的点以及带有风险的做法和变更产生的原因:

  • 关注点:需求变更过程中的需求风险管理。

  • 带有风险的做法

    1. 无足够用户参与
    2. 忽略用户分类
    3. 用户需求不断增加
    4. 模棱两可的需求
    5. 不必要的特性
    6. 过于精简的SRS
    7. 不准确的估算
  • 变更产生的原因

    1. 外部环境变化
    2. 需求和设计不完整
    3. 新技术出现
    4. 公司机构重组导致业务流程变化
  • 变更控制委员会CCB

    • 也称为配置控制委员会。
    • 任务:评价、审批建议的配置项变更,监督已批准变更的实施。

通过对需求变更过程中的风险管理和变更控制的关注,可以有效应对变更带来的挑战,确保软件开发过程中的稳定性和高效性。

在这里插入图片描述

🔎7.需求跟踪

需求跟踪概述:

需求跟踪是编制每个需求与系统元素之间联系的文档,又称为双向跟踪。它包括两种方式:

  1. 正向跟踪

    • 用于确认用户原始需求是否全部实现,以判断产品是否存在遗漏。
  2. 反向跟踪

    • 用于验证软件实现是否符合用户需求,不多不少。

使用方式:

  • 正向跟踪:若原始需求和用例对应,打上对号;若某行无对号,表示原始需求未实现,存在问题。
  • 反向跟踪:若某列无对号,说明有多余功能用例,软件实现了多余功能,需要审查。

通过需求跟踪,可以确保软件开发过程中的需求与实现之间的对应关系清晰明了,帮助团队确保产品开发的准确性和完整性,同时避免遗漏或过度实现的问题。
在这里插入图片描述
在这里插入图片描述

🔎8.题目

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述


🚀感谢:给读者的一封信

亲爱的读者,

我在这篇文章中投入了大量的心血和时间,希望为您提供有价值的内容。这篇文章包含了深入的研究和个人经验,我相信这些信息对您非常有帮助。

如果您觉得这篇文章对您有所帮助,我诚恳地请求您考虑赞赏1元钱的支持。这个金额不会对您的财务状况造成负担,但它会对我继续创作高质量的内容产生积极的影响。

我之所以写这篇文章,是因为我热爱分享有用的知识和见解。您的支持将帮助我继续这个使命,也鼓励我花更多的时间和精力创作更多有价值的内容。

如果您愿意支持我的创作,请扫描下面二维码,您的支持将不胜感激。同时,如果您有任何反馈或建议,也欢迎与我分享。

在这里插入图片描述

再次感谢您的阅读和支持!

最诚挚的问候, “愚公搬代码”

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。