Saltar para o conteúdo

Desenvolvimento rápido de aplicações: diferenças entre revisões

Origem: Wikipédia, a enciclopédia livre.
Conteúdo apagado Conteúdo adicionado
feito redirecionamento para RAD
 
Linha 1: Linha 1:
{{Processo-Desenvolvimento-Software}}
#REDIRECT [[RAD]]

'''Rapid Application Development (RAD)''' ou Desenvolvimento Rápido de Aplicação (em português), é um modelo de processo de desenvolvimento de software iterativo e incremental que enfatiza um ciclo de desenvolvimento extremamente curto (entre 60 e 90 dias).
O termo foi registrado por James Martin em 1991 e tem substituído gradativamente o termo de prototipação rápida que já foi muito utilizada no passado


== Histórico ==
Os modelos de processo de software apresentados durante a década de 70, cujo o [[modelo em cascata]] é um bom representante, possuíam longos períodos de desenvolvimento e muitas vezes os requisitos do sistema se alteravam antes do fim do processo. Os desenvolvedores de software necessitavam de um modelo mais ágil que permitisse um tempo de desenvolvimento mais curto e a mudança dos requisitos durante o processo.
Nos anos 80 os trabalhos de [[Barry Boehm]] (modelo de processo em espiral) e [[Tom Gilb]] (modelo de processo evolucionário) serviram de base para uma metodologia chamada de Rapid Iterative Production Prototyping (RIPP) criada por [[Scott Shultz]]. [[James Martin]] estendeu o RIPP agregando valores de outros processos tornando-o maior e mais formal sendo assim denominado de '''RAD'''. O RAD foi finalmente formalizado em 1991 com a publicação de um livro.

== O Processo ==
O número de fases do processo varia de acordo com os autores.


'''Segundo [[Kerr]], o processo se divide em 5 fases:'''

*Modelagem de Negócio

O fluxo de informações entre as funções de negócio é modelado de modo a responder às seguintes questões:
- Que informação direciona o processo de negócio?
- Que informação é gerada?
- Quem a gera?
- Pra onde vai à informação?
- Quem a processa?
Na modelagem de negócio são levantados os processos suportados pelo sistema.

*Modelagem dos dados

A modelagem de dados responde a um conjunto de questões específicas que são relevantes a qualquer aplicação. O fluxo de informação definido na fase de modelagem de negócio refinado e de forma a extrair os principais objetos de dados a serem processados pelo sistema, qual a composição de cada um dos objetos de dados, onde costumam ficar, qual a relação entre eles e quais as relações entre os objetos e os processos que os transformam.

*Modelagem do Processo

Os objetos de dados definidos na modelagem de dados são transformados para conseguir o fluxo necessário para implementar uma função do negócio. Descrições do processamento são criadas para adicionar, modificar, descartar ou recuperar um objeto de dados.

*Geração da Aplicação

O RAD considera o uso de técnicas de quarta geração, trabalha com a reutilização de componentes de programa existentes quando possível, ou cria componentes reusáveis. São usadas ferramentas automatizadas para facilitar a construção do software.
Ex: Delphi, Visual Basic, Asp.net, etc.

*Teste e Modificação

Como o processo do RAD enfatiza o reuso, muitos componentes já estão testados, isso reduz o tempo total de teste. Todavia os novos componentes devem ser testados e todas as interfaces devem ser exaustivamente exercitadas.

Esta divisão do processo é compartilhada por diversos autores inclusive [[Roger S. Pressman]] , cujo a obra é utilizada em diversas faculdades como livro guia para os estudantes.

Porém existem outras abordagens utilizadas.


'''Segundo [[Stephen E. Cross]] Diretor do SEI - Software Engineering Institute da Carneggie Mellow, uma maneira de abordar o RAD de forma mais eficiente é dividí-lo em 6 passos:'''

* Projeto e análise baseado no cenário
* Projeto e análise de Arquitetura
* Especificação de Componentes com o máximo de reuso
* Desenvolvimento rápido dos módulos remanescentes
* Testes freqüentes com o usuário final
* Campo com ferramentas de suporte para permitir a evolução

A proposta de Stephen é disciplinar o RAD, que é muitas vezes criticado por sua suposta informalidade, de forma a conseguir até mesmo níveis de [[CMM - Capability Maturity Model]] para melhorar e formalizar ainda mais o processo.

== Vantagens ==

* Permite o desenvolvimento rápido e/ou a prototipagem de aplicações;
* Enfatiza um ciclo de desenvolvimento extremamente curto (entre 60 e 90 dias);
* Cada função principal pode ser direcionada para a uma equipe RAD separada e então integrada a formar um todo;
* Criação e reutilização de componentes;
* Usado principalmente para aplicações de sistemas de informações;
* Comprar pode economizar recursos se comparado a desenvolver;
* Desenvolvimento é conduzido em um nível mais alto de abstração;
* Visibilidade mais cedo (protótipos);
* Maior flexibilidade (desenvolvedores podem reprojetar praticamente a vontade);
* Grande redução de codificação manual (wizards...);
* Envolvimento maior do usuário;
* Provável custo reduzido(tempo é dinheiro e também devido ao reuso);
* Aparência padronizada (As APIs ae outros componentes reutilizáveis permitem uma aparencia consistente).

=== O RAD é apropriado quando ===

* A aplicação é do tipo "stand alone";
* Pode-se fazer uso de classes pré-existentes (APIs);
* A performance não é o mais importante;
* A distribuição do produto é pequena;
* O escopo do projeto é restrito;
* O sistema pode ser dividido em vários módulos independentes;
* A tecnologia necessária tem mais de um ano de existência.

== Desvantagens ==

* Se uma aplicação não puder ser modularizada de modo que cada função principal seja completada em menos de 3 meses, não é aconselhável o uso do RAD;
* Para projetos grandes (mas escaláveis) o RAD exige recursos humanos suficientes para criar o número correto de equipes, isso implica em um alto custo com a equipe;
* O envolvimento com o usuário tem que ser ativo;
* Comprometimento da equipe do projeto;
* O RAD não é aconselhável quando os riscos técnicos são altos e não é indicada quando se está testando novas tecnologias ou quando o novo software exige alto grau de interoperabilidade com programas de computador existentes. Falta de prazo pode implicar em qualidade reduzida, e há necessidade de habilidade maior dos desenvolvedores, e suporte maior da gerência e dos clientes.
* Desenvolver pode economizar recursos se comparado a comprar;
* Custo do conjunto de ferramentas e hardware para rodar a aplicação;
* Mais difícil de acompanhar o projeto(pois não existe os marcos clássicos);
* Menos eficientes;
* Perda de precisão científica (falta de métodos formais);
* Pode acidentalmente levar ao retorno das práticas caóticas no desenvolvimento;
* Funções reduzidas (reuso, "timeboxing");
* Funções desnecessárias (reuso de componentes);
* Problemas legais;
* Requisitos podem não se encaixar (conflitos entre desenvolvedores e clientes)
* Padronização (aparência diferente entre os módulos e componentes)
* Sucessos anteriores são difíceis de se reproduzir

=== O RAD deve ser evitado quando ===

* A aplicação precisa interagir com outros programas;
* Existem poucos plugins e componentes disponíveis;
* Performance é essencial;
* O desenvolvimento não pode tirar vantagem de ferramentas de alto nível;
* A distribuição do produto será em grande escala;
* Para se construir sistemas operacionais (confiabilidade exigida alta demais)
* Jogos de computador (performance exigida muito alta)
* Riscos tecnológicos muito altos devido a tecnologia ter sido recém lançada;
* O sistema não pode ser modularizado

== {{Links externos}} ==

