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.

Entradas relacionadas: