Diagramas de Colaboração e Padrões GRASP

Tamanho: px
Começar a partir da página:

Download "Diagramas de Colaboração e Padrões GRASP"

Transcrição

1 UNIVERSIDADE ESTADUAL PAULISTA INSTITUTO DE BIOCIÊNCIAS, LETRAS E CIÊNCIAS EXATAS DEPARTAMENTO DE CIÊNCIAS DE COMPUTAÇÃO E ESTATÍSTICA Projeto e Desenvolvimento de Sistemas de Informação Diagramas de Colaboração e Padrões GRASP

2 O que vimos até agora Diagramas de Caso de Uso Casos de uso resumido e completo Modelo Conceitual Diagramas de Sequência do Sistema Contratos de Operações Notação dos Diagramas de Comunicação

3 Atendente nome n registra 1..1 Leitor nome tipo : char ^ faz 0..n 0..n faz n Reserva período situacao : char 0..1 Empréstimo/Devolução data do empréstimo situação : Char 0..1 corresponde a corresponde a possui Bibliotecaria nome refere-se a > 1..1 Objetivo ao final da fase de projeto registra n 1..1 Livro titulo : String[30] autor : String[30] ano : int ISBN : string[20] editora : int tipo : char possui 0..n CopiaDoLivro nro sequencial situacao : char liberadoparaemprestimo : char 1..n 0..1 LinhaDoEmpréstimo data_prevista_dev olução data_entrega_real n < refere-se a

4 nome tipo Leitor calculardatadevolucao( ) 1 0..* faz Emprestimo data_do_emprestimo situacao : char adicionarcopia( ) devolvercopia( ) Mais a especificação das interfaces (métodos) LinhaDoEmprestimo data_prevista_devolução data_entrega_real possui 1..* refere-se a 1 CopiaDoLivro nro_sequencial situacao : char liberadoparaemprestimo : char codcopia( ) atualizardatadev( ) 0..* 1 mudarsituacao( ) codcopia( ) sinalizardevolucao( )

5 Como projetar as responsabilidades de cada objeto Sabemos que os objetos precisam se comunicar para completar as operações. Os Diagramas de comunicação mostram escolhas de atribuições de responsabilidades a objetos. Mas quem é o melhor candidato para realizar cada uma das operações ou métodos do sistema?

6 Como projetar as responsabilidades de cada objeto Responsabilidade: Um contrato ou obrigação de um tipo ou uma classe(booch e Rumbaugh) Responsabilidades estão relacionadas às obrigações de um objeto em termos de seu comportamento. Dois tipos de responsabilidades básicas: Fazer Fazer algo (criar um objeto, executar uma operação,...) Iniciar ações em outros objetos(delegação). Controlar e coordenar atividades em outros objetos. Conhecer Conhecer dados privados encapsulados. Conhecer objetos relacionados. Conhecer dados/atributos que podem ser derivados ou calculados.

7 Responsabilidades e Diagramas de Interação Diagramas de interação mostram escolhas de atribuição de responsabilidade a objetos. Exemplo: atribuir aos objetos do tipo Venda a responsabilidade de imprimirem a si próprios. imprimir() :Venda Responsabilidade de imprimir a si própria

8 Exemplo: Motivação para aplicação de Padrões Diagrama de Comunicação para a operação EmprestarFita(fcodigo) Implementação inchada ou concentradora X Implementação leve, distribuída

9 Sistema Videolocadora Cod Cópia fita Emprestar :Atendente Camada de Interface açãoexecutada(eventodaação) :CWindow emprestarfita(fcodigo) Camada do Domínio :????

10 Videolocadora Modelo Conceitual Sistema Videolocadora possui possui

11 Comunicação entre os objetos 2: emprestimocorrente := getemprestimocorrente emprestarfita(fcodigo)----> :Videolocadora clientecorrente: Cliente 3: criar() 1: fita:=get(fcodigo) 5: associaritem(item) 4: associarfita(fita) fitas: Fita emprestimocorrente: Emprestimo item: ItemDeEmprestimo Qual é o problema desta solução?

12 Pseudo-código Concentrador VideoLocadora Classe VideoLocadora fitas: Conjunto; clientecorrente: Cliente Método emprestarfita(fcodigo: String) fita:fita; emprestimocorrente: Emprestimo; item: ItemDeEmprestimo; fita := fitas.get(fcodigo); emprestimocorrente := clientecorrente.getemprestimocorrente(); item := itemdeemprestimo.new(); Item.associarFita(fita); EmprestimoCorrente.associarItem(item); Fim Método; FIM Classe;

13 Comunicação entre objetos (concentrador) 2: emprestimocorrente := getemprestimocorrente emprestarfita(fcodigo)----> :Videolocadora clientecorrente: Cliente 3: criar() 1: fita:=get(fcodigo) 5: associaritem(item) 4: associarfita(fita) fitas: Fita item: ItemDeEmprestimo emprestimocorrente: Emprestimo

14 Diagrama de Comunicação não Concentrador emprestarfita(fcodigo)----> :Videolocadora 5: associaritem() 1: fita:=get(fcodigo) emprestimocorrente: Emprestimo 2: emprestar(fita) 4: criar() fitas: Fita 3: adicionar(fita) 6: associarfita(fita) clientecorrente: Cliente item: ItemDeEmprestimo

15 Código com Responsabilidade Classe VideoLocadora fitas: Conjunto; clientecorrente: Cliente; Distribuída Classe Emprestimo Itens:Conjunto; Metodo emprestarfita(fcodigo:string) fita:fita; fita:=fitas.get(tcodigo); clientecorrente.empresta(fita) Fim Metodo; Fim Classe; Classe Cliente emprestimocorrente: Empretimo; Metodo adicionar(fita:fita); item: ItemDeEmprestimo; item := ItemDeEmprestimo.new(); self.associaitem(item); item.associafita(fita); Fim Metodo; Fim Classe; Método emprestar(fita:fita); emprestimocorrente.adiciona(fita); Fim Método; Fim Classe;

16 Discussão Qual dos códigos é mais fácil de entender e manter? Em qual dos códigos as responsabilidades das classes parecem mais intuitivas? Para desenvolver um bom projeto, precisamos de princípios para nos guiar na atribuição de responsabilidades -> padrões de projeto OO.

17 Responsabilidade Responsabilidade não é a mesma coisa que um método. Métodos são implementados para satisfazer as responsabilidades Responsabilidades são implementadas usando métodos que agem sozinhos ou colaboram com outros métodos e objetos. Padrões de projeto são princípios para guiar a atribuição de responsabilidades aos objetos.

18 Padrões Desenvolvedores experientes em OO criaram um repertório de princípios gerais e boas soluções para guiar a construção de software. Essas soluções foram descritas em um formato padronizado (nome, problema, solução) e podem ser usadas em outros contextos(outros projetos). Surgiram com base no trabalho do arquiteto Christopher Alexander, (Padrões Arquitetônicos). Ganharam impulso após a publicação do livro sobre Padrões de Projeto (Design Patterns Gamma e outros GoF- 1994)

19 Padrões Padrões usualmente não contem novas idéias Organizam conhecimentos e princípios existentes, testados e consagrados. Padrão é uma descrição nomeada de um problema e uma solução, que pode ser aplicado em novos contextos. Nomear padrões melhora a comunicação (criase um vocabulário, ou idioma)

20 Padrões GRASP GRASP = General Responsability Assignment Software Patterns. Descrevem princípios fundamentais de atribuição de responsabilidades a objetos. A compreensão dos padrões de projeto durante a criação de diagramas de comunicação é importante, pois: São princípios de bons projetos Orientado a Objetos. Levam a projetos OO de qualidade.

21 Padrões GRASP Alguns padrões GRASP principais: Especialista (Expert) Criador (Creator) Coesão alta (High Cohesion) Acoplamento fraco (Low Coupling) Controlador (Controller) Esses padrões abordam questões básicas comuns e tópicos fundamentais de desenvolvimento.

22 O padrão Especialista (Expert) Problema: qual é o princípio mais básico para atribuir responsabilidades em projeto orientado a objetos? Solução: Atribuir responsabilidade ao especialista da informação a classe que tem a informação necessária para satisfazer a responsabilidade.

23 Exemplo No sistema biblioteca, quem seria o responsável por calcular a data de devolução de um livro?