* {{en}} [http://odl-skopje.etf.ukim.edu.mk/UML-Help/html/01day3.html RAD com UML]
* {{en}} [http://sysdev.ucdavis.edu/WEBADM/document/rad_toc.htm Um artigo sobre RAD na Universidade da California]
* {{fr}} [http://solutions.journaldunet.com/0411/041109_dreamsoft Outils J2EE : Rad or not Rad ?]
* {{en}} [http://csweb.cs.bgsu.edu/maner/domains/RAD.htm RAD]
* {{en}} [http://www.dacs.dtic.mil/awareness/newsletters/technews2-1/disciplined.html RAD Disciplined]
* {{en}} [http://www.blueink.biz/RapidApplicationDevelopment.aspx RAD na Blue INK]
* {{en}} [http://www.nconstruct.com NConstruct - Intelligent Software Factory]

[[Categoria:Engenharia de software]]

[[ca:Rapid Application Development]]
[[de:Rapid Application Development]]
[[en:Rapid application development]]
[[es:Desarrollo rápido de aplicaciones]]
[[eu:RAD]]
[[fr:Développement rapide d'applications]]
[[hu:Gyors alkalmazásfejlesztés]]
[[id:Rapid Application Development]]
[[it:Rapid Application Development]]
[[ja:RAD (計算機プログラミング環境)]]
[[ko:고속 개발 도구]]
[[nl:Rapid Application Development]]
[[pl:RAD]]
[[ru:RAD]]
[[uk:Швидка розробка програмного забезпечення]]

Revisão das 23h24min de 19 de novembro de 2008

Predefinição:Processo-Desenvolvimento-Software

Rapid Application Development (RAD) ou Desenvolvimento Rápido de Aplicação (em português), é um modelo de processo de desenvolvimento de software iterativo e incremental que enfatiza um ciclo de desenvolvimento extremamente curto (entre 60 e 90 dias). O termo foi registrado por James Martin em 1991 e tem substituído gradativamente o termo de prototipação rápida que já foi muito utilizada no passado


Histórico

Os modelos de processo de software apresentados durante a década de 70, cujo o modelo em cascata é um bom representante, possuíam longos períodos de desenvolvimento e muitas vezes os requisitos do sistema se alteravam antes do fim do processo. Os desenvolvedores de software necessitavam de um modelo mais ágil que permitisse um tempo de desenvolvimento mais curto e a mudança dos requisitos durante o processo. Nos anos 80 os trabalhos de Barry Boehm (modelo de processo em espiral) e Tom Gilb (modelo de processo evolucionário) serviram de base para uma metodologia chamada de Rapid Iterative Production Prototyping (RIPP) criada por Scott Shultz. James Martin estendeu o RIPP agregando valores de outros processos tornando-o maior e mais formal sendo assim denominado de RAD. O RAD foi finalmente formalizado em 1991 com a publicação de um livro.

O Processo

O número de fases do processo varia de acordo com os autores.


Segundo Kerr, o processo se divide em 5 fases:

  • Modelagem de Negócio

O fluxo de informações entre as funções de negócio é modelado de modo a responder às seguintes questões: - Que informação direciona o processo de negócio? - Que informação é gerada? - Quem a gera? - Pra onde vai à informação? - Quem a processa? Na modelagem de negócio são levantados os processos suportados pelo sistema.

  • Modelagem dos dados

A modelagem de dados responde a um conjunto de questões específicas que são relevantes a qualquer aplicação. O fluxo de informação definido na fase de modelagem de negócio refinado e de forma a extrair os principais objetos de dados a serem processados pelo sistema, qual a composição de cada um dos objetos de dados, onde costumam ficar, qual a relação entre eles e quais as relações entre os objetos e os processos que os transformam.

  • Modelagem do Processo

Os objetos de dados definidos na modelagem de dados são transformados para conseguir o fluxo necessário para implementar uma função do negócio. Descrições do processamento são criadas para adicionar, modificar, descartar ou recuperar um objeto de dados.

  • Geração da Aplicação

O RAD considera o uso de técnicas de quarta geração, trabalha com a reutilização de componentes de programa existentes quando possível, ou cria componentes reusáveis. São usadas ferramentas automatizadas para facilitar a construção do software. Ex: Delphi, Visual Basic, Asp.net, etc.

  • Teste e Modificação

Como o processo do RAD enfatiza o reuso, muitos componentes já estão testados, isso reduz o tempo total de teste. Todavia os novos componentes devem ser testados e todas as interfaces devem ser exaustivamente exercitadas.

Esta divisão do processo é compartilhada por diversos autores inclusive Roger S. Pressman , cujo a obra é utilizada em diversas faculdades como livro guia para os estudantes.

Porém existem outras abordagens utilizadas.


Segundo Stephen E. Cross Diretor do SEI - Software Engineering Institute da Carneggie Mellow, uma maneira de abordar o RAD de forma mais eficiente é dividí-lo em 6 passos:

  • Projeto e análise baseado no cenário
  • Projeto e análise de Arquitetura
  • Especificação de Componentes com o máximo de reuso
  • Desenvolvimento rápido dos módulos remanescentes
  • Testes freqüentes com o usuário final
  • Campo com ferramentas de suporte para permitir a evolução

A proposta de Stephen é disciplinar o RAD, que é muitas vezes criticado por sua suposta informalidade, de forma a conseguir até mesmo níveis de CMM - Capability Maturity Model para melhorar e formalizar ainda mais o processo.

Vantagens

  • Permite o desenvolvimento rápido e/ou a prototipagem de aplicações;
  • Enfatiza um ciclo de desenvolvimento extremamente curto (entre 60 e 90 dias);
  • Cada função principal pode ser direcionada para a uma equipe RAD separada e então integrada a formar um todo;
  • Criação e reutilização de componentes;
  • Usado principalmente para aplicações de sistemas de informações;
  • Comprar pode economizar recursos se comparado a desenvolver;
  • Desenvolvimento é conduzido em um nível mais alto de abstração;
  • Visibilidade mais cedo (protótipos);
  • Maior flexibilidade (desenvolvedores podem reprojetar praticamente a vontade);
  • Grande redução de codificação manual (wizards...);
  • Envolvimento maior do usuário;
  • Provável custo reduzido(tempo é dinheiro e também devido ao reuso);
  • Aparência padronizada (As APIs ae outros componentes reutilizáveis permitem uma aparencia consistente).

O RAD é apropriado quando

  • A aplicação é do tipo "stand alone";
  • Pode-se fazer uso de classes pré-existentes (APIs);
  • A performance não é o mais importante;
  • A distribuição do produto é pequena;
  • O escopo do projeto é restrito;
  • O sistema pode ser dividido em vários módulos independentes;
  • A tecnologia necessária tem mais de um ano de existência.

Desvantagens

  • Se uma aplicação não puder ser modularizada de modo que cada função principal seja completada em menos de 3 meses, não é aconselhável o uso do RAD;
  • Para projetos grandes (mas escaláveis) o RAD exige recursos humanos suficientes para criar o número correto de equipes, isso implica em um alto custo com a equipe;
  • O envolvimento com o usuário tem que ser ativo;
  • Comprometimento da equipe do projeto;
  • O RAD não é aconselhável quando os riscos técnicos são altos e não é indicada quando se está testando novas tecnologias ou quando o novo software exige alto grau de interoperabilidade com programas de computador existentes. Falta de prazo pode implicar em qualidade reduzida, e há necessidade de habilidade maior dos desenvolvedores, e suporte maior da gerência e dos clientes.
  • Desenvolver pode economizar recursos se comparado a comprar;
  • Custo do conjunto de ferramentas e hardware para rodar a aplicação;
  • Mais difícil de acompanhar o projeto(pois não existe os marcos clássicos);
  • Menos eficientes;
  • Perda de precisão científica (falta de métodos formais);
  • Pode acidentalmente levar ao retorno das práticas caóticas no desenvolvimento;
  • Funções reduzidas (reuso, "timeboxing");
  • Funções desnecessárias (reuso de componentes);
  • Problemas legais;
  • Requisitos podem não se encaixar (conflitos entre desenvolvedores e clientes)
  • Padronização (aparência diferente entre os módulos e componentes)
  • Sucessos anteriores são difíceis de se reproduzir

O RAD deve ser evitado quando

  • A aplicação precisa interagir com outros programas;
  • Existem poucos plugins e componentes disponíveis;
  • Performance é essencial;
  • O desenvolvimento não pode tirar vantagem de ferramentas de alto nível;
  • A distribuição do produto será em grande escala;
  • Para se construir sistemas operacionais (confiabilidade exigida alta demais)
  • Jogos de computador (performance exigida muito alta)
  • Riscos tecnológicos muito altos devido a tecnologia ter sido recém lançada;
  • O sistema não pode ser modularizado

Ligações externas