功能需求有哪些,功能性与非功能性的区别

功能需求一般是我们已经显现出来了。 一般实现什么功能,提供什么服务? 我想大概是在问题中提到的,或者是我们日常所说的。 “复杂而不复杂”基本上是针对功能需求。 以谷歌的搜索服务为例,它是:

有输入框,有按钮。 用户可以在输入框中输入关键字,按下按钮后搜索相应的结果。

功能需求因站点、软件、业务和使用目的而异,差异很大。

非功能性需求适用以下维基百科定义() (模糊、绕圈子,但我认为很精致、很准确) ) ) )。

在系统工程和请求工程中,“非功能请求”(Non-functional requirement )是指根据某些条件(而不是对系统特定行为的要求)来确定系统的运行状况或其特性与非功能需求相反,是定义系统特定行为或功能的功能需求。 非功能性需求必须满足才能满足客户的业务需求,但也可以视为功能性需求以外的特性。

一般来说,实现功能要求的计划在系统设计(英语)系统设计(Systems design )中详细描述,而实现非功能要求的计划在系统体系结构(英语)系统体系结构(Systems architecture )中详细描述。 通常,功能要求定义系统行为,而功能要求定义系统特性。

非功能需求通常称为系统的“质量”,也可以称为“限制”、“质量属性”、“质量目标”、“质量属性”、“质量服务需求”或“非行为需求”。 许多非功能性要求(如“稳定性”、“可移植性”等)的英语以“ilitiy”结尾,因此非功能性要求有时也称为“ilities”。

非功能性需求可分为以下两类:

运行质量(Execution qualities )是指系统运行中可以观察到的质量,如安全性和易用性等。

软件系统的结构和开发,包括开发质量(Evolution qualities )、软件测试性(software testability,可维护性、可扩展性、可伸缩性)和可伸缩性)

非功能性需求普遍隐藏,容易被私人程序员、设计师们忽视。 非功能性需求与功能性需求不同,各种网站、软件有共性。 例如,在@酷猫提到的海量文件存储问题中,淘宝、腾讯和谷歌面临着同样的问题,并开发了类似的解决方案(TFS、TFS、GFS )。

非功能需求的分类方法很多,没有与行业通用一致的标准。 但是,很多意想不到的方法是相同的,虽然名称/称呼和分类方法可能有一些差异,但其含义和指向一般倾向于一致。 我来简单介绍一下我一般多采用的分类。

性能/容量:性能和容量易于理解,包括需要支持的用户数,特别是高峰并发用户数、用户可接受的响应时间和数据规模。 @酷猫提到的百万级惊人的数据规模、亿单位的文件存储等。 现在我们来稍微纠正一下@酷猫的一个观点,百万级的数据支持,还有一些商业数据库产品可以支持。 TPC-C/TPC-D和新一代行业性能测试标准中还有千万级数据规模的测试项目,也有数据库制造商申请参加。 当然,对于淘宝这样的业务模式和实际情况/要求来说,性价比和实用性可能确实很低)

可靠性/可用性/可恢复性:一组可靠性属性,与软件在特定时间和条件下维护功能服务和性能级别的能力相关。 可用性是另一种说法。 例如,我们要求系统运行7×24小时,年连续运行故障停机时间累计不能超过10小时等,就是这方面的要求。 可恢复性是指在发生错误或故障后重新建立性能级别并恢复直接影响的数据的能力。 例如,“支付宝”(Alipay )需要在交易提交失败后确保回滚。 这家银行的钱支付不好,却要表明它的头是支付成功的,还是相反这家银行扣款了。 其头部在改变交易状态时,由于冗馀和其他原因,交易必须处于未支付状态。

可维护性/可管理性:包括系统稳定性、自排能力和可测试性在内,无需人类干预。 故障排除能力、系统修复、升级、备份、恢复机制和是否方便都属于这一领域。 这通常在很大程度上决定了系统的运营维护成本和维护难度。

安全性:安全范围包括传输加密、存储加密、可解密性以及如何防止和控制各种未经授权的用户行为。 此处的安全性不仅适用于外部普通用户,还适用于控制内部不同级别的权限用户。 小到用户在输入框中输入特殊字符,如何防止和处理设计者意外的结果,防止外部黑客和内部sxdhc。 安全往往不仅取决于技术的实现,而且在很大程度上取决于适当的制度和审计。

易用性:太好了。 这个话题现在最热。 这可能是非功能需求中目前唯一被高亮显示、被各种各样的人关注、谈论的领域。 易用性设计目前已上升到一个新的水平,称为人机体验、UE设计。 虽然目前还在讨论UE是分为功能需求还是非功能需求,但主流观点认为这是非功能需求的典型部分,包括我自己。

数据一致性:包括数据编码和语言、冗馀数据一致性要求(包括时间要求)等。 例如,考虑到性能,整个数据库的设计是按照第二或第三示例的要求而不是总线示例的要求来设计的。 一些信息(例如用户注册信息)可同时存在于系统的多个位置(例如,多个表)中,如果注册信息改变,则该信息如何确保记录在多个位置中的信息被修改,以及所有此修改的时限请求可由多少

个范畴的内容。
系统/环境 条件及限制:现有的软硬件条件,平台的条件,网络的条件都属于这个范畴。典型的例如很多移动互联网产品,必须要考虑移动网络的带宽条件,终端运算性能和能力,以及其移动网络稳定性等等。
事实上,从我的经验来看,一般来说,很多软件项目及产品,其在非功能性需求上的成本,难度和工作量,是要超过功能性需求的。在特定的软件领域,例如网站(尤其是淘宝,facebook这样海量用户规模的网站),金融(银行证券),电信领域,其非功能性需求实现的重要性,工作量,技术难度要远远远远大于功能性需求的实现。

而且,功能性的需求的实现,其实在大多数情况下,更依赖于业务的gddxlb(或者好的产品经理)而不是技术的gddxlb,而非功能性需求的实现,恰恰是挑战技术gddxlb的重要课题。

一个最典型的极限非功能性需求的例子就是电信的计费系统,其实基本功能很简单,获取通话时长,按照费率公式算个钱出来,但是放到海量的用户,实时的计费要求中来看,这是一个极具技术挑战的活。

还有一个经典的案例是,中国某地方性银行(注意仅仅是地方性的银行),想要引入一个柜面服务的系统,找到了新家坡的一个厂商,他们在东南亚银行业有很多案例,而且功能设计非常完善合理和先进。但是这家地方性银行引入这个系统以后,2周之内发行了几十万张信用卡,这系统就顶不住崩溃了。这就是典型的功能性需求实现完美,但是非功能性缺陷的例子。

从我的经验来看,一般来说,非功能性需求中,性能/容量,以及安全的要求,一般是技术挑战最多,内涵最丰富,成本最高,最值得关注的领域,当然,现在易用性(UE)也是一个极度收到重视的领域。

有志于架构师取向的IT技术人员,非功需求实现的领域,是一个必须关注,必须熟悉的领域。

而本问题最大的根源在于,只看到了网站功能性需求的部分,而没有注意到非功的部分,对于非专业的IT技术人员来说,这很正常,但是对于IT技术人员来说,是需要认真关注的必修课。

作者:天光
链接:https://www.zhihu.com/question/20303645/answer/15588211
来源:知乎

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注