43
Introdução O que é design? O que é design de software? Conclusões 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

Introdução ao Design - dsc.ufcg.edu.brjarthur/upload/presentations/software-design... · Design surge de uma necessidade: ministrar uma aula sobre design Problema: Guiga está sobrecarregado

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Introdução ao Design - dsc.ufcg.edu.brjarthur/upload/presentations/software-design... · Design surge de uma necessidade: ministrar uma aula sobre design Problema: Guiga está sobrecarregado

IntroduçãoO que é design?

O que é design de software?Conclusões

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

Page 2: Introdução ao Design - dsc.ufcg.edu.brjarthur/upload/presentations/software-design... · Design surge de uma necessidade: ministrar uma aula sobre design Problema: Guiga está sobrecarregado

IntroduçãoO que é design?

O que é design de software?Conclusões

Roteiro

1 IntroduçãoObjetivos

2 O que é design?DefiniçõesDesign como ProcessoDesign como ProdutoBenefíciosObservações

3 O que é design de software?O ProcessoTécnicas de designDesign de baixo nível X Design de alto nível

4 Conclusões

João Arthur e Guilherme Germoglio 2/ 33

Page 3: Introdução ao Design - dsc.ufcg.edu.brjarthur/upload/presentations/software-design... · Design surge de uma necessidade: ministrar uma aula sobre design Problema: Guiga está sobrecarregado

IntroduçãoO que é design?

O que é design de software?Conclusões

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

Page 4: Introdução ao Design - dsc.ufcg.edu.brjarthur/upload/presentations/software-design... · Design surge de uma necessidade: ministrar uma aula sobre design Problema: Guiga está sobrecarregado

IntroduçãoO que é design?

O que é design de software?Conclusões

DefiniçõesDesign como ProcessoDesign como ProdutoPor que Projetar?Observações

O que é design?

Duas visões (Taylor e Van der Hoek [5]):

NomeVerbo

Stroustrup [4]: “Design is the end product of the design process.”

João Arthur e Guilherme Germoglio 4/ 33

Page 5: Introdução ao Design - dsc.ufcg.edu.brjarthur/upload/presentations/software-design... · Design surge de uma necessidade: ministrar uma aula sobre design Problema: Guiga está sobrecarregado

IntroduçãoO que é design?

O que é design de software?Conclusões

DefiniçõesDesign como ProcessoDesign como ProdutoPor que Projetar?Observações

O que é design?

Design surge de uma necessidade: ministrar uma aula sobredesign

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

Page 6: Introdução ao Design - dsc.ufcg.edu.brjarthur/upload/presentations/software-design... · Design surge de uma necessidade: ministrar uma aula sobre design Problema: Guiga está sobrecarregado

IntroduçãoO que é design?

O que é design de software?Conclusões

DefiniçõesDesign como ProcessoDesign como ProdutoPor que Projetar?Observações

O que é design?

Design surge de uma necessidade: ministrar uma aula sobredesign

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

Page 7: Introdução ao Design - dsc.ufcg.edu.brjarthur/upload/presentations/software-design... · Design surge de uma necessidade: ministrar uma aula sobre design Problema: Guiga está sobrecarregado

IntroduçãoO que é design?

O que é design de software?Conclusões

DefiniçõesDesign como ProcessoDesign como ProdutoPor que Projetar?Observações

O que é design?

Design surge de uma necessidade: ministrar uma aula sobredesign

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

Page 8: Introdução ao Design - dsc.ufcg.edu.brjarthur/upload/presentations/software-design... · Design surge de uma necessidade: ministrar uma aula sobre design Problema: Guiga está sobrecarregado

IntroduçãoO que é design?

O que é design de software?Conclusões

DefiniçõesDesign como ProcessoDesign como ProdutoPor que Projetar?Observações

O que é design?

Design surge de uma necessidade: ministrar uma aula sobredesign

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

Page 9: Introdução ao Design - dsc.ufcg.edu.brjarthur/upload/presentations/software-design... · Design surge de uma necessidade: ministrar uma aula sobre design Problema: Guiga está sobrecarregado

