Introdução ao Design



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

Padrões. Projeto (Design) de Software

Persistência e Banco de Dados em Jogos Digitais

do grego: arkhé (chefe ou mestre) + tékton (trabalhador ou construtor); tekhne arte ou habilidade;

Análise e Projeto de Software

Introdução ao Projeto. Projeto de Software. 1) Objetivos. 2) Importância. Análise e Projeto - Diferenças. Importância. Silvia Regina Vergilio - UFPR

Teste de Software. Profa. Cátia dos Reis Machado

build UNIP Sistemas de Informação Análise Essencial de Sistemas 3 Prof.Marcelo Nogueira A produção de Software é uma atividade build and fix.

Projeto de Arquitetura

Padrões de projeto 1

Definição de Padrões. Padrões Arquiteturais. Padrões Arquiteturais. Arquiteturas de Referência. Da arquitetura a implementação. Elementos de um Padrão

UML - Unified Modeling Language

Engenharia de Software

Padrões Arquiteturais e de Integração - Parte 1

Programa do Curso de Pós-Graduação Lato Sensu MBA em Engenharia de Software Orientada a Serviços (SOA)

Desenho de Software. Desenho de Software 1

Processos de Desenvolvimento de Software

Engenharia de Software na Prática Hélio Engholm Jr.

Figura 5 - Workflow para a Fase de Projeto

ESTUDO DE CASO WINDOWS VISTA

Conteúdo. Disciplina: INF Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo

Engenharia de Requisitos

Programação com acesso a BD. Prof.: Clayton Maciel Costa clayton.maciel@ifrn.edu.br

Dado: Fatos conhecidos que podem ser registrados e têm um significado implícito. Banco de Dados:

Disciplina de Banco de Dados Introdução

Modelos de Dados e Arquitetura de um SGBD. Introdução 1º Bimestre Prof. Patrícia Lucas

ENGENHARIA DE SOFTWARE/ SISTEMAS DE SOFTWARE

TI Aplicada. Aula 02 Áreas e Profissionais de TI. Prof. MSc. Edilberto Silva prof.edilberto.silva@gmail.com

ENGENHARIA DE SOFTWARE I

Bancos de Dados. Conceitos F undamentais em S is temas de B ancos de Dados e s uas Aplicações

Agenda da Aula. Resumo dos Padrões (Aula 4) Padrões Arquiteturais. Arquitetura Cliente-Servidor. Arquitetura Cliente-Servidor

O modelo unificado de processo. O Rational Unified Process, RUP.

Metodologia para Planejamento, Execução e Controle de Teste de Software. Roteiro

Introdução a Computação

Arquitetura de Software. Silvia Regina Vergilio

UML 01. Curso Superior de Tecnologia em Banco de Dados Disciplina: Projeto de Banco de Dados Relacional 1 Prof.: Fernando Hadad Zaidan

Prof. Marcelo Machado Cunha

02/10/2012. Padronização de interfaces. Referências

MASTER IN PROJECT MANAGEMENT

Modelo para Documento de. Especificação de Requisitos de Software

Curso de Educação Profissional Técnica de Nível Médio Subseqüente ao Ensino Médio, na modalidade a distância, para:

Análise e Projeto Orientados por Objetos

Requisitos de Software


PRODUTO 1 (CONSTRUÇÃO DE PORTAL WEB)

Universidade Federal de Goiás Instituto de Informática Sistemas de Informação Código da Matriz Curricular: 109P1NB

Sistemas Distribuídos (DCC/UFRJ)

PIM. CST em Análise e Desenvolvimento de Sistemas. Projeto Integrado Multidisciplinar. 4º/3º Períodos 2010/2 UNIVERSIDADE PAULISTA CURSO

Engenharia de software para desenvolvimento com LabVIEW: Validação

Fase 1: Engenharia de Produto

Universidade Federal de Goiás Instituto de Informática Engenharia de Software Código da Matriz Curricular: 105P1NB

Prof. Luiz Fernando Bittencourt MC714. Sistemas Distribuídos 2 semestre, 2013

PROJETO (OU DESIGN) DO SOFTWARE Diagrama de Estrutura

Módulo5. Módulo 5. Planejamento e realização de projeto de mapeamento e modelagem de processos, Responsabilidades, Atividades-chaves, Exercício

Prof. Antonio Almeida de Barros Jr. Prof. Antonio Almeida de Barros Junior

Objetivos. Processos de Software. Tópicos abordados. O processo de software. Modelos genéricos de modelos de processo de software.

Introdução à Banco de Dados. Definição

MVC e Camadas - Fragmental Bliki

Banco de Dados. Aula 1 - Prof. Bruno Moreno 16/08/2011

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software

Introdução. Banco de dados. Por que usar BD? Por que estudar BD? Exemplo de um BD. Conceitos básicos

BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSING

Processos de Software

GBD PROF. ANDREZA S. AREÃO

Características Carlos Ferraz

UFG - Instituto de Informática

Introdução Banco de Dados

Rede de Laboratórios de Produtividade de Software

Processos de gerenciamento de projetos em um projeto

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

Desenvolvimento de Sistemas Orientados a Objetos com UML UP/RUP: Projeto

Tópicos Especiais em Engenharia de Software

O Processo de Engenharia de Requisitos

Engenharia de Software Aula 7 (Versão )

Engenharia de Software

Design de Software e Projeto Arquitetural de Software. Prof. Edison A M Morais prof@edison.eti.br

MC536 Bancos de Dados: Teoria e Prática

Fundamentos de Banco de Dados

Roteiro. BCC321 - Banco de Dados I. Conceitos Básicos. Conceitos Básicos. O que é um banco de dados (BD)?

Resumo: Perguntas a fazer ao elaborar um projeto arquitetural

Programação Estruturada e Orientada a Objetos. Fundamentos Orientação a Objetos

Unisant Anna Gestão Empresarial com ERP 2014 Modelagem de Sistemas - UML e MER

Unidade II MODELAGEM DE PROCESSOS

Arquitetura de Banco de Dados

O Processo de Desenvolvimento de Software

UFG - Instituto de Informática

Gerenciamento e Interoperabilidade de Redes

Introdução. Conceitos Básicos. Conceitos Básicos. Conceitos Básicos

Portaria Inep nº 190 de 12 de julho de 2011 Publicada no Diário Oficial de 13 de julho de 2011, Seção 1, pág. 13

REVISÃO ENGENHARIA DO SOFTWARE. Isac Aguiar isacaguiar.com.br

Arquitetura Orientada a Serviços (SOA) Copyright e-core LTDA, Todos os direitos reservados.

Metodologias de Desenvolvimento de Sistemas. Analise de Sistemas I UNIPAC Rodrigo Videschi

FACULDADE INTEGRADAS DE PARANAÍBA ADMINISTRAÇÃO DE EMPRESAS. Bancos de Dados Conceitos Fundamentais

Roteiro para a escrita do documento de Especificação de Requisitos de Software (ERS)

Histórico da Orientação a Objetos Ciclo de vida de Desenvolvimento de SW

Transcrição:

Introdução ao Design João Arthur e Guilherme Germoglio Coordenação de Pós-graduação em Informática - COPIN 16/10/2008 João Arthur e Guilherme Germoglio 1/ 33

Roteiro 1 Introdução Objetivos 2 Definições Design como Processo Design como Produto Benefícios Observações 3 O Processo Técnicas de design Design de baixo nível X Design de alto nível 4 João Arthur e Guilherme Germoglio 2/ 33

Objetivos Objetivos Introduzir os conceitos de design Apresentar design como processo e como produto Diferenciar design de baixo nível de design de alto nível Apresentar as principais técnicas de design João Arthur e Guilherme Germoglio 3/ 33

Introdução Definições Design como Processo Design como Produto Por que Projetar? Observações Duas visões (Taylor e Van der Hoek [5]): Nome Verbo Stroustrup [4]: Design is the end product of the design process. João Arthur e Guilherme Germoglio 4/ 33

Introdução Definições Design como Processo Design como Produto Por que Projetar? Observações Design surge de uma necessidade: ministrar uma aula sobre design Problema: Guiga está sobrecarregado Solução: Terceirizar O que o cliente (Guiga) quer: Uma aula bem dada sobre o que é design e o que é design de software. João Arthur e Guilherme Germoglio 5/ 33

Introdução Definições Design como Processo Design como Produto Por que Projetar? Observações Design surge de uma necessidade: ministrar uma aula sobre design Problema: Guiga está sobrecarregado Solução: Terceirizar O que o cliente (Guiga) quer: Uma aula bem dada sobre o que é design e o que é design de software. João Arthur e Guilherme Germoglio 5/ 33

Introdução Definições Design como Processo Design como Produto Por que Projetar? Observações Design surge de uma necessidade: ministrar uma aula sobre design Problema: Guiga está sobrecarregado Solução: Terceirizar O que o cliente (Guiga) quer: Uma aula bem dada sobre o que é design e o que é design de software. João Arthur e Guilherme Germoglio 5/ 33

Introdução Definições Design como Processo Design como Produto Por que Projetar? Observações Design surge de uma necessidade: ministrar uma aula sobre design Problema: Guiga está sobrecarregado Solução: Terceirizar O que o cliente (Guiga) quer: Uma aula bem dada sobre o que é design e o que é design de software. João Arthur e Guilherme Germoglio 5/ 33

Por que projetar? Introdução Definições Design como Processo Design como Produto Por que Projetar? Observações Por que não fazer a aula diretamente? Risco Temos que projetar! Temos que avaliar o projeto! João Arthur e Guilherme Germoglio 6/ 33

Por que projetar? Introdução Definições Design como Processo Design como Produto Por que Projetar? Observações Por que não fazer a aula diretamente? Risco Temos que projetar! Temos que avaliar o projeto! João Arthur e Guilherme Germoglio 6/ 33

Por que projetar? Introdução Definições Design como Processo Design como Produto Por que Projetar? Observações Por que não fazer a aula diretamente? Risco Temos que projetar! Temos que avaliar o projeto! João Arthur e Guilherme Germoglio 6/ 33

Requisitos Introdução Definições Design como Processo Design como Produto Por que Projetar? Observações 40 alunos Mensagens a serem transmitidas (conteúdo) Duração de no máximo 2 horas João Arthur e Guilherme Germoglio 7/ 33

Requisitos Introdução Definições Design como Processo Design como Produto Por que Projetar? Observações 40 alunos Mensagens a serem transmitidas (conteúdo) Duração de no máximo 2 horas João Arthur e Guilherme Germoglio 7/ 33

Requisitos Introdução Definições Design como Processo Design como Produto Por que Projetar? Observações 40 alunos Mensagens a serem transmitidas (conteúdo) Duração de no máximo 2 horas João Arthur e Guilherme Germoglio 7/ 33

Requisitos Introdução Definições Design como Processo Design como Produto Por que Projetar? Observações 40 alunos Mensagens a serem transmitidas (conteúdo) Duração de no máximo 2 horas João Arthur e Guilherme Germoglio 7/ 33

Possíveis Soluções Introdução Definições Design como Processo Design como Produto Por que Projetar? Observações Alternativas para resolução do problema: Aula ao ar livre Aula prática Aula virtual Aula tradicional João Arthur e Guilherme Germoglio 8/ 33

Análise das possíveis soluções Definições Design como Processo Design como Produto Por que Projetar? Observações Analisar restrições CD-105 ou Hattori Tempo Conhecimento interno sobre o assunto (viabilidade) Custo Nível dos alunos Escolher solução Escolher representação João Arthur e Guilherme Germoglio 9/ 33

Resultado Introdução Definições Design como Processo Design como Produto Por que Projetar? Observações Template Slides: Seções Relação entre as Seções Fontes Figuras Mensagens Exemplos Metodologia a ser utilizada João Arthur e Guilherme Germoglio 10/ 33

Benefícios Introdução Definições Design como Processo Design como Produto Por que Projetar? Observações Avaliação prévia Facilita comunicação Facilita implementação João Arthur e Guilherme Germoglio 11/ 33

Observações Introdução Definições Design como Processo Design como Produto Por que Projetar? Observações Embora seja mais barato que fazer o artefato, planejar não é barato. O resultado final não é a aula, mas a sua descrição (plano de aula)! João Arthur e Guilherme Germoglio 12/ 33

O Processo Técnicas de design Baixo nível X Alto nível Software Design O foco é software Geração de modelos Diretrizes para implementação João Arthur e Guilherme Germoglio 13/ 33

O Processo Técnicas de design Baixo nível X Alto nível Caraterísticas de Software Brooks [1] identifica quatro propriedades: Complexidade: muitos estados durante a execução Conformidade: estar em conformidade com padrões, hardware, software e outros componentes Changeability: sofrer constantes mudanças Invisibilidade: não há representação visual João Arthur e Guilherme Germoglio 14/ 33

O Processo Técnicas de design Baixo nível X Alto nível Como um nome Aspectos de representação do sistema [2]: Estrutura do software (hierarquia, subprogramas etc) Algoritmos Estrutura de pacotes (organização das unidades de compilação) Interação entre os módulos João Arthur e Guilherme Germoglio 15/ 33

O Processo Técnicas de design Baixo nível X Alto nível Como uma atividade João Arthur e Guilherme Germoglio 16/ 33

