# 如何对软件架构建模
根据侧重点不同可分为5种模型
结构模型
--
以架构的构件、连接件和其他概念来刻画结构,并力图通过结构来反映系统的重要语义内容,包括系统的配置、约束、隐含的假设条件、风格、性质等。
框架模型
--
不太侧重描述结构的细节而更侧重于整体的结构。主要以一些特殊的问题为目标建立只针对和适应该问题的结构。
动态模型
--
对结构或框架模型的补充,研究系统的“大颗粒”的行为性质。例如描述系统的重新配置或演化。系统总体结构的配置、建立或拆除通信通道或计算的过程。
过程模型
--
研究构造系统的步骤和过程。
功能模型
--
认为架构是由一组功能构件按层次组成,下层向上层提供服务。可看作一种特殊的框架模型。
最常用的是结构模型和动态模型。将5种有机地结合形成一个完整的模型来刻画软件架构更合适。
## 4+1视图模型
从5个不同的视角来描述软件架构。
逻辑视图
--
最终用户:功能需求
可以用对象模型来代表逻辑视图,用类图来描述逻辑视图。设计中要注意的主要问题是要保持一个单一的、内聚的对象模型贯穿整个系统。
进程视图
--
系统集成人员:性能、可扩充性、吞吐量等
侧重于系统的运行特性,主要关注一些非功能性的需求,例如系统的性能和可用性。强调并发性、分布性、系统集成性和容错能力,以及逻辑视图中的主要抽象如何适合进程结构。它也定义逻辑视图中的各个类的操作具体是在哪一个线程中被执行的。可以描述成多层抽象,每个级别分别关注不同的方面。
物理视图
--
系统工程人员:系统拓扑、安装、通信等。
主要考虑如何把软件映射到硬件上,它通常要考虑解决系统拓扑结构、系统安装、通信等问题。当然间运行于不同的结点上时,各视图中的构件都直接或间接地对应于系统的不同结点上。因此,从软件到结点的映射要有较高的灵活性,当环境改变时,对系统其他视图的影响最小。
开发视图
--
编程人员:软件管理
也称模块视图。主要侧重于软件模块的组织和管理。软件可通过程序库或子系统进行组织,这样对于一个软件系统就可以由不同的人进行开发。开发视图要考虑软件的内部需求,如软件开发的容易性、软件的重用和软件的通用性。要具体考虑开发工具的不同而带来的局限性。开发视图通过系统输入输出关系的模型图和子系统图来描述。
场景视图
--
可以看作是那些重要系统活动的抽象,它使四个视图有机联系起来,从某种意义上说场景是最重要的需求抽象。在开发架构时,它可以帮助设计者找到架构的构件和它们之间的作用关系。同时,也可以用场景来分析一个特定的视图,或描述不同视图构件间时如何互相作用的。场景可以用文本表示,也可以用图形表示。
逻辑视图和开发视图描述系统的静态结构,
而进程视图和物理视图描述系统的动态结构。
对于不同的软件系统来说,
侧重点也有锁不同。
例如,对于管理信息系统来说,比较侧重从逻辑视图和开发视图来描述系统。
而对于实时控制系统来说,则比较注重于从进程视图和物理视图来描述系统。
扩展资料
https://www.ibm.com/developerworks/cn/rational/r-4p1-view/index.html