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

Documentos relacionados
PROJETO DE PROGRAMAS. Projeto de Programas PPR0001

PCS3413 Engenharia de Software e Banco de Dados

INF1013 MODELAGEM DE SOFTWARE

Análise e Projeto de Software

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

Programação Estruturada Orientada a Objetos

Definindo um padrão para arquitetura Web

Arquitetura de software

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

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

Engenharia de Software

Singleton e Adapter. Professor: Nazareno Andrade (baseado no material de Hyggo Almeida e Jacques Sauvé)

FORMULÁRIO DE REGISTRO DE PLANO DE CURSO 2013.I

Requisitos de sistemas

Roteiro. Introdução. Uma Introdução à Programação Orientada a Objetos e JAVA usando NetBeans. Objetos. Princípios da Orientação a Objetos

Técnicas de Reutilização. Reutilização em Programação Orientada a Objetos. Considere três classes... Reuso de Classes.

Levantamento de Classes

Capítulo 2. Orientação a Objetos

Unidade II MODELAGEM DE PROCESSOS. Profa. Gislaine Stachissini

Banco de Dados Relacional

Agenda da Aula. Arquitetura de Software e Padrões Arquiteturais. Elementos de um Padrão. Arquitetura de Software. Arquitetura de Software

Visões Arquiteturais. Visões Arquiteturais. Visões Arquiteturais. Visão Conceitual

CARGA HORÁRIA Engenharia de Software Código: horas PRÉ-REQUISITOS: Paradigmas de Programação

Reuso de Software Aula Maio 2012

Princípios e Conceitos de Desenho de Software. Projeto de Sistemas de Software Prof. Rodrigo Ribeiro

1 Introdução. 1.1 Teoria dos Sistemas 23/4/2010

Levantamento, Análise e Gestão Requisitos. Aula 03

Grupo de Usuários Java do Noroeste Paulista. Tópicos Avançados em Java

Modelagem de Sistemas. Análise de Requisitos. Modelagem

Aula 12: Princípios da Coesão de Pacotes

Sistema de Banco de Dados. UNIDADE 1 Introdução aos Sistemas de Bancos de Dados Professor: Armando Hage

MINISTÉRIO DA EDUCAÇÃO UNIVERSIDADE FEDERAL DE PELOTAS PRÓ-REITORIA DE GRADUAÇÃO PLANO DE ENSINO. Semestre letivo. 1. Identificação Código

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

Como Modelar com UML 2

Sistemas de Banco de Dados

Leitura: Cap : Sommerville; cap20: Pressman

UML. Rodrigo Leite Durães.

Modelagem Orientada a Objeto

Programação Orientada a Objetos

Conceitos de Programação Orientada a Objetos

Apresentação do Capítulo 4 MDA (Model-Driven Archtecture) ALUNO: DOMENICO SCHETTINI FILHO NÚMERO USP:

Análise e projeto de sistemas

Introdução à Programação Orientada a Objetos. Programação Estruturada vs Programação Orientada a Objetos

UML. Modelando um sistema

Introdução. descrever os tipos de interfaces e linguagens oferecidas por um SGBD. mostrar o ambiente de programas dos SGBD s

Universidade Federal de Goiás Estilos Arquiteturais

Padrões de Projeto de Software

Conceitos de Programação Orientada a Objetos

INF1404 MODELAGEM DE SISTEMAS

Chaves. Acesso a Registros. Chaves Primária e Secundária. Chaves Primária e Secundária

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

Estruturas de Dados Aula 1: Introdução e conceitos básicos 28/02/2011

PARTICIPANTES, FERRAMENTAS E O PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Projeto de Programas PPR0001

INE 5423 Banco de Dados I

Engenharia de Software. Aula 10 Representação dos Conceitos de Orientação a Objetos. Prof. Me. Rogério Ferreira

PADRONIZAÇÃO 10. INTERFACES PADRONIZAÇÃO CONTRATOS

Programação Orientada a Objetos

Q d( ) P. a( ) c( ) e( ) c( ) S. c( ) d( )

EA975 - Laboratório de Engenharia de Software

Orientação a Objetos Revisão dos conceitos

INE 5423 Banco de Dados I

Prof. Mizael Cortez Modelo em camadas Arquitetura TCP/IP Modelo ISO/OSI

