有人能解释一下软件设计和软件架构的区别吗?
更具体地说;如果你让别人给你展示“设计”——你希望他们展示什么?“建筑”也是如此。
我目前的理解是:
设计:系统特定模块/部分的UML图/流程图/简单线框(用于UI)
架构:组件图(显示系统的不同模块如何相互通信以及如何与其他系统通信),要使用什么语言,模式……?
如果我说错了,请指正。我提到了维基百科在http://en.wikipedia.org/wiki/Software_design和http://en.wikipedia.org/wiki/Software_architecture上有文章,但我不确定我是否理解正确。
用我自己的话来说,你是对的;
体系结构是将系统需求分配给系统元素。关于架构的四个陈述:
它可以引入非功能性需求,如语言或模式。
它定义了组件、接口、时序等之间的交互。
它不应该引入新的功能,
它将系统要执行的(设计的)功能分配给元素。
当对系统的复杂性进行细分时,体系结构是必不可少的工程步骤。
例如:想想你的房子,你的厨房不需要建筑师(只涉及一个元素),但整个建筑需要一些交互定义,比如门和屋顶。
设计是对功能(提议的)实现的一种信息表示。它旨在获得反馈,并与利益相关者进行讨论。这可能是一个很好的实践,但不是一个必要的工程步骤。
在厨房安装之前,最好能看到厨房的设计,但对于烹饪要求来说不是必需的:
如果我想一下,你可以这样说:
架构是为公众/工程师在更详细的抽象层次上设计的
设计是在一个不太详细的抽象层次上面向公众的
Good question... Although the line between them is hardly a bright sharp line, imho, if you are using both terms, then Architecture encompasses more technical or structural decisions about how to build or construct something, especially those decisions that will be hard (or harder) to change once implemeneted, whereas Design encompasses those decisions that either are easy to change later (like method names, class <-> file organizational structure, design patterns, whether to use a singleton or a static class to solve some specific problem, etc. ) and/or those that effect the appearance or esthetic aspects of a system or application (Human Interface, ease of use, look and feel, etc.)