Please enable JavaScript.
Coggle requires JavaScript to display documents.
Conceitos de Projeto - Coggle Diagram
Conceitos de Projeto
Arquitetura
- Definição: Organização geral do software e modos de prover integridade conceitual ao sistema.
- Estrutura: Organização de componentes de programa (módulos), interações e estrutura de dados.
- Meta: Derivar uma representação arquitetônica do sistema como base para atividades mais detalhadas de projeto.
Propriedades:
- Estruturais: Componentes e interações.
- Extrafuncionais: Desempenho, capacidade, confiabilidade, segurança, adaptabilidade, etc.
- Famílias de sistemas relacionados: Padrões reusáveis.
Modelos de Arquitetura:
- Estruturais: Conjunto organizado de componentes de programa.
- Frameworks: Identificação de padrões reutilizáveis.
- Dinâmicos: Mudanças em função de eventos externos.
- Processos: Projeto técnico ou de negócio.
- Funcionais: Hierarquia funcional do sistema.
Classes de Projeto
- Completa e Suficiente: Deve encapsular todos os atributos e métodos necessários para uma interpretação reconhecível do nome da classe.
- Primitivismo: Os métodos devem se concentrar na realização de um serviço específico para a classe.
- Alta Coesão: Responsabilidades pequenas e focadas, aplicando atributos e métodos para implementar essas responsabilidades.
- Baixo Acoplamento: As classes devem colaborar umas com as outras em um nível mínimo aceitável, seguindo a Lei de Demeter.
-
Modularidade
Definição
- Modularidade: Divisão do software em componentes separadamente especificados e integrados para satisfazer os requisitos de um problema.
- Manifestação da Separação por Interesses: Modularidade é uma forma comum de aplicar a separação por interesses no projeto de software.
-
-
Projeto de Arquitetura
- Informações sobre o domínio de aplicação do software.
- Elementos específicos do modelo de requisitos, como casos de uso ou classes de análise, e suas relações e colaborações.
- Disponibilidade de estilos de arquitetura e padrões.
Projeto de Interface
- Interface do Usuário (UI): Responsável pela interação direta com os usuários, cada vez mais denominado de projeto de experiência do usuário (UX). Detalhes são apresentados no Capítulo 12.
- Interfaces Externas: Conexões com outros sistemas, dispositivos, redes ou produtores/consumidores de informações externas.
- Interfaces Internas: Comunicação entre os diversos componentes do sistema.
Projeto de Componentes
- Estruturas de dados para objetos locais
- Detalhes algorítmicos para o processamento
- Interface que dá acesso às operações do componente
Projeto de Implantação
- Ambientes computacionais principais (PC, servidor, dispositivo móvel)
- Subsistemas abrigados em cada elemento computacional
- Componentes implementados por cada subsistema
Abstração
- Nível intermediário: Descrição detalhada da solução associada à terminologia de implementação (ex.: caso de uso).
- Alto nível: Solução expressa em termos abrangentes, usando a linguagem do domínio do problema (ex.: história de usuário).
- Baixo nível: Solução técnica do software expressa de forma diretamente implementável (ex.: pseudocódigo).
- Combinação de Abstrações:
- Procedural: Sequência de instruções com uma função específica. Nome indica a função, mas detalhes são omitidos (ex.: "usar" uma câmera no sistema CasaSegura).
- Dados: Conjunto nomeado de dados que descreve um objeto de dados (ex.: atributos da câmera como identidade, localização, etc.).
-
Refinamento Gradual
Processo de Elaboração
- Começa com um enunciado da função ou descrição de informações em um nível de abstração alto.
- Cada refinamento sucessivo elabora a declaração original, revelando mais detalhes à medida que o projeto avança.
Refatoração
É o processo de mudar um sistema de software de tal forma que não altere o comportamento externo do código [projeto], embora melhore sua estrutura interna" - Fowler.