IntroduçãoO que é design?

O que é design de software?Conclusões

DefiniçõesDesign como ProcessoDesign como ProdutoPor que Projetar?Observações

Por que projetar?

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

Page 10: Introdução ao Design - dsc.ufcg.edu.brjarthur/upload/presentations/software-design... · Design surge de uma necessidade: ministrar uma aula sobre design Problema: Guiga está sobrecarregado

IntroduçãoO que é design?

O que é design de software?Conclusões

DefiniçõesDesign como ProcessoDesign como ProdutoPor que Projetar?Observações

Por que projetar?

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

Page 11: Introdução ao Design - dsc.ufcg.edu.brjarthur/upload/presentations/software-design... · Design surge de uma necessidade: ministrar uma aula sobre design Problema: Guiga está sobrecarregado

IntroduçãoO que é design?

O que é design de software?Conclusões

DefiniçõesDesign como ProcessoDesign como ProdutoPor que Projetar?Observações

Por que projetar?

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

Page 12: Introdução ao Design - dsc.ufcg.edu.brjarthur/upload/presentations/software-design... · Design surge de uma necessidade: ministrar uma aula sobre design Problema: Guiga está sobrecarregado

IntroduçãoO que é design?

O que é design de software?Conclusões

DefiniçõesDesign como ProcessoDesign como ProdutoPor que Projetar?Observações

Requisitos

40 alunos

Mensagens a serem transmitidas (conteúdo)

Duração de no máximo 2 horas

João Arthur e Guilherme Germoglio 7/ 33

Page 13: Introdução ao Design - dsc.ufcg.edu.brjarthur/upload/presentations/software-design... · Design surge de uma necessidade: ministrar uma aula sobre design Problema: Guiga está sobrecarregado

IntroduçãoO que é design?

O que é design de software?Conclusões

DefiniçõesDesign como ProcessoDesign como ProdutoPor que Projetar?Observações

Requisitos

40 alunos

Mensagens a serem transmitidas (conteúdo)

Duração de no máximo 2 horas

João Arthur e Guilherme Germoglio 7/ 33

Page 14: Introdução ao Design - dsc.ufcg.edu.brjarthur/upload/presentations/software-design... · Design surge de uma necessidade: ministrar uma aula sobre design Problema: Guiga está sobrecarregado

IntroduçãoO que é design?

O que é design de software?Conclusões

DefiniçõesDesign como ProcessoDesign como ProdutoPor que Projetar?Observações

Requisitos

40 alunos

Mensagens a serem transmitidas (conteúdo)

Duração de no máximo 2 horas

João Arthur e Guilherme Germoglio 7/ 33

Page 15: Introdução ao Design - dsc.ufcg.edu.brjarthur/upload/presentations/software-design... · Design surge de uma necessidade: ministrar uma aula sobre design Problema: Guiga está sobrecarregado

IntroduçãoO que é design?

O que é design de software?Conclusões

DefiniçõesDesign como ProcessoDesign como ProdutoPor que Projetar?Observações

Requisitos

40 alunos

Mensagens a serem transmitidas (conteúdo)

Duração de no máximo 2 horas

João Arthur e Guilherme Germoglio 7/ 33

Page 16: Introdução ao Design - dsc.ufcg.edu.brjarthur/upload/presentations/software-design... · Design surge de uma necessidade: ministrar uma aula sobre design Problema: Guiga está sobrecarregado

IntroduçãoO que é design?

O que é design de software?Conclusões

DefiniçõesDesign como ProcessoDesign como ProdutoPor que Projetar?Observações

Possíveis Soluções

Alternativas para resolução do problema:Aula ao ar livreAula práticaAula virtualAula “tradicional”

João Arthur e Guilherme Germoglio 8/ 33

Page 17: Introdução ao Design - dsc.ufcg.edu.brjarthur/upload/presentations/software-design... · Design surge de uma necessidade: ministrar uma aula sobre design Problema: Guiga está sobrecarregado

IntroduçãoO que é design?

