一、组件图概述
UML(Unified Modeling Language)是对软件开发中所需的建模语言的一种标准化描述语言。UML组件图用于展示系统中组件的结构,以及组件之间的依赖关系。一个组件可以是任何类别,比如,类、接口、程序包、甚至是整个系统。组件图展示组件架构的层次结构,可以使用组件提供的接口与其他组件通信。
二、组件图用途
组件图可以为软件开发提供多方面的信息,如下:
1、项目开发规划
在计划开发过程中,组件图可以用于展示需要的开发组件以及雇佣的待开发的团队成员,有助于集中精力开发关键组件。另外组件图的助于制定开发计划和预算预算支出。
2、系统架构
组件图为系统的架构提供图像,帮助在系统的构建之前建立共识,帮助团队了解应用程序的构成。
3、通信协议
组件图为系统中每个组件之间定义通信协议,帮助小组成员编写可靠的代码。
三、组件图的构成
组件图由多种元素构成,具体如下:
1、组件
组件表示为矩形,矩形内填写组件名称,可以是任何东西,如:类、对象、库、可执行文件、模块等。
2、接口
接口表示为圆形,圆形内填写接口名称,它定义了组件提供给其他组件的服务。接口可以传递方法调用和信号。
3、依赖关系
依赖关系是组件之间的关系,表示使用一个组件的类可能使用另一个组件。箭头从使用组件指向被使用组件。
4、组合关系
组合关系用以说明一组类是一个整体,它意味着其中的类被组合组成一个大的类来提供更多的功能。组合关系用实线箭头表示,箭头指向被组合的类。
5、归属关系
归属关系用以说明两个元素之间包含部分与整体之间的关系。归属关系使用菱形箭头表示,箭头指向包含部分的元素。
四、组件图的示例代码
@startuml !define AWSPUML https://raw.githubusercontent.com/awslabs/aws-icons-for-plantuml/v7.2.0/dist !includeurl AWSPUML/Networking/@ElasticLoadBalancingController.puml !define ICONURL https://raw.githubusercontent.com/awslabs/aws-icons-for-plantuml/v6.0.0/dist !includeurl ICONURL/AWSCommon/AWSLogo.puml !define SQSURL https://raw.githubusercontent.com/cloudtools/torture/master/markdown/img/plantuml !define SQSICONURL https://raw.githubusercontent.com/cloudtools/torture/master/markdown/img !includeurl SQSURL/aws-sqs.puml !define EBICONURL https://raw.githubusercontent.com/cloudtools/torture/master/markdown/img !includeurl EBICONURL/elasticbeanstalk.puml title Example Component View [Amazon SQS]-[Amazon SNS] [Amazon RDS]-[Amazon EC2] [Amazon RDS]-[AWS Elastic Beanstalk] [AWS Elastic Beanstalk]-[AWS Elastic Load Balancer] note right of [Amazon SQS]: A distributed messaging system [AWS] --> [AWS Elastic Beanstalk] note left of [AWS]: Architecture deployed on Amazon Web Services (AWS) @enduml