24 Modelo Conceitual Biblioteca Atendente nome 1 0..n registra 1 Leitor nome tipo : char ^ faz 0..n 0..n faz 1 0..n Reserva período situacao : char 0..1 Empréstimo/Devolução data do empréstimo situação : Char 0..1 corresponde a corresponde a possui Bibliotecaria nome refere-se a > 1 registra 1 0..n 1 Livro titulo : String[30] autor : String[30] ano : int ISBN : string[20] editora : int tipo : char possui 1..n 0..1 LinhaDoEmpréstimo data_prevista_devolução data_entrega_real 0..n < refere-se a 0..n CopiaDoLivro nro sequencial situacao : char liberadoparaemprestimo : char 1

25 Especialista A data de devolução ficará armazenada no atributo data_prevista_devolução do objeto LinhaDoEmprestimo Mas quem possui conhecimento necessário para calculá-la?

26 Modelo Conceitual Biblioteca Atendente nome 1 0..n registra 1 Leitor nome tipo : char ^ faz 0..n 0..n faz 1 0..n Reserva período situacao : char 0..1 Empréstimo/Devolução data do empréstimo situação : Char 0..1 corresponde a corresponde a possui Bibliotecaria nome refere-se a > 1 registra 1 0..n 1 Livro titulo : String[30] autor : String[30] ano : int ISBN : string[20] editora : int tipo : char possui 1..n 0..1 LinhaDoEmpréstimo data_prevista_devolução data_entrega_real 0..n < refere-se a 0..n CopiaDoLivro nro sequencial situacao : char liberadoparaemprestimo : char 1

27 Especialista Pelo padrão especialista, Leitor deve receber essa atribuição, pois conhece o tipo de Leitor (por exemplo, aluno de graduação, aluno de pós-graduação, professor, etc), que é utilizado para calcular a data em que o livro deve ser devolvido.

28 Especialista adicionarcopia(copialivro)---> : Emprestimo 1: d:=calculardatadevolução() 2: criar(d, copialivro) :Leitor Uso do padrão Especialista linh: LinhaDoEmprestimo

29 Especialista: alternativa mais detalhada adicionarcopia(copialivro) 4: associarlinha(linh) adicionarcopia(copialivro)---> : Emprestimo copialivro: CopiaDoLivro 2: criar(d) 1: d:=calculardatadevolução() :Leitor 3: associarcopia(copialivro) Uso do padrão Especialista linh: LinhaDoEmprestimo

30 Especialista Onde procurar pela classe especialista? Começar pelas classes já estabelecidas durante o projeto. Se não encontrar, utilizar o Modelo Conceitual. Lembrar que existem especialistas parciais que colaboram numa tarefa Informação espalhada -> comunicação via mensagens Existe uma analogia no mundo real.

31 Especialista Discussão É o padrão mais utilizado Tem uma analogia no mundo real Coad: Fazê-lo eu mesmo Lembrar que existem especialistas parciais Benefícios: Mantém encapsulamento -> favorece o acoplamento fraco. O Comportamento fica distribuído entre as classes que tem a informação necessária (classes leves ) -> favorece alta coesão. Favorece o reuso. Contra-indicações contra indicado quando aumenta acoplamento e reduz coesão Ex: quem é responsável por salvar um Empréstimo no banco de dados?

32 Padrão Criador (Creator) Problema: Quem deveria ser responsável pela criação de uma nova instância de alguma classe? Solução: atribua à classe B a responsabilidade de criar uma nova instância da classe A se uma das seguintes condições for verdadeira: B agrega objetos de A B contém objetos de A B registra instâncias de objetos de A B usa objetos de A B tem os valores iniciais que serão passados para objetos de A, quando de sua criação

33 Criador No sistema da Biblioteca, quem é responsável pela criação de uma linhadoemprestimo adicionarcopia(copialivro)---> : Emprestimo 1: d:=calculardatadevolução() 2: criar(d, copialivro) :Leitor Uso do padrão Criador: Emprestimo contém várias linhas de emprestimo linh: LinhaDoEmprestimo Empréstimo/Devolução data do empréstimo situação : Char CriarLinhaEmprest()

34 Discussão Criador O padrão guia a atribuição de responsabilidades relacionadas com a criação de objetos. Escolha adequada favorece acoplamento fraco Objetos agregados, contêineres e registradores são bons candidatos à responsabilidade de criar outros objetos Algumas vezes o candidato a criador é o objeto que conhece os dados iniciais do objeto a ser criado.

35 Acoplamento Acoplamento: dependência entre elementos (classes, subsistemas,...). Normalmente resultante de colaboração para atender a uma responsabilidade. O acoplamento mede o quanto um objeto está conectado a, tem conhecimento de ou depende de outros objetos Acoplamento fraco (ou baixo) um objeto não depende de muitos outros. Acoplamento forte (ou alto) um objeto depende de muitos outros.

36 Acoplamento Problemas do acoplamento alto: Mudanças em classes interdependentes forçam mudanças locais. Dificulta a compreensão do objetivo de cada classe. Dificulta a reutilização. Acoplamento fraco é o desejável

37 Padrão Acoplamento Fraco Problema: como apoiar a baixa dependência entre classes e aumentar a reutilização? Solução: Atribuir responsabilidade de Solução: Atribuir responsabilidade de maneira que o acoplamento permaneça baixo.

38 Padrão Acoplamento Fraco Exemplo: No sistema de biblioteca, suponha que queremos realizar a devolução da cópia do livro. Qual classe deve ser responsável por essa tarefa? Alternativas: A classe Leitor A classe Livro A classe Empréstimo

39 Modelo Conceitual Biblioteca Atendente nome 1 0..n registra 1 Leitor nome tipo : char ^ faz 0..n 0..n faz 1 0..n Reserva período situacao : char 0..1 Empréstimo/Devolução data do empréstimo situação : Char 0..1 corresponde a corresponde a possui Bibliotecaria nome refere-se a > 1 registra 1 0..n 1 Livro titulo : String[30] autor : String[30] ano : int ISBN : string[20] editora : int tipo : char possui 1..n 0..1 LinhaDoEmpréstimo data_prevista_devolução data_entrega_real 0..n < refere-se a 0..n CopiaDoLivro nro sequencial situacao : char liberadoparaemprestimo : char 1

40 Projeto 1: responsabilidade atribuída ao Leitor cop:=busca(codcopia) devolver(datadehoje) Leitor conhece copias do livro? devolvecopia(codcopia)--> leit: Leitor 4: atualizarsituacao('devolvida') 2: devolver(datadehoje) cop: CopiaDoLivro 1: cop:=busca(codcopia) 3: atualizardatadev(datadehoje) copias: CopiaDoLivro Copia conhece linha do empréstimo? linh: LinhaDoEmprestimo

41 Projeto 2: responsabilidade atribuída ao Livro devolvecopia(codcopia)--> liv: Livro 2: devolver(datadehoje) 3: atualizarsituacao('devolvida') 1: cop:=busca(codcopia) cop: CopiaDoLivro copias: CopiaDoLivro 4: atualizardatadev(datadehoje) linh: LinhaDoEmprestimo Eficiente? Cópia conhece a linha de empréstimo?

42 Projeto 3: responsabilidade atribuída ao Empréstimo 1: *[enquanto encontrou=false] linh:==proximo() devolvercopia(codcopia)---> : Emprestimo :LinhaDoEmprestimo 2: * [enquanto encontrou = false] cc:=obtercodigocopia() 4: [encontrou] atualizadatadev(datadehoje) 6: mudarsituacao('devolvida') 3: cc :=CodigoCopia() linh: LinhaDoEmprestimo cop: CopiaDeLivro 5: sinalizadevolucao() encontrou := false enquanto encontrou == false linh := proxima linha do emprestimo cc:=linh.obtercódigocópia() encontrou:=(cc==codcopia) fim-enquanto se encontrou linh.atualizadatadevolucao(datadehoje) fim-se

43 Qual projeto é melhor? Qual dos projetos anteriores favorece o acoplamento fraco? Projeto 1 e 2 acoplamento aumenta (entre cópia do livro e linha do empréstimo, entre leitor e cópia do livro) Projeto 3 não aumenta acoplamento PREFERÍVEL

44 Formas de Acoplamentos Um objeto tem um atributo que referencia um objeto de outra classe. Um objeto tem um método que referencia um objeto de outra classe. Parâmetro, variável local ou retorno Um objeto invoca os serviços de um objeto de outra classe. Uma classe é subclasse de outra, direta ou indiretamente.

45 Discussão: Acoplamento Fraco Acoplamento fraco -> classes mais independentes. Reduz impacto de mudanças. Favorece reuso de classes. Considerado em conjunto com outros padrões Extremo de acoplamento fraco não é desejável Fere princípios da tecnologia de objetos comunicação por mensagens Projeto pobre: objetos inchados e complexos, responsáveis por muito trabalho -> baixa coesão

46 Acoplamento Fraco Discussão: Dica: concentre-se em reduzir o acoplamento em pontos de evolução ou de alta instabilidade do sistema. Benefícios: Classes são pouco afetadas por mudanças em outras partes. Classes são simples de entender isoladamente. Conveniente para reutilização.

47 Coesão Mede o quanto as responsabilidade de um elemento (classe, objeto, subsistema,...) são fortemente focalizadas e relacionadas. (coesão funcional) Objeto com Coesão Alta -> objetos cujas responsabilidades são altamente relacionadas e que não executa um volume muito grande de trabalho. Objeto com Coesão Baixa -> objeto que faz muitas coisas não relacionadas ou executa muitas tarefas. Difícil de compreender, reutilizar e manter. constantemente afetado por mudanças.

48 Coesão Alta Problema: Como manter a complexidade sob controle? Solução: Atribuir responsabilidade de tal forma que a coesão permaneça alta.

49 Coesão Alta Exemplo 1: ( o mesmo para o acoplamento fraco): No sistema de biblioteca, suponha que queremos realizar a devolução da cópia do livro. Qual classe deve ser responsável por essa tarefa? Leitor Livro Empréstimo

50 Projeto 1: responsabilidade atribuída ao Leitor cop:=busca(codcopia) devolver(datadehoje) O Leitor fica parcialmente encarregado da devolução da cópia do livro. Neste exemplo, isso seria aceitável, mas o que aconteceria se houvesse 50 mensagens de outro tipo recebidas por Leitor? devolvecopia(codcopia)--> leit: Leitor 4: atualizarsituacao('devolvida') 2: devolver(datadehoje) cop: CopiaDoLivro 1: cop:=busca(codcopia) 3: atualizardatadev(datadehoje) copias: CopiaDoLivro linh: LinhaDoEmprestimo

51 Projeto 2: responsabilidade atribuída ao Livro devolvecopia(codcopia)--> liv: Livro 2: devolver(datadehoje) 3: atualizarsituacao('devolvida') 1: cop:=busca(codcopia) cop: CopiaDoLivro copias: CopiaDoLivro 4: atualizardatadev(datadehoje) linh: LinhaDoEmprestimo cop:=busca(codcopia) devolver(datadehoje) Parece uma solução melhor. Mas se houver inúmeras operações a serem feitas com o livro, ocorre o mesmo problema de Leitor.

52 Projeto 3: responsabilidade atribuída ao Empréstimo 1: *[enquanto encontrou=false] linh:==proximo() devolvercopia(codcopia)---> : Emprestimo :LinhaDoEmprestimo 2: cc:=codigocopia() 4: [encontrou] atualizadatadev(datadehoje) 6: mudarsituacao('devolvida') 3: cc := codigocopia() linh: LinhaDoEmprestimo cop: CopiaDeLivro encontrou := false enquanto encontrou == false linh := proxima linha do emprestimo cc:= linh.obter o código da cópia() encontrou:=(cc==codcopia) fim-enquanto se encontrou linh.atualizadatadev(datadehoje) fim-se 5: sinalizadevolucao() Esta é a melhor solução. O objeto empréstimo representa eventos bem definidos no sistema de biblioteca (empréstimo e devolução), por isso é mais intuitivo que ele assuma esta responsabilidade.

53 Coesão Alta Discussão: Coesão alta, assim como Acoplamento Fraco, são princípios que devem ser considerados para a avaliação de projetos de objetos Má coesão traz acoplamento e vice-versa Má coesão traz acoplamento e vice-versa Regra prática: classe com coesão alta tem um número relativamente pequeno de métodos, com funcionalidades relacionadas, e não executa muito trabalho. Analogia com mundo real Pessoas que assume muitas responsabilidades não associadas podem tornar-se (e normalmente tornam-se) ineficientes.

54 Coesão Alta Benefícios: Mais clareza e facilidade de compreensão do projeto. Simplificação de manutenção e de acréscimo de funcionalidade/melhorias. Favorecimento do acoplamento fraco. Aumento no potencial de reutilização Classe altamente coesa pode ser usada para uma finalidade bastante específica.

55 Será que a solução dada para o evento de devolução da cópia é ideal? Ainda temos um problema: quando ocorre o evento de devolução da cópia, o objeto empréstimo ao qual a cópia emprestada se refere ainda não é conhecido. Portanto, é preciso eleger alguma classe, que conheça os empréstimos, para receber a mensagem devolvercopia. Essa classe terá que identificar o objeto empréstimo cujo código de cópia seja igual ao parâmetro fornecido.

56 A pergunta anterior não está respondida nos slides a seguir. Voltaremos a ela no fim deste assunto.

57 Controlador É um objeto de interface (entre sistema e mundo externo) responsável por tratar um evento externo (evento de sistema). Define (implementa) o método para a operação de sistema. Operações de sistema associadas aos eventos de sistema: Sistema iniciardevo(idlei) devolver(codcop) FinalizarDevol() Sistema entraritem() terminarvenda() efetuarpagamento()

58 Padrão Controlador Problema: Quem deve ser responsável por tratar um evento do sistema (gerado por um ator externo)? Solução: A responsabilidade de receber ou tratar as mensagens de eventos do sistema (operações) pode ser atribuída uma classe que: Representa o sistema todo, representa o negócio ou organização, um dispositivo ou um subsistema (chamado de controlador fachada) Representa algo no mundo real que é ativo (chamado de controlador do papel) Representa um tratador artificial de todos os eventos de sistema de um caso de uso (Controlador do caso de uso) TratadorDe<NomeDoCasoDeUso> ControladorDe<NomeDoCasoDeUso>

59 Padrão Controlador Exemplo: Quem vai tratar os eventos do sistema de biblioteca? :Atendente Sistema 1: iniciarempréstimo(id_leitor) 2: nome e situação do leitor 3: emprestarlivro(id_livro) 4: datadedevolução * mais livros a emprestar 5: encerrarempréstimo()

60 Cod Cópia Livro Emprestar :Atendente Camada de Interface açãoexecutada(eventodaação) :CWindow emprestarlivro(codcopia) Camada do Domínio Objeto de Interface :????

61 Exemplo1: Opções de Controlador todo o sistema (controlador fachada): Biblioteca um tratador artificial do caso de uso: ControladorDeEmprestarLivro iniciaremprestimo( ) :Biblioteca iniciaremprestimo( ) :ControladorDe EmprestarLivro emprestarlivro( ) :Biblioteca emprestarlivro( ) :ControladorDe EmprestarLivro encerraremprestimo() :Biblioteca encerraremprestimo() :ControladorDe EmprestarLivro 61

62 Discussão : Controladores Fachada Um controlador fachada deve ser um objeto (do domínio) que seja o ponto principal para as chamadas provenientes da interface com o usuário ou de outros sistemas pode ser uma abstração de uma entidade física ex: TerminalDeAtendimento pode ser um conceito que represente o sistema ex: Biblioteca São adequados quando não há uma quantidade muito grande de eventos de sistema Ou quando não é possível redirecionar mensagens do sistema para controladores alternativos (ex: outros subsistemas )

63 Discussão : Controladores de Caso de Uso Deve existir um controlador diferente para cada caso de uso Por exemplo, o ControladorDeEmprestarLivro será responsável pelas operações iniciarempréstimo, emprestarlivro e encerrarempréstimo Não é um objeto do domínio, e sim uma construção artificial para dar suporte ao sistema. Ex: ControladorDeEmprestarLivro, ControladorDeDevolverLivro Pode ser uma alternativa se a escolha de controladores fachada deixar a classe controladora com alto acoplamento e/ou baixa coesão (controlador inchado por excesso de responsabilidades) É uma boa alternativa quando existem muitos eventos envolvendo diferentes processos.

64 Controladores inchados Classe controladora mal projetada - inchada coesão baixa falta de foco e tratamento de muitas responsabilidades Sinais de inchaço: uma única classe controladora tratando todos os eventos, que são muitos. Comum com controladores fachada o próprio controlador executa as tarefas necessárias para atender o evento, sem delegar para outras classes (coesão alta, não especialista) controlador tem muitos atributos e mantém informação significativa sobre o domínio, ou duplica informações existentes em outros lugares

65 Possíveis soluções para controladores inchados Acrescentar mais controladores. Projetar o controlador de forma que ele possa delegar o atendimento da responsabilidade de cada operação de sistema a outros objetos. Cuidado: Controladores de papéis podem conduzir a maus projetos(armadilha de projetar objetos semelhantes a pessoas para fazer todo o trabalho é preciso delegar)

66 Corolário do Padrão Controlador Objetos de interfaces HM ( como objetos janela ) e da camada de apresentação não devem ter a responsabilidade de tratar eventos do sistema (arquitetura em camadas)

67 Benefícios do Padrão Controlador e seu corolário Benefícios: aumento das possibilidades de reutilização de classes e do uso de interfaces plugáveis. conhecimento do estado do caso de uso controlador pode armazenar estado do caso de uso, garantindo a seqüência correta de execução de operações

68 Cod Cópia Livro Devolver :Atendente Camada de Interface :CWindow açãoexecutada(eventodaação) devolver Copia? devolvercopia(codcopia) Camada do Domínio???? devolvercopia(codcopia) :Emprestimo

69 Voltando ao problema do slide Qual era o problema: devolvercópia x Empréstimo Qual é a solução? Classe Fachada ou Controladora

70 Cod Cópia Livro Devolver :Atendente Camada de Interface :CWindow açãoexecutada(eventodaação) devolver Copia? devolvercopia(codcopia) Camada do Domínio :Biblioteca devolvercopia(codcopia) :Emprestimo

71 Próximo assunto Refinar Plano Sincronizar artefatos Analisar Projetar Construir Testar Padrões GRASP Estudo de Caso TPV : Projetar uma solução com objetos e Padrões GRASP

Aula 7 Visibilidade entre objetos e Diagramas de Classes

Aula 7 Visibilidade entre objetos e Diagramas de Classes Departamento de Sistemas de Computação Universidade de São Paulo SSC 124 Análise e Projeto Orientados a Objetos Aula 7 Visibilidade entre objetos e Diagramas de Classes Responsável Prof. Seiji Isotani

Leia mais

DIAGRAMA DE CLASSES DE PROJETO

DIAGRAMA DE CLASSES DE PROJETO Universidade de São Paulo, Instituto de Ciências Matemáticas e de Computação DIAGRAMA DE CLASSES DE PROJETO SSC 621: Análise e Projeto Orientados a Objetos Prof. Dr. Lucas Bueno R. Oliveira 2º Semestre

Leia mais

GRASP: PADRÕES PARA ATRIBUIÇÃO DE RESPONSABILIDADES. SSC 124 Análise e Projeto Orientado a Objeto Profa. Dra. Elisa Yumi Nakagawa

GRASP: PADRÕES PARA ATRIBUIÇÃO DE RESPONSABILIDADES. SSC 124 Análise e Projeto Orientado a Objeto Profa. Dra. Elisa Yumi Nakagawa GRASP: PADRÕES PARA ATRIBUIÇÃO DE RESPONSABILIDADES SSC 124 Análise e Projeto Orientado a Objeto Profa. Dra. Elisa Yumi Nakagawa 2 o semestre de 2016 1 RESPONSABILIDADE Responsabilidade um contrato ou

Leia mais

Diagrama de Classes Aula 11 (parte 1)

Diagrama de Classes Aula 11 (parte 1) Universidade Federal de Mato Grosso do Sul Sistemas de Informação - CPCX Diagrama de Classes Aula 11 (parte 1) Prof. Fernando Maia da Mota Slides gentilmente cedidos por Profa. Dra. Maria Istela Cagnin

Leia mais

Aula 6 Notação Básica dos Diagramas de Comunicação

Aula 6 Notação Básica dos Diagramas de Comunicação Departamento de Sistemas de Computação Universidade de São Paulo SSC 124 Análise e Projeto Orientados a Objetos Aula 6 Notação Básica dos Diagramas de Comunicação Responsável Prof. Seiji Isotani (sisotani@icmc.usp.br)

Leia mais

Modelagem de Software

Modelagem de Software Modelagem de Software Engenharia de Software Rosana T. Vaccare Braga Material adaptado a partir de material da Profa. Simone Senger Souza ICMC/USP São Carlos Modelagem Construção de modelos abstratos Auxílio

Leia mais

Análise do Sistema Casos de Uso

Análise do Sistema Casos de Uso As Fases do PU 1 Análise do Sistema Casos de Uso Casos de Uso Completo Abstrato Diagrama de Casos de Uso Emprestar Livro Ator Principal: Atendente Interessados e Interesses: Caso de Uso: Emprestar Livro

Leia mais

Diagramas de Classes. SSC-526 Análise e Projeto Orientados a Objeto Profa. Dra. Elisa Yumi Nakagawa 2º semestre de 2013

Diagramas de Classes. SSC-526 Análise e Projeto Orientados a Objeto Profa. Dra. Elisa Yumi Nakagawa 2º semestre de 2013 Diagramas de Classes SSC-526 Análise e Projeto Orientados a Objeto Profa. Dra. Elisa Yumi Nakagawa 2º semestre de 2013 1 O que já foi visto até agora Casos de Uso Completo Abstrato Diagrama de Casos de

Leia mais

DIAGRAMA DE COMUNICAÇÃO

DIAGRAMA DE COMUNICAÇÃO Universidade de São Paulo, Instituto de Ciências Matemáticas e de Computação DIAGRAMA DE COMUNICAÇÃO SSC 621: Análise e Projeto Orientados a Objetos Prof. Dr. Lucas Bueno R. Oliveira 2º Semestre 2015 O

Leia mais

Notação Básica dos Diagramas de Comunicação

Notação Básica dos Diagramas de Comunicação Notação Básica dos Diagramas de Comunicação Análise e Projeto Orientados a Objetos Profa Rosana 1 O que já foi visto até agora Casos de Uso Completo Abstrato Diagrama de Casos de Uso Emprestar Livro A

Leia mais

Diagrama de Comunicação. SSC 526 Análise e Projeto Orientado a Objeto Profa. Dra. Elisa Yumi Nakagawa

Diagrama de Comunicação. SSC 526 Análise e Projeto Orientado a Objeto Profa. Dra. Elisa Yumi Nakagawa Diagrama de Comunicação SSC 526 Análise e Projeto Orientado a Objeto Profa. Dra. Elisa Yumi Nakagawa 2 o semestre de 2013 1 2 O que já foi visto até agora Casos de Uso Completo Abstrato Diagrama de Casos

Leia mais

Aula 5 Diagramas de Seqüência do Sistema e Contratos de Operações

Aula 5 Diagramas de Seqüência do Sistema e Contratos de Operações Departamento de Sistemas de Computação Universidade de São Paulo Análise e Projeto Orientados a Objetos Aula 5 Diagramas de Seqüência do Sistema e Contratos de Operações Responsável Prof. Seiji Isotani

Leia mais

Diagramas de Sequência do Sistema e Contratos de Operações. SSC-121 Engenharia de Software I Profa. Dra. Elisa Yumi Nakagawa 2º semestre de 2012

Diagramas de Sequência do Sistema e Contratos de Operações. SSC-121 Engenharia de Software I Profa. Dra. Elisa Yumi Nakagawa 2º semestre de 2012 Diagramas de Sequência do Sistema e Contratos de Operações SSC-121 Engenharia de Software I Profa. Dra. Elisa Yumi Nakagawa 2º semestre de 2012 1 O que já foi visto até agora Casos de Uso Completo Abstrato

Leia mais

Do Projeto à Codificação. SSC-526 Análise e Projeto Orientados a Objeto Profa. Dra. Elisa Yumi Nakagawa 2º semestre de 2013

Do Projeto à Codificação. SSC-526 Análise e Projeto Orientados a Objeto Profa. Dra. Elisa Yumi Nakagawa 2º semestre de 2013 Do Projeto à Codificação SSC-526 Análise e Projeto Orientados a Objeto Profa. Dra. Elisa Yumi Nakagawa 2º semestre de 2013 1 O que já foi visto até agora Casos de Uso Completo Abstrato Diagrama de Casos

Leia mais

Modelo Conceitual. Prof. Seiji Isotani Slides baseados no material da Profa Dra Rosana T. V. Braga

Modelo Conceitual. Prof. Seiji Isotani Slides baseados no material da Profa Dra Rosana T. V. Braga Departamento de Sistemas de Computação Universidade de São Paulo Análise e Projeto Orientados a Objetos Modelo Conceitual Prof. Seiji Isotani (sisotani@icmc.usp.br) Slides baseados no material da Profa

Leia mais

Projeto da Camada de Domínio. Diagramas de Colaboração/Comunicação Diagrama de Classes de Projeto (DCP)

Projeto da Camada de Domínio. Diagramas de Colaboração/Comunicação Diagrama de Classes de Projeto (DCP) Projeto da Camada de Domínio Diagramas de Colaboração/Comunicação Diagrama de Classes de Projeto (DCP) Projeto da Camada de Domínio Diagramas de Colaboração (Comunicação na UML 2) permitem realizar a modelagem

Leia mais

Projeto Orientado a Objetos

Projeto Orientado a Objetos Projeto Orientado a Objetos Conjunto de atividades que têm como objetivo a criação de um modelo orientado a objetos de um sistema de software de acordo com os requisitos especificados Estratégia geral

Leia mais

Padrões de Projeto de Software

Padrões de Projeto de Software Padrões de Projeto de Software Luiz Leão luizleao@gmail.com http://www.luizleao.com Conteúdo Programático Padrões Básicos Information Expert Creator High Cohesion Low Coupling Controller Padrões Avançados

Leia mais

Notação Básica dos Diagramas de Comunicação

Notação Básica dos Diagramas de Comunicação UNIVERSIDADE ESTADUAL PAULISTA INSTITUTO DE BIOCIÊNCIAS, LETRAS E CIÊNCIAS EXATAS DEPARTAMENTO DE CIÊNCIAS DE COMPUTAÇÃO E ESTATÍSTICA Notação Básica dos Diagramas de Comunicação Projeto e Desenvolvimento

Leia mais

Projeto Orientado a Objetos

Projeto Orientado a Objetos Projeto Orientado a Objetos Ivan Mathias Filho Toacy Cavalcante de Oliveira Design Orientado a Objetos Após a identificação dos requisitos e a criação do modelo de domínio, devemos adicionar os métodos

Leia mais

Engenharia de Software II

Engenharia de Software II Faculdade de Ciências e Tecnologia Departamento de Matemática e Computação Bacharelado em Ciência da Computação Engenharia de Software II Aula 01 (rogerio@fct.unesp.br) Bibliografia Básica PRESSMAN, R.

Leia mais

INF1013 MODELAGEM DE SOFTWARE

INF1013 MODELAGEM DE SOFTWARE INF1013 MODELAGEM DE SOFTWARE Departamento de Informática Ivan Mathias Filho ivan@inf.puc-rio.br Programa Capítulo 4 Design Baseado em Responsabilidades 1 Programa Capítulo 4 Design Baseado em Responsabilidades

Leia mais

DIAGRAMA DE COMUNICAÇÃO. SSC 124 Análise e Projeto Orientado a Objeto Profa. Dra. Elisa Yumi Nakagawa

DIAGRAMA DE COMUNICAÇÃO. SSC 124 Análise e Projeto Orientado a Objeto Profa. Dra. Elisa Yumi Nakagawa DIAGRAMA DE COMUNICAÇÃO SSC 124 Análise e Projeto Orientado a Objeto Profa. Dra. Elisa Yumi Nakagawa 2 o semestre de 2016 1 O QUE JÁ FOI VISTO ATÉ AGORA Casos de Uso Completo Abstrato Diagrama de Casos

Leia mais

GRASP. Nazareno Andrade (baseado em Hyggo Almeida e Jacques Sauvé)

GRASP. Nazareno Andrade (baseado em Hyggo Almeida e Jacques Sauvé) GRASP Nazareno Andrade (baseado em Hyggo Almeida e Jacques Sauvé) O que vimos na última aula? Introdução a padrões O que são? Por que utilizá-los? Padrões GRASP O que são? Quais serão apresentados na disciplina?

Leia mais

Introdução a Padrões, GRASP. Nazareno Andrade (baseado no material de Hyggo Almeida e Jacques Sauvé)

Introdução a Padrões, GRASP. Nazareno Andrade (baseado no material de Hyggo Almeida e Jacques Sauvé) Introdução a Padrões, GRASP Nazareno Andrade (baseado no material de Hyggo Almeida e Jacques Sauvé) O que vimos na última aula? Processo de Desenvolvimento de Software Visão geral de processo Processos

Leia mais

Frameworks O Problema da Persistência

Frameworks O Problema da Persistência Frameworks O Problema da Persistência Análise e Projeto Orientados a Objetos Profa Dra Rosana T. V. Braga 1 Frameworks 2 Frameworks Definições: Aplicação semi-completa reutilizável que, quando especializada,

Leia mais

Framework Hibernate/JPA

Framework Hibernate/JPA Framework Hibernate/JPA SSC 124/621 Análise e Projeto Orientados a Objetos Sofia Costa 1 Hibernate É um Framework do tipo caixa-branca para persistência de dados. É uma ferramenta de mapeamento objeto/relacional

Leia mais

Padrões GRASP. Leonardo Gresta Paulino Murta

Padrões GRASP. Leonardo Gresta Paulino Murta Padrões GRASP Leonardo Gresta Paulino Murta leomurta@ic.uff.br Introdução Estilo MVC Padrões Expert Creator Controller Low Coupling High Cohesion Polymorphism Pure Fabrication Indirection Don t Talk to

Leia mais

ANÁLISE E PROJETO ORIENTADO A OBJETO (Parte 3)

ANÁLISE E PROJETO ORIENTADO A OBJETO (Parte 3) ANÁLISE E PROJETO ORIENTADO A OBJETO (Parte 3) Profª Andrea Padovan Jubileu Desenvolvimento Iterativo de Software (LARMAN, 2007) Desenvolvendo Software com UML 2.0 (MEDEIROS, 2004) Modelo de Projeto O

Leia mais

Padrões de Projeto. Conteúdo. Objetivos

Padrões de Projeto. Conteúdo. Objetivos Padrões de Projeto Conteúdo O que são Padrões de Projeto? Para que servem? Vantagens/Desvantagens, Pontos Fortes/Fracos Exemplos e Alternativas Objetivos Conhecer diferentes padrões; Entender sua utilidade;

Leia mais

PROJETO DE ARQUITETURA

PROJETO DE ARQUITETURA PROJETO DE ARQUITETURA Projeto Detalhado de Software (PDS) Profa. Cynthia Pinheiro Antes de mais nada... Próximas aulas: Seminários de Padrões de Projeto GoF 1º Dia: 10/11/2017, 08h 10h, Sala 04 2º Dia:

Leia mais

Análise e Projeto de Software Parte II. Marcos Dósea

Análise e Projeto de Software Parte II. Marcos Dósea Análise e Projeto de Software Parte II Marcos Dósea marcosdosea@gmail.com Agenda Aula III Análise de Software Orientado à Objetos Motivação Marcos Dósea marcosdosea@gmail.com O que é análise e projeto?

Leia mais

Análise e Projeto Orientados a Objetos: Visibilidade Diagrama de Classe de Projeto

Análise e Projeto Orientados a Objetos: Visibilidade Diagrama de Classe de Projeto UNIVERSIDADE ESTADUAL PAULISTA INSTITUTO DE BIOCIÊNCIAS, LETRAS E CIÊNCIAS EXATAS DEPARTAMENTO DE CIÊNCIAS DE COMPUTAÇÃO E ESTATÍSTICA Análise e Projeto Orientados a Objetos: Visibilidade Diagrama de Classe

