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.