典型软件系统架构视图的使用场景及图例

本文主要总结了软件系统中常见的六种架构视图类型,以及它们在软件开发和系统设计中的使用范围。这些视图类型包括逻辑视图、运行视图、数据视图、开发视图、部署视图和场景视图。

逻辑视图关注于系统的组件拆分、功能职责、输入输出和依赖关系的描述。它在需求分析和系统设计阶段起到指导作用,帮助开发团队确定系统的模块划分和组件之间的关系。

运行视图描述了系统中各组件之间的协作方式,并通过运行时序图展示主要功能的执行顺序。它对于理解系统的运行行为、优化性能和排查问题非常重要。

数据视图展示了系统中的数据存储结构和相关数据元素之间的联系。它在数据库设计和数据管理方面起到指导作用,帮助开发团队确定数据的存储方式和组织结构。

开发视图关注项目工程结构、包的划分和逻辑组件的存放位置。它在团队协作、代码管理和模块化开发中起到指导作用,帮助开发团队更好地组织和维护代码。

部署视图涵盖了系统的服务数量、节点配置、资源需求以及负载均衡和高可用性等方面。它在系统部署和运维中起到指导作用,帮助团队规划系统的部署架构和配置策略。

场景视图描述了系统的使用情景,包括用户、时间和功能的关系。它在用户体验设计和需求验证中起到指导作用,帮助开发团队理解用户需求和设计功能。

通过使用这些不同类型的架构视图,开发团队可以全面而系统地理解和设计软件系统,从而提高系统的可维护性、可扩展性和可靠性。

逻辑视图

在逻辑视图中,系统会被拆分成多个组件,每个组件有不同的功能职责。例如,一个电子商务网站的逻辑视图可能包括以下几个组件:

  • 用户管理组件:负责处理用户注册、登录、个人信息管理等功能。
  • 商品管理组件:负责处理商品的添加、编辑、删除等功能。
  • 订单管理组件:负责处理订单的创建、支付、取消等功能。

每个组件需要定义其输入输出,以及内部和外部的依赖。比如用户管理组件的输入可以是用户的注册信息,输出可以是用户的个人信息,而内部依赖可能包括数据库的存储和访问,外部依赖可能包括第三方登录服务。

逻辑视图的PlantUML图例:

扫描二维码关注公众号,回复: 16859790 查看本文章
@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

通过不同的视图,我们可以从不同的角度来描述和理解系统的架构,为设计、开发、部署和测试提供指导和参考。视图之间可以相互补充和交叉验证,以提供全面的系统描述。

猜你喜欢

转载自blog.csdn.net/hunterzhang86/article/details/132416830