AULA 02. OBJETIVO: Características da Linguagem Orientada a Objetos.

MODELAGEM DE DADOS MÓDULO III - UNIDADE V- MAPEAMENTO OBJETO RELACIONAL

Programação Orientada a Objetos. Prof. MsC Sílvio Bacalá Júnior

PROGRAMAÇÃO SERVIDOR PADRÕES MVC E DAO EM SISTEMAS WEB. Prof. Dr. Daniel Caetano

Classes e Objetos em Java. Algoritmos e Programação I. Classes. Classes. Modificadores de Acesso. Classes. Revisão

Tópicos da Aula. A Linguagem UML. A Linguagem UML. De onde surgiu? Fundadores da UML. Introdução à UML e Diagrama de Casos de Uso.

Lista de Exercícios AV1

Desenho de Software. Sumário

Programação Orientada a Objetos

Engenharia de Software. Projeto de Software. Projeto: definição. Profa. Dra. Lúcia V. L. Filgueiras Profa. Dra. Selma Shin Shimizu Melnikoff

Laboratório de programação II

Aula 09. Modelagem de Sistemas. Modelagem 10/10/2012. Modelagem de Sistemas de Informação; Análise e Otimização de Sistemas.

Orientação a Objetos Parte I. Introdução a POO (Programação Orientada a Objetos)

UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICA. Sistemas Distribuídos

Os princípios do desenho orientado a objetos

RUP RATIONAL UNIFIED PROCESS

REENGENHARIA E ENGENHARIA REVERSA

Aula 01 Conceito de Banco de Dados e SGBD

AULA 03: FUNCIONAMENTO DE UM COMPUTADOR

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

Padrão de projeto de software

Linguagem de Programação Orientada a Objeto Abstração - Encapsulamento

Padrões de Projeto de Software

Requisitos de Sistemas

PDS. Aula 1.4 Modelos de Processo. Prof. Dr. Bruno Moreno

PLANO DE ENSINO. ANO LETIVO/SEMESTRE: 2016/2 PROFESSOR: Leandro da Silva Camargo

UNIVERSIDADE FEDERAL DO PARANÁ UFPR BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO

ENGENHARIA DE SOFTWARE

Processos de Software by Pearson Education Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 4 Slide 1

Objetos e Componentes Distribuídos: EJB

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

TIPOS DE CLASSES ENTIDADE FRONTEIRA CONTROLE CLASSE DE ENTIDADE. CLASSE DE FRONTEIRA ( interface )

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE CAMPUS JOÃO CÂMARA UML UNIFIED MODELING LANGUAGE

Engenharia de Software Projeto de software

MVC e DAO. Tiago Alves de Oliveira

Bibliografia. Engenharia de software Ian Sommerville 9ª edição Editora Pearson Prentice Hall

Métodos de implementação de linguagens. Kellen Pinagé

Transcrição:

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 específicas; Características: Coesão: medida da identidade funcional de um módulo; (uma funcionalidade somente? Mais de uma?) Acoplamento: Mede o grau em que um módulo está conectado a outros elementos; Desafios: Qual o número correto de módulos para um projeto? Qual o tamanho correto dos módulos?

4 Qualidade do Projeto de Software Modularidade:

5 Qualidade do Projeto de Software Organização Hierárquica: manter uma boa organização entre os elementos / módulos de software;

6 Princípios de Projeto Minimizar a distância intelectual entre o software e o problema do mundo real: Evitar associações abstratas para o usuário quando possível Não reinventar a roda - Utilize padrões Usar bem o encapsulamento de modo que as informações de um módulo não sejam acessíveis aos módulos que não precisam delas o Reduz a ocorrência de efeitos colaterais o Questão: public vs. getters & setters o Erros não se propagam pelo software Definir regras de estilo e projeto para a equipe do projeto; Ter cuidado e definir bem as interfaces do sistema

PADRÕES DE PROJETO 7

8 Introdução Você utiliza um padrão para programar? Qual? Programação orientada a gambiarra?! Algoritmo KickSort / BoboSort / EstouComSort [desciclopedia - adaptado]

9 Padrões de nomenclatura Você utiliza um padrão para programar? Qual? Padrão utilizado na nomenclatura de variáveis e métodos?

