我已经搜索了很多关于软件体系结构的清晰解释,但是每次我变得更加困惑,那么软件体系结构到底是什么,是否有一种标准的方法来表示它,或者它是某种通用的描述某些软件组件的方法?
发布于 2017-03-26 12:47:50
软件架构有很多定义。软件工程研究所()拥有软件体系结构定义的集合,包括取自SEI数据库中的论文和文章的书目定义、从各种书籍和其他著作中摘录的定义、来自比较突出或有影响力的著作的经典定义、来自更近期作品的现代定义以及社区贡献的定义。
没有正确的定义,但我倾向于那些提到决定的人。我觉得来自的定义最好地抓住了我认为是架构的东西:
体系结构是一组重要的决策,涉及软件系统的组织,结构元素及其组成系统的接口的选择,以及它们在这些元素之间的协作中所指定的行为,这些结构和行为元素的组成,以及指导这个组织的体系结构风格--这些元素及其接口,它们的协作,以及它们的组成。
基于这个体系结构定义,您需要表示任何重要的决策及其基本原理、结构元素和这些结构元素的接口,以及如何将结构元素组合在一起以创建更大的系统。
我会认为一个重要的决定是一个昂贵的改变(在时间,努力,或金钱上的成本)。例如,可以选择特定的编程语言,针对特定的环境(硬件环境、操作系统、专用设备)、数据传输和存储方法。您可以使用任意数量的文本或图形工具记录这些决策,从wiki到正式会议记录以及使用决策矩阵。
结构元素可以使用任意数量的表示来捕获。SysML和UML是常见的。BMPN可以用于表示业务流程。可以在系统设计阶段使用对象-过程方法来捕获构成系统的对象和操作。如果您有一个数据密集型的系统,实体-关系建模也是有用的--我喜欢使用一种标准的、文档丰富的建模语言,因为(理想情况下)与使用它的人沟通是一件很简单的事情--任何不熟悉的人都应该能够获得大量关于如何从现有源中理解建模符号的信息。虽然它是为UML编写的,但马丁·福勒的UML模式也可以应用于这些其他正式的建模语言--您的模型可以是逼真的,从草图到蓝图,并且可以在开发之前启动,并在开发之后完成,以便向目标对象显示适当的信息。
如果您想知道更多,我发现软件架构在实践中的应用和文档化软件体系结构:视图及其超越是了解创建、维护和记录软件系统体系结构的过程的很好资源。
发布于 2017-03-26 09:22:10
体系结构意味着组成应用程序的“大盒子”,以及它们如何相互交互以使应用程序工作。因为这些“盒子”是特定于每个项目的,所以没有普遍接受的适用于所有项目的软件体系结构定义(对于一个项目来说,什么是好的软件架构可能是另一个项目的灾难),所以也没有标准的方法来表示它。
马丁·福勒( Martin )做了一个简短的介绍,他谈到了软件体系结构的共性:“让体系结构变得重要”(youtube link 这里)。
演讲中的一些要点:
发布于 2017-03-26 09:30:46
软件体系结构是系统的较高层次结构,即选择将软件分解为其构建块并将各个部分连接在一起的方式。
这里引用了Martin的“企业应用程序体系结构的模式”一书:
建筑是一个很多人试图定义的术语,但几乎没有达成一致。有两个共同的要素:一个是一个系统的最高层次分解为其各个部分;另一个是难以改变的决定。
架构的
在最高层,建筑往往是用其层和边界来表示的,这些边界遍及外部世界。示例:
与具有不同方面的建筑物的建筑(例如建筑物在其环境中的体积表示;建筑物外观的总体视图;每一层的蓝图等)一样,软件架构也处理同一系统上的不同观点。
有帮助,有UML。在最高级别:
随着层次的更详细,您将逐渐将架构领域留给设计,使用类图、序列图、活动图和通信图。
https://softwareengineering.stackexchange.com/questions/344944
复制相似问题