Fundamentos de Design de Software, Arquitetura e Métricas
Classificado em Tecnologia
Escrito em em
português com um tamanho de 7,54 KB
Modelo de Design de Sistemas Estruturados
É o processo de decidir quais os componentes e a interligação entre eles, para resolver um problema bem especificado.
Tipos de Design Estruturado
- Design de Dados (D. DADOS): Transforma o modelo de campo de informações, criado durante a análise, nas estruturas de dados que serão necessárias para implementar o software.
- Design Estrutural (D. ESTRUTURAL): Define as relações entre os elementos estruturais principais do programa. O objetivo principal do projeto estrutural é desenvolver uma estrutura de programas modulares e representar as relações de controle entre os módulos.
- Design Processual (D. REGULAMENTAR): Transforma os elementos estruturais em uma descrição processual do software. A concepção processual é realizada depois de ter criado a estrutura do programa e dos dados, definindo os algoritmos de processamento necessários.
A Importância do Design de Software
A importância do design de software pode ser resumida em uma palavra: Qualidade.
Design é o processo que sustenta a qualidade do desenvolvimento de software. O projeto produz representações do software que permitem avaliar a sua qualidade.
Projeto Estruturado tende a transformar o desenvolvimento de software de uma prática tradicional para uma disciplina da engenharia.
Características desejáveis: flexibilidade, eficiência, facilidade de manutenção, mutabilidade, governança, utilidade.
Design de Sistemas (D. SISTEMA)
É a estratégia de alto nível para resolver problemas e construir uma solução.
Decisões no Design de Sistemas:
- Organizar o sistema em subsistemas.
- Identificar a concorrência inerente ao problema.
- Atribuir subsistemas a processadores e tarefas.
- Gerenciar o acesso aos recursos globais.
- Selecionar a implantação do software de controle.
- Gerenciar as condições de contorno e estabelecer as prioridades de compensação.
Modelagem e Projeto Orientado a Objetos
É baseado na resolução de problemas através de modelos organizados com base em conceitos do mundo real.
Modelos Chave
- Modelo de Objeto (Object Model): Descreve a estrutura de dados dos objetos e seus relacionamentos.
- Modelo Dinâmico (Dynamic Model): Descreve os aspectos comportamentais de uma mudança no sistema ao longo do tempo.
Componentes de Software
Um Componente é uma peça pré-empacotada de código que encapsula funcionalidades expostas através de interfaces padrão.
Vantagens do Paradigma de Componentes:
- Reutilização de Software: Aumenta o nível de reutilização de software.
- Simplifica os Testes: Permite que os testes sejam realizados testando cada componente individualmente antes de testar o conjunto completo de componentes montados.
- Simplifica a Manutenção do Sistema: Com um acoplamento fraco entre os componentes, é possível atualizar e/ou adicionar componentes conforme necessário, sem afetar outras partes do sistema.
- Maior Qualidade: Uma vez que um componente pode ser construído e continuamente melhorado por um especialista ou organização, a qualidade da aplicação baseada em componentes melhora ao longo do tempo.
Arquitetura de Software
A Arquitetura de Software é a organização fundamental de um sistema, formada por seus componentes, seus relacionamentos, o contexto no qual é aplicada, e os princípios orientadores da sua concepção e evolução.
Objetivo da Arquitetura
Fornecer elementos que auxiliem a tomada de decisão e, ao mesmo tempo, oferecer uma linguagem comum e conceitos que permitam a comunicação entre as equipes participantes de um projeto.
Modelos ou Vistas da Arquitetura
- Visão Estática: Descreve quais são os componentes da arquitetura.
- Visão Funcional: Descreve o que cada componente faz.
- Visão Dinâmica: Descreve como os componentes se comportam ao longo do tempo e como eles interagem.
Arquiteturas Comuns
- Estrutura Monolítica: O software é inscrito em grupos funcionais.
- Cliente-Servidor: O software divide sua carga computacional em duas partes distintas, mas sem uma atribuição clara de funções.
- Arquitetura de Três Camadas (Especialização Cliente-Servidor): A carga é dividida em três partes (ou camadas), com uma clara divisão de funções: uma para a camada de apresentação (interface do usuário), uma para o cálculo (onde está a modelagem de negócios) e uma para o armazenamento (persistência). Uma camada só se relaciona com a próxima.
Design de Interfaces e Bancos de Dados
- Design de Interface do Usuário (User Interface Design): É o desenho de aplicações, máquinas, dispositivos de comunicação móvel, softwares e websites com foco na experiência do usuário e interação.
- Design de Banco de Dados (Database Design): Pode ser complexo, mas com algumas regras simples torna-se muito mais fácil criar um banco de dados perfeito para o projeto.
Processo de Concepção e Controles
O processo envolve a preparação adequada dos dados ou elementos básicos de informação e o processamento deles através de regras e procedimentos para realizar diversas operações (cálculos).
Controle: Envolve teste, inspeção, auditoria, controle de gestão e regulação de fenômenos (processo, atividade).
Métricas de Software
Uma Métrica é um instrumento que quantifica um critério. Elas nos ajudam a entender tanto o processo técnico usado para desenvolver um produto quanto o próprio produto.
Tipos de Métricas
- Medidas Indiretas: Incluem funcionalidade, qualidade, complexidade, eficiência, confiabilidade, facilidade de manutenção, etc.
- Métricas de Software: Associadas ao desenvolvimento de funcionalidades do software, complexidade e eficiência.
- Métricas Técnicas: Focam nas características do software. Medem a estrutura do sistema e como ele é feito.
- Métricas de Qualidade: Fornecem uma indicação de como o software se adapta às exigências implícitas e explícitas do cliente.
- Métricas de Produtividade: Concentram-se no desempenho do processo de engenharia de software (ex: quão produtivo será o software projetado).
- Métricas Orientadas à Pessoa: Fornecem informações sobre como as pessoas desenvolvem software de computador, focando no ponto de vista humano e na eficácia das ferramentas e métodos.
- Métricas Orientadas ao Tamanho: Medidas diretas do software e do processo pelo qual ele se desenvolve. Ajudam a estimar o tempo de conclusão e o número de pessoas necessárias.
- Métricas Orientadas à Função: Medidas indiretas do software e do processo. Focam na funcionalidade ou utilidade do programa.
Desvantagens
A principal desvantagem das métricas é que não há um regime de critérios geralmente aceitos.