10 Padrões de nomenclatura O padrão mais utilizado em nomenclatura é: Nomes de variáveis e métodos condizentes Variáveis: letras minúsculas, onde nomes compostos são separados por underline (ex.: linha_atual, salario_novo) Métodos: letras minúsculas, onde as iniciais dos nomes compostos ficam em caixa alta (ex.: abrirarquivo(), fechararquivo()) Valores constantes: letras maiúsculas Classes: palavra capitalizada (inclusive primeira)

11 Padrão de estrutura Você utiliza um padrão para programar? Qual? Padrão utilizado na nomenclatura de variáveis e métodos? Padrão de estrutura para o código?

12 Padrão de estrutura Padrão de estrutura para o código? Operações sempre implementadas em funções Classe de Definições, Linguagem, Operações Genéricas e Sistema Padrão Singleton Padrão Façade (fachada)

13 Padrão de estrutura Classe de Definições Definições do sistema (volume, linguagem atual, dificuldade, constantes,...) Classe de Linguagem Métodos que retornam os textos para cada label da tela tomando como base a linguagem atual definida Classe de Operações Genéricas (Toolbox) Classe com métodos genéricos que podem ser utilizados em qualquer parte do código, ex: conversão de graus para radianos, conversão de um numero de telefone em inteiro para string e vice-versa. Classe de Sistema Classe principal do sistema que possui os registros salvos ou que serão resgatados, ex: clientes, produtos. Pode ser agrupada com a classe de definições. Deve-se garantir que exista apenas uma única instância dessa classe.

14 Padrão de estrutura Padrão Singleton Garante uma única instância de um dado objeto. Forma simples: uso de atributos staticos e públicos Forma encapsulada: uso de atributo statico e privado + construtor privado + método para recuperar instância. Se a instância do atributo não existe: cria uma nova e retorna-a; Se a instância do atributo já existe: apenas retorna o atributo/objeto;

15 Padrão de estrutura Padrão Façade (fachada) classe de acesso/distribuidora

16 Padrão de estrutura Padrão Façade (fachada) classe de acesso/distribuidora Objetivo: centralizar e simplificar invocação de métodos Implementação: todas as classes do subsistema (pacote) não são públicas com exceção da fachada. Como a fachada é uma classe do pacote, pode direcionar as chamadas para os demais métodos

17 Padrão de estrutura Padrão Façade (fachada) interface de acesso/implementação

18 Padrão de estrutura Padrão Façade (fachada) interface de acesso/implementação Objetivo: facilitar reuso e realização de alterações Implementação: a classe de fachada é uma interface que descreve todos os métodos que devem ser implementados. As classes que implementam a interface são obrigadas a implementar todos os métodos da fachada. Facilita muito a alteração de tecnologia ou método aplicado.

19 Padrão de arquitetura Você utiliza um padrão para programar? Qual? Padrão utilizado na nomenclatura de variáveis e métodos? Padrão de estrutura para o código? Padrão da estrutura para o software [padrão arquitetural?]

20 Padrão de arquitetura Os estilos arquiteturais irão estabelecer uma estrutura padronizada para os componentes do sistema Estilo descrevem: Conjunto de componentes Conjunto de conectores Restrições sobre a interação dos componentes Modelos semânticos que permitem que o projetista entenda as propriedades gerais do sistema

21 Padrão de arquitetura Padrão da estrutura para o software [padrão arquitetural?] Centrado em dados Fluxo de dados Chamada e retorno MVC (Model View Controller) Camadas Componentes independentes Máquina Virtual

22 Arquitetura MVC Conceito: o Separação de conceitos: interação vs. representação de informação o Reusabilidade de código Utilização de três tipos de componentes: Model: dados da aplicação, regras de negócio, lógica e funções View: qualquer saída de representação dos dados (ex: tabela, diagrama) Controller: controla a aplicação convertendo entradas dos usuários em chamadas para as classes de modelo e visão.

23 Arquitetura em camadas Conceito: o Separação de conceitos: interação, regras de negócio, abstração, armazenamento dos dados o Reusabilidade de código O projeto dispõem os componentes em camadas A comunicação entre componentes só é permitida pelas camadas vizinhas (hierarquia)

24 Cada camada tem um nível de aproximação: Arquitetura em camadas Camadas mais altas (externas) estão relacionadas aos componentes de interação com o usuário Camada de Interface com o Usuário Camada de Aplicação Camada de Utilitários Componentes Camadas mais baixas (internas) representam os componentes que realizam a interface com o sistema operacional Camada Central

25 Variações do sistema em camadas As variações estão relacionadas ao nível de detalhamento e a especificação das funções: o Sistemas em duas camadas o Sistemas em três camadas o Sistemas em N camadas

26 Sistema de uma camada Todas as partes constituintes estão fortemente agregadas Desvantagens: Difícil manutenção Não há separação entre lógica de negócios, dados e apresentação Qualquer alteração em uma parte da aplicação pode causar efeitos colaterais em outras Atualizações requerem reengenharia completa do sistema Usuário Aplicação

27 Sistemas de duas camadas Existe a separação da lógica de negócios e dos dados Apresentação + lógica de negócios <-> Dados Apresentação <-> Lógica de negócios + Dados Vantagem: Se a lógica de negócios não for muito complexa ela pode ser agregada a outra camada Desvantagem Existe forte relação entre as duas camadas, prejudica a manutenção Usuário Apresentação + Lógica de Negócios Acesso aos Dados Usuário Apresentação Acesso aos Dados + Lógica de Negócios

28 Sistema de três camadas Separação clara das três camadas principais do sistema Apresentação: Interface com o usuário Lógica de Negócios: Componentes que trabalham para codificar o processo de negócios Dados: Provê e mantém os dados utilizados Vantagem: Maior flexibilidade para alterar os componentes de cada camada, não há preocupação com os efeitos colaterais das alterações Usuário Apresentação Lógica de Negócios Acesso aos Dados

29 Sistemas de N camadas Usuário SISTEMA Apresentação Lógica de Negócios Estruturas de Dados Data Access Object (DAO)

30 Exemplo Levantar os requisitos necessários para um sistema acadêmico que permite o controle e gerenciamento de matricula, frequência e desempenho dos discentes e a organização das disciplinas ofertadas. O sistema acadêmico deverá permitir que os acadêmicos realizem suas matrículas nas turmas de disciplinas disponíveis, considerando restrições de pré-requisitos, número máximo de créditos (9) e limite de alunos por turma. Deverá permitir que chefes de departamento incluam novas disciplinas e novos professores, abram novas turmas para as disciplinas existentes com sala, horário, lotação máxima e professor definidos. As disciplinas só poderão ser ofertadas entre 7:30 e 12:00, e, 13:30 e 21:40, em blocos de 50 minutos por aula (hora-aula). Também deverá ser possível que professores acessem suas turmas e registrem frequência e notas para seus alunos.

31 Exemplo O sistema deverá ter uma opção para finalizar o semestre, possibilitando a inclusão das notas de exame. Um aluno deverá ter frequência superior a 75% e deverá ter uma média superior a 3 para realizar exame. Caso sua nota seja maior ou igual a 7 está aprovado (desde que tenha a frequência necessária). Após a digitação das notas de exame o professor deverá finalizar a turma e o sistema mostrará o resultado final. O sistema deverá funcionar nos sistemas operacionais Windows e Linux e deverá ter seu acesso controlado por login e senha.

32 Atividade Agora é a sua vez! Altere seu diagrama de classes criando uma estrutura em camadas para o sistema descrito na página da disciplina. Adicione as classes para as janelas que imagina ser necessárias ao sistema + uma classe de fachada distribuidora no pacote de negócio + uma interface de fachada no pacote DAO que é implementado por uma classe Memoria e outra classe Arquivo. (tente colocar ao menos duas classes no pacote de negócio, além da classe de fachada)

33 Bibliografia Básica: BEZERRA, E. Princípios de Análise e Projetos de Sistemas com UML. Rio de Janeiro: Campus, 2003. PRESSMAN, R.S. Engenharia de Software. São Paulo: Makron Books, 2002. SOMMERVILLE, I. Engenharia de Software. São Paulo: Addison Wesley, 2003. Complementar: WARNIER, J. Lógica de Construção de Programas. Rio de Janeiro: Campus, 1984. JACKSON, M. Princípios de Projeto de Programas. Rio de Janeiro: Campus, 1988. PAGE-JONES, M. Projeto Estruturado de Sistemas. São Paulo: McGraw-Hill, 1988.