ARQUITETURA E DESENHO

Documentos relacionados
Arquitetura de software

Escolhendo um Modelo de Ciclo de Vida

Unidade II MODELAGEM DE PROCESSOS. Profa. Gislaine Stachissini

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

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

Modelagem de Dados MODELAGEM DE DADOS. Sistemas de Banco de Dados. Profa. Rosemary Melo

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

UML. Rodrigo Leite Durães.

Data Warehouse ETL. Rodrigo Leite Durães.

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

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

RUP RATIONAL UNIFIED PROCESS PRÁTICAS RECOMENDADAS. Prof. Fabiano Papaiz IFRN

Guia do Processo de Teste Metodologia Celepar

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

3. Engenharia dos requisitos de software

Residência em Arquitetura de Software. Gerência de Escopo. Gerência de Desenvolvimento

Exercícios Cap I. 1.1, 1.2, 1.3 (somente letras (a), (b) e (c)) , 1.8 e 1.12 IC - UFF

Padrões de Projeto de Software

Aula 01 Conceito de Banco de Dados e SGBD

I - Introdução à Simulação

Banco de Dados Fundamentos Básicos. Hélder Antero Amaral Nunes

INF014 Análise e Projeto de Sistemas Ciclos de vida e Processos de Software

Fábio Amado João Maio 33306

Introdução à Computação: Máquinas Multiníveis

Conceitos de Orientação a Objetos

Protótipo de Protocolo de Aplicação para Troca de Documentos da Área Extra Judicial. Acadêmico: Fabrício Bento Orientador: Paulo Fernando da Silva

Estruturas de Dados Aula 8: Tipos Abstratos de Dados 30/03/2011

Documento de Arquitetura de Software- SGE

Fundamentos de Sistemas Operacionais de Arquitetura Aberta. CST em Redes de Computadores

Introdução à Programação

Normas ISO:

GERENCIAMENTO DE PROJETOS. Prof. Glauco Carvalho

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

Aula 11 Introdução ao Java Script

TS03. Teste de Software ESTÁGIOS DO TESTE DE SOFTWARE. COTI Informática Escola de Nerds

QUESTÕES TESTES. Questão 1. O modelo de ciclo de vida em cascata:

Universidade da Beira Interior Cursos: Engenharia Informática, Matemática /Informática e Ensino da Informática

4 Uma Linguagem Baseada em Máquinas de Estado 4.1. A Linguagem

RUP Rational Unified Proccess (Processo Unificado da Rational) Equipe WEB Cercomp

Profª. Juliana Pinheiro Campos ENG10082 Programação II Créditos: Prof. Gustavo Willam Pereira e Prof.

Certificações do PNCQ

Análise de Ponto de Função APF. Aula 03

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE

Especificação de Requisitos

AULA: Introdução à Informática I

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

Auto-Referenciamento e Herança

Definição. Motivação para criação. Utilização de subrotinas. Características das subrotinas. Utilização de subrotinas ALGORITMOS

Introdução a Ergonomia e Usabilidade

Modelos de Processo de Software. SSC Engenharia de Software 1 Profa. Dra. Elisa Yumi Nakagawa 2 o semestre de 2012

Formação JAVA Web.

Tecnologias da Informação TI /2 Material de apoio ler bibliografia recomendada (Stair)

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO 9º PERÍODO. Profª Danielle Casillo

Projeto Físico e Lógico de Redes de Processamento. Kleber A. Ribeiro

UML Relacionamentos. Relacionamento é uma conexão entre itens A maioria dos itens relacionam-se entre si. Quatro tipos de relacionamentos:

Fundamentos de Sistemas de Informação Sistemas de Informação. Visão Sistêmica. Conceitos, componentes, tipos, subsistemas,

Verificação e Validação

Aula 4 Engenharia de Requisitos

Solução Pontuação O que está errado? Figura 3a) ou 3b) 0 % do valor da questão Desconhecimento do conceito de Composição.

Engenharia de Software. Teste de Software. Introdução. Profa. Dra. Lúcia V. L. Filgueiras Profa. Dra. Selma Shin Shimizu Melnikoff

Introdução a Sistemas de Informação

Solucionador de circuitos lógicos em C++

Análise de Ponto de Função APF. Aula 02

Estudo do Ambiente de Programação Arduino Software (IDE) com Intel Galileo Gen2. Apostila de acompanhamento para o aluno.

DIVISÃO DE ASSUNTOS ACADÊMICOS Secretaria Geral de Cursos PROGRAMA DE DISCIPLINA

Aula 01. Introdução aos sistemas de informação Conceitos de banco de dados Modelos de BD Linguagens de Banco de Dados Usuários de um Banco de Dados

Processo Unificado (PU) Unified Process

SEMÂNTICA. Rogério Rocha. rode = program simples = var x : int := 3 in x := x + 5 end.

Sistemas de Troca de Mensagens

Interfaces e Classes Abstratas

4 Arquitetura Adotada

Plano de testes. Norma ANSI/IEEE para Documentação de Teste de Software define plano de testes como:

Organização e Arquitetura de Computadores. Hugo Barros

DOCUMENTAÇÃO SISTEMA DE ADMINISTRAÇÃO DE CONSULTÓRIO MÉDICO

William Stallings Arquitetura e Organização de Computadores 8 a Edição

Modelos de Ciclo de Vida

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

Pós-Graduação. Gestão Estratégica de Processos de Negócios

2. Quais dos seguintes testes não é um teste do tipo funcional?

Programação Orientada a Objeto

Tipos Abstratos de Dados

AULA SISTEMAS DE GERENCIAMENTO DE BANCO DE DADOS

Curso: Banco de Dados I. Conceitos Iniciais

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

Introdução. à UML. Histórico (cont.) Histórico Definição Benefícios Notação Diagrama de Classes Diagramas de Interação Conclusões Revisão

Projetos Socioeducacionais: O Caso do Projeto Travessia

SISTEMA DE GESTÃO ERP

MANUTENÇÃO DINÂMICA DE MODELOS EM COMPUTAÇÃO SENSÍVEL AO CONTEXTO. PALAVRAS-CHAVE: CEP, Esper, Computação Sensível ao Contexto, SBE.

CAPÍTULO V 5 CONCLUSÕES E RECOMENDAÇÕES 5.1 SÍNTESE DO TRABALHO DESENVOLVIDO

Introdução. Sistemas de Informação

Professor Eros Moura, DSc

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

GBC053 Gerenciamento de Banco de Dados. Plano de Curso e Introdução. Ilmério Reis da Silva UFU/FACOM/BCC

DOCUMENTAÇÃO ESSENCIAL: UM ENFOQUE NA DOCUMENTAÇÃO NECESSÁRIA PARA MANUTENÇÃO DE SOFTWARE

Especialização em Tecnologias de Software para Ambiente Web. Guidelines. Prof. Dr. Sandro Ronaldo Bezerra Oliveira

Transcrição:

ARQUITETURA E DESENHO DE SOFTWARE CMP 1063 Prof. Me. Fábio Assunção Parte 2

DESENHO DE SOFTWARE Espaço do problema Espaço da solução. Interpretação não literal. Orientação à escrita. Orientação à diagramação.

DESENHO DE SOFTWARE Abrange: 1) Desenho conceitual: o que o sistema faz. Voltado para o usuário. Documento de requisitos, descrevendo as funcionalidades. 2) Desenho técnico: como o sistema faz. Voltado para os desenvolvedores. Fluxos de dados, descrevendo os algoritmos.

DESENHO DE SOFTWARE QUALIDADE 1) Independência Modularização. Inputs e outputs de componentes. Medição de independência: Coesão intra-componente. Uso total dos dados internos. Encapsulamento respeitado. Ligação extra-componente. Fortemente ligados. Fracamente ligados. Desligados.

DESENHO DE SOFTWARE QUALIDADE TIPOS DE LIGAÇÕES Ligação de conteúdo. Um componente conhece a estrutura interna/conteúdo de outro. Ligação de partilha. Conjunto de dados compartilhados. Ex.: Variável global. Ligação de controle. Um componente passa parâmetros que controlam a lógica de outro(s). Ligação de estrutura. Uma estrutura de dados fornece a interface entre componentes, gerando dependência. Ligação de dados. Tipos de dados simples são passados entre componentes.

DESENHO DE SOFTWARE QUALIDADE 2) Adaptabilidade. Evolução. Redesenho. Ligações fracas. Abstrações estáveis. Coesão (self-contained).

DESENHO DE SOFTWARE QUALIDADE 3) Inteligibilidade (entendimento). Coesão e ligação dos componentes. Nomenclatura dos componentes. Documentação. Correlação entre o espaço do problema e da solução.

DESENHO DE SOFTWARE ESTILOS ARQUITETURAIS (OU ESTILOS DE DESENHO) Camadas. Repositórios. Pipes e filtros. Desenho funcional. Desenho com objetos.

DESENHO DE SOFTWARE ESTILOS ARQUITETURAIS (OU ESTILOS DE DESENHO) Para a arquitetura de software: Componentes do mesmo. Interação entre estes componentes. Estilo arquitetural define o estilo do padrão a ser utilizado no desenho. Descreve os tipos dos componentes. Descreve a complexidade dos componentes. Descreve a orientação da linguagem (escrita, diagramas, etc). Descreve os conectores. Descreve as possibilidades de combinação destes conectores e componentes.