Leia mais

Padrões de Projeto de Software

Padrões de Projeto de Software Padrões de Projeto de Software Luiz Leão luizleao@gmail.com http://www.luizleao.com Introdução O que é? Como descrever? Principais Padrões de Projetos Unidade 2 Padrões GoF PADRÕES CRIAÇÃO Abstract Factory

Leia mais

Análise e Projeto Orientados por Objetos

Análise e Projeto Orientados por Objetos Análise e Projeto Orientados por Objetos Aula 03 Padrões de Projeto GRASP Edirlei Soares de Lima Padrões de Projeto de Software Problemas no desenvolvimento de software se repetem...

Leia mais

Conteúdo. 1. Introdução. 2. Levantamento de Requisitos. 3. Análise Orientada a Objetos. 4. Projeto Orientado a Objetos 5. UML. 6.

Conteúdo. 1. Introdução. 2. Levantamento de Requisitos. 3. Análise Orientada a Objetos. 4. Projeto Orientado a Objetos 5. UML. 6. Conteúdo 1. Introdução 2. Levantamento de Requisitos 3. Análise Orientada a Objetos 4. Projeto Orientado a Objetos 5. UML 6. Métodos Ágeis Projeto Orientado a Objetos Definição das Operações Responsabilidade

Leia mais

Projeto de software Estrutura do software e arquitetura SWEBOK

Projeto de software Estrutura do software e arquitetura SWEBOK Projeto de software Estrutura do software e arquitetura SWEBOK SWEBOK Design Patterns Maneira testada ou documentada de alcançar um objetivo qualquer Padrões são comuns em várias áreas da engenharia Design

Leia mais

Modulo II Padrões GRASP

Modulo II Padrões GRASP Modulo II Padrões GRASP Professores Eduardo Bezerra edubezerra@gmail.com Ismael H F Santos ismael@tecgraf.puc-rio.br April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 1 Ementa Padrões de Projeto

Leia mais

Roni Fabio Banaszewski UTFPR Universidade Tecnológica Federal do Paraná

Roni Fabio Banaszewski UTFPR Universidade Tecnológica Federal do Paraná Roni Fabio Banaszewski UTFPR Universidade Tecnológica Federal do Paraná Reuso Motivações para reutilização de software Aspecto econômico Produtividade Time to market Qualidade Utilização de artefatos (código,

Leia mais

Modelagem Orientada a Objeto

Modelagem Orientada a Objeto UNIVERSIDADE ESTADUAL PAULISTA INSTITUTO DE BIOCIÊNCIAS, LETRAS E CIÊNCIAS EXATAS DEPARTAMENTO DE CIÊNCIAS DE COMPUTAÇÃO E ESTATÍSTICA Modelagem Orientada a Objeto Engenharia de Software 2o. Semestre de

Leia mais

UNIVERSIDADE ESTADUAL PAULISTA INSTITUTO DE BIOCIÊNCIAS, LETRAS E CIÊNCIAS EXATAS DEPARTAMENTO DE CIÊNCIAS DE COMPUTAÇÃO E ESTATÍSTICA

UNIVERSIDADE ESTADUAL PAULISTA INSTITUTO DE BIOCIÊNCIAS, LETRAS E CIÊNCIAS EXATAS DEPARTAMENTO DE CIÊNCIAS DE COMPUTAÇÃO E ESTATÍSTICA UNIVERSIDADE ESTADUAL PAULISTA INSTITUTO DE BIOCIÊNCIAS, LETRAS E CIÊNCIAS EXATAS DEPARTAMENTO DE CIÊNCIAS DE COMPUTAÇÃO E ESTATÍSTICA Modelo Conceitual 879 Projeto e Desenvolvimento de Sistemas de Informação

Leia mais

Padrões para atribuir responsabilidades: Expert

Padrões para atribuir responsabilidades: Expert Padrão para atribuir responsabilidades: Expert Introdução Um sistema OO é composto de objetos que enviam mensagens uns para os outros Uma mensagem é um método executado no contexto de um objeto Escolher

Leia mais

PCS3413 Engenharia de Software e Banco de Dados

PCS3413 Engenharia de Software e Banco de Dados PCS3413 Engenharia de Software e Banco de Dados Aula 23 Escola Politécnica da Universidade de São Paulo 1 Acoplamento! Indica dependência entre classes.! Deve ser o menor possível.! Direcionar associações

Leia mais

Introdução à Análise e Projeto de Sistemas

Introdução à Análise e Projeto de Sistemas Introdução à I. O Que vamos fazer na Disciplina? Saber uma linguagem de programação orientada a objeto (OO) não é suficiente para criar sistemas OO Tem que saber Análise e Projeto OO (APOO) Isto é, Análise

Leia mais

CONCEITOS BÁSICOS E MODELO DE PROJETO

CONCEITOS BÁSICOS E MODELO DE PROJETO CONCEITOS BÁSICOS E MODELO DE PROJETO Projeto Detalhado de Software (PDS) Profa. Cynthia Pinheiro Na aula passada... Abstração Arquitetura Padrões de Projeto Separação por interesses (por afinidades) Modularidade

Leia mais

Fase de Concepção (Início, Planejamento)

Fase de Concepção (Início, Planejamento) Fase de Concepção (Início, Planejamento) Objetivos Análise Preliminar Levantamento de Requisitos (parcial) Organização de Requisitos Modelo Conceitual Preliminar Planejamento das Iterações Atividades Conhecer

Leia mais

Fase de Concepção. Levantamento e Organização de Requisitos

Fase de Concepção. Levantamento e Organização de Requisitos Fase de Concepção Levantamento e Organização de Requisitos Objetivos buscar as primeiras informações sobre o sistema a ser desenvolvido descobrir se vale a pena fazer a descobrir se vale a pena fazer a

Leia mais

15/04/2013. Pensar Orientado a Objetos. Projeto Orientado a Objetos. Características de Objetos. Classe de Objetos. Comunicação entre Objetos

15/04/2013. Pensar Orientado a Objetos. Projeto Orientado a Objetos. Características de Objetos. Classe de Objetos. Comunicação entre Objetos DCC / ICEx / UFMG Pensar Orientado a Objetos Projeto Orientado a Objetos Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Onde quer que você olhe no mundo real, você vê objetos Pessoas, animais, plantas,

Leia mais

Visões Arquiteturais. Visões Arquiteturais

Visões Arquiteturais. Visões Arquiteturais Visões Arquiteturais Separar diferentes aspectos em visões separadas com o objetivo de gerenciar complexidade. Cada visão descreve diferentes conceitos da Engenharia. Visões permitem reduzir a quantidade

Leia mais

PROJETO DE ARQUITETURA (PARTE 2)

PROJETO DE ARQUITETURA (PARTE 2) PROJETO DE ARQUITETURA (PARTE 2) Projeto Detalhado de Software (PDS) Profa. Cynthia Pinheiro Antes de mais nada... 5ª Lista de Exercícios Já está disponível no site a 5ª Lista de Exercícios Entrega: dia

Leia mais

Requisitos de sistemas

Requisitos de sistemas Requisitos de sistemas Unidade III - Casos de Uso Identificação de casos de uso Conceitos de orientação a objetos Modelagem do diagrama de classes e casos de uso 1 Casos de uso CONCEITO Especifica o comportamento

Leia mais

Introdução Diagrama de Classes Diagrama de Seqüência Diagrama de Atividades. Diagramas UML. Classe, Seqüência e Atividades. Marcio E. F.

Introdução Diagrama de Classes Diagrama de Seqüência Diagrama de Atividades. Diagramas UML. Classe, Seqüência e Atividades. Marcio E. F. Diagramas UML Classe, Seqüência e Atividades Marcio E. F. Maia Disciplina: Engenharia de Software Professora: Rossana M. C. Andrade Curso: Ciências da Computação Universidade Federal do Ceará 15 de maio

Leia mais

UML. Modelando um sistema

UML. Modelando um sistema UML Modelando um sistema Fases do desenvolvimento de Software Análise de requisitos Análise Projeto Programação Análise de Requisitos Esta fase captura as intenções e necessidades dos usuários do sistema

Leia mais

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 15 PROFª BRUNO CALEGARO

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 15 PROFª BRUNO CALEGARO UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 15 PROFª BRUNO CALEGARO Santa Maria, 08 de Novembro de 2013. Contextualização Nas próximas aula iremos começar a modelar e projetar sistemas

Leia mais

15/04/2013. Outro Diagrama de Classes. Primeiro Diagrama de Classes. Diagrama de Classes. Atributos. Eduardo Figueiredo

15/04/2013. Outro Diagrama de Classes. Primeiro Diagrama de Classes. Diagrama de Classes. Atributos. Eduardo Figueiredo DCC / ICEx / UFMG Primeiro Diagrama de Classes Diagrama de Classes Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Professor Aluno matricula Outro Diagrama de Classes Diagrama de Classes Serve de

Leia mais

O Processo Unificado: Workflow de Análise. Graduação em Informática Profa. Dra. Itana Maria de Souza Gimenes 2009

O Processo Unificado: Workflow de Análise. Graduação em Informática Profa. Dra. Itana Maria de Souza Gimenes 2009 O Processo Unificado: Workflow de Análise Graduação em Informática Profa. Dra. Itana Maria de Souza Gimenes 2009 Workflow de Análise Objetivos da análise: manter uma especificação precisa dos requisitos

Leia mais

Arquitetura de Software: Introdução. Prof. Fellipe Aleixo

Arquitetura de Software: Introdução. Prof. Fellipe Aleixo Arquitetura de Software: Introdução Prof. Fellipe Aleixo (fellipe.aleixo@ifrn.edu.br) Primeira Analogia: O que é Arquitetura de Software? Significa coisas diferentes para pessoas diferentes... Para um

Leia mais

Estudo de Caso TPV Projetando uma solução com objetos e Padrões GRASP

Estudo de Caso TPV Projetando uma solução com objetos e Padrões GRASP UNIVERSIDADE ESTADUAL PAULISTA INSTITUTO DE BIOCIÊNCIAS, LETRAS E CIÊNCIAS EXATAS DEPARTAMENTO DE CIÊNCIAS DE COMPUTAÇÃO E ESTATÍSTICA Projeto e Desenvolvimento de Sistemas de Informação Estudo de Caso

Leia mais

3 Arquitetura para a Coordenação e a Composição de Artefatos de Software

3 Arquitetura para a Coordenação e a Composição de Artefatos de Software Uma Arquitetura para a Coordenação e a de Artefatos de 23 3 Arquitetura para a Coordenação e a de Artefatos de Resumo Este capítulo apresenta a arquitetura ACCA, que é a parte central deste trabalho. A

Leia mais

SEMINÁRIOS INTEGRADOS EM ADS PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS

SEMINÁRIOS INTEGRADOS EM ADS PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS SEMINÁRIOS INTEGRADOS EM ADS PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS Prof. Dr. Daniel Caetano 2014-1 DISCUSSÃO Visão Geral dos Paradigmas Quais os paradigmas mais comuns? Do que é composto um programa

Leia mais

ARCHITECTURAL DESIGN. Ian Sommerville, 8º edição Capítulo 11 Aula de Luiz Eduardo Guarino de Vasconcelos

ARCHITECTURAL DESIGN. Ian Sommerville, 8º edição Capítulo 11 Aula de Luiz Eduardo Guarino de Vasconcelos ARCHITECTURAL DESIGN Ian Sommerville, 8º edição Capítulo 11 Aula de Luiz Eduardo Guarino de Vasconcelos Objetivos Tópicos abordados Arquitetura de Software Projeto de arquitetura Vantagens de arquitetura

Leia mais

Modelagem de Casos de Uso (Parte 1)

Modelagem de Casos de Uso (Parte 1) Modelagem de Casos de Uso (Parte 1) Introdução (1) Objetivos Principais dos Casos de Uso: Delimitação do contexto de um sistema Documentação e o entendimento dos requisitos Descrição dos requisitos funcionais

Leia mais

Metodologias de Desenvolvimento (I)

Metodologias de Desenvolvimento (I) Modelagem Estática Metodologias de Desenvolvimento (I) Método é definido como sendo um conjunto de atividades sistemáticas para realizar uma tarefa. Técnica é um modo de executar as atividades recomendadas

Leia mais

Interface vs. Implementação Herança vs. Composição

Interface vs. Implementação Herança vs. Composição Interface vs. Implementação Herança vs. Composição O que vimos na última aula? Padrões GRASP Expert Creator Low Coupling High Cohesion 2 O que veremos hoje? Interface e Polimorfismo Interface como uma

Leia mais

Análise e projeto de sistemas

Análise e projeto de sistemas Análise e projeto de sistemas Conteúdo: UML O processo de desenvolvimento de software Prof. Patrícia Lucas A linguagem de modelagem unificada (UML) A UML teve origem em uma tentativa de se unificar os

Leia mais

Contratos O diagrama de sequência não menciona a funcionalidade das operações. Isto é, o comportamento do sistema Contrato é um documento que

Contratos O diagrama de sequência não menciona a funcionalidade das operações. Isto é, o comportamento do sistema Contrato é um documento que Contratos Contratos O diagrama de sequência não menciona a funcionalidade das operações. Isto é, o comportamento do sistema Contrato é um documento que descreve o que uma operação promete cumprir As pré-

Leia mais

DCC004 - Algoritmos e Estruturas de Dados II

DCC004 - Algoritmos e Estruturas de Dados II Conceito de especificação de software Renato Martins Email: renato.martins@dcc.ufmg.br https://www.dcc.ufmg.br/~renato.martins/courses/dcc004 Material adaptado de PDS2 - Douglas Macharet e Flávio Figueiredo

Leia mais

Estudo de Caso TPV: do Projeto para a Codificação

Estudo de Caso TPV: do Projeto para a Codificação UNIVERSIDADE ESTADUAL PAULISTA INSTITUTO DE BIOCIÊNCIAS, LETRAS E CIÊNCIAS EXATAS DEPARTAMENTO DE CIÊNCIAS DE COMPUTAÇÃO E ESTATÍSTICA Projeto e Desenvolvimento de Sistemas de Informação Estudo de Caso

Leia mais

Análise Orientada a Objetos

Análise Orientada a Objetos Análise Orientada a Objetos Como chegar a um modelo OO focado em responsabilidades a partir de casos de uso Marcelo C. Araújo mrclcst@bol.com.br Atua no ramo de engenharia de software a 6 anos, trabalhando

Leia mais

Padrões de projeto 1

Padrões de projeto 1 Padrões de projeto 1 Design Orientado Objeto Encapsulamento Herança Polimorfismo Design Patterns 2 Responsabilidades Booch e Rumbaugh Responsabilidade é um contrato ou obrigação de um tipo ou classe. Dois

Leia mais

Orientação a Objetos e Java

Orientação a Objetos e Java Orientação a Objetos e Java Daves Martins davesmartins@yahoo.com.br Mestre em Computação de Alto Desempenho pela UFRJ Especialista em Banco de Dados Analista Web Orientação a Objetos e Java Características

Leia mais

Engenharia de Software. Projeto de Arquitetura

Engenharia de Software. Projeto de Arquitetura Engenharia de Software Projeto de Arquitetura O que já vimos? Introdução a Engenharia de Software Processos de Software Desenvolvimento Ágil de Software Engenharia de Requisitos Modelagem de sistemas (outra

Leia mais

Levantamento de classes (Análise de casos de uso)

Levantamento de classes (Análise de casos de uso) Plano Levantamento de classes (Análise de casos de uso) Prof. Cesar Augusto Tacla Levantamento no método APOO Projeto por padrões: MVC e Observador Estereótipos de classes Visão geral do método Engenharia

Leia mais

Tópicos da Aula. Diretrizes Gerais. Trabalho Prático (TP) Pontuação do TP. Tema do Trabalho. Projeto de Software Diagrama de Classes

Tópicos da Aula. Diretrizes Gerais. Trabalho Prático (TP) Pontuação do TP. Tema do Trabalho. Projeto de Software Diagrama de Classes Engenharia de Software Aula 09 Tópicos da Aula Projeto de Software Revisão de orientação a objetos Projeto orientado a objetos Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo dcc603@gmail.com 04

Leia mais

Os princípios do desenho orientado a objetos

Os princípios do desenho orientado a objetos Os princípios do desenho orientado a objetos Os princípios do desenho orientado a objetos Encapsulamento e congeneridade Domínios, grau de dependência e coesão Os perigos da herança e do polimorfismo Encapsulamento

Leia mais

Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini /

Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini   / Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini E-mail: prof.andre.luis.belini@gmail.com / andre.belini@ifsp.edu.br MATÉRIA: ARQUITETURA DE SOFTWARE ASWA4 Aula N : 07

Leia mais

PROJETO ARQUITETURAL PARTE II: PADRÕES DE PROJETO. Projeto de Programas PPR0001

PROJETO ARQUITETURAL PARTE II: PADRÕES DE PROJETO. Projeto de Programas PPR0001 PROJETO ARQUITETURAL PARTE II: PADRÕES DE PROJETO Projeto de Programas PPR0001 QUALIDADE DO PROJETO 2 3 Qualidade do Projeto de Software Modularidade: gerar particionamento em elementos que executam funções

Leia mais

Modelagem Orientada a Objetos

Modelagem Orientada a Objetos DCC / ICEx / UFMG Modelagem Orientada a Objetos Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Atividades de Modelagem OO 1. Definir o contexto do sistema 2. Projetar a arquitetura 3. Identificar

Leia mais

Estilos Arquiteturais

Estilos Arquiteturais Estilos Arquiteturais Estilos Arquiteturais A arquitetura de um sistema pode aderir a um ou mais estilos arquiteturais Um estilo define os tipos de elementos que podem aparecer em uma arquitetura e as

Leia mais

DIAGRAMAS DE CLASSE UML

DIAGRAMAS DE CLASSE UML DIAGRAMAS DE CLASSE UML Projeto Detalhado de Software (PDS) Profa. Cynthia Pinheiro Antes de mais nada... Calendário de Reposições Aula 1: 27/10/2017, 8h-10h, Sala 8 Aula 2: A verificar Aula 3: A verificar

Leia mais

Notas de Aula 03: Introdução a Orientação a Objetos e a UML

Notas de Aula 03: Introdução a Orientação a Objetos e a UML Notas de Aula 03: Introdução a Orientação a Objetos e a UML Objetivos da aula: Introduzir os conceitos da Orientação à Objetos (O.O) Introduzir os conceitos da UML Relacionar os processos às ferramentas

Leia mais

2

2 ANÁLISE DE SISTEMAS (processo de desenvolvimento de sistemas) por Antônio Maurício Pitangueira 1 2 Levantamento de requisitos Análise de requisitos Projeto Implementação Testes Implantação Foco da disciplina

Leia mais

Diagramas de Sequência do Sistema. SSC 124: Análise e Projeto Orientados a Objetos Profa. Dra. Elisa Yumi Nakagawa

Diagramas de Sequência do Sistema. SSC 124: Análise e Projeto Orientados a Objetos Profa. Dra. Elisa Yumi Nakagawa Diagramas de Sequêcia do Sistema SSC 124: Aálise e Projeto Orietados a Objetos Profa. Dra. Elisa Yumi Nakagawa 1 O que já foi visto até agora Casos de Uso Completo Abstrato Diagrama de Casos de Uso Emprestar

Leia mais

Lista de Exercícios AV1

Lista de Exercícios AV1 Seminários Engenharia Integrados de Usabilidade em Sistemas de Informação SEMINÁRIOS INTEGRADOS EM SISTEMAS DE INFORMAÇÃO Lista de Exercícios AV1 Luiz Leão luizleao@gmail.com http://www.luizleao.com Questão

Leia mais

Soluções reutilizáveis para situações ou problemas encontrados comumente em desenvolvimento de software orientado a objetos.

Soluções reutilizáveis para situações ou problemas encontrados comumente em desenvolvimento de software orientado a objetos. Padrões de Projeto O que são? Soluções reutilizáveis para situações ou problemas encontrados comumente em desenvolvimento de software orientado a objetos. Livros Design Patterns: Elements of Reusable Object-

Leia mais

Análise de Sistemas. Aula 5

Análise de Sistemas. Aula 5 Análise de Sistemas Aula 5 Prof. Emerson Klisiewicz CONTEXTUALIZAÇÃO Aula 5 Análise Orientada a Objetos Introdução a UML Histórico e Visão Geral Ferramentas CASE O Sucesso... Clientes satisfeitos Eles

Leia mais

Mas o que é mesmo Padrão de Projeto?

Mas o que é mesmo Padrão de Projeto? Mas o que é mesmo Padrão de Projeto? Um Padrão de Projeto descreve uma solução comprovada para um problema recorrente e conhecido no desenvolvimento de software orientado a objetos. Mas afinal, porque

Leia mais

Alguns Exercícios Resolvidos

Alguns Exercícios Resolvidos Princípios de Análise e Projeto de Sistemas com UML 3ª edição, 2015, Eduardo Bezerra Alguns Exercícios Resolvidos Capítulo 1 Exercício 1.1 Sim, porque ele representa graficamente um objeto do mundo real

Leia mais

Introdução a UML (Unified Modeling Language)

Introdução a UML (Unified Modeling Language) Introdução a UML (Unified Modeling Language) O que é a UML? Linguagem Gráfica de Modelagem para: Visualizar Especificar Construir Documentar Comunicar Artefatos de sistemas complexos Linguagem: vocabulário

Leia mais

Análise e Projeto de Software

Análise e Projeto de Software Análise e Projeto de Software Proj. Desenvolvimento de Software Prof. Cleverton Hentz cleverton.hentz@ifrn.edu.br 8 de junho de 2017 Material Apresentado Sumário de Aula 1 Introdução 2 Estruturação do

Leia mais

Engenharia de Software

Engenharia de Software Engenharia de Software Design Principles Representando SW em UML OO em C Pattens úteis para embedded Rodrigo M A Almeida Design Principles Design Principles são guias para decompor as funcionalidades e

Leia mais

Arquitetura de software

Arquitetura de software Arquitetura de software Problema: vamos implementar um clone do compraentrega.com.br Mantém preços atualizados Recebe encomendas e pagamento Recomenda itens a usuários Por onde começamos? Arquitetura =

Leia mais

Engenharia de Software

Engenharia de Software UNIVERSIDADE DE LISBOA INSTITUTO SUPERIOR TÉCNICO Engenharia de Software LEIC/LETI, 3 o Ano, 2 o Semestre 2 o Teste, 8 de Junho de 2016 Nome: Número: Este teste tem um conjunto de 10 perguntas de escolha

Leia mais

UNIVERSIDADE FEDERAL DO PARANÁ - UFPR Bacharelado em Ciência da Computação

UNIVERSIDADE FEDERAL DO PARANÁ - UFPR Bacharelado em Ciência da Computação SOFT DISCIPLINA: Engenharia de Software AULA NÚMERO: 11 DATA: / / PROFESSOR: Andrey APRESENTAÇÃO O objetivo desta aula é apresentar e discutir os conceitos de Refatoração e Padrões. DESENVOLVIMENTO PADRÕES

Leia mais

Diagramas de Sequência e Contrato das Operações

Diagramas de Sequência e Contrato das Operações UNIVERSIDADE ESTADUAL PAULISTA INSTITUTO DE BIOCIÊNCIAS, LETRAS E CIÊNCIAS EXATAS DEPARTAMENTO DE CIÊNCIAS DE COMPUTAÇÃO E ESTATÍSTICA Projeto e Desenvolvimento de Sistemas de informação Comportamento

Leia mais

Engenharia de Domínio e Desenvolvimento Baseado em Componentes. Processo DBC-Arch-DE Apoio do Ambiente Odyssey no Processo Considerações Finais

Engenharia de Domínio e Desenvolvimento Baseado em Componentes. Processo DBC-Arch-DE Apoio do Ambiente Odyssey no Processo Considerações Finais Um Processo de Engenharia de Domínio com foco no Projeto Arquitetural Baseado em Componentes Ana Paula Blois Cláudia Werner Karin Becker Agenda Motivação Engenharia de Domínio e Desenvolvimento Baseado

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos Programação Orientada a Objetos Faculdade de Computação Aula Revisão Marcelo Zanchetta do Nascimento Material elaborado pela Profa. Ana Carolina Lorena - UNIFESP Desenvolvimento de Software ANÁLISE IMPLEMENTAÇÃO

Leia mais