本文主要总结了软件系统中常见的六种架构视图类型,以及它们在软件开发和系统设计中的使用范围。这些视图类型包括逻辑视图、运行视图、数据视图、开发视图、部署视图和场景视图。
逻辑视图关注于系统的组件拆分、功能职责、输入输出和依赖关系的描述。它在需求分析和系统设计阶段起到指导作用,帮助开发团队确定系统的模块划分和组件之间的关系。
运行视图描述了系统中各组件之间的协作方式,并通过运行时序图展示主要功能的执行顺序。它对于理解系统的运行行为、优化性能和排查问题非常重要。
数据视图展示了系统中的数据存储结构和相关数据元素之间的联系。它在数据库设计和数据管理方面起到指导作用,帮助开发团队确定数据的存储方式和组织结构。
开发视图关注项目工程结构、包的划分和逻辑组件的存放位置。它在团队协作、代码管理和模块化开发中起到指导作用,帮助开发团队更好地组织和维护代码。
部署视图涵盖了系统的服务数量、节点配置、资源需求以及负载均衡和高可用性等方面。它在系统部署和运维中起到指导作用,帮助团队规划系统的部署架构和配置策略。
场景视图描述了系统的使用情景,包括用户、时间和功能的关系。它在用户体验设计和需求验证中起到指导作用,帮助开发团队理解用户需求和设计功能。
通过使用这些不同类型的架构视图,开发团队可以全面而系统地理解和设计软件系统,从而提高系统的可维护性、可扩展性和可靠性。
逻辑视图
在逻辑视图中,系统会被拆分成多个组件,每个组件有不同的功能职责。例如,一个电子商务网站的逻辑视图可能包括以下几个组件:
- 用户管理组件:负责处理用户注册、登录、个人信息管理等功能。
- 商品管理组件:负责处理商品的添加、编辑、删除等功能。
- 订单管理组件:负责处理订单的创建、支付、取消等功能。
每个组件需要定义其输入输出,以及内部和外部的依赖。比如用户管理组件的输入可以是用户的注册信息,输出可以是用户的个人信息,而内部依赖可能包括数据库的存储和访问,外部依赖可能包括第三方登录服务。
逻辑视图的PlantUML图例:
@startuml
package "系统名称" {
package "用户管理组件" {
component "用户注册" as userReg
component "用户登录" as userLogin
component "个人信息管理" as userMgmt
}
package "商品管理组件" {
component "商品添加" as itemAdd
component "商品编辑" as itemEdit
component "商品删除" as itemDelete
}
package "订单管理组件" {
component "订单创建" as orderCreate
component "订单支付" as orderPay
component "订单取消" as orderCancel
}
userReg --> userLogin
userLogin --> userMgmt
itemAdd --> itemEdit
itemEdit --> itemDelete
orderCreate --> orderPay
orderPay --> orderCancel
}
@enduml
运行视图
运行视图描述了各个组件之间的协作关系和运行时序。一种常用的呈现方式是使用序列图(Sequence Diagram),展示组件之间的消息传递和交互步骤。通过绘制运行时序图,可以清晰地展示系统中各组件之间的交互流程。例如,在电子商务网站的运行视图中,可以展示用户登录、选择商品、下订单等主要功能的交互过程。
运行视图的PlantUML图例:
@startuml
actor User
participant "用户管理组件" as UserComponent
participant "商品管理组件" as ItemComponent
participant "订单管理组件" as OrderComponent
User -> UserComponent: 用户登录
UserComponent -> UserComponent: 验证用户身份
User -> ItemComponent: 选择商品
ItemComponent -> ItemComponent: 获取商品信息
User -> OrderComponent: 下订单
OrderComponent -> OrderComponent: 创建订单
@enduml
数据视图
数据视图描述了系统中的数据存储结构,包括数据的组织方式、关系等。它可以包含与数据库、数据模型有关的信息。例如,在电子商务网站的数据视图中,可以展示用户数据、商品数据、订单数据等的存储结构。
数据视图的PlantUML图例:
@startuml
package "系统数据库" {
entity "用户表" as UserTable {
+ 用户ID
--
用户名
密码
邮箱
...
}
entity "商品表" as ItemTable {
+ 商品ID
--
商品名称
描述
价格
...
}
entity "订单表" as OrderTable {
+ 订单ID
--
订单号
用户ID
商品ID
数量
总价
...
}
UserTable --> OrderTable : "用户ID"
ItemTable --> OrderTable : "商品ID"
}
@enduml
开发视图
开发视图描述了项目的工程结构、包的划分以及逻辑组件的部署。它可以包含不同的模块、库和工具的组织方式,以支持系统的开发和维护。例如,在电子商务网站的开发视图中,可以展示不同的包如控制器、服务、模型等的划分和功能职责。
@startuml
package "控制器" {
class UserController {
- 登录
- 注册
- 更新用户信息
...
}
class ItemController {
- 获取商品列表
- 获取商品详情
...
}
class OrderController {
- 创建订单
- 取消订单
...
}
}
package "服务" {
interface UserService {
+ 登录
+ 注册
+ 更新用户信息
...
}
interface ItemService {
+ 获取商品列表
+ 获取商品详情
...
}
interface OrderService {
+ 创建订单
+ 取消订单
...
}
}
package "模型" {
class User {
- 用户ID
- 用户名
- 密码
- 邮箱
...
}
class Item {
- 商品ID
- 商品名称
- 描述
- 价格
...
}
class Order {
- 订单ID
- 订单号
- 用户ID
- 商品ID
- 数量
- 总价
...
}
}
UserController --> UserService : 使用
ItemController --> ItemService : 使用
OrderController --> OrderService : 使用
@enduml
部署视图
部署视图描述了系统的部署架构,通常包括多个服务和节点。它可以展示每个服务在不同节点上运行的情况,以及系统所需的资源和高可用性(HA)需求。例如,在电子商务网站的部署视图中,可以展示前端服务器、后端服务器、数据库服务器等的部署方式,并确定是否需要负载均衡和高可用性的配置。
部署视图的PlantUML图例:
@startuml
cloud "负载均衡器" as LoadBalancer
node "前端服务器集群" as FrontendServers {
component "Web应用服务器" as WebServer1
component "Web应用服务器" as WebServer2
component "Web应用服务器" as WebServer3
}
node "后端服务器集群" as BackendServers {
component "应用服务器" as AppServer1
component "应用服务器" as AppServer2
component "应用服务器" as AppServer3
}
node "数据库服务器集群" as DatabaseServers {
component "数据库服务器" as DatabaseServer1
component "数据库服务器" as DatabaseServer2
component "数据库服务器" as DatabaseServer3
}
LoadBalancer --> WebServer1
LoadBalancer --> WebServer2
LoadBalancer --> WebServer3
WebServer1 --> AppServer1
WebServer1 --> AppServer2
WebServer1 --> AppServer3
WebServer2 --> AppServer1
WebServer2 --> AppServer2
WebServer2 --> AppServer3
WebServer3 --> AppServer1
WebServer3 --> AppServer2
WebServer3 --> AppServer3
AppServer1 --> DatabaseServer1
AppServer2 --> DatabaseServer2
AppServer3 --> DatabaseServer3
@enduml
场景视图
场景视图描述了系统的使用情景,包括哪些用户在使用系统、在什么时间、使用什么功能等。它可以帮助了解用户对系统的需求和行为模式,从而指导设计和开发过程。在电子商务网站的场景视图中,可以描述用户浏览商品、下单购买、查看订单等典型的使用场景。
场景视图的PlantUML图例:
@startuml
actor "用户" as User
User --> (浏览商品)
User --> (添加商品到购物车)
User --> (下单购买)
User --> (支付订单)
User --> (查看订单)
@enduml
通过不同的视图,我们可以从不同的角度来描述和理解系统的架构,为设计、开发、部署和测试提供指导和参考。视图之间可以相互补充和交叉验证,以提供全面的系统描述。