Please enable JavaScript.
Coggle requires JavaScript to display documents.
Software Design - Coggle Diagram
Software Design
Design de Interface de Usuário
Princípios Gerais
Aprendizagem
Software deve ser fácil de usar
Familiaridade
Interface deve considerar as experiências dos usuários
Consistência
Operações comparáveis devem agir de formas semelhantes
Surpresa Mínima
O comportamento do software não deve surpreender os usuários
Recuperabilidade
Deve permitir que seja possível a recuperação depois de um erro
Guia de Usuário
Prover
feedback
Diversidade de Usuário
Prover mecanismos iterativos para diversos usuários, com diferentes capacidades
Pontos na Interface de Usuário
Como usuário deve interagir com o software
Como as informações do software serão apresentadas ao usuário
Design das Modalidades de Iteração com Usuário
Question-answer
Usuário faz uma pergunta ao software e o software responde
Manipulação Direta
Manipulação de objetos
Seleção de Menu
Seleção de comando em uma lista de comandos
Preenchimento de Formulários
Linguagem de Comando
Usuário provê parâmetros para um comando
Linguagem Natural
Acessar um comando em linguagem natural
Design da Apresentação de Informação
Model-View-Controller
Acessibilidade com o uso de cores
Limite na quantidade de cores usadas
Não depender de apenas de cores para apresentar informações importantes
Processo do Design da Interface do Usuário
Analise de usuário
Avaliação
Prototipação
Localização e Internacionalização
Considerar necessidades linguísticas (outras linguas)
Metáforas e Modelos Conceituais
Ajudar o usuário a utilizar o software com metáforas e modelos conceituais do mundo real
Principais Pontos no Design de Software
Concorrencia
Decomposição do software em processos
Controle de Eventos
Como organizar os dados e fluxo de controle
Persistência dos Dados
Tratar dados que existem a tempos
Distribuição de Componentes
Como distribuir o software considerando o hardware
Erro, Tratamento de exceção e Tolerância a Falhas
Ser tolerante a erros de processo
Segurança
Prevenir acesso não autorizado aos recursos do software
Métodos e Estratégias de Design de Software
Estratégias Gerais
Divisão e Conquista
Top-down vs Bottom-up
Heurísticas
Design Estruturado (Orientado a Funções)
Design Orientado a Objetos
Design Centrado em Estruturas de Dados
Design Baseado em Componentes
Design Orientado a Aspectos
Estrutura e Arquitetura de Software
Estilo Arquitetural
Estrutura Geral
Sistemas Distribuidos
Sistemas Interativos
Sistemas Adaptativos
Design de Padrões
Padrões de Criação
Padrões Estruturais
Padrões Comportamental
Decisão do Design de Arquitetura
Famílias de Programas e
Frameworks
Reuso de design de software e componentes
Estrutura Arquitetural e
Viewpoints
Diferentes partes em alto nível no design de software podem ser descritos e documentados
Fundamentos do Design de Software
Conceitos Gerais de Design
É uma forma de resolução de problema
Contexto do Design de Software
Faz parte do processo de desenvolvimento
Processo do Design de Software
Design Arquitetural
Design em alto nível (descreve como o software é organizado em componentes)
Design Detalhado
Descreve o comportamento dos componentes que compõem o software
Princípios do Design de Software
Abstração
Foco em informações relevantes
Acoplamento e Coesão
Acoplamento
Medida da interdependência entre os módulos de um software
Coesão
Medida da força da associação dos elementos em um módulo
Decomposição e Modularização
Dividir o software em componentes menores e bem definidos
Encapsulação e ocultação de informação
Agrupar e ocultar os detalhes internos de uma abstração
Separação de interface e implementação
Separação do que o clientes veem e de como é implementado
Suficiência, completude e primitividade
Suficiência
Certifica-se de que os componentes do software captura todas as características importantes da abstração
Completude
Primitividade
Design deve ser baseado em padrões fáceis de implementar
Separação de conceitos
Área de design que é relevante aos
stakeholders
Ferramentas de Design de Software
Ferramentas para a tradução do modelo de requisitos em uma representação de design
Suporte na representação dos componentes funcionais e suas interfaces
Ferramentas para a implementação de heurísticas de refinamento e particionamento
Ferramentas para prover guias para a avaliação de qualidade
Análise de Qualidade e Avaliação do Design de Software
Atributos de qualidade
Facilidade de Manutenção
Portabilidade
Testabilidade
Usabilidade
Corretude
Robustez
Técnicas de Análise de Qualidade e Avaliação
Avaliação
Análise Estática
Simulação e prototipação
Medidas
Baseadas em Funções
Baseadas em Objetos
Notações do Design de Software
Descrição Estrutural
Linguagem de descrição arquitetural
Diagramas de Classe e Objetos
Diagramas de Componentes
Diagramas de Desenvolvimento
Diagramas de entidade relacionamento
Linguagem de descrição de interface
Gráficos de Estrutura
Class responsibility collaborator cards
(CRCs)
Descrição Comportamental
Diagramas de Atividade
Diagramas de Comunicação
Diagramas de fluxo de dados
Tabelas de decisão
Gráficos de Fluxo
Diagramas de sequencia
Diagramas de transição de estado
Linguagem de especificação formal
Pseudo-código