O que é design de software?Conclusões

DefiniçõesDesign como ProcessoDesign como ProdutoPor que Projetar?Observações

Análise das possíveis soluções

Analisar restrições

CD-105 ou HattoriTempoConhecimento interno sobre o assunto (viabilidade)CustoNível dos alunos

Escolher solução

Escolher representação

João Arthur e Guilherme Germoglio 9/ 33

Page 18: Introdução ao Design - dsc.ufcg.edu.brjarthur/upload/presentations/software-design... · Design surge de uma necessidade: ministrar uma aula sobre design Problema: Guiga está sobrecarregado

IntroduçãoO que é design?

O que é design de software?Conclusões

DefiniçõesDesign como ProcessoDesign como ProdutoPor que Projetar?Observações

Resultado

Template Slides:

SeçõesRelação entre as SeçõesFontesFigurasMensagensExemplos

Metodologia a ser utilizada

João Arthur e Guilherme Germoglio 10/ 33

Page 19: Introdução ao Design - dsc.ufcg.edu.brjarthur/upload/presentations/software-design... · Design surge de uma necessidade: ministrar uma aula sobre design Problema: Guiga está sobrecarregado

IntroduçãoO que é design?

O que é design de software?Conclusões

DefiniçõesDesign como ProcessoDesign como ProdutoPor que Projetar?Observações

Benefícios

Avaliação prévia

Facilita comunicação

Facilita implementação

João Arthur e Guilherme Germoglio 11/ 33

Page 20: Introdução ao Design - dsc.ufcg.edu.brjarthur/upload/presentations/software-design... · Design surge de uma necessidade: ministrar uma aula sobre design Problema: Guiga está sobrecarregado

IntroduçãoO que é design?

O que é design de software?Conclusões

DefiniçõesDesign como ProcessoDesign como ProdutoPor que Projetar?Observações

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 deaula)!

João Arthur e Guilherme Germoglio 12/ 33

Page 21: Introdução ao Design - dsc.ufcg.edu.brjarthur/upload/presentations/software-design... · Design surge de uma necessidade: ministrar uma aula sobre design Problema: Guiga está sobrecarregado

IntroduçãoO que é design?

O que é design de software?Conclusões

O ProcessoTécnicas de designBaixo 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

Page 22: Introdução ao Design - dsc.ufcg.edu.brjarthur/upload/presentations/software-design... · Design surge de uma necessidade: ministrar uma aula sobre design Problema: Guiga está sobrecarregado

IntroduçãoO que é design?

O que é design de software?Conclusões

O ProcessoTécnicas de designBaixo 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

Page 23: Introdução ao Design - dsc.ufcg.edu.brjarthur/upload/presentations/software-design... · Design surge de uma necessidade: ministrar uma aula sobre design Problema: Guiga está sobrecarregado

IntroduçãoO que é design?

O que é design de software?Conclusões

O ProcessoTécnicas de designBaixo nível X Alto nível

Como um nome

Aspectos de representação do sistema [2]:

Estrutura do software (hierarquia, subprogramas etc)AlgoritmosEstrutura de pacotes (organização das unidades de compilação)Interação entre os módulos

João Arthur e Guilherme Germoglio 15/ 33

Page 24: Introdução ao Design - dsc.ufcg.edu.brjarthur/upload/presentations/software-design... · Design surge de uma necessidade: ministrar uma aula sobre design Problema: Guiga está sobrecarregado

IntroduçãoO que é design?

O que é design de software?Conclusões

O ProcessoTécnicas de designBaixo nível X Alto nível

Como uma atividade

João Arthur e Guilherme Germoglio 16/ 33

Page 25: Introdução ao Design - dsc.ufcg.edu.brjarthur/upload/presentations/software-design... · Design surge de uma necessidade: ministrar uma aula sobre design Problema: Guiga está sobrecarregado

IntroduçãoO que é design?

O que é design de software?Conclusões

O ProcessoTécnicas de designBaixo nível X Alto nível

Como uma atividade

Belady [3]:

