(软工) 功能性和非功能性需求是什么?

文章目录

  • 前言
  • 🌟功能性需求
    • ⭐⭐⭐系统应该做什么?或者应该提供什么功能?⭐⭐⭐
    • 🫰举例
  • 🌟非功能性需求
    • ⭐⭐⭐系统应该在哪些条件下能执行这些功能,且执行的很好。⭐⭐⭐
    • ❤️‍🔥质量属性(Quality Attribute, QA)
      • 🫰举例
    • ❤️‍🔥约束(constraint)
      • 🫰举例
  • END

前言

软件开发的根本目的就是满足客户的需求。这个客户可以是一个人,一个企业,甚至是你公司内部的另一个部门。

但绝大多数客户往往无法准确表达自己希望的需求,这时就需要软件架构师去挖掘功能。

一般来说软件功能可以分为功能性需求非功能性需求

🌟功能性需求

⭐⭐⭐系统应该做什么?或者应该提供什么功能?⭐⭐⭐

功能并不总是不影响架构。

但是有的功能在实际落实下决定了解决方案的设计。特别是一些必须且明确满足的功能。会涉及到架构击毙重量需求(Architecturally Significant Requirement, ASR)

🫰举例

作为一个<角色>,我想要<功能>,带来<好处>。

  • 作为用户,我想在点击➕按钮后立即将该物品添加到购物车。
  • 作为用户,在web端输入账户密码后直接按回车就进行登录(不用按登录按钮)。
  • 当我确认注册,我想看到一个弹窗或者短信或邮件来告诉我是否注册成功。
  • 作为老师,我想直接修改某位学生的期末成绩。
  • 等等

🌟非功能性需求

⭐⭐⭐系统应该在哪些条件下能执行这些功能,且执行的很好。⭐⭐⭐

非功能性架构总是能影响架构。

在设计过程中,需要非常明确的确定非功能性需求。一些模糊的非功能性需求会在开发后期产生难以预估的影响。

❤️‍🔥质量属性(Quality Attribute, QA)

  • 性能
  • 可维护性
  • 用户友好性
  • 等等

🫰举例

  • (信息安全)网站不会存储你当前输入的密码。
  • (完整性)软件更新时,若更新失败不会使旧版本无法使用。
  • (性能)该AI可以在5分钟内处理10份2mb大小以内的pdf文件。
  • (跨平台)在华为,小米,苹果手机都能够使用这个app。
  • 等等

❤️‍🔥约束(constraint)

  • 在交付项目时必须遵守的不可协商的决策
    • 设计决策
    • 技术决策
    • 政治决策
  • 时间约束
  • 预算约束
  • 等等

🫰举例

  • 该系统必须使用vue3作为前端技术,Django作为后端技术。
  • 乙方在合同签订后3个月内完成软件的出版交付,5个月内完成终版的交付。
  • 甲方在终版交付时间点前违约或终止交易,则不返还定金。
  • 等等



END

关注我,学习更多C/C++,算法,计算机知识

B站:

👨‍💻主页:天赐细莲 bilibili

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/676910.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

(2024|ICML,Mamba2,SSD,SSM,SMA,矩阵变换,张量收缩,张量并行)Transformer 是 SSM

Transformers are SSMs: Generalized Models and Efficient Algorithms Through Structured State Space Duality 公和众和号&#xff1a;EDPJ&#xff08;进 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 进 V 交流群&#xff09; 目录 0. 摘要 1. 引言 2. …

SQL实验 数据的插入、修改和删除操作

一、实验目的 1&#xff0e;掌握Management Studio的使用。 2&#xff0e;掌握SQL中INSERT、UPDATE、DELETE命令的使用。 二、实验内容及要求 用SQL语句完成下列功能。使用数据库为SCHOOL数据库。 1、新开设一门课程&#xff0c;名叫网络安全与防火墙&#xff0c;学时40&#x…

Leetcode - 周赛400

目录 一&#xff0c;3168. 候诊室中的最少椅子数 二&#xff0c;3169. 无需开会的工作日 三&#xff0c;3170. 删除星号以后字典序最小的字符串 四&#xff0c;3171. 找到按位与最接近 K 的子数组 一&#xff0c;3168. 候诊室中的最少椅子数 本题是一道模拟题&#xff0c;直…

Bootstrap框架最新V5 快速入门直通

目录 Bootstrap - 前言 Bootstrap - 下载 Bootstrap - 使用 Bootstrap - 学习 Bootstrap - 栅格系统 Bootstrap - 全局样式 Bootstrap - 组件(Coponents) Bootstrap - 字体图标 Bootstrap - 前言 Bootstrap是由Twitter公司开发维护的前端UI框架&#xff0c;它提供了大量…

【YOLOv5/v7改进系列】引入Slimneck-GSConv

一、导言 GSConv旨在平衡模型的准确度与速度&#xff0c;针对自动驾驶车辆中目标检测任务设计。从类脑研究中得到的直观理解是&#xff0c;具有更多神经元的模型能够获得更强的非线性表达能力。但是&#xff0c;不容忽视的是生物大脑处理信息的强大能力和低能耗远远超过计算机…

【Linux】Linux项目自动化构建工具——make/Makefile

1.背景 会不会写makefile&#xff0c;从一个侧面说明了一个人是否具备完成大型工程的能力一个工程中的源文件不计数&#xff0c;其按类型、功能、模块分别放在若干个目录中&#xff0c;makefile定义了一系列的 规则来指定&#xff0c;哪些文件需要先编译&#xff0c;哪些文件需…

前端框架前置知识之Node.js:fs模块、path模块、http模块、端口号介绍

什么是模块&#xff1f; 类似插件&#xff0c;封装了方法 / 属性 fs 模块- 读写文件 代码示例 // 1. 加载 fs 模块对象 const fs require(fs) // 2. 写入文件内容 fs.writeFile(./test.txt, hello, Node.js, (err) > {if (err) console.log(err) //若 err不为空&#xf…

Linux的网络配置

查看网络配置命令 一、查看所有活动的网络接口信息 ifconfig ifconfig 展示的是当前设备正在工作的网卡&#xff08;启动的设备&#xff09; ifconfig -a 展示所有的网络设备 ifconfig ens33 查看指定网卡设备 ifconfig ens33 down 关闭网卡 或者 ifdown ens33 &#xff0…

Java集合概述

分类 分为两大类&#xff1a;Collection接口类和Map接口类 这两个接口都继承自一个共同的接口&#xff1a;Iterable接口&#xff0c;意为可迭代的 Iterable接口当中有一个Iterator迭代器接口对象&#xff0c;作为接口的变量&#xff08;public static final修饰&#xff09;…

MySQL—约束—外键约束中删除和更新行为(基础)

一、引言 上一个博客讲解并演示给字段加外键约束&#xff0c;以及通过外键来保证数据的一致性和完整性。我们一旦为子表 emp 字段 dept_id 添加外键关联之后&#xff0c;再去删除父表的数据之后&#xff0c;判断当前父表的这条数据是否在子表关联关系。如果存在&#xff0c;则不…

11.6 归并排序

目录 11.6 归并排序 11.6.1 算法流程 11.6.2 算法特性 11.6.3 链表排序 11.6 归并排序 归并排序&#xff08;merge sort&#xff09;是一种基于分治策略的排序算法&#xff0c;包含图 11-10 所示的“划分”和“合并”阶段。 划分阶段&#xff1a;通过递归不断地…

vue前端实现页面禁止缩放 前端适配问题处理 前端项目多端适配解决方案

在前端项目中,如果一个系统页面可以缩放可能会导致多种异常情况,这些异常情况涉及到页面布局、元素尺寸、事件触发、响应式设计和用户体验等方面。 1.布局错乱:页面元素在缩放后可能会出现错位、重叠或部分隐藏的情况,导致页面布局混乱,影响用户对页面内容的理解和操作。这…

接口签名和postman预处理生成签名

nestjs后端代码 controller Get(md5hmacSHA1b64)postMd5hmacSHA1b64(Req() request: Request, Query() query) {// 获取GET请求参数const queryParamsMap new Map(Object.entries(query));return this.handleMd5hmacSHA1b64(queryParamsMap, request);}Post(md5hmacSHA1b64)U…

达梦数据库相关SQL及适配Mysql配置总结

&#x1f353; 简介&#xff1a;java系列技术分享(&#x1f449;持续更新中…&#x1f525;) &#x1f353; 初衷:一起学习、一起进步、坚持不懈 &#x1f353; 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正&#x1f64f; &#x1f353; 希望这篇文章对你有所帮助,欢…

ApiJson简单使用

前言 最近在正式迭代中插入了一个大屏演示项目&#xff0c;因为后端开发人员任务都安排满了&#xff0c;而演示项目逻辑比较简单&#xff0c;大多是直接查表就能搞定&#xff0c;所以只能想办法让前端直接和数据库交互&#xff0c;增加开发速度。在找工具时发现了ApiJson。尝试…

C语言学习之结构体

结构体&#xff1a; c语言---提供的一种方式&#xff0c;可以让用户自定义数据类型&#xff0c;用于处理复杂的数据类型。 struct 结构体名 { 成员表列 }; 构造一个结构体 结构体变量的引用: 方法: 结构体变量名.成员名 . 结构体成员运算符 //表示 从属关系 s.name //表…

MySQL-权限管理(二)

一 host中的含义 /usr/local/mysql/bin/mysql -pLXYlxy2:024.#8u} -S /data/mysql/tmp/mysqld.sock select user,host,authentication_string from mysql.user; %:主要允许从任何主机连接到MySQL服务器&#xff0c;即外部连接localhost: 代表只允许本地主机连接到MySQL服务器&…

SpringBoot——整合Servlet的三大组件:过滤器(Filter)

目录 过滤器 一、用过滤器检查用户是否登录 LoginFilter自定义过滤器 FilterConfig配置类 FilterController控制器 SpringbootFilterApplication启动类 二、用过滤器统计资源访问量 LoginFilter FilterController 在开发SpringBoot项目时&#xff0c;开发人员经常需…

使用Obfuscar 混淆WPF(Net6)程序

Obfuscar 是.Net 程序集的基本混淆器&#xff0c;它使用大量的重载将.Net程序集中的元数据&#xff08;方法&#xff0c;属性、事件、字段、类型和命名空间的名称&#xff09;重命名为最小集。详细使用方式参见&#xff1a;Obfuscar 在NetFramework框架进行的WPF程序的混淆比较…

乡村振兴的乡村旅游品质提升:提升乡村旅游服务质量,打造乡村旅游品牌,增强乡村旅游吸引力,打造具有旅游特色的美丽乡村

目录 一、引言 二、提升乡村旅游服务质量 1、完善基础设施建设 2、提升服务人员素质 3、规范服务流程 三、打造乡村旅游品牌 1、挖掘乡村文化特色 2、打造特色旅游产品 3、加强品牌宣传和推广 四、增强乡村旅游吸引力 1、创新旅游体验方式 2、打造旅游精品线路 3、…