- 内容提要
- 序 1:程序里的世界
- 序 2:最后一层表象
- 关于本书
- 致谢
- 引言:简单的本源
- 篇一:计算系统
- 第 1 章 数,以及对数据的性质的思考
- 第 2 章 逻辑
- 第 3 章 抽象
- 篇二:语言及其面临的系统
- 第 4 章 语言
- 第 5 章 从功能到系统
- 篇三:程序设计的核心思想
- 第 6 章 数据结构:顺序存储
- 第 7 章 数据结构:散列存储
- 第 8 章 执行体与它在执行过程中的环境
- 第 9 章 语法树及其执行过程
- 第 10 章 对象系统:表达、使用与模式
- 篇四:应用开发基础
- 第 11 章 应用开发的背景与成因
- 第 12 章 应用开发技术
- 第 13 章 开发视角下的工程问题
- 第 14 章 应用程序设计语言的复杂性
- 篇五:系统的基础部件
- 第 15 章 分布
- 第 16 章 依赖
- 第 17 章 消息
- 第 18 章 系统
- 篇六:系统的基本组织方法与原理
- 第 19 章 行为的组织及其抽象
- 第 20 章 领域间的组织
- 附一:主要编程范式 及其语言特性关系
- 附二:继承与混合,略谈系统的构建方式
- 附三:像大师们一样思考——从 UML 何时死掉 谈起
- 附四:VCL 已死,RAD 已死
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
11.5 产品需求通常是非功能性的,但又是最上层的应用表现
那么什么是非功能性需求呢?我将这一类需求理解为:即使这些需求完全不存在,也并不影响应用的主体功能的交付,那么这类需求就称为非功能性需求。例如安装、手册、升级维护工具等。 14 在我们的应用开发中,有大量的工作与技能都是与这些非功能性需求相关的。然而它们并非是不必要的,相反,掌握这些技能是成长为应用开发工程师所必需的。只是这些内容的思维方式与学习方法,与我们此前所讨论的“(严格意义上的)程序”完全不同。
综合上述讨论,应用开发中存在三个层次上的需求,如图 31 所示。
图 31 应用开发中三个层次上的需求
其中,必须完成的 计算需求 是通过系统分析,在机器数据层、基础数据层和应用数据层上所得出的功能性需求。独立领域的 应用需求 ,是通过业务分析,在用户的业务领域中所得出的功能性需求。而第三个方面, 产品需求 则通常是非功能性的 15 。最后需要强调,有一部分非功能性需求可能同时也是非当前需求,例如版本管理 16 。
- 这是 DSL(领域特定语言,Domain Specific Languages)的出处。 ↩
- 这里基于 Delphi 语法惯例,用前缀字符“T”来表示数据类型,而
SizeOf()
函数用于取数据类型所需存储的大小。 ↩ - 该例援引的是 Delphi 中的一些内存管理函数,在不同的语言或平台中可能存在差异。 ↩
- 这里的验证器指的是类似 JAVA 中的通过注解来进行数据验证的技术。 ↩
- “如何屏蔽底层细节”也是应用开发技术的一部分,但对大多数应用开发语言/环境来说,这些都是内建机制。 ↩
- 这只是“可能”,因为张三也可以有许多不同的方式来接触到这个
User_IdCard
,并最终显示它(亦即是过程三)。这涉及到种种不同的人机交互技术的现实应用,但这些交互行为之任一,都并非是实现过程三所必然的选项。 ↩ - 对于现实的户籍管理系统来说,这可能算不得“好的”实现过程,因为它混杂了过程式与面向对象编程风格,并且对于多线程/多界面操作来说存在隐患。 ↩
- 这里使用了 Delphi 的一些技巧:(1)
TShowCardForm()
在关闭时是可以自动释放的;(2)窗体可以向调用过程返回一个值以表明用户所做的界面操作;(3)使用ShowModal()
方式打开的窗体能阻止该应用中其他窗体的操作,即这种情况下的用户界面是独占的。 ↩ - 想象一下把 xml 文件直接展示在文本编辑器或 WEB 浏览器中。 ↩
- 张三也许并不知道“户籍管理系统”如何安装到他工作的机器上,但这并不妨碍他使用这个系统。 ↩
- 可以在 PC 机、移动设备以及其他的各种环境中找到“桌面”与“后台”的不同划分。一种不太严格的划分方式是:后台程序总是以控制台或类似方式与操作者交互,而桌面程序则采用种种“友好的”交互方式。 ↩
- 这往往被归入产品的设计特性。Marty Cagan(网景副总裁、eBay 产品管理及设计高级副总裁)甚至将设计与功能区分开来,将设计特性作为产品属性而非具体的功能属性。参见《程序员》2011 年之“Marty Cagan 谈产品系列”。 ↩
- 你当然可以具有这样的技能,一专多能或者无所不能并非坏事,但在这里我们只讨论属于程序员的那个部分。 ↩
- 有一类软件叫“绿色软件”,它有一个特定的名称叫“Portable Software”,通常是某个应用产品的定制版。比较绿色软件与相应产品的发布包,其中被删减掉的部分基本上就可以称为非功能性需求。 ↩
- 这些狭义的、刻意与其他类型的需求区别开来的产品需求当然也表现为具体的功能,这里的“非功能性”是针对目标用户而言。例如产品互联网产品中存在如何运营、营利的问题,这类运营需求往往不是目标用户所关心的,而是互联网企业对于该产品的需求。 ↩
- 在这一视角下,“版本”这个概念是相当混杂的,它包括功能性需求、非功能性的需求,以及产品和产品线的需求。在后面我们会再次谈到:在“应用开发”这一领域中所言的版本,仅是这个概念中的一部分。 ↩
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论