Modelos, Processos e Ferramentas em Engenharia de Software

Classificado em Computação

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

O Processo de Software

Um conjunto estruturado de atividades necessárias para o desenvolvimento de um sistema de software, incluindo:

  • Especificação
  • Projeto
  • Validação
  • Evolução

Modelos de Processo de Software

Modelo Cascata

Fases do Modelo Cascata:

  • Análise e Definição de Requisitos
  • Projeto de Sistema de Software
  • Implementação e Teste de Unidade
  • Integração e Teste de Sistema
  • Operação e Manutenção

Problemas do Modelo Cascata:

Praticamente inflexível, o projeto em estágios distintos dificulta a resposta aos requisitos em constante mudança do cliente.

Desenvolvimento Exploratório

O objetivo é trabalhar com os clientes e desenvolver um sistema final a partir de uma especificação inicial.

Prototipagem Throwaway

O objetivo é compreender os requisitos do sistema. Deve iniciar com requisitos mal compreendidos para esclarecer o que é realmente necessário.

Desenvolvimento Evolucionário

Problemas:
  • Falta de visibilidade do processo
  • Os sistemas são frequentemente mal estruturados
Aplicabilidade:
  • Para sistemas interativos de pequeno e médio portes
  • Para partes de um sistema de grande porte (por exemplo, a interface de usuário)
  • Para sistemas com curto ciclo de vida

Desenvolvimento Orientado a Reúso

  • Especificação de Requisitos
  • Análise de Componentes
  • Modificação de Requisitos
  • Projeto de Sistema com Reúso
  • Desenvolvimento e Integração
  • Validação do Sistema

Iteração de Processo

A iteração de processo, onde estágios iniciais são retrabalhados, é sempre parte do processo dos sistemas de grande porte.

Entrega Incremental

Ao invés de entregar o sistema como uma única entrega, o desenvolvimento e a entrega são separados em incrementos, sendo que cada incremento fornece parte da funcionalidade solicitada.

Extreme Programming

Uma abordagem baseada no desenvolvimento e na entrega de incrementos de funcionalidade muito pequenos.

Desenvolvimento Espiral

O processo é representado como uma espiral ao invés de uma sequência de atividades com retroalimentação. Cada loop na espiral representa uma fase no processo.

Setores do Modelo Espiral:
Definição de Objetivos:

Objetivos específicos para a fase são identificados.

Avaliação e Redução de Riscos:

Riscos são avaliados e atividades são realizadas para reduzir os riscos-chave.

Desenvolvimento e Validação:

Um modelo de desenvolvimento para o sistema, que pode ser qualquer um dos modelos genéricos, é escolhido.

Planejamento:

O projeto é revisado e a próxima fase da espiral é planejada.

Atividades do Processo de Software

As principais atividades do processo de software incluem:

  • Especificação de Software
  • Projeto e Implementação de Software
  • Validação de Software
  • Evolução de Software

Especificação de Software

O processo para definir quais serviços são necessários e identificar as restrições de operação e de desenvolvimento do sistema.

Processo de Engenharia de Requisitos

  • Estudo de Viabilidade
  • Elicitação e Análise de Requisitos
  • Especificação de Requisitos
  • Validação de Requisitos
  • Relatório de Viabilidade
  • Modelo de Sistema
  • Requisitos de Usuário e de Sistemas
  • Documentos de Requisitos

Projeto e Implementação de Software

Projeto de Software:

Projetar uma estrutura de software que atenda à especificação.

Implementação:

Transformar essa estrutura em um programa executável.

Atividades do Processo de Projeto:

  • Projeto de Arquitetura
  • Especificação Abstrata
  • Projeto de Interface
  • Projeto de Componente
  • Projeto de Estrutura de Dados
  • Projeto de Algoritmo

Métodos Estruturados

Programação e Debugging:

É a transformação de um projeto em um programa e a remoção de defeitos desse programa. Programação é uma atividade pessoal - não há processo genérico de programação.

O Processo de Debugging:
  • Localização de Erro
  • Projeto de Reparo de Erros
  • Reparo de Erro
  • Resetar Programas

Validação de Software

Verificação e validação têm a intenção de mostrar que um sistema está em conformidade com a sua especificação e que atende aos requisitos do cliente.

O Processo de Teste:

  • Teste de Componente
  • Teste de Sistema
  • Teste de Aceitação

Estágios de Teste:

Teste de Componente ou Unidade:

Os componentes individuais são testados independentemente.

Teste de Sistema:

Teste do sistema como um todo. O teste das propriedades emergentes é particularmente importante.

Teste de Aceitação:

Teste com dados do cliente para verificar se o sistema atende às suas necessidades.

Evolução de Sistema

  • Definição de Requisitos do Sistema
  • Avaliar os Sistemas Existentes
  • Propor Mudanças no Sistema
  • Modificar o Sistema
  • Sistema Novo

O Rational Unified Process (RUP)

É um modelo de processo moderno derivado do trabalho sobre a UML e do Processo Unificado de Desenvolvimento de Software associado.

Fases do RUP:

Concepção: Estabelecer o business case para o sistema.

Elaboração: Desenvolver um entendimento do domínio do problema e da arquitetura do sistema.

Construção: Projeto, programação e teste do sistema.

Transição: Implantar o sistema no seu ambiente operacional.

Boas Práticas do RUP:

  • Desenvolver o software iterativamente
  • Gerenciar requisitos
  • Modelar o software visualmente
  • Verificar a qualidade do software
  • Controlar as mudanças do software

Workflows Estáticos:

  • Modelagem de Negócio
  • Requisitos
  • Análise do Projeto
  • Implementação
  • Teste
  • Gerenciamento de Configuração e Mudança
  • Gerenciamento de Projeto
  • Ambiente

Engenharia de Software Auxiliada por Computador (CASE)

CASE é um software usado para apoiar as atividades do processo de desenvolvimento e evolução de software.

Tecnologia CASE:

Tem conduzido a melhorias significativas do processo de software, embora estas não sejam da ordem de magnitude das melhorias que foram outrora previstas.

Classificação de CASE:

  • Perspectiva Funcional: As ferramentas são classificadas de acordo com a sua função específica.
  • Perspectiva de Processo: As ferramentas são classificadas de acordo com as atividades de apoio que fornecem.
  • Perspectiva de Integração: As ferramentas são classificadas de acordo com sua organização em unidades integradas.

Classificação Funcional de Ferramentas:

  • Planejamento
  • Edição
  • Gerenciamento de Mudanças
  • Gerenciamento de Configuração
  • Prototipagem
  • Apoio a Métodos
  • Processamento de Linguagem
  • Análise de Programa
  • Teste
  • Depuração
  • Documentação
  • Reengenharia

Classificação de Ferramentas Baseada em Atividades:

É o inverso da classificação de ferramentas funcionais.

Integração de CASE

Ferramentas:

Tarefas individuais de processo, como verificação de consistência de projeto, edição de texto, etc.

Workbenches:

Apoiam as fases do processo, como especificação e projeto.

Ambientes:

Apoiam todo ou uma parte substancial do processo inteiro de software.

Entradas relacionadas: