UML – Diagramas de Pacotes (Packages)
e Modelação da Arquitectura Lógica

   Profs:   dr. Edgar Gemo
            Dr. Zeferino Saugene (MSc.)
Pacotes
 Um pacote (package) em UML é um mecanismo de
 agrupamento genérico
 Notação: pasta com o nome no interior ou na pega
 No caso de um pacote contido noutro, o nome completo do
 pacote contido inclui o nome do seu contentor


  Client
                       Client         Sensors::Vision
Diagramas de pacotes
 Um diagrama de pacotes mostra pacotes e relações entre
 pacotes
 Na realidade, não existem propriamente diagramas de
 pacotes em UML; em vez disso, pacotes e relações entre
 pacotes aparecem noutros diagramas, de acordo com o tipo
 de pacote
  • Pacotes de classes (pacotes lógicos) - em diagramas de classes
  • Pacotes de componentes – em diagramas de componentes
  • Pacotes de nós – em diagramas de distribuição
  • Pacotes de casos de utilização – em diagramas de casos de utilização
Pacotes lógicos
 Um pacote lógico (ou módulo lógico) é um agrupamento lógico de
 classes e relações entre essas classes
  • divisão de um sistema em pacotes lógicos é uma divisão de responsabilidades

 Corresponde ao conceito de package em Java ou de namespace
 em C++ e C#
 Não confundir com empacotamento físico do software em
 ficheiros de código fonte, executáveis, dll's, etc. (designados
 componentes em UML)
 Um pacote lógico pode atravessar vários ficheiros
 Diagramas de pacotes lógicos utilizadas para modelar a
 arquitectura lógica de um sistema de software (organização em
 módulos lógicos e especificação de interfaces e dependências
 entre módulos)
Conteúdo de um pacote
 Uma vez que representa um agrupamento, um pacote é em
 geral dono de diversos elementos: classes, interfaces,
 componentes, nós, colaborações, casos de uso, diagramas,
 e até outros pacotes
 Esses elementos podem ser indicados no interior do pacote,
 na forma de uma lista de nomes ou diagrama
         Client                          Client
         + OrderForm                     + OrderForm
         + TrackingForm                                    - Order
         - Order                          + TrackingForm
 Um pacote forma um espaço de nomes
  • classe Order do pacote Client é designada Client::Order
Visibilidade dos elementos contidos
num pacote
 Pode-se indicar a visibilidade dos elementos:
  + (público) : visível por todos que importam ou acedem ao pacote
    (nomes sem :: no 1º caso, com :: no 2º caso)
  # (protegido): visível só pelos pacotes-filhos (por relação de
    generalização - ver adiante)
  - (privado): visível só por outros elementos do pacote

 Os elementos públicos de um pacote são chamados também
 os elementos exportados pelo pacote
Dependências entre pacotes
 Dependência simples: uma alteração do pacote de destino
 afecta o pacote de origem (dependente) (informação útil
 para controlo de alterações)
 Dependência com estereótipo «access»: o pacote de
 origem (dependente) acede a elementos exportados pelo
 pacote de destino (precisa de :: nos nomes)
 Dependência com estereótipo «import»: o pacote de
 origem (dependente) importa os elementos exportados pelo
 pacote de destino (não precisa de :: nos nomes)
       Client                       GUI
       + OrderForm                  + Window
       + TrackingForm   «import»    + Form
       - Order                      # EventHandler
Generalização de pacotes
    Usada para especificar famílias de pacotes relacionados por
    herança
                                       GUI
                                       + Window
                                       + Form
                                       # EventHandler
herda sem alteração
(default)
                        WindowsGUI
substitui (overrides)   + GUI::Window
o elemento Form de      + Form                            MacGUI
GUI                     # GUI::EventHandler
                        +VBForm
adicionado
               herda os elementos públicos e protegidos de GUI
Estereótipos em pacotes
 «system» - pacote que representa o sistema completo que está a ser
 modelado (incluindo todos os modelos e elementos dos modelos)
 «subsystem» - pacote que representa uma parte independente de
 sistema completo que está a ser modelado; corresponde normalmente a
 um corte "vertical"
 «facade» (fachada) - pacote que constitui uma vista sobre outro pacote
 (não acrescenta funcionalidades, apenas apresenta de forma diferente)
 «framework» (infra-estrutura aplicacional) - pacote que representa um
 conjunto de classes abstractas e concretas concebido para ser estendido,
 implementando a funcionalidade típica de um determinado domínio de
 aplicação
 «stub» - pacote que serve como proxy para o conteúdo público de outro
 pacote
 «layer» - pacote que representa uma camada horizontal de um sistema
Composição de pacotes (1)
 Sub-pacotes podem ser indicados dentro do pacote-dono ou
 com relação de composição

                              «system»
                      Retail Enterprise System


     «subsystem»          «subsystem»                «subsystem»
      Customer              In Store                  Warehouse
       Service            Management                 Management
      subsystem            subsystem                  subsystem



Neste exemplo segue-se uma divisão vertical, por subsistemas!
Composição de pacotes (2)
            «system»
    Retail Enterprise System

                            «layer»              Graphical User Interface
                Retail Enterprise System - GUI


                            «layer»
                                                 Business Logic
                 Retail Enterprise System - BL


                            «layer»              Database
                 Retail Enterprise System - DB



 Neste exemplo segue-se uma divisão horizontal, por camadas!
Caso de estudo (biblioteca): divisão em
áreas funcionais


          <<subsystem>>
                                                    <<subsystem>>
        Relação com Clientes
                                                    Relação com
         (Leitores e Sócios)
                                                    Fornecedores




                                <<subsystem>>
                               Gestão de Recursos
                                  (Publicações)
Caso de estudo (biblioteca): divisão em
camadas técnicas

                   <<layer>>
                Interface com o
                    Ut ilizador




                  <<layer>>
                  Lógica de
                   Negócio




                  <<layer>>
                 Base de Dados
Caso de estudo (biblioteca): divisão em
camadas técnicas e áreas funcionais

                 IU - Clientes              IU - Recursos




            Lógica de Negócio -         Lógica de Negócio -
                  Clientes                   Recursos
           (from Ló gica de Negócio)   (from Lógica de Negócio)




              Base de Dados -             Base de Dados -
                  Clientes                   Recursos

