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.