Ferramentas CASE e Desenvolvimento de Software

Classificado em Computação

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

Ferramentas CASE

O que é?

Ferramentas CASE (Computer-Aided Software Engineering) automatizam as atividades de gestão de projetos e dos produtos elaborados no processo de desenvolvimento de software.

Taxionomia de Ferramentas CASE

  • Engenharia de processos de negócio
  • Planificação e gestão de projetos
  • Análise de riscos
  • Acompanhamento de requisitos
  • Métricas
  • Documentação
  • Controle de qualidade
  • Gestão da configuração
  • Suporte à análise e desenho
  • Construção de protótipos e simulação

Imagen

Repositório CASE - Função

  • Integridade de dados
  • Informação partilhada
  • Integração dados-ferramentas
  • Integração dados-dados
  • Imposição de metodologia
  • Padronização de documentos

Conteúdo do Repositório CASE

  • Descrição do problema
  • Informação sobre o domínio do problema
  • Produtos da Solução
  • Regras e instruções sobre o processo de desenvolvimento
  • Plano do Projeto de SW, recursos, histórico
  • Contexto organizativo
  • Informação da empresa
  • Informação da aplicação
  • Validação e verificação
  • Informação do projeto
  • Documentação do sistema

Características do Repositório CASE

  • Armazenamento não redundante de objetos do projeto
  • Acesso de alto nível
  • Independência dos dados físicos
  • Controle de transações
  • Segurança
  • Consultas e relatórios ad-hoc
  • Mecanismos de exportação/importação
  • Suporte multi-utilizador
  • Armazenamento de estruturas de dados sofisticadas
  • Imposição de integridade
  • Interface de ferramentas ricas em termos semânticos
  • Gestão de processos/projetos
  • Versões, gestão de dependências, controle das mudanças
  • Acompanhamento de requisitos
  • Auditorias

Exemplos de Ferramentas CASE

  • IBM Rational Rose
  • Microgold With Class 2000
  • Altova UModel
  • Object Domain
  • Enterprise Architect

Desenvolvimento Rápido de Software

No ambiente de negócios global e sujeito a rápidas mudanças, a velocidade de entrega de software é frequentemente o requisito mais crítico. Processos tradicionais de desenvolvimento, baseados em especificações completas, não são adequados para essa realidade.

Projetos de desenvolvimento rápido de software são projetados para criar software útil rapidamente, geralmente utilizando processos iterativos e incrementais, com intercalação entre especificação, projeto, desenvolvimento e teste.

Características Fundamentais

  • Processos de especificação, projeto e implementação concorrentes.
  • Desenvolvimento em incrementos.
  • Interfaces de usuário desenvolvidas iterativamente.

Imagen

Vantagens do Desenvolvimento Incremental

  • Entrega acelerada dos serviços ao cliente.
  • Engajamento do usuário com o sistema.

Dificuldades do Desenvolvimento Incremental

  • Problemas de gerenciamento (inclusive previsibilidade).
  • Problemas de contrato.
  • Problemas de validação.
  • Problemas de manutenção.

Imagen

Desenvolvimento Incremental vs. Prototipação

O objetivo do desenvolvimento incremental é entregar um sistema de trabalho aos usuários finais, priorizando os requisitos mais bem compreendidos.

O objetivo da prototipação é validar ou derivar os requisitos do sistema, focando nos requisitos menos compreendidos.

A qualidade é crucial no desenvolvimento incremental, enquanto protótipos podem ter desempenho e confiabilidade inferiores.

Métodos Ágeis

  • Crystal (Cockburn, 2001)
  • Adaptive Software Development (Highsmith, 2000)
  • DSDM (Stapleton, 1997)
  • Feature Driven Development (Palmer e Felsing, 2002)
  • Extreme Programming (Beck, 1999 e Beck, 2009)

Imagen

Imagen

Extreme Programming (XP)

Um dos métodos ágeis mais conhecidos e amplamente usados. XP leva boas práticas, como desenvolvimento iterativo e envolvimento do cliente, a níveis "extremos".

Requisitos são expressos como cenários (histórias do usuário) e implementados diretamente como tarefas.

Programadores trabalham em pares e desenvolvem testes para cada tarefa antes de escrever o código.

Imagen

Testes em Extreme Programming

  • Desenvolvimento *test-first*.
  • Desenvolvimento incremental de testes a partir de cenários.
  • Envolvimento do usuário no desenvolvimento e validação de testes.
  • Uso de ferramentas de teste automatizadas.

Desenvolvimento de Software Orientado a Aspectos (AOSD)

Imagen

AOSD é uma abordagem emergente que visa resolver a complexidade entre requisitos e componentes, tornando os programas mais fáceis de manter e reutilizar.

Aspectos são abstrações que englobam funcionalidades que atravessam e coexistem com outras funcionalidades do sistema.

Benefícios do AOSD

  • Apoia a separação de assuntos.
  • Assuntos transversais podem ser compreendidos, reutilizados e modificados independentemente.

Surgimento e Estado Atual do AOSD

  • Pesquisas iniciais focaram em programação orientada a aspectos (ex: AspectJ).
  • Empresas como a IBM estão começando a usar AOSD.
  • Pesquisadores estão investigando o uso de AOSD em outras fases do desenvolvimento de software.
  • Ainda não é parte da engenharia de software *mainstream*.

Conceitos do AOSD

  • Separação de Assuntos
  • Aspectos, pontos de junção e de corte
  • Engenharia de software com aspectos

Separação de Assuntos

Tipos de assuntos:

  • Funcionais
  • Qualidade de serviço
  • Políticas
  • Sistema
  • Organizacionais

Imagen

Imagen

Engenharia de Software com Aspectos

  • Engenharia de requisitos orientada a assuntos
  • Projeto e programação orientados a aspectos
  • Verificação e validação

Entradas relacionadas: