Metodologias de desenvolvimento de software - Parte III
Como vimos no modelo que citei anteriormente, o tempo que podemos perder com a prototipagem pode ser um pouco longo para um projeto que exige uma rápida execução - e geralmente os clientes sempre nos pedem para ontem.
Para tentar solucionar esse tipo de questão surgiram metodologias que buscam resolver justamente essa questão.
O RAD é um exemplo disso.
Como seu desenvolvimento é baseado em componentes, seu desenvolvimento torna-se menos sujeito a erros.
A idéia é simples, porém muito eficiênte:
Primeiro fazemos a modelagem do negócio, onde o fluxo de informações entre as funções do negócio modelado procura responder as seguintes questões: Que informação dirige o processo do negócio? Que informação é gerada? Quem a gera? Para onde vai a informação? Quem a processa?
Essa modelagem é feita antes mesmo de se fazer os diagramas de use-case, quando estamos fazendo diagramas UML para desenvolvimento (caso não saiba o que é UML, acesse o link: http://www.eps.ufsc.br/~wolff/oqueuml.htm . Encontrei lá informações interessantes para quem está iniciando nesta área).
Em seguida temos a modelagem dos dados.
O fluxo de informações definido anteriormente é transformado em um conjunto de objetos que serão necessários para desenvolvermos a aplicação.
Os atributos de cada objeto são identificados e as relações entre esses objetos são definidas. (Ainda é anterior ao Use Case... é como se estivessemos definindo os atores e os use cases, sem definir a relação entre eles)
A próxima etapa é a modelagem do processo e aqui usaremos os objetos definidos na fase anterior, transformando-os para conseguir o fluxo de informação necessário para implementar uma função do negócio.
(Aqui monta-se propriamente o use case view)
Depois de modelado o sistema, a geração da aplicação parte para técnicas orientadas a objeto (Para a nossa felicidade, a versão 5 do PHP está bem melhor nesse sentido, oferecendo um suporte muito interessante nesta área).
Ao invés de usar linguagens procedimentais, o RAD usa linguagens de 4ª geração.
Como seu desenvolvimento é feito para reutilizar o máximo possível de componentes, durante todo o processo de desenvolvimento temos a "quebra" do sistema em partes menores e especializadas.
Para não ficar muito abstrato isso, imagine que ao invés de termos um arquivo PHP com toda a codificação, separaremos cada parte do sistema em arquivos que poderão ser reaproveitados em outras aplicações sem que se altere uma linha de código da maioria desses arquivos.
A eficiência no desenvolvimento uma garantia de redução de erros se dá pelo fato do processo RAD ter foco nos componentes e por isso muitos dos componentes já terem sido testados.
Isso reduz o tempo total gasto com testes (Porém novos componentes devem ser testados e as interfaces exaustivamente exercitadas).
Se uma aplicação comercial pode ser modularizada de modo a permitir que cada função principal possa ser completada em menos de 3 meses usando a abordagem de prototipagem por exemplo, ela é candidata ao RAD. Cada função pode ser tratada por uma equipe RAD distinta e depois integrada para formar um todo.
DESVANTAGENS:
1) Para projetos grandes (mensuráveis) o RAD exige muitos recursos humanos.
2) Exige desenvolvedores e clientes compromissados com atividades contínuas e rápidas. Se não houver esse comprometimento, os projetos falharão.
3) Nem todos os tipos de aplicações são apropriadas para o RAD. Se o sistema não puder ser adequadamente modularizado, a construção dos componentes será problemática. Se for preciso um desempenho superior e esse desempenho seja conseguido com o ajuste dos componentes, a abordagem RAD pode não funcionar.
4) Quando riscos técnicos forem elevados, o RAD não é adequado (ex.: uso de uma tecnologia nova ou quando exige comunicação com outros programas).
Observação
De fato, no PHP tínhamos uma certa restrição quanto ao desenvolvimento de objetos (apesar de que, sempre procurei desenvolver classes e há muitos programadores por aí que também simpatizam com essa idéia justamente pela questão do reaproveitamento de código), porém agora estamos bem munidos com a versão 5 do PHP.
Se por ventura você está começando e não consegue entender a idéia de orientação a objetos, aconselho a começar pesquisar esse assunto pois a idéia é muito interessante e é uma tendência irreversível e inevitável, principalmente para aqueles que desejam trabalhar profissionalmente com programação.
[]s e até o próximo artigo! =)
Para tentar solucionar esse tipo de questão surgiram metodologias que buscam resolver justamente essa questão.
O RAD é um exemplo disso.
Como seu desenvolvimento é baseado em componentes, seu desenvolvimento torna-se menos sujeito a erros.
A idéia é simples, porém muito eficiênte:
Primeiro fazemos a modelagem do negócio, onde o fluxo de informações entre as funções do negócio modelado procura responder as seguintes questões: Que informação dirige o processo do negócio? Que informação é gerada? Quem a gera? Para onde vai a informação? Quem a processa?
Essa modelagem é feita antes mesmo de se fazer os diagramas de use-case, quando estamos fazendo diagramas UML para desenvolvimento (caso não saiba o que é UML, acesse o link: http://www.eps.ufsc.br/~wolff/oqueuml.htm . Encontrei lá informações interessantes para quem está iniciando nesta área).
Em seguida temos a modelagem dos dados.
O fluxo de informações definido anteriormente é transformado em um conjunto de objetos que serão necessários para desenvolvermos a aplicação.
Os atributos de cada objeto são identificados e as relações entre esses objetos são definidas. (Ainda é anterior ao Use Case... é como se estivessemos definindo os atores e os use cases, sem definir a relação entre eles)
A próxima etapa é a modelagem do processo e aqui usaremos os objetos definidos na fase anterior, transformando-os para conseguir o fluxo de informação necessário para implementar uma função do negócio.
(Aqui monta-se propriamente o use case view)
Depois de modelado o sistema, a geração da aplicação parte para técnicas orientadas a objeto (Para a nossa felicidade, a versão 5 do PHP está bem melhor nesse sentido, oferecendo um suporte muito interessante nesta área).
Ao invés de usar linguagens procedimentais, o RAD usa linguagens de 4ª geração.
Como seu desenvolvimento é feito para reutilizar o máximo possível de componentes, durante todo o processo de desenvolvimento temos a "quebra" do sistema em partes menores e especializadas.
Para não ficar muito abstrato isso, imagine que ao invés de termos um arquivo PHP com toda a codificação, separaremos cada parte do sistema em arquivos que poderão ser reaproveitados em outras aplicações sem que se altere uma linha de código da maioria desses arquivos.
A eficiência no desenvolvimento uma garantia de redução de erros se dá pelo fato do processo RAD ter foco nos componentes e por isso muitos dos componentes já terem sido testados.
Isso reduz o tempo total gasto com testes (Porém novos componentes devem ser testados e as interfaces exaustivamente exercitadas).
Se uma aplicação comercial pode ser modularizada de modo a permitir que cada função principal possa ser completada em menos de 3 meses usando a abordagem de prototipagem por exemplo, ela é candidata ao RAD. Cada função pode ser tratada por uma equipe RAD distinta e depois integrada para formar um todo.
DESVANTAGENS:
1) Para projetos grandes (mensuráveis) o RAD exige muitos recursos humanos.
2) Exige desenvolvedores e clientes compromissados com atividades contínuas e rápidas. Se não houver esse comprometimento, os projetos falharão.
3) Nem todos os tipos de aplicações são apropriadas para o RAD. Se o sistema não puder ser adequadamente modularizado, a construção dos componentes será problemática. Se for preciso um desempenho superior e esse desempenho seja conseguido com o ajuste dos componentes, a abordagem RAD pode não funcionar.
4) Quando riscos técnicos forem elevados, o RAD não é adequado (ex.: uso de uma tecnologia nova ou quando exige comunicação com outros programas).
Observação
De fato, no PHP tínhamos uma certa restrição quanto ao desenvolvimento de objetos (apesar de que, sempre procurei desenvolver classes e há muitos programadores por aí que também simpatizam com essa idéia justamente pela questão do reaproveitamento de código), porém agora estamos bem munidos com a versão 5 do PHP.
Se por ventura você está começando e não consegue entender a idéia de orientação a objetos, aconselho a começar pesquisar esse assunto pois a idéia é muito interessante e é uma tendência irreversível e inevitável, principalmente para aqueles que desejam trabalhar profissionalmente com programação.
[]s e até o próximo artigo! =)
OI galera,
tem um site com muito material de orientação a objetos que pode ajudar, é o www.mundooo.com.br, ele é voltado para o pessoal de Java, mas tenho certeza que você vai achar muita coisa interessante.
Gustavo, parabéns pelo artigo!
Até
tem um site com muito material de orientação a objetos que pode ajudar, é o www.mundooo.com.br, ele é voltado para o pessoal de Java, mas tenho certeza que você vai achar muita coisa interessante.
Gustavo, parabéns pelo artigo!
Até
08/10/2004 2:03pm
(~20 anos atrás)
Existe sim, mas na realidade eu não utilizei a fundo. Codecharger é o nome.
Para quem achou interessante essa abordagem vale a pena investir pois pela pequena olhada que dei nessa ferramenta, o tempo de desenvolvimento realmente cai muito!
Ps.: Ela não serve apenas para PHP. Você pode fazer projetos em ASP, ColdFusion, C#, Java... Vai da sua necessidade.
>>>>Resposta à<<<<
Gustavo, por acaso existe alguma ferramenta RAD que trabalhe com PHP como se fosse o Delphi ou VB?
>>>>
Para quem achou interessante essa abordagem vale a pena investir pois pela pequena olhada que dei nessa ferramenta, o tempo de desenvolvimento realmente cai muito!
Ps.: Ela não serve apenas para PHP. Você pode fazer projetos em ASP, ColdFusion, C#, Java... Vai da sua necessidade.
>>>>Resposta à<<<<
Gustavo, por acaso existe alguma ferramenta RAD que trabalhe com PHP como se fosse o Delphi ou VB?
>>>>
26/08/2004 9:41pm
(~20 anos atrás)
Valew pela ajuda pessoal!
Leandro, se eu achar algo interessante te mando sim! E se quiser me mandar: thiagomt@yahoo.com
Leandro, se eu achar algo interessante te mando sim! E se quiser me mandar: thiagomt@yahoo.com
26/08/2004 4:05pm
(~20 anos atrás)
Gustavo, por acaso existe alguma ferramenta RAD que trabalhe com PHP como se fosse o Delphi ou VB?
25/08/2004 10:09pm
(~20 anos atrás)
para quem esta interessado em aprender UML segue um link bem interessante http://www.oodesign.com.br , no forum na parte "Links e Material de Apoio" tem bastante coisa util , além do site em si ser bem util :D
Abraços
Abraços
25/08/2004 8:07am
(~20 anos atrás)
Thiago tmb to iniciando o OOP encontrei uma apostila PHP5, Orientação a Objetos e Design Patterns, por Pablo Dall'Oglio (pablo@php.net) bem completa se quizer baixar pego do meu ftp:
http://www.maniezo.com.br/site/arq/php5.pdf
Se encontrar algum material legal me encaminhe tmb por favor webmaster@maniezo.com.br
Grato
http://www.maniezo.com.br/site/arq/php5.pdf
Se encontrar algum material legal me encaminhe tmb por favor webmaster@maniezo.com.br
Grato
24/08/2004 3:49pm
(~20 anos atrás)
Cara, esses dias encontrei um site muito bacana sobre orientação a objetos...
http://jacques.dsc.ufcg.edu.br/cursos/
O problema que o enfoque é para Java. No nosso caso não seria o mais interessante (apesar de ser uma linguagem mais conceituada no mercado do que o PHP).
Mas não é difícil encontrar material sobre orientação a objetos. Aquele endereço mesmo que citei no artigo é uma boa introdução à orientação a objetos.
No caso de encontrar algo específico para PHP, consulte www.php.net. Acesse a parte de documentação (há manual em português).
Há um item específico para tratar desse assunto.
Mas não procure esse manual como forma de entender orientação a objetos. Ele apenas servirá para vc saber como usar O.O. no PHP.
Como disse, um bom começo é usar o link desse artigo e fazer a relação com o manual do PHP.
Se vc estiver achando muito complicado ou que há dúvidas que você ainda não encontrou resposta, dá um toque que eu te explico.
Aqui no PHPBrasil há alguns artigos que tratam especificamente desse tema.
[]s,
Gustavo.
http://jacques.dsc.ufcg.edu.br/cursos/
O problema que o enfoque é para Java. No nosso caso não seria o mais interessante (apesar de ser uma linguagem mais conceituada no mercado do que o PHP).
Mas não é difícil encontrar material sobre orientação a objetos. Aquele endereço mesmo que citei no artigo é uma boa introdução à orientação a objetos.
No caso de encontrar algo específico para PHP, consulte www.php.net. Acesse a parte de documentação (há manual em português).
Há um item específico para tratar desse assunto.
Mas não procure esse manual como forma de entender orientação a objetos. Ele apenas servirá para vc saber como usar O.O. no PHP.
Como disse, um bom começo é usar o link desse artigo e fazer a relação com o manual do PHP.
Se vc estiver achando muito complicado ou que há dúvidas que você ainda não encontrou resposta, dá um toque que eu te explico.
Aqui no PHPBrasil há alguns artigos que tratam especificamente desse tema.
[]s,
Gustavo.
23/08/2004 5:44pm
(~20 anos atrás)
Atualizaremos! Valeu pela dica Gustavo, já providenciei a compra do livro.
Será que você ou alguém que estiver lendo poderia indicar conteúdo mais específico sobre orientação a objetos com PHP? Se for na net, melhor ainda, porque o orçamento tá curto.
[]s
Será que você ou alguém que estiver lendo poderia indicar conteúdo mais específico sobre orientação a objetos com PHP? Se for na net, melhor ainda, porque o orçamento tá curto.
[]s
23/08/2004 9:52am
(~20 anos atrás)
Olha só... tem o livro "UML: Guia do Usuário" que é bem completo. Foi criado pelos criadores desse padrão.
A UML é uma forma de você planejar a arquitetura de seu sistema, com foco orientado a objeto.
Como já disse no artigo, é MUITO importante ter os conceitos de orientação a objetos pois cada vez mais ele se torna pré-requisito para contratações em empresas.
Com toda certeza, posso dizer que a importância da Orientação a Objetos é semelhante ao inglês...
...as coporações não abrem mão. Já não é mais critério de desempate... é critério de eliminação mesmo. Ainda mais nesse mercado onde a concorrência por uma vaga na área cresce a cada dia.
Fica a dica:
"Quer sobreviver no meio dos leões"? Atualize-se sempre!
[]s
A UML é uma forma de você planejar a arquitetura de seu sistema, com foco orientado a objeto.
Como já disse no artigo, é MUITO importante ter os conceitos de orientação a objetos pois cada vez mais ele se torna pré-requisito para contratações em empresas.
Com toda certeza, posso dizer que a importância da Orientação a Objetos é semelhante ao inglês...
...as coporações não abrem mão. Já não é mais critério de desempate... é critério de eliminação mesmo. Ainda mais nesse mercado onde a concorrência por uma vaga na área cresce a cada dia.
Fica a dica:
"Quer sobreviver no meio dos leões"? Atualize-se sempre!
[]s
22/08/2004 11:19pm
(~20 anos atrás)
Para um exemplo e sabemos que tu conhece legal, muitos módulos existentes do XOOPS são possivéis de ser portados para outras finalidades com muita facilidade pois a maioria do código é objeto e 90% é reutilizavel...
Parabéns :-)