Diagramas de pacotes

  • 1.
    UML – Diagramasde Pacotes (Packages) e Modelação da Arquitectura Lógica Profs: dr. Edgar Gemo Dr. Zeferino Saugene (MSc.)
  • 2.
    Pacotes Um pacote(package) em UML é um mecanismo de agrupamento genérico Notação: pasta com o nome no interior ou na pega No caso de um pacote contido noutro, o nome completo do pacote contido inclui o nome do seu contentor Client Client Sensors::Vision
  • 3.
    Diagramas de pacotes Um diagrama de pacotes mostra pacotes e relações entre pacotes Na realidade, não existem propriamente diagramas de pacotes em UML; em vez disso, pacotes e relações entre pacotes aparecem noutros diagramas, de acordo com o tipo de pacote • Pacotes de classes (pacotes lógicos) - em diagramas de classes • Pacotes de componentes – em diagramas de componentes • Pacotes de nós – em diagramas de distribuição • Pacotes de casos de utilização – em diagramas de casos de utilização
  • 4.
    Pacotes lógicos Umpacote lógico (ou módulo lógico) é um agrupamento lógico de classes e relações entre essas classes • divisão de um sistema em pacotes lógicos é uma divisão de responsabilidades Corresponde ao conceito de package em Java ou de namespace em C++ e C# Não confundir com empacotamento físico do software em ficheiros de código fonte, executáveis, dll's, etc. (designados componentes em UML) Um pacote lógico pode atravessar vários ficheiros Diagramas de pacotes lógicos utilizadas para modelar a arquitectura lógica de um sistema de software (organização em módulos lógicos e especificação de interfaces e dependências entre módulos)
  • 5.
    Conteúdo de umpacote Uma vez que representa um agrupamento, um pacote é em geral dono de diversos elementos: classes, interfaces, componentes, nós, colaborações, casos de uso, diagramas, e até outros pacotes Esses elementos podem ser indicados no interior do pacote, na forma de uma lista de nomes ou diagrama Client Client + OrderForm + OrderForm + TrackingForm - Order - Order + TrackingForm Um pacote forma um espaço de nomes • classe Order do pacote Client é designada Client::Order
  • 6.
    Visibilidade dos elementoscontidos num pacote Pode-se indicar a visibilidade dos elementos: + (público) : visível por todos que importam ou acedem ao pacote (nomes sem :: no 1º caso, com :: no 2º caso) # (protegido): visível só pelos pacotes-filhos (por relação de generalização - ver adiante) - (privado): visível só por outros elementos do pacote Os elementos públicos de um pacote são chamados também os elementos exportados pelo pacote
  • 7.
    Dependências entre pacotes Dependência simples: uma alteração do pacote de destino afecta o pacote de origem (dependente) (informação útil para controlo de alterações) Dependência com estereótipo «access»: o pacote de origem (dependente) acede a elementos exportados pelo pacote de destino (precisa de :: nos nomes) Dependência com estereótipo «import»: o pacote de origem (dependente) importa os elementos exportados pelo pacote de destino (não precisa de :: nos nomes) Client GUI + OrderForm + Window + TrackingForm «import» + Form - Order # EventHandler
  • 8.
    Generalização de pacotes Usada para especificar famílias de pacotes relacionados por herança GUI + Window + Form # EventHandler herda sem alteração (default) WindowsGUI substitui (overrides) + GUI::Window o elemento Form de + Form MacGUI GUI # GUI::EventHandler +VBForm adicionado herda os elementos públicos e protegidos de GUI
  • 9.
    Estereótipos em pacotes «system» - pacote que representa o sistema completo que está a ser modelado (incluindo todos os modelos e elementos dos modelos) «subsystem» - pacote que representa uma parte independente de sistema completo que está a ser modelado; corresponde normalmente a um corte "vertical" «facade» (fachada) - pacote que constitui uma vista sobre outro pacote (não acrescenta funcionalidades, apenas apresenta de forma diferente) «framework» (infra-estrutura aplicacional) - pacote que representa um conjunto de classes abstractas e concretas concebido para ser estendido, implementando a funcionalidade típica de um determinado domínio de aplicação «stub» - pacote que serve como proxy para o conteúdo público de outro pacote «layer» - pacote que representa uma camada horizontal de um sistema
  • 10.
    Composição de pacotes(1) Sub-pacotes podem ser indicados dentro do pacote-dono ou com relação de composição «system» Retail Enterprise System «subsystem» «subsystem» «subsystem» Customer In Store Warehouse Service Management Management subsystem subsystem subsystem Neste exemplo segue-se uma divisão vertical, por subsistemas!
  • 11.
    Composição de pacotes(2) «system» Retail Enterprise System «layer» Graphical User Interface Retail Enterprise System - GUI «layer» Business Logic Retail Enterprise System - BL «layer» Database Retail Enterprise System - DB Neste exemplo segue-se uma divisão horizontal, por camadas!
  • 12.
    Caso de estudo(biblioteca): divisão em áreas funcionais <<subsystem>> <<subsystem>> Relação com Clientes Relação com (Leitores e Sócios) Fornecedores <<subsystem>> Gestão de Recursos (Publicações)
  • 13.
    Caso de estudo(biblioteca): divisão em camadas técnicas <<layer>> Interface com o Ut ilizador <<layer>> Lógica de Negócio <<layer>> Base de Dados
  • 14.
    Caso de estudo(biblioteca): divisão em camadas técnicas e áreas funcionais IU - Clientes IU - Recursos Lógica de Negócio - Lógica de Negócio - Clientes Recursos (from Ló gica de Negócio) (from Lógica de Negócio) Base de Dados - Base de Dados - Clientes Recursos