浅谈Architectural Assumption(软件架构设计的假设条件)(1)

这个概念并非我们原创,早在二十年前David Garlan、Robert Allen 和 John Mark Ockerbloom就已经谈到了这个概念,英文是architectural assumption。据我们了解,英文领域已经有至少164篇已发表的文章谈到了各种各样的assumption(如需求assumption、架构assumption、代码assumption等),涉及其重要性,在软件开发中的位置,如何管理等。我也曾经和多位教授、学者以及欧洲公司的架构师聊过这个话题,发现这个术语以及相关的概念对于他们来说非常容易理解。

鉴于国内并没有相应的研究,我们尝试翻译architectural assumption这个术语,考虑到学术界和工业界对于用词的差异,比如学术界喜欢用软件体系结构,而公司里喜欢用软件架构,但实际是一回事。我们先后用过软件体系结构的假设、软件体系结构设计的假设条件、软件架构设计的假设条件等来描述这个概念,但效果似乎都不理想。

以下我统一用AA来代替architectural assumption,用软件架构代替软件体系结构。

什么是AA?

虽然我说国外对这个概念比较了解,但有趣的是,他们详细地解释起来也是五花八门,似乎并没有形成统一的定义。我们翻阅了一些英文字典,比如Oxford English Dictionary. http://www.oxforddictionaries.com/definition/english/assumption和Merriam-Webster. http://www.merriam-webster.com/dictionary/assumption。发现assumption被定义为:“a thing that is accepted as true or as certain to happen, without proof” or as “a fact or statement taken for granted”。于是我们定义AA为架构知识的重要组成部分,它表示的是架构设计中缺少证据支持但又被认为合理的信息。

2015年格罗宁根大学软件工程与架构研究组联合武汉大学软件架构研究组在中国做了一个关于AA的调研,包含112位来自企业的参与者,覆盖软件开发、架构设计、详细设计、项目管理、需求管理、测试等。发现67.0%的参与者并不熟悉“软件架构设计的假设条件”这个术语,而87.5%的参与者从来没有在工作中使用过该术语。但是有趣的是,所有参与者都能理解AA这个概念,并能给出相应的AA的例子,比如假设系统响应时间应该小于0.1s;比如假设系统架构设计需要有较高的可复用性。过半的参与者认为AA在架构设计乃至整个软件开发中具有重要的地位。

猜你喜欢

转载自blog.csdn.net/ytomc/article/details/53203249
今日推荐