O Processo Técnicas de design Baixo nível X Alto nível Como uma atividade Belady [3]: Diversificação: Geração das alternativas Convergência: Seleção das alternativas que satisfazem objetivos e restrições João Arthur e Guilherme Germoglio 17/ 33

O Processo Técnicas de design Baixo nível X Alto nível Fases Objetivos Restrições Alternativas Representações Soluções João Arthur e Guilherme Germoglio 18/ 33

O Processo Técnicas de design Baixo nível X Alto nível Técnicas Diretrizes Guias Noções de boas práticas que podem resultar em um bom design Design Patterns João Arthur e Guilherme Germoglio 19/ 33

O Processo Técnicas de design Baixo nível X Alto nível Abstração Eliminar complexidade Focar no que realmente importa Interfaces e camadas Requer habilidade e experiência. Quanto abstrair? Benefícios: facilita comunicação, análise e entedimento João Arthur e Guilherme Germoglio 20/ 33

O Processo Técnicas de design Baixo nível X Alto nível Ocultação de Informação Encapsulamento Esconder detalhes de implementação Benefícios: redução de acoplamento João Arthur e Guilherme Germoglio 21/ 33

O Processo Técnicas de design Baixo nível X Alto nível Modularização Decompor em módulos o sistema Packaging Benefícios: facilita implementação, entendimento, diminui acoplamento etc João Arthur e Guilherme Germoglio 22/ 33

O Processo Técnicas de design Baixo nível X Alto nível Separação de interesses Modularizar interesses Exemplo clássico: Log João Arthur e Guilherme Germoglio 23/ 33

O Processo Técnicas de design Baixo nível X Alto nível Acoplamento e Coesão Acoplamento: entre módulos Evitar Difícil de entender Difícil de mudar Indício para melhorar a modularização Coesão: Quão relacionada está a classe com sua responsabilidade? João Arthur e Guilherme Germoglio 24/ 33

O Processo Técnicas de design Baixo nível X Alto nível Coincidental João Arthur e Guilherme Germoglio 25/ 33

O Processo Técnicas de design Baixo nível X Alto nível Lógica João Arthur e Guilherme Germoglio 26/ 33

O Processo Técnicas de design Baixo nível X Alto nível Temporal João Arthur e Guilherme Germoglio 27/ 33

O Processo Técnicas de design Baixo nível X Alto nível Outros tipos Procedural: Tarefas que ocorrem em ordem (sozinhas não fazem sentido) Comunicação: Compartilhamento de dados Sequencial: compartilham dados de entrada e saída (pipe) Funcional: A melhor! Objetos representam um único conceito João Arthur e Guilherme Germoglio 28/ 33

O Processo Técnicas de design Baixo nível X Alto nível Separação entre política e implementação Um módulo deve lidar com política ou implementação Módulos de implementação somente devem ser responsáveis por executar algoritmos Benefícios: Facilita reuso e manutenção dos módulos de implementação Qual o padrão para esta técnica? João Arthur e Guilherme Germoglio 29/ 33

O Processo Técnicas de design Baixo nível X Alto nível Separação de interface e Implementação Contratos O Que? X Como? Benefícios: redução de acoplamento entre clientes e módulos João Arthur e Guilherme Germoglio 30/ 33

O Processo Técnicas de design Baixo nível X Alto nível Comparação Alto nível: Fase de refinamento da arquitetura Definição de módulos Interação entre os módulos Bibliotecas a serem utilizadas Paradigma de persistência Atendimento a requisitos de qualidade Baixo nível Definição dos objetos e suas responsibilidades Questões de implementação: concorrência, tratamento de falhas, definição de esquema de BD etc João Arthur e Guilherme Germoglio 31/ 33

O Processo Técnicas de design Baixo nível X Alto nível Quando acontece? David Budgen João Arthur e Guilherme Germoglio 32/ 33

Design é processo Design é descrição Projetar não é barato Exige experiência (boas e ruins) Reduz riscos João Arthur e Guilherme Germoglio 33/ 33

F. Brooks. No Silver Bullet: Essence and Accidents of Software Engineering. IEEE Computer, 20(4):10 19, 1987. D. Budgen. Software Design. Addison Wesley, 2003. L. Peters. In Forward to Software Design: Methods and Techniques, 1981. B. Stroustrup and A. Publishing. The C+ Programming Language. IBM SYSTEMS JOURNAL, 31(4), 1992. R. Taylor and A. van der Hoek. Software design and architecture: The once and future focus of software engineering. João Arthur e Guilherme Germoglio 33/ 33

Future of Software Engineering, 2007. João Arthur e Guilherme Germoglio 33/ 33