Diversificação: Geração das alternativasConvergência: Seleção das alternativas que satisfazem objetivose restrições

João Arthur e Guilherme Germoglio 17/ 33

Page 26: Introdução ao Design - dsc.ufcg.edu.brjarthur/upload/presentations/software-design... · Design surge de uma necessidade: ministrar uma aula sobre design Problema: Guiga está sobrecarregado

IntroduçãoO que é design?

O que é design de software?Conclusões

O ProcessoTécnicas de designBaixo nível X Alto nível

Fases

Objetivos

Restrições

Alternativas

Representações

Soluções

João Arthur e Guilherme Germoglio 18/ 33

Page 27: Introdução ao Design - dsc.ufcg.edu.brjarthur/upload/presentations/software-design... · Design surge de uma necessidade: ministrar uma aula sobre design Problema: Guiga está sobrecarregado

IntroduçãoO que é design?

O que é design de software?Conclusões

O ProcessoTécnicas de designBaixo 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

Page 28: Introdução ao Design - dsc.ufcg.edu.brjarthur/upload/presentations/software-design... · Design surge de uma necessidade: ministrar uma aula sobre design Problema: Guiga está sobrecarregado

IntroduçãoO que é design?

O que é design de software?Conclusões

O ProcessoTécnicas de designBaixo 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

Page 29: Introdução ao Design - dsc.ufcg.edu.brjarthur/upload/presentations/software-design... · Design surge de uma necessidade: ministrar uma aula sobre design Problema: Guiga está sobrecarregado

IntroduçãoO que é design?

O que é design de software?Conclusões

O ProcessoTécnicas de designBaixo 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

Page 30: Introdução ao Design - dsc.ufcg.edu.brjarthur/upload/presentations/software-design... · Design surge de uma necessidade: ministrar uma aula sobre design Problema: Guiga está sobrecarregado

IntroduçãoO que é design?

O que é design de software?Conclusões

O ProcessoTécnicas de designBaixo nível X Alto nível

Modularização

Decompor em módulos o sistema

Packaging

Benefícios: facilita implementação, entendimento, diminuiacoplamento etc

João Arthur e Guilherme Germoglio 22/ 33

Page 31: Introdução ao Design - dsc.ufcg.edu.brjarthur/upload/presentations/software-design... · Design surge de uma necessidade: ministrar uma aula sobre design Problema: Guiga está sobrecarregado

IntroduçãoO que é design?

O que é design de software?Conclusões

O ProcessoTécnicas de designBaixo nível X Alto nível

Separação de interesses

Modularizar interesses

Exemplo clássico: Log

João Arthur e Guilherme Germoglio 23/ 33

Page 32: Introdução ao Design - dsc.ufcg.edu.brjarthur/upload/presentations/software-design... · Design surge de uma necessidade: ministrar uma aula sobre design Problema: Guiga está sobrecarregado

IntroduçãoO que é design?

O que é design de software?Conclusões

O ProcessoTécnicas de designBaixo nível X Alto nível

Acoplamento e Coesão

Acoplamento: entre módulos

EvitarDifícil de entenderDifícil de mudarIndício para melhorar a modularização

Coesão: Quão relacionada está a classe com suaresponsabilidade?

João Arthur e Guilherme Germoglio 24/ 33

Page 33: Introdução ao Design - dsc.ufcg.edu.brjarthur/upload/presentations/software-design... · Design surge de uma necessidade: ministrar uma aula sobre design Problema: Guiga está sobrecarregado

IntroduçãoO que é design?

O que é design de software?Conclusões

O ProcessoTécnicas de designBaixo nível X Alto nível

Coincidental

João Arthur e Guilherme Germoglio 25/ 33

Page 34: Introdução ao Design - dsc.ufcg.edu.brjarthur/upload/presentations/software-design... · Design surge de uma necessidade: ministrar uma aula sobre design Problema: Guiga está sobrecarregado

IntroduçãoO que é design?

O que é design de software?Conclusões

O ProcessoTécnicas de designBaixo nível X Alto nível

Lógica

João Arthur e Guilherme Germoglio 26/ 33

Page 35: Introdução ao Design - dsc.ufcg.edu.brjarthur/upload/presentations/software-design... · Design surge de uma necessidade: ministrar uma aula sobre design Problema: Guiga está sobrecarregado

IntroduçãoO que é design?

O que é design de software?Conclusões

O ProcessoTécnicas de designBaixo nível X Alto nível

Temporal

João Arthur e Guilherme Germoglio 27/ 33

Page 36: Introdução ao Design - dsc.ufcg.edu.brjarthur/upload/presentations/software-design... · Design surge de uma necessidade: ministrar uma aula sobre design Problema: Guiga está sobrecarregado

IntroduçãoO que é design?

O que é design de software?Conclusões

O ProcessoTécnicas de designBaixo nível X Alto nível

Outros tipos

Procedural: Tarefas que ocorrem em ordem (sozinhas não fazemsentido)

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

Page 37: Introdução ao Design - dsc.ufcg.edu.brjarthur/upload/presentations/software-design... · Design surge de uma necessidade: ministrar uma aula sobre design Problema: Guiga está sobrecarregado

IntroduçãoO que é design?

O que é design de software?Conclusões

O ProcessoTécnicas de designBaixo 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áveispor executar algoritmos

Benefícios: Facilita reuso e manutenção dos módulos deimplementação

Qual o padrão para esta técnica?

João Arthur e Guilherme Germoglio 29/ 33

Page 38: Introdução ao Design - dsc.ufcg.edu.brjarthur/upload/presentations/software-design... · Design surge de uma necessidade: ministrar uma aula sobre design Problema: Guiga está sobrecarregado

IntroduçãoO que é design?

O que é design de software?Conclusões

O ProcessoTécnicas de designBaixo 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

Page 39: Introdução ao Design - dsc.ufcg.edu.brjarthur/upload/presentations/software-design... · Design surge de uma necessidade: ministrar uma aula sobre design Problema: Guiga está sobrecarregado

IntroduçãoO que é design?

O que é design de software?Conclusões

O ProcessoTécnicas de designBaixo nível X Alto nível

Comparação

Alto nível: Fase de refinamento da arquiteturaDefinição de módulosInteração entre os módulosBibliotecas a serem utilizadasParadigma de persistênciaAtendimento a requisitos de qualidade

Baixo nívelDefinição dos objetos e suas responsibilidadesQuestões de implementação: concorrência, tratamento de falhas,definição de esquema de BD etc

João Arthur e Guilherme Germoglio 31/ 33

Page 40: Introdução ao Design - dsc.ufcg.edu.brjarthur/upload/presentations/software-design... · Design surge de uma necessidade: ministrar uma aula sobre design Problema: Guiga está sobrecarregado

IntroduçãoO que é design?

O que é design de software?Conclusões

O ProcessoTécnicas de designBaixo nível X Alto nível

Quando acontece?

David Budgen

João Arthur e Guilherme Germoglio 32/ 33

Page 41: Introdução ao Design - dsc.ufcg.edu.brjarthur/upload/presentations/software-design... · Design surge de uma necessidade: ministrar uma aula sobre design Problema: Guiga está sobrecarregado

IntroduçãoO que é design?

O que é design de software?Conclusões

Conclusões

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

Page 42: Introdução ao Design - dsc.ufcg.edu.brjarthur/upload/presentations/software-design... · Design surge de uma necessidade: ministrar uma aula sobre design Problema: Guiga está sobrecarregado

IntroduçãoO que é design?

O que é design de software?Conclusões

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 ofsoftware engineering.

João Arthur e Guilherme Germoglio 33/ 33

Page 43: Introdução ao Design - dsc.ufcg.edu.brjarthur/upload/presentations/software-design... · Design surge de uma necessidade: ministrar uma aula sobre design Problema: Guiga está sobrecarregado

IntroduçãoO que é design?

O que é design de software?Conclusões

Future of Software Engineering, 2007.

João Arthur e Guilherme Germoglio 33/ 33