Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Resumo O desenvolvimento de software passou por sensvel melhora com o crescimento da Engenharia de Software. O primeiro processo formal estabelecido foi o Cascata, que significou um salto qualitativo para o desenvolvimento de software. Atualmente, h processos de desenvolvimento de software melhores que o processo Cascata, mas este continua sendo o mais utilizado, pois a mudana exige adaptaes na forma de trabalho e na cultura das empresas.
2. Processos Cascata
O primeiro processo criado foi o modelo Cascata (ou waterfall). Esse processo estabeleceu um ciclo de vida bsico para o desenvolvimento de um software. Esse ciclo formado por etapas que dividem o trabalho de
desenvolvimento de software em etapas claras, conforme demonstrado na figura 1. Isso trouxe alguma organizao para as equipes de desenvolvimento e, tambm, para os usurios, que passaram a ter que definir melhor suas solicitaes, antes de ver iniciado o trabalho de codificao de programas. O ciclo de vida Cascata bastante utilizado atualmente e, apesar de ter ajudado muito a organizar o desenvolvimento de software, traz consigo uma srie de problemas.
a) Os projetos raramente seguem o fluxo seqencial, gerando, por vezes, iteraes; b) muito difcil para o cliente declarar todas as suas necessidades corretamente e de forma clara logo no incio do projeto; c) Decorre muito tempo entre o incio do projeto e a disponibilizao de uma primeira verso minimamente utilizvel do sistema (durante esse perodo, os requisitos podem sofrer modificaes ou mesmo deixar de fazer sentido); d) O risco de insucesso alto, visto que, se um erro de grande impacto for cometido e no detectado, provavelmente s ser descoberto muito tarde - o que pode ser desastroso para o projeto.
O ciclo Cascata presume que o projeto ter uma seqncia correta, sem desvios e sem problemas. Nesse ponto, temos outra grande deficincia dele: no considera riscos que podem impactar negativamente e at mesmo inviabilizar o projeto.
3.1. Requisitos
Dos motivos destacados por Pressman, o maior foco est no tratamento de requisitos. Sobre isso, Sommerville (2003) destaca que os acordos com os clientes devem ser feitos em um estgio inicial do processo de desenvolvimento em que, geralmente, os requisitos so desconhecidos ou no so claros. Quando esses requisitos so alterados posteriormente, causam impacto negativo no produto de software, que deve ser refeito, ao menos em parte. Assim, Sommerville aconselha a s utilizar esse modelo quando os requisitos forem bem compreendidos. Embora o ciclo de vida Cascata constitua uma abordagem melhor que a abordagem casual (abordagem livre, antes da Engenharia de Software), a
forma altamente dinmica como se desenvolve software exige um processo mais gil e dinmico.
desenvolvimento). A figura 2 ilustra essas etapas. O centro da figura assinala o incio do desenvolvimento. medida que o desenvolvimento ocorre, caminha-se, na espiral, para sua parte mais externa, passando pelas disciplinas de desenvolvimento vrias vezes. O efeito dessa forma de trabalho so entregas parciais de software para o cliente, em vez de uma entrega nica ao final do processo.
Essa diviso do desenvolvimento em pequenos pacotes, como se fossem subprojetos, uma boa alternativa ao problema com requisitos, que so tratados (capturados, especificados e validados) em vrios estgios e no em um estgio nico, permitindo revises do usurio medida que o desenvolvimento avana. Certamente, mais fcil para todos vislumbrar os requisitos medida que o projeto ganha maturidade. Nesse modelo, no necessrio detalhar todos os requisitos no incio do desenvolvimento. So identificados os pontos principais e separados em pacotes de trabalho. Aps a priorizao dos pacotes, apenas o primeiro ser detalhado e desenvolvido. Aps a entrega deste, os prximos, um por vez, tero seus requisitos detalhados e sero desenvolvidos. O candidato mais forte a primeiro pacote a ser desenvolvido aquele que contm a funcionalidade principal do sistema com seus cadastros bsicos. Por exemplo, em um sistema de informaes comerciais, a essncia
registrar o pedido do cliente. Consultas, relatrios, clculos estatsticos e contabilizaes, ficam para um momento posterior. Isso tem uma lgica: se o primeiro pacote tiver sucesso, os demais que dependem dele tero grandes chances de serem bem sucedidos, pois partem de uma base slida. Se esse primeiro pacote no estiver bom o suficiente, possvel corrigi-lo e aperfeio-lo antes de iniciar o desenvolvimento dos demais (caso contrrio, os problemas com ele seriam propagados para os demais pacotes do sistema e, muitas vezes, podendo potencializar os problemas).
O Processo Unificado o mais famoso entre os Iterativo-Incrementais. Esse processo de desenvolvimento de software divide seu trabalho em Fases e Disciplinas, como em uma matriz. A figura 3 demonstra as fases (no topo, na horizontal) e as disciplinas (coluna esquerda, na vertical) do processo Unificado. FASES
Concepo Elaborao
D I S C I P L I N A S
Construo
Transio
O grfico do Processo Unificado exibido na figura 3 traz uma sugesto de iteraes por fase, mas h de se destacar que esse nmero no absoluto. Dependendo do porte e complexidade do projeto, a quantidade de iteraes dentro de cada fase pode aumentar ou diminuir. Em um projeto muito pequeno, por exemplo, as fases de Concepo e de Elaborao podem constituir uma nica iterao. J em um projeto muito grande ou complexo, a fase de Construo poderia ter cinco iteraes.
Requisito:Disciplina
Implementao :Disciplina
Teste:Disciplina
Implantao:Disciplina
A figura 4 demonstra a seqncia do esforo em um projeto por meio de fases e disciplinas. As setas na vertical indicam a seqncia. Uma fase executada quando a anterior concluda. O objetivo entregar pacotes de software mais constantemente para os usurios, no acumulando toda a entrega para o final.
Caracterstica S
aps vezes,
que
incremental
Fluxo de Trabalho
para trs por meio das fases, para mudar o foco e envolver vrias disciplinas, a fim de enderear o risco.
No
oportunidades claras para para entregas parciais de um entregas parciais de um sistema Reao s Mudanas sistema ou para a iterao, ao final de uma a no
permitindo de mudanas
dentro do ciclo de vida. , ciclo de vida ao final de uma portanto, mudanas. reativa a iterao e antes da prxima. , portanto, proativa a mudanas.
sobre o produto de software que receberam. No processo Cascata, esse feedback s aconteceria tardiamente, quando os usurios tivessem contato com o software, ou seja, de maneira parcial, na fase de testes, e, total, na entrega final. Essa caracterstica confere uma srie de vantagens ao processo Iterativo sobre o Processo Cascata. So elas: Antecipa mudanas; Controla riscos; Foca o desenvolvimento no produto do cliente; Aumenta a qualidade do produto final.
Custo
Tempo
Quanto mais tardia a correo for disparada, maior ser o retrabalho e, inevitavelmente, maior o custo da correo. A figura 5 mostra um esboo do
aumento do custo para se efetuarem alteraes no software ao longo do tempo em que o sistema est sendo desenvolvido. As mudanas devem vir o quanto antes no projeto. Em um processo Iterativo, a captura dos requerimentos feita parcialmente, a cada iterao. comum que os clientes solicitem alteraes ou inspirem-se com novas idias, quando se entregam verses de software (ainda que reduzidas). No momento em que o usurio recebe parte da soluo, comea a vislumbrar algumas funcionalidades que no havia considerado anteriormente. Assim, conforme Kroll, 2001, devem-se encorajar as mudanas, pois a abordagem iterativa foi otimizada exatamente para isso. Entretanto, essas transformaes devem ser gerenciadas para que aconteam no tempo adequado.
A figura 6 mostra dois grficos comparando a reduo do risco ao longo do processo de desenvolvimento para os modelos Cascata e Iterativo.
Desenvolvimento Cascata
Cascata X Iterativo
No Ciclo de Vida Cascata, no se pode verificar se um risco est claro at um ponto tardio do Ciclo de Vida. Assim, no primeiro grfico da figura 6, o risco s comea a cair quando se chega fase de testes do sistema.
J no segundo grfico da figura 6, a curva de riscos do Cascata est comparada com a curva do Ciclo de Vida Iterativo, que mostra queda do risco bem mais acentuada que no processo Cascata, devido s entregas parciais e s constantes reavaliaes da lista de riscos do projeto. As entregas parciais de funcionalidades permitem o feedback dos usurios e as correes, se houver. Isso aumenta a chance de sucesso do projeto. No processo Iterativo, a cada iterao, deve-se fazer uma pausa e considerar quais so os riscos envolvidos naquele momento e nas etapas seguintes. Quanto mais se antecipam os riscos, menor a chance de sua ocorrncia. Nesse processo, podemos selecionar qual incremento desenvolver em uma iterao a partir de uma lista de riscos-chave. Como cada iterao produz um executvel testvel, possvel verificar se o risco foi mitigado ou no, e se ele foi ou no bem aceito pelo cliente. Os riscos so mais bem tratados no processo Iterativo, pois so revistos a cada iterao.
geralmente, no mudam, de forma radical, de um processo para outro. A idia, aqui, gerar o menor nmero possvel de artefatos intermedirios, ou seja, direcionar o mximo de esforo para o artefato principal: o produto de software que ser entregue ao usurio. Alguns artefatos podem ser estrategicamente indispensveis durante o desenvolvimento de um projeto, mas, para qualquer projeto, devemos nos
esforar para reduzir o nmero de artefatos produzidos a fim de reduzir o desperdcio. (KROLL, 2001). Focar os esforos no produto final reduz o desperdcio do projeto. O foco no software executvel, conforme Kent Beck (2000) a melhor forma de verificar como est o andamento do projeto e de se manter concentrado em entregar ao cliente o que realmente ele necessita, direcionando menos esforo para outras atividades acessrias.
Alm disso, a aplicao de modelos espirais exige treinamento e mudana cultural. Deve haver sinergia muito maior entre os que usam e os que desenvolvem do que se costuma ter (o processo Cascata tambm exige isso, mas, no modelo Iterativo, essencial). Para utilizao de um processo iterativo, os usurios devem ter grande confiana naqueles que desenvolvem, a comunicao deve ser intensa e o projeto deve ter uma gerncia capaz de controlar as caractersticas de um projeto iterativo (essa gerncia, por si s, um captulo parte). Se a gerncia do projeto no for adequada, corre-se o risco de perder o foco das iteraes, gerando-se iteraes desnecessrias, em nome do refinamento incremental -o que prolongaria, em demasia, o projeto e, a sim, consumiria muito mais tempo e oramento do que o planejado. No processo Iterativo, importante no perder o foco do trabalho a realizar. Aumentos de escopo devem ser tratados e aprovados devidamente, aliados com os ajustes nas previses de custo e prazo. Todavia, o fator cultural ainda o preponderante. A inrcia dos processos instalados nas empresas traz resistncia s mudanas. O conceito popularmente conhecido como eu sempre fiz desse jeito mostra o quanto difcil convencer algum a mudar. Nesses casos, a mudana cultural deve vir de cima, patrocinada pelo alto escalo da empresa, que deve ser convencido de que o novo modo de trabalho vantajoso.
Concluso
Apesar de suas deficincias, o modelo Cascata de fcil compreenso para os que usam e para os que desenvolvem e, se for bem trabalhado, pode trazer, ainda, resultados muito satisfatrios para a empresa. Mesmo com tantas vantagens, os modelos Iterativos no permitem aplicao imediata sem treinamento e aculturao prvios. Deve haver grande entrosamento das partes envolvidas e necessrio que esteja muito
claro para todos a nova forma de trabalho. Se isso no estiver bem entendido, o projeto tende ao fracasso. Nesse caso, melhor a utilizao do tradicional processo Cascata. Considerado esse panorama, vale a pena aprofundar o conhecimento sobre os processos iterativos, investindo tempo para conhec-lo e empreglo em projetos-piloto, visto que suas vantagens so bastante considerveis.