对此没有明确的答案,因为“软件体系结构”和“软件设计”有很多定义,而对于这两个都没有规范的定义。
Len Bass,Paul Clements和Rick Kazman认为“所有体系结构都是设计,但并非所有设计都是体系结构”是一种很好的思维方式。我不确定我是否完全同意(因为架构可以包括其他活动),但它抓住了本质,即架构是一种处理设计的关键子集的设计活动。
我稍微大胆的定义(可在SEI定义页面上找到)是这组决策,如果决策不正确,则会导致您的项目被取消。
几年前,Amnon Eden和Rick Kazman在题为“体系结构,设计,实现”的研究论文中进行了有用的尝试,将构架,设计和实现作为概念进行了分离,该论文可以在以下位置找到:http://www.sei.cmu .edu / library / assets / ICSE03-1.pdf。他们的语言是非常抽象的,但简单地说,他们说架构是可以在多种情况下使用的设计,并且打算在整个系统中应用;设计是(err)设计,可以在多种情况下使用,但是应用于特定的部分系统实现,并且实现是针对特定于上下文的设计,并在该上下文中应用。
因此,架构决策可能是通过消息而不是RPC集成系统的决策(因此这是一条通用原则,可以在许多地方应用,并且旨在应用于整个系统),而设计决策则可能是使用主服务器。 / slave线程结构在系统的输入请求处理模块中(可以在任何地方使用但在这种情况下仅在一个模块中使用的一般原理),最后,一个实现决定可能是从请求路由器转移安全责任到请求管理器模块中的请求处理程序(仅与该上下文相关的决策,用于该上下文)。
我希望这有帮助!