Fundamentos da Engenharia de Software: Guia Completo

Classificado em Computação

Escrito em em português com um tamanho de 3,11 KB

Engenharia de Software: Conceitos Fundamentais

O que é Software?

  • Definição: Conjunto de instruções, estruturas de dados e documentação.
  • Diferença do Hardware: Enquanto o hardware possui vida útil, o software se deteriora. Sem engenharia, as falhas se acumulam até tornar o sistema inutilizável.

Evolução e Crise do Software

  • Evolução: De tarefas pontuais (ordenar listas) para sistemas complexos.
  • Crise do Software (Anos 70): Dificuldades no desenvolvimento frente à alta demanda e complexidade, devido à inexistência de técnicas adequadas.
  • Mitos: A crença de que o trabalho termina assim que o programa entra em funcionamento.

Definição de Engenharia de Software

É a disciplina tecnológica e gerencial focada na produção sistemática e manutenção de produtos de software, respeitando prazos e custos. Abrange três elementos fundamentais:

  • Métodos, ferramentas e procedimentos: Detalham o "como fazer".

Principais Métodos

  • Planejamento e estimativa de projetos;
  • Análise de requisitos;
  • Projeto e estrutura de dados;
  • Algoritmos de processamento;
  • Codificação, testes e manutenção.

Modelos de Processo

Método Cascata

  • Uma atividade só inicia após a conclusão da anterior;
  • Natureza descritiva e rígida (não permite novos requisitos no meio do processo);
  • Vantagens: Baixo custo de implementação e fácil controle;
  • Desvantagens: Entregas não são parciais; exige requisitos estáveis.

Prototipação e Espiral

  • Prototipação: Não entrega o produto final; quanto mais detalhado, mais caro.
  • Espiral: Combina a prototipação (incrementos) com a organização do cascata e análise de riscos. Exige profissionais especializados.

Técnica de 4ª Geração (4GL)

  1. Obtenção de requisitos;
  2. Estratégia do projeto;
  3. Implementação usando 4GL;
  4. Testes.

Processo Unificado (RUP) e UML

Para sistemas complexos, o processo deve ser guiado por casos de uso, centrado em arquitetura, iterativo e incremental.

  • Arquitetura: Define requisitos não funcionais (ex: tempo de resposta).
  • Iterativo: A cada repetição, novas características são adicionadas.
  • RUP (Rational Unified Process): Ferramenta que controla o processo de desenvolvimento.
  • UML: Linguagem de modelagem utilizada dentro do processo unificado para descrever sistemas.

Análise de Problemas

5 passos para a análise:

  1. Declaração do problema;
  2. Diagrama de Ishikawa;
  3. Identificação de usuários e stakeholders;
  4. Definição das fronteiras do sistema;
  5. Lista de restrições.

Após essas etapas, segue-se para o workshop de características.

Entradas relacionadas: