Baixe o app para aproveitar ainda mais
Prévia do material em texto
PDS Aula 3.5 – Introdução ao Projeto OO Prof. Bruno Moreno bruno.moreno@ifrn.edu.br 2 ● Estamos saindo da fase de análise: – ~10% dos requisitos foram investigados na concepção; – Uma análise mais profunda foi realizada na elaboração; Introdução Concepção Casos de Uso Modelo de Domínio Elaboração DSS Contratos de Operação 3 ● No projeto é definido a arquitetura lógica em várias camadas; – Camada de UI; – Camada de aplicação lógica (ou de domínio); – Outras camadas; ● Arquitetura lógica é diferente de arquitetura do software; Introdução 4 ● É a organização de classes de SW em pacotes, subsistemas e camadas; ● Uma camada é um agrupamento de granularidade muito grossa de classes, pacotes ou subsistemas que tem responsabilidade coesiva sobre um tópico importante; ● As camadas são organizadas de modo que as “mais altas” solicitem serviços das “mais baixas”, mas normalmente não vice-versa; Arquitetura Lógica 5 ● Camadas incluem, geralmente: – Interface com Usuário (UI: User Interface) ● Reúne elementos (classes e pacotes) relacionados à interface de usuário; – Lógica da Aplicação e Objetos de Domínio ● Reúne elementos que representam conceitos do domínio, que satisfazem requisitos da aplicação; ● Por exemplo: classe Venda; – Serviços Técnicos ● Reúne elementos de propósito geral e subsistemas que fornecem serviços técnico de apoio; ● Exemplo: interface com BD ou serviço de log; Arquitetura Lógica 6 ● É um conjunto de decisões significativas sobre: – Organização de um sistema de software; – Seleção dos elementos estruturais; – Interfaces; – Comportamento; – Arquitetura lógica; ● Em resumo, definir arquitetura diz respeito a definição das ideias relacionadas ao projeto, motivações, restrições, organizações, padrões, responsabilidades e conexões com subsistemas. Arquitetura do Software 7 ● O trabalho da análise é focado no aprendizado relacionado em fazer a coisa certa – Entender o que deve ser resolvido, de fato; ● O trabalho do projeto está concentrado em fazer certo a coisa – Projetar a solução de maneira competente para satisfazer os requisitos pré-definidos; Da Análise ao Projeto 8 ● No PU, e em qualquer processo iterativo, as fases de análise e projeto ocorrem em cada iteração – As iterações iniciais empregam mais tempo na fase de análise; – Enquanto que as iterações finais empregam mais tempo na fase de projeto; A&P nas Iterações 9 ● É por isso que o esforço nas disciplinas do PU é diferenciado para cada fase e iteração. A&P nas Iterações 10 Arquitetura Lógica e Diagrama de Pacotes UML 11 Influência de Artefatos 12 ● Uma arquitetura em camadas pode ser estrita ou relaxada; ● Em uma arquitetura estrita, uma camada solicita serviço apenas de camadas diretamente inferiores a ela – Exemplo: pilhas de protocolo de rede; ● Em uma arquitetura relaxada, uma camada mais alta solicita informações de várias camadas mais baixas – Exemplo: camada de UI solicitando serviços da camada lógica e da camada de dados; Estilos Arquiteturais 13 Exemplo de Arquitetura 14 ● A tecnologia OO poder ser aplicada em todos níveis; ● Entretanto, as camadas de UI e de serviço técnico são muito dependentes da tecnologia utilizada; ● Por outro lado, os conceitos aprendidos sobre a camada lógica são independentes de tecnologia; ● Por isso, o foco do nosso curso é o projeto da camada lógica; Objetivo 15 ● Diagramas de Pacotes UML são, frequentemente, utilizados para representar a arquitetura lógica de um sistema – Camadas, subsistemas, pacotes, etc. ● Uma camada pode ser modelada como um pacote UML – Exemplo: camada de UI modelada como um pacote denominado UI; ● Um diagrama de pacotes é um meio de agrupar elementos; Diagramas de Pacotes UML 16 ● Um pacote UML pode agrupar qualquer coisa – Classes, outros pacotes, casos de uso, etc.; ● Aninhar pacotes é muito comum; ● Um pacote UML é um conceito mais geral do que simplesmente um pacote em Java ou um espaço de nomes em .NET; ● Se representa dependência entre pacotes em UML por meio de uma linha tracejada com seta apontada para o pacote dependente; Diagramas de Pacotes UML 17 Diagramas de Pacotes UML 18 ● Diretrizes Gerais – Deve estar claro as responsabilidades de cada camada; – As camadas inferiores devem ser de mais “baixo nível” do que as camadas superiores; – Camadas superiores devem ser mais específicas da aplicação; – O acoplamento deve ser de cima para baixo; Projeto em Camadas 19 ● Vantagens: – Evita que modificações do código fonte se espalham por todo o sistema; – Evita que a lógica da aplicação fique entrelaçada com a interface do usuário; – Faz uma nítida separação de classes e pacotes relacionados a serviços específicos; – As camadas podem ser substituídas por nova implementação; – A camadas inferiores contêm funções reusáveis; – As camadas podem ser distribuídas; – O desenvolvimento em equipe é facilitado. Projeto em Camadas 20 ● O número de camadas varia entre aplicações e domínios de aplicação; ● Sistemas de informação apresentam, geralmente, as seguintes camadas: – UI; – Aplicação; – Domínio; – Infraestrutura de negócio; – Serviços técnicos; – Fundação. Projeto em Camadas 21 Camadas comuns em SIs UI (apresentação) Aplicação Domínio Infraestrutura de Negócio Serviços Técnicos Fundação de pe nd ên ci a Mais específico da aplicação Largura indica campo de aplicabilidade ● GUI; ● Relatórios; ● HTML, XML, JSP, ... ● Trata as solicitações da camada de apresentação; ● Transições entre janelas/páginas; ● Trata as solicitações da camada de aplicação; ● Regras de domínio; ● Serviços gerais utilizados por vários domínios (camadas); ● Exemplo: conversores; ● Frameworks de persistência; ● Segurança; ● Logs; ● Serviços de mais baixo nível, como estrutura de dados, linhas de execução, arquivo, etc. 22 ● As responsabilidades das camadas devem estar muito bem definidas – Objetos em uma camada devem estar fortemente relacionadas umas com as outras e não devem ser misturadas com responsabilidades de outras camadas; – Exemplo: ● Objetos de UI tratam sobre criação de janelas, captação de eventos e etc. ● Objetos da camada lógica (domínio) enfocam na lógica da aplicação, como cálculo do total de vendas ou impostos. Diretrizes específicas 23 ● As responsabilidades das camadas devem estar muito bem definidas – Objetos de UI não devem executar lógica da aplicação; – Exemplos: ● Um JFrame ou JPanel em Java não deve conter lógica para calcular vendas ou impostos; ● Uma classe lógica não deve captar eventos de IU. Diretrizes específicas Isso viola dois princípios arquiteturais básicos: separação de interesses e alta coesão 24 Mapeamento para código 25 (1) Leitura dos capítulos 12 e 13 de Larman; (2) Pesquisa sobre arquitetura MVC. Atividades: Slide 1 Slide 2 Slide 3 Slide 4 Slide 5 Slide 6 Slide 7 Slide 8 Slide 9 Slide 10 Slide 11 Slide 12 Slide 13 Slide 14 Slide 15 Slide 16 Slide 17 Slide 18 Slide 19 Slide 20 Slide 21 Slide 22 Slide 23 Slide 24 Slide 25
Compartilhar