Unified Modeling Language Agenda Software e modelagem; UML Introdução; Diagramas; Comentários finais; Agenda Software e modelagem; UML Introdução; Diagramas; Comentários finais; Evolução do software O surgimento de sistemas de software complexos resultou na necessidade de reavaliar a forma de desenvolver sistemas; As técnicas tem evoluído de forma impressionante, notavelmente no que tange à modelagem de sistemas. Novos requisitos de sistemas Escalabilidade; Segurança; Robustez; De fácil manutenção; Reutilizável; Como resolver isso... Modelagem Um modelo pode ser visto como uma representação idealizada de um sistema a ser construído; Maquetes de edifícios e de aviões e plantas de circuitos eletrônicos são apenas alguns exemplos de modelos; Uma simplificação da realidade que nos ajuda a entender um problema complexo; Modelagem de software A modelagem de sistemas de software consiste na utilização de notações gráficas e textuais com o objetivo de construir modelos que representam as partes essenciais de um sistema, considerando-se diversas perspectivas diferentes e complementares. Para que modelar Ajuda no gerenciamento da complexidade inerente ao desenvolvimento de software; Ajuda na comunicação entre as pessoas envolvidas; Ajuda na predição do comportamento futuro do sistema. Evolução da modelagem Na primeira metade da década de 90 surgiram várias propostas de técnicas para modelagem de sistemas; Houve uma grande proliferação de propostas para modelagem de sistemas segundo o paradigma orientado a objetos; Existiam diferentes notações gráficas para modelar uma mesma perspectiva de um sistema. Necessidade de um padrão Percebeu-se a necessidade de um padrão para a modelagem de sistemas, que fosse aceito e utilizado amplamente; Surgiram esforços nesse sentido de padronização, sendo o principal liderado por James Rumbaugh, Grady Booch e Ivar Jacobson (Rational). Agenda Software e modelagem; UML Introdução; Diagramas; Comentários finais; UML... Surge a UML em 1996 como a melhor candidata para ser a linguagem unificadora de notações; Em 1997 a UML é aprovada como padrão pela OMG; Desde então tem tido grande aceitação; Atualmente na versão 2.0; Características da UML É uma linguagem visual; É independente de linguagem de programação; É independente de processo de desenvolvimento; Não é uma linguagem de programação; Não é uma metodologia. Usos da UML Visualização; Especificação; Documentação; Comunicação; Construção. Diagramas Podem ser usados para... Mostrar os limites de um sistema e suas funções; Representa a estrutura estática de um sistema; Modelar o comportamento de objetos; Apresentar a implementação física e a arquitetura de um sistema; Elementos Essenciais Estruturais Classe Objeto <<entity>> Cliente Cliente Nó Web Server -razaoSocial: String -cpf: String +getRazaoSocial() +setRazaoSocial(razaoSocial: String) Interface ocv.dll IImprimivel Relacionamentos Componente Elementos Essenciais Comportamentais Caso de uso Programar produção Ator Operador Estados Conectando Mensagens Elementos Essenciais Extensão Notas Notas servem para adicionar alguma informação nos diagramas Tagged Values {nome=João da Silva Cpf=12345678901} Elementos Essenciais Agrupamento Pacotes Interface Regras de negócio Banco de Dados Agenda Software e modelagem; UML Introdução; Diagramas; Comentários finais; Diagrama de Casos de Uso Visão Geral Descreve o que o sistema faz do ponto de vista do observador externo; Ajuda a esclarecer os requisitos do sistema; Ajuda a dividir o desenvolvimento do sistema em tarefas; Diagrama de Casos de Uso Caso de uso Representa as diferentes funcionalidades que o sistema disponibiliza aos usuários. Programar produção Produzir pedido Solicitar material Diagramas de Caso de Uso Atores Diferentes usuários que operam o sistema; Sistemas externos que interagem com o sistema; Operador Gerente Sistema de estoque Diagramas de Caso de Uso Associação Gerar relatórios de serviços Representa a comunicação entre o ator e o caso de uso; Também existem associações entre casos de usos; Gerente Diagramas de Caso de Uso Diagrama completo Cenário do sistema para na produção Gerar relatórios de serviços Programar produção Gerente Produzir pedido Operador Solicitar material Sistema de estoque Diagramas de Classe Visão Geral Largamente utilizado; Descreve os diferentes tipos de objeto e o relacionamentos entre eles. Diagramas de Classe Classes Estereótipo; Atributos; Operações; Visibilidade; Tipo; Estereótipo Nome <<entity>> Pagamento -quantia: Float +getQuantia() <<entity>> Pedido Atributos -data: date -status: Integer -obs: String -valorTotal: Float Métodos +calcImposto() +calcTotal() -calcSubTotal() +setCliente(cliente: Cliente) +inserirItem(item: ItemPedido) Diagramas de Classe Relacionamentos Associações representam relações entre ocorrências de classes; <<entity>> Pedido -data: date -status: Integer -obs: String -valorTotal: Float +calcImposto() +calcTotal() -calcSubTotal() +setCliente(cliente: Cliente) +inserirItem(item: ItemPedido) 0..* 1 <<entity>> Cliente -razaoSocial: String -cpf: String +getRazaoSocial() +setRazaoSocial(razaoSocial: String) Diagramas de Classe Relacionamentos Pedido Multiplicidade; Navegabilidade; -data -status +calcImposto() +calcTotal() 1 1..* Pagamento -quantia 0..* 1 Cliente -nome -cpf Diagramas de Classe Relacionamentos Agregação; Composição; <<entity>> Pedido -data: date -status: Integer -obs: String -valorTotal: Float +calcImposto() +calcTotal() -calcSubTotal() +setCliente(cliente: Cliente) +inserirItem(item: ItemPedido) Computador 1 1..* Cpu Teclado <<entity>> ItemPedido +qtd: Integer Monitor +setQuantidade(qtd: Integer) +setProduto(produto: Produto) Diagramas de Classe Relacionamentos <<entity>> Pedido Generalização; Dependência; -data: date -status: Integer -obs: String -valorTotal: Float +calcImposto() +calcTotal() -calcSubTotal() +setCliente(cliente: Cliente) +inserirItem(item: ItemPedido) Pagamento -quantia Cartao +numero +tipo Cheque -banco <<boundary>> FormPedido +criarPedido() +gravarPedido() Diagramas de Classe Pacotes Agrupa classes relacionadas; Interface Regras de negócio Banco de Dados Diagramas de Classe Diagrama completo <<entity>> Pedido -data: date -status: Integer -obs: String -valorTotal: Float <<entity>> Cliente -razaoSocial: String -cpf: String 0..* 1 +getRazaoSocial() +setRazaoSocial(razaoSocial: String) <<entity>> Pagamento +calcImposto() +calcTotal() -calcSubTotal() +setCliente(cliente: Cliente) +inserirItem(item: ItemPedido) 1 1..* -quantia: Float +getQuantia() <<boundary>> FormPedido 1 +criarPedido() +gravarPedido() <<entity>> Produto +descricao: String 1..* <<entity>> ItemPedido 1 0..* +qtd: Integer +setQuantidade(qtd: Integer) +setProduto(produto: Produto) <<entity>> Cartao <<entity>> Cheque +numero: Integer +tipo: Integer -banco: Integer <<entity>> Dinheiro Diagrama de Seqüência Mostra um conjunto de objetos, seus relacionamentos e as mensagens que podem ser enviadas entre eles; Diagrama de seqüência dá ênfase à seqüência de mensagens; Diagrama de Seqüência Objetos Representa uma instância de uma determinada classe; <<entity>> : ItemPedido Diagrama de Seqüência Mensagens Representa troca de mensagens entre os objetos; 8 : setQuantidade() 10 : calcSubTotal() Diagrama de Seqüência Fragmentos Servem para separar blocos de mensagens condicionadas a teste ou laço; sd Insere itens Diagrama de Seqüência <<boundary>> : FormPedido <<entity>> : Pedido : Atendente 1 : cria pedido() Diagrama de sequência referente à inserção de pedidos 2 : create() 3 : informa cliente() <<entity>> : ItemPedido 4 : setCliente() Insere itens 5 : informa item() Insere quantos itens quiser 6 : create() 7 : setProduto() 8 : setQuantidade() 9 : insereItem() 10 : calcSubTotal() 11 : Atualizar() 12 : finaliza edição() Diagrama de estados Exibe os possíveis estados de um objeto; Exibe também as transições que causam a mudança de estado. Diagramas de Classe Elementos básicos A Estado inicial; Estado final; Estado intermediário; B State1 State3 Diagramas de Estados Diagrama completo Diagrama de estados - Acesso ao Sistema Cursor inicia no campo do usuário Rejeitando Tenta novamente ( limpa campos ) Lendo usuário Capturando teclas Cancelado Exibe mensagem de erro Cursor para campo de senha Submete Cursor para campo de usuário Validando Inicia transação Lendo Senha Submete Capturando teclas ( exibir ponto ) Diagramas de Implantação Visão Geral Mostra a configuração de software ou hardware; Permite avaliar as diferentes situações de implantação do sistema. Diagramas de Implantação Elementos básicos Componente; Nó. servidor.exe Servidor de aplicação Diagramas de Implantação Diagrama completo Diagrama de implantação Cliente remoto Servidor Web <<http>> navegador autenticacao <<jdbc>> <<RMI>> aplicativo.exe Servidor de banco de dados Servidor de aplicação Cliente <<odbc>> servidor.exe SGBD Agenda Software e modelagem; UML Introdução; Diagramas; Comentários finais; Design na metodologia hoje Exemplo do RUP Quanto esforço empregar Projeto; Equipe de trabalho; Complexidade; Automatismos possíveis; Engenharia Reversa Útil quando se quer trabalhar com sistemas sem documentação; Nem sempre o resultado é satisfatório; Ferramentas sugeridas StarUML em www.staruml.com Poseidon em www.gentleware.com Umbrello em http://uml.sourceforge.net/index.php Rational Rose em www.rational.com Dentre outras... Fontes OMG – www.omg.org UML – www.uml.org UML Essencial – Grady Booch, Ivar Jacobson e James Rumbaugh