程序原本(七十七):应用开发基础——应用程序设计语言的复杂性(面向问题根源的两种求解思路:规则化与系统整合)

阅读数:31 2019 年 10 月 3 日 14:36

程序原本(七十七):应用开发基础——应用程序设计语言的复杂性(面向问题根源的两种求解思路:规则化与系统整合)

回到最开始的问题。无论如何,工程师最终仍然要通过一个产品实现过程来满足用户的如下需求:

  • 非功能性需求;
  • 非当前需求。

这些是应用系统复杂性的主要构成。通常地,工程师会将它们映射为系统中的两个主要概念,即“约束”与“变更”,如图 43 所示。

图 43 面对两种需求背景,所提出的主要(实施)概念

程序原本(七十七):应用开发基础——应用程序设计语言的复杂性(面向问题根源的两种求解思路:规则化与系统整合)

至于实施这些概念的具体技术与方法,对于工程师来说也并不陌生。例如非功能性中的跨平台问题,在早期软件开发的实践中,就是通过伪编译指令,即编译期的约束来指定目标程序的运行平台;又例如命令行参数,即用运行期的约束来指定目标程序的特定配置。就目前来说,这些实现可以归纳为图 44 所示的一些思想与技术1

1 对于功能性需求来说,部分(尤其是时间与空间的区划)可参见“第 12 章 应用开发技术”。

图 44 实施层面的思想、技术与具体方法

程序原本(七十七):应用开发基础——应用程序设计语言的复杂性(面向问题根源的两种求解思路:规则化与系统整合)

接下来我们就来讨论这些稍为具体一些的“技术”,包括概念或方案,以及技术或手段。它们是相关的实施思想在具体技术层面的、两个不同维度上的实现。总而言之,所谓的概念或方案,总是对我们对于技术或手段在具体实施过程中所得经验的总结、归纳以及抽象层面上的提升。

评论

发布