软件体系结构的黄金时代 四
走向下一步!
软件工程的研究总是被生产和使用实际的软件中提出的问题所激励。技术上的想法开始的时候往往是对问题或者实践的定性描述,然后逐步的变的更加精确,也更加强大(powerful),这是因为实践和相关的正式的知识也先后的成长起来了。软件开发过程中的一些特征由此变得更加容易理解,催生了更加强大的规格说明描述机制,进而又产生了更加强大的技术。
软件体系结构就沿着这个范例,从它在实验室里的青春期走向了成熟期。这让研究者有了一个额外的责任,就是向大众显示软件体系结构不仅仅是一个有希望的新的想法(有充足的研究潜力),更要表明它们是有实际意义的。比如曾经有段时间,几乎是每个月都有一种新的软件体系结构描述语言(ADL)诞生,但是现在如果有人想发明一种新的语言,他必须回答这个问题:“你的新成果有没有可能把UML拉下马?你提供的新成果里有什么新的特性吗?”
然而,在软件体系结构方面仍然有着充足的机会来推出新成果。这里列出来一些最有可能出现新成果的地方:
*加强(Expanding)在体系结构设计和质量属性之间的关系。这样有可能在将来的一天产生一种实用的自动化体系结构设计助手。它也可以用于检测一个系统是不是可以发布给特定的用户。
*找出可以正确描述体系结构的语言。UML 2.0在一些不特别重要的方面针对它的上个版本做了改进,但是它仍然缺乏体系结构方面的一些基础概念,比如“层”(layer)或者一个可靠的表示连接者(connector)的符号。它不能分析视图(view)之间的内在关系或者把代码与图之间建立起紧密的联系。它也太容易就把设计概念和实现混合起来。
*找出能保证代码和体系结构之间一致性的方法。缺乏一致性使得代码本身自成体系,而软件体系结构却变成了一个被遗弃的分支。我们可以通过创建(construction)(包括生成、提炼和逐步增加,原文是via generation, refinement, and augmentation)和萃取(extraction)(静态的或者动态的分析一个软件来决定它是否符合所设计的体系结构)建立代码和体系结构的一致性。在这两种方法,都已经有早期的工作在开展,但是至今还没有一个解决方案能提出来,特别是在恢复和加强运行视图(runtime views)和那些超越了结构的体系结构法则。
*在软件体系结构的基础上重新审视我们做软件测试的方法。一个体系结构能够提供给我们获很多的测试计划、测试用例和其他的测试结果(test artifacts)。对于那些从体系结构中产生出来的代码(例如关系和迭代的实现机制,such as implementations of connections an interaction mechanisms)是比较容易实现自动测试的。一个基于体系结构测试的强模式(strong model)由于前述原因,和它拥有比较使用的工具,所以很可能在软件开发系统上产生强大的经济效益。
*把体系结构方面的知识组织起来成为一个参考手册。那些成熟的工程学科往往都可以为该方面的工程师提供手册或者参考资料来系统的获得知识。把体系结构按照模式分类是这个方面的第一步,但是我们同样也需要在领域特定的体系结构方面和分析技术方面的参考资料。格瑞迪·布驰(Grady Booch,大名鼎鼎啊)关于软件体系结构的手册可以提供一个很好的范本,但是工程师们同样需要把我们已知的关于体系结构的知识组织成一个容易查找、操作的知识体系的参考资料。
*开发可以支持根据资源的改变和用户的期望、选择改变而动态适应改变的软件体系结构。由于计算机已经变得无处不在而集成到了日常的设备中,所以基础设施,比如带宽,信息资源,比如当地信息都会动态的改变。而且,每个用户的需求都会随着时间而改变,不同的用户还有着不同的需求。动态的适应这些改变可以最大化每个用户的利益。达到这一点不仅仅要求软件的体系结构能动态的适应改变,同样要求反映了用户需求的组件(component)规格说明和组件的内在属性能动态适应改变。
看看十年后,或者说,现在还是梦想中的想法能得到实现将是非常吸引人的。但是至少有一件事情是清楚的,那就是过去的十五年里,软件体系结构已经经历了经历了一个本质的变化,已经形成了一门学科。它在八十年代的末期兴起,那时侯它的形式是在象牙塔里的一个想法而已,其目的也仅仅是理解和规范(codifying)在工业实践中的软件系统的描述。从那时候开始,它逐渐成长为一个相对成熟的工程科学,拥有标准规范和可以重现的实践、丰富的已经分类的已经打包的设计方案,还有一个巨大的商业市场可以提供相关的工具和组件,而且就软件体系结构是软件系统开发中不可缺少的一部分这一观点也得到了广泛的认同。
“黄金时代”当然是一个繁荣的、取得了杰出成就的时代,往往以大量涌现把该项技术从推测变成可靠的进步为标志。最近的十五年,或者说大概上是瑞得文-莱得(Redwine-Riddle)模型中的第四个阶段,正是软件体系结构的黄金时代。正如航空工业在二十世纪三十年代的黄金时代一样,那是一段充满了发现、天马行空的想像、巨大的进步、同样巨大的挫折和一切皆有可能的感觉。
但是所有的黄金时代都会结束,随着软件体系结构从新奇变成不可缺少,它的黄金时代也逐渐结束了。这也是应该的,因为软件体系结构正在进入一个可以认为是确保的时代(taken for granted)。结果,我们的软件技术已经不能离开软件体系结构了,而且我们必须不停的改进它。这是所有成熟技术的注定命运,这也是它为我们带来回报的时候。但是这并不是说研究、创新和改进的时代已经过去,正相反,现在这些令人激动的东西依然存在但是已经从不成熟的童年转变成了稳重的成年时代:在软件体系结构的成熟阶段打下的坚实基础和现在正在进行的研究工作会让更多的想法成为现实,这将在未来产生更多令人惊叹的构造系统的能力。而对我们来说,最让我们感兴趣的问题是:已经坚实的创建起来的软件体系结构会引入什么些新的工程技术,以及这个新的工程技术的黄金时代会是什么时候呢?
鸣谢
略
[原文在百度空间已经关闭]
标签集合/Tag clouds
C++
Symbain
轻松汇编
算法
论文学习
资治通鉴
Delphi
编程之美
Poco
MFC
Linux
IFC
知乎
汇编
数据分析
交叉编译
poco
j2me
android
XML
Java
DTD
飞信
零宽断言
诺基亚
联系人
编程
真值表
池西木
正则表达式
多线程
命令行
优化
stream
configure
cmake
VIM
UiAutomator
TDD
Symbian
Sqlite
SourceInsight
Python
MPAndroidChart
Kotlin
Flutter
Dokka
Chatgpt