ESTILOS DE DESENHO CAMADAS

ESTILOS DE DESENHO CAMADAS Hierarquia entre as camadas. cliente, fornecedor Vantagens: Desenvolvimento incremental. Evolução facilitada. Reutilização. Desvantagens Estruturação Desempenho

ESTILOS DE DESENHO REPOSITÓRIOS

ESTILOS DE DESENHO REPOSITÓRIOS Inventário partilhado de dados Base de dados. Vantagens: Arquitetura aberta. Desvantagens: Dependência dos dados.

ESTILOS DE DESENHO PIPES E FILTROS

ESTILOS DE DESENHO PIPES E FILTROS Fluxo de dados = pipes. Transformação de dados = filtros. Vantagens: Controle de inputs e outputs. Desvantagens: Detalhamento interno.

ESTILOS DE DESENHO DESENHO FUNCIONAL Decomposição do sistema em um conjunto de funções. Estado global partilhado Estado local dura enquanto a função estiver em execução. Detalhes dos algoritmos nas funções, mas o estado não. Alterações em cadeia (estado).

ESTILOS DE DESENHO DESENHO COM OBJETOS Encapsulamento. Abstração. Modularidade. Primitivas da Orientação à Objetos. Classes, objetos, mensagens, herança, etc. Reutilização. Extensibilidade. Alterações.

DESENHO DE SOFTWARE DECOMPOSIÇÃO

DESENHO DE SOFTWARE DECOMPOSIÇÃO Descreve os dados de sistema (e como são transitados). Descreve funcionalidades (em alto nível). Detalha e agrupa informações (hierarquicamente).

DESENHO DE SOFTWARE DECOMPOSIÇÃO Funcional: atual estado do software é compartilhado, com manipulação colaborativa entre as funcionalidades que o geraram. Com objetos: interação entre um conjunto de objetos que encapsulam a informação que manipulam.

PADRÕES DE DESENHO Primitivas. Regras. Princípios. Recomendações. Padrões. Resultados favoráveis. Reutilização de soluções que evoluíram ao longo do tempo.

PADRÕES DE DESENHO Descrição da essência de soluções bem sucedidas. Contextualização das problemáticas emergentes. Esquema pré-definido de implementação, que prioriza a reutilização por meio de um vocabulário e conhecimento comum. Ou seja, são blocos do desenvolvimento de uma arquitetura, o que facilita, também, sua documentação.

PADRÕES DE DESENHO PROXY Fornece um representante proxy para um objeto. Controlar de acesso (in e out). Objeto real, ocultado, realiza o trabalho. Trabalho on demand. Referências. Exemplo: proxy de imagens.

PADRÕES DE DESENHO PROTÓTIPO DE PRIMEIRA PASSAGEM/EXPANSÃO Resolver inicialmente o problema. Resultados parciais. Inviabilidade de alteração e refinamento de requisitos. Aplicação de herança, visando melhoria ao invés de reconstrução. Sujeição à expansão/alteração. Próximo passo natural.

PADRÕES DE DESENHO CONSOLIDAÇÃO DE PROTÓTIPO Desenho melhorado de acordo com a evolução do sistema. Herança é exaustivamente utilizada na prototipagem/extensão. Funcionalidade limitada pelo escopo. Fatorar parte de uma classe em uma nova classe. Encurtar referências. Criar independência (acabar com a herança). Agregação/Composição de classes.

PADRÕES DE DESENHO CONSOLIDAÇÃO DE PROTÓTIPO Suponha que A é uma subclasse de B: Adicionar uma instância de B como variável de instância de A. Mudar as referências para as variáveis e funções herdadas de B por referências para a variável de instância de A. Retirar a relação de herança entre A e B.

PADRÕES DE DESENHO CONSOLIDAÇÃO DE PROTÓTIPO Hierarquia de classes: Topo: superclasses abstratas. Subclasses: especializações. Redução do tamanho, mantendo a funcionalidade. Reduz a ocorrência de erros de derivação.... mas, podem haver problemas de inconsistência.

PADRÕES DE DESENHO CONSOLIDAÇÃO DE PROTÓTIPO Suponha-se que as classes A e B partilham uma abstração: Determinar o comportamento comum entre A e B. Fazer uma nova classe C, a fim de torna-la a superclasse de A e B. Se preciso, promover alterações pontuais em A e B, dentro de sua abstração comum, de modo que seja a mesma. Remanejar a implementação comum para C e apagar de A e B.

PADRÕES DE DESENHO DESENHO COLABORATIVO

PADRÕES DE DESENHO DESENHO COLABORATIVO Trabalho colaborativo dentro do time. Quem é mais adequado? Como documentar? Como coordenar? Vantagem: Otimização de tempo. Maximação do conhecimento. Reutilização. Desvantagem: Experiência pessoal desequilibra. Conformidade e padronização.

APERFEIÇOAMENTO DE DESENHO Desenho por contrato. Protótipos de desenho.

APERFEIÇOAMENTO DE DESENHO DESENHO POR CONTRATO Garantir que o desenho condiz com a especificação. Contrato: 1) Pré-condições. Obrigações mútuas. 2) Pós-condições. Benefícios. 3) Invariantes. Restrições de coerência. Favorecem aspectos como documentação, desenvolvimento modularizado, reutilização, etc.

APERFEIÇOAMENTO DE DESENHO PROTÓTIPO DE DESENHO Oferece a possibilidade de verificar se o problema será resolvido por via do desenho proposto. Foco sobre algum aspecto duvidoso no desenho. Descartáveis, na maioria das vezes.

DESENHO DE SOFTWARE REVISÃO DO DESENHO 1) Revisão Conceitual Usuário. 2) Revisão Crítica Desenvolvedores (toda a equipe). 3) Revisão da Desenho do Programa. Programadores.

DESENHO DO SOFTWARE REVISÃO DE DESENHO Durante o processo de revisão, algumas perguntas surgem, como: É a solução do problema? É intuitivo e de fácil entendimento? É modular, bem estruturado? É portável? É reutilizável? É fácil de expandir, alterar? É fácil de se testar?

VALIDAÇÃO E VERIFICAÇÃO Validação: certificação de que o desenho atende aos requisitos especificados pelo usuário. Estou fazendo o produto correto? Verificação: certificação de que o desenho agrega as qualidades de desenho requeridas. Estou fazendo o produto da maneira correta?

MÉTRICAS DE DESENHO MEDIÇÃO DE INSTABILIDADE DE MÓDULOS Avalia a ligação entre a ligação/dependência de classes dentro e fora do módulo. LFD Ligação Fora/Dentro. LDF Ligação Dentro/Fora. I Instabilidade. I = LFD / (LFD + LDF). I = 0 indica estabilidade. I = 1 indica instabilidade.

MÉTRICAS DE DESENHO MEDIÇÃO DE INSTABILIDADE DE MÓDULOS Módulos estáveis devem ser muito abstratos. Módulos instáveis devem ser muito concretos. Módulos devem ser abertos à extensão e fechados à modificação. Abstração: A = Total de classes abstratas / total de classes. Dentro do módulo.

MÉTRICAS DE DESENHO COMPARAÇÃO DE DESENHO Construir vários desenhos, cada qual focado em uma solução, para a mesma problemática. Isto é, diferentes estilos arquiteturais. Comparação, geralmente por meio de tabela gerada pela avaliação de atributos contemplados por cada desenho, mostra qual solução (ou junção de soluções) é a mais adequada. Atribuição de pesos às comparações permitem traçar um perfil matemático (quantificado) das prioridades contempladas por cada arquitetura.

PADRÃO ARQUITETURAL MVC MVC = Modelo, Vista e Controlador. Modelo: contém o núcleo da funcionalidade dos dados. Vista: fornece informações ao usuário. Controlador: trata as entradas do usuário. Paralelo: entrada, processamento e saída. controlador, modelo e visão.

PADRÃO ARQUITETURAL MVC CONTROLADOR Gerencia as entradas de dados oferecidas pelos dispositivos de entrada. Realiza a intepretação e o mapeamento dos dados de entrada em instruções que são repassadas ao modelo.

PADRÃO ARQUITETURAL MVC MODELO Gerencia uma ou mais estruturas e/ou elementos de dados. Assim, responde e altera estados no sistema de software, acionando a visão. O modelo abriga a lógica da solução proposta pela arquitetura.

PADRÃO ARQUITETURAL MVC VISÃO Gerencia o display e a apresentação dos dados e/ou estado ao usuário. Utiliza combinações gráficas. Recebe instruções do controle e informações do modelo. Feedback.

PADRÃO ARQUITETURAL MVC

PADRÃO ARQUITETURAL MVC PROBLEMA Interface com o usuários muito sujeita à alterações por parte do mesmo. Pluralidade no uso por diferentes usuários. Para resolver, seria necessário que... Diferentes telas mostram a mesma informações de formas diferentes. O atual estado do software reflete diretamente as alterações solicitadas e promovidas. Isto é, em tempo de execução.

PADRÃO ARQUITETURAL MVC SOLUÇÃO A devida separação entre modelo, vista e controlador permite diferentes vistas do mesmo modelo. Já vimos algo assim em métrica de desenho, quando falamos sobre comparação de desenho, certo?