Design de Software Processo de converter a especificação num conjunto de modelos que descrevem a estrutura e o comportamento do software, particionado em unidades abstratas. Descreve como o software será realizado. Modelos de processo mais atuais consideram que o design pode ocorrer simultaneamente com a especificação e com a implementação Atividades - Visão tradicional: Arquitetura, Especificação abstrata; Design das interfaces; Design de componentes; Design de algoritmos e estruturas de dados; Atividades Visão moderna: Todas as anteriores e mais: Design conceitual e design das interfaces de usuário. Muitas vezes ocorrem na definição. Processo de design de software Requirements Design activities Architectural design Abstract Interface design Component design Data structure design Algorithm design System architecture Software Interface Component Data structure Algorithm Design products Fonte: Ian Sommerville
Quando e como realizar o design Quando O design começa desde a fase de definição, com o design conceitual, arquitetura inicial, design de interface de usuário, ajudando a especificar os requisitos. Na fase de desenvolvimento, é feito o design arquitetural detalhado (módulos, componentes e interfaces), design de algoritmos e dados Na engenharia de software moderna, análise e design são inter-relacionados Como Design baseado em modelos Vários modelos estruturais e comportamentais são produzidos Design baseado em prototipação Protótipos da interface de usuário, protótipos de componentes As duas abordagens podem ser utilizadas em conjunto Design Conceitual Elaboração do modelo conceitual da aplicação Modelo Conceitual da Aplicação Descreve abstratamente a aplicação Ponto de vista externo (do usuário) Modelo Conceitual da Aplicação Modelo Funcional Modelo de Interação Modelo Funcional Descreve o comportamento do sistema em termos de funções que ele oferece Descreve os conceitos da aplicação, sua propriedades e seus relacionamentos Modelo de Interação Descreve como o usuário interage com o sistema
Exemplo Editores de texto Diferentes editores de texto possuem modelos conceituais distintos Para editar o documento ao lado em diferentes editores de texto, é preciso utilizar diferentes conceitos Parágrafos, Caixa de texto, Tabelas, Seções, Títulos. Word Margens da coluna e página Títulos Seção com 1 coluna estilo Seção com 2 colunas Parágrafos Seção com 2 colunas Legenda
HTML Cabeçalho Tabela,1 linha, 2 colunas Tabela, 1 linha, 2 colunas Tabela, 3 linhas 2 colunas Parágrafos Imagem Powerpoint Caixas de texto Caixas de texto Figura
Elementos do Modelo Conceitual Elementos Objetos (fonte, parágrafo, página, ) Propriedades (cor, tamanho, estilo, ) Ações (formatar, copiar inserir, ) Relacionamentos (parágrafo contém palavra) Restrições Comportamento (resultado de ação) Como o usuário entende o modelo conceitual da aplicação? Através da Interface de Usuário Signos: nomes, ícones, símbolos e figuras utilizados Widgets: botões, menus, formulários Representação da informação Através de tutoriais, manuais e ajudas Modelo Conceitual da Aplicação Modelo Conceitual da Aplicação Modelos de de Funcionalidade Modelos de de Interação Usuário-Sistema Arquitetura e Componentes de de Software Interface de de usuário
Modelo conceitual de um condicionador de ar Temperatura ambiente Velocidade do vento Esquema do funcionamento do condicionador Ventilador Compressor Termostato Gás Serpentina de gás Tubo de circulação
Modelo Conceitual do condicionador Ventilador Velocidade empurra Controla Compressor Ligado Liga esfria Gás Liga contém Serpentina de gás Termostato Distância esfria Modifica distância Ar Temperatura Velocidade Controle A Posição Controla Controle B Posição Diagrama de Estados do condicionador ControleA: desligado Desligar compressor e ventilador Compressor.Ligado: não Ventilador.Velocidade: 0 Termostato.Distância: Compressor.Ligado: sim Ventilador.Velocidade: 2 Termostato.Distância: ControleA : F2 ControleA:F2 Ligar compressor e Acionar ventilador na velocidade 2 ControleA: V2 Ligar compressor e Acionar ventilador na velocidade 2 Acionar ventilador na velocidade 2 ControleA : F1 ControleA: desligado Desligar compressor e ventilador ControleA :V1 Acionar ventilador na velocidade 1 Compressor.Ligado: não Ventilador.Velocidade: 2 Termostato.Distância: Acionar ventilador na velocidade 1 ControleA : V1 Desligar compressor Compressor.Ligado: sim Ventilador.Velocidade: 1 Termostato.Distância: Compressor.Ligado: não Ventilador.Velocidade: 1 Termostato.Distância: ControleA : F1 Ligar compressor ControleA: V2 Acionar ventilador na velocidade 2
Prototipação Abordagem baseada numa visão evolutiva do desenvolvimento de software, afetando o processo como um todo Protótipo de software é um sistema que... funciona não tem tempo de vida definido pode servir a múltiplos propósitos deve ser construído rapidamente e com baixo custo é parte integrante de um design centrado no usuário, para avaliação e modificação Objetivos e Tipos de Prototipação Objetivos Apoio ao levantamento e validação dos requisitos. Explorar soluções de design alternativas Experimentos de funcionamento e usabilidade Prototipação evolucionária Um protótipo inicial é produzido e refinado através de inúmeras etapas de avaliação e re-design até tornar-se um produto final Prototipação descartável Utilizado na descoberta e validação dos requisitos e depois descartado. O resultado é a especificação de requisitos.
Ferramentas de prototipação Descartável (não executável ou falso) Papel e lápis, editores gráficos, maquetes, Descartável e Evolucionária Linguagens dinâmica de alto-nivel Smalltalk, Lisp, Prolog, HTML, PHP, Perl Ferramentas de Programação Visual Visual Basic, Delphi, Linguagens de 4a. Geração (4GL) para programação de bancos de dados Access Linguagens de configuração (montagem) de componentes scripting TCL/TK, Lua, Python, Ferramentas de montagem de aplicações MS Office, Director, Flash, Protótipo falso
Maquetes Interfaces feitas de papelão alert box buttons menu combo box list box tabs entries Usando HTML
Problemas Evolucionária Mudanças rápidas e falta de documentação levam a problemas de: gerenciamento manutenção contrato Descartável Pode ser que o sistema final não atenda aos requisitos não funcionais desempenho, robustez, confiabilidade Baixa qualidade do processo Documentação e Manutenção difíceis