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

前言

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

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

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

🌟功能性需求

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

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

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

🫰举例

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

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

🌟非功能性需求

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

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

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

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

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

🫰举例

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

❤️‍🔥约束(constraint)

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

🫰举例

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



END

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

B站:

👨‍💻主页:天赐细莲 bilibili

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值