Processo de Desenvolvimento de Software
Processo de Desenvolvimento de Software
Processo de Desenvolvimento de Software
Mdulo 01 - Introduo
Os computadores se tornaram elementos chaves em nossas vidas. Aos poucos, assumiram muitas das
funes que nos afetam de maneira decisiva. Hoje eles controlam a maioria das transaes monetrias,
linhas de produo, transporte, comunicao, sistemas de defesa, sistemas de controle de processo
etc.
o software que d vida a eles. Quando precisam desempenhar um papel to importante, uma
pequena falha tanto no hardware quanto no software pode levar a consequncias desastrosas.
Infelizmente, embora haja processos bem definidos, baseados em fundamentos tericos para garantir
a confiabilidade do hardware, no se pode dizer a mesma coisa sobre software.
Embora ainda no exista uma teoria para desenvolvimento de software, necessrio que o ele se
comporte de maneira previsvel, mesmo em situaes imprevistas. Por essa razo, existe uma
necessidade de gerenciar seu desenvolvimento por meio de um processo bem definido e sistemtico.
A antiga abordagem "codificar e testar" (code & test) no ser suficiente. Ela pode ser boa para
problemas mais simples. No entanto, o software precisa ser projetado de forma a lidar com situaes
extremamente complexas.
Esforo de Equipe
Qualquer esforo para o desenvolvimento de softwares exige uma equipe de especialistas. Por
exemplo, a equipe pode ser composta por especialistas em domnios, projetos, codificao, testes
e hardware.
Cada grupo de especialistas deve se concentrar em um aspecto especfico do problema e
apresentar uma soluo adequada. No entanto, nenhum grupo pode trabalhar isoladamente, pois
a interao entre os membros das equipes importantssima.
Metodologia
Existem dois tipos de metodologias de desenvolvimento:
Voltada ao procedimento
Voltada ao objeto
Embora, teoricamente, ambas possam ser usadas em qualquer situao de problema, uma delas
deve ser selecionada antecipadamente.
Documentao
Uma documentao clara, objetiva e precisa dos componentes do processo de desenvolvimento,
crucial para o sucesso de qualquer projeto de software.
CURSO PROCESSO DE DESENVOLVIMENTO DE SOFTWARE 2
Comunicao verbal e desenhos do pacote no so suficientes para se entender tal processo. Por
exemplo, a documentao essencial para a aprovao do cliente em vrias etapas do processo.
Uma vez desenvolvido, o software cria vida. Entretanto, durante sua vida, ele passar por vrias
mudanas e uma documentao bem-feita essencial para a realizao dessas alteraes de
forma mais eficaz.
Planejamento
Assim que o desenvolvimento do software ocorrer de acordo com os requisitos especificados pelo
cliente, necessrio que todo o esforo seja adequadamente estimado para atender as restries
de prazo e custo.
Garantia de Qualidade
Os clientes esperam retorno financeiro com a implantao do software.
Alm de atender s necessidades do cliente, o software deve, necessariamente, atender aos
padres de qualidade que podem ser em relao a desempenho, segurana etc.
Usurios Leigos
Usurios leigos so aqueles que no dominam computao, portanto, o software deve ter uma
interface grfica que favorea seu manuseio.
Ferramentas de Software
A documentao importante para um projeto de desenvolvimento de software, mas uma
tarefa onerosa e muitos desenvolvedores desistem de faz-la.
Existem ferramentas que so conhecidas como ferramentas de Engenharia de Software Assistida
por Computador (Computer Aided Software Engineering CASE) que simplificam o processo da
documentao.
Reutilizao
O esforo de desenvolvimento pode ser otimizado, reutilizando-se componentes j testados,
como por exemplo, bibliotecas matemticas, kits de ferramentas de interface grficas etc.
Manuteno de Software
Todo software precisa ser modificado periodicamente, de acordo com as solicitaes dos clientes
e do uso de novas tecnologias.
A equipe de desenvolvimento pode no estar disponvel para realizar a manuteno do pacote.
Portanto, uma equipe de suporte dever ser reunida, sempre que necessrio, para garantir que o
software continue a fornecer os servios necessrios.
CURSO PROCESSO DE DESENVOLVIMENTO DE SOFTWARE 3
Gerenciamento de Alteraes
Sempre que uma alterao deva ser realizada, necessrio estudar seu impacto sobre os vrios
componentes do software.
Por exemplo, ao modificar o tipo da varivel denominada Global, toda funo que utiliz-la ser
impactada e, a menos que se tome cuidado para minimizar esse efeito, o software poder ter seu
desempenho comprometido.
Controle de Verso
O software est propenso a frequentes alteraes durante seu desenvolvimento. Portanto,
importante que o usurio obtenha a verso mais recente.
No caso de falhas, ser possvel recorrer s verses anteriores.
Gerenciamento de Riscos
Todo esforo de desenvolvimento de software est sujeito a riscos. Por exemplo,
indisponibilidade de especialistas, tecnologia, recursos etc.
necessrio, portanto, avaliar constantemente os riscos e criar medidas para reduzi-los.
Adequao ao propsito
Zero defeito
Conformidade e segurana
Atendimento necessidade definida e implcita do cliente
Alguns dos atributos importantes que podem ser usados para medir a qualidade do software so:
Preciso
O software deve atender s necessidades do cliente.
Confiabilidade
O software deve se comportar sempre de maneira previsvel, mesmo quando entradas
equivocadas/aleatrias so dadas.
Usabilidade
Facilidade para se usar. Um software com uma boa interface grfica, deixa o usurio mais
vontade para utiliz-lo.
Portabilidade
A facilidade com a qual um software pode ser movido de uma plataforma para outra.
Eficincia
CURSO PROCESSO DE DESENVOLVIMENTO DE SOFTWARE 4
Manuteno
Facilidade com a qual o software pode ser modificado.
Flexibilidade
Facilidade com a qual o software pode ser adaptado para uso em diferentes contextos.
Segurana
Preveno de acesso no autorizado.
Interoperabilidade
A capacidade de integrao do software com sistemas existentes.
Desempenho
A capacidade do software de fornecer os resultados com diferentes restries como tempo,
preciso, uso de memria.
Um software deve ser preciso, mesmo que outros atributos possam ser vlidos em graus que variam.
Por exemplo, um aplicativo no fundamental pode deixar de garantir 100% de confiabilidade, como
um processador de texto. J para um sistema de monitoramento de sade, 100% de preciso
necessria.
Deve-se ter em mente, ainda, que alguns dos atributos conflitam entre si, por exemplo, portabilidade
e eficincia.
Comece a ler a passagem na figura abaixo. Conforme voc a l, conte as ocorrncias da letra 'F'.
Uma vez terminada a leitura, coloque a quantidade de ocorrncias na caixa.
CURSO PROCESSO DE DESENVOLVIMENTO DE SOFTWARE 5
Comece a ler a primeira linha da passagem, contando as ocorrncias da letra F na referida linha e
insira a quantidade de ocorrncias na caixa posicionada no final da linha. Repita esse processo para
todas as linhas.
Finalmente, some todas as contagens das linhas e insira o total na caixa de resultado.
No segundo caso, alegamos que o processo repetvel porque o mesmo usado para todas as linhas,
podendo ser usado em situaes similares. Ele tambm mensurvel porque possvel parar a
contagem em qualquer ponto e descobrir o quanto trabalho foi concludo e quanto ainda precisa ser
feito.
Assim, temos que um processo uma srie de tarefas definveis, repetveis e mensurveis que levam
a um resultado til.
Para definir um processo, como o ilustrado abaixo, os seguintes passos devem ser seguidos:
Considerando que VERIFICAR significa checar se a tarefa foi executada corretamente, VALIDAR significa
checar se a tarefa correta foi executada.
Anlise
Nesta fase, as necessidades do usurio so reunidas e convertidas em requisitos de software. Por
exemplo, se o usurio precisa gerar a trajetria de um mssil, um requisito de software resolver
as equaes regentes. Essa fase deve responder pergunta: O que precisa ser feito para atender
s necessidades do usurio?
Projeto
Esta fase responde pergunta: O que precisa ser feito para atender s necessidades do usurio?
Com relao ao exemplo anterior, o projeto consiste na tomada de decises sobre o algoritmo a
ser usado para solucionar as equaes regentes. Essa escolha depende dos objetivos do projeto,
como tempo de execuo, preciso etc. Nessa fase ns decidimos sobre a organizao dos vrios
mdulos do sistema de software.
Construo
Codificao e teste do mdulo so as principais atividades nesta fase.
Teste
CURSO PROCESSO DE DESENVOLVIMENTO DE SOFTWARE 7
Implementao
Esta fase consiste em entregar o software aos clientes (de instalao e operacionalizao).
Sequencial
Interativo
Modelo sequencial
Tambm conhecido como modelo cascata (ou cachoeira), pode ser exibido de forma ilustrativa,
como se v na imagem abaixo:
Ele representa o processo de desenvolvimento como uma sequncia de fases, exigindo que uma
fase especfica seja concluda antes da prxima ser iniciada.
Devido ao reconhecimento de fases e sequenciamento, ele ajuda na finalizao do contrato com
referncia a entrega e planos de pagamento.
CURSO PROCESSO DE DESENVOLVIMENTO DE SOFTWARE 8
Na prtica, difcil usar este modelo como ele , devido incerteza nos requisitos de software, que
a priori, so difceis de prever.
Se um erro no entendimento dos requisitos for detectado durante a fase de codificao, o
processo todo dever ser reiniciado. Uma verso de trabalho do software no estar disponvel
at o final do ciclo de vida do projeto. Logo, a iterao dentro de uma fase e entre fases uma
necessidade.
Prototipagem
A prototipagem discutida na literatura como uma abordagem separada do desenvolvimento de
software. Como o nome sugere, exige que uma verso de trabalho do software seja desenvolvida
logo no incio de projeto. Existem dois tipos de prototipagem, so eles:
o Prottipo descartvel
O objetivo do prottipo descartvel entender os requisitos e as melhores metodologias de
soluo. A essncia velocidade. Desta forma, recorre-se a uma abordagem de
desenvolvimento rpida e especfica sem nfase na qualidade. semelhante ao codificar e
testar. No entanto, uma vez tendo atingido o objetivo, o cdigo descartado e um novo
desenvolvimento iniciado, garantindo que os padres de qualidade sejam atendidos. Uma
vez bem entendidos os requisitos, pode-se usar a abordagem sequencial.
o Prottipo evolutivo
No prottipo evolutivo, os requisitos so priorizados e o cdigo desenvolvido inicialmente
para os mais importantes, sempre com foco na qualidade. O software constantemente
refinado em forte colaborao com o cliente.
Finalmente, a principal vantagem dos prottipos est no fato de que o cliente consegue ter uma
viso do produto logo no incio do ciclo de vida do projeto.
Como podemos ver, a prototipagem evolucionria um modelo iterativo. Um modelo como esse
pode ser caracterizado por fazer anlise mnima, projeto, cdigo, teste e por repetir o ciclo at a
concluso do produto.
Modelo Espiral
Barry Boehm sugeriu um modelo iterativo chamado Modelo Espiral. como uma estrutura que
precisa ser adaptada a projetos especficos.
Ele permite a melhor combinao de vrias abordagens e se concentra na eliminao antecipada
de erros e alternativas inviveis. Uma caracterstica importante deste modelo , no entanto, a
nfase em anlise de risco.
Uma vez identificados os objetivos, alternativas e restries de uma fase, os riscos envolvidos na
sua execuo so avaliados, resultando em uma deciso "ir, no ir".
Para fins de avaliao, se pode usar prototipagem, simulaes etc. Esse modelo mais adequado
para projetos que envolvam o desenvolvimento de novas tecnologias. Especializao em anlise
de risco mais importante para esses projetos.
Veja na ilustrao a seguir.
CURSO PROCESSO DE DESENVOLVIMENTO DE SOFTWARE 9
Modelo ETVX
A IBM lanou o modelo ETVX (durante os anos 80) para documentar seus processos. E so os
critrios de entrada que precisam ser satisfeitos antes da execuo de um conjunto de tarefas, T
o conjunto de tarefas a serem executadas, V o processo de verificao para garantir que as
tarefas sejam executadas corretamente e X so os critrios de sada ou os resultados das tarefas.
Se uma atividade falhar na checagem de verificao, uma ao corretiva tomada ou um
retrabalho solicitado. Esse modelo pode ser usado em qualquer processo de desenvolvimento.
Cada fase no processo pode ser considerada como uma atividade e estruturada usando o modelo
ETVX. Se necessrio, as tarefas podem ser subdivididas.
japonesa que ocorreu na dcada de 80. Ela se baseia nos seguintes princpios do pensamento
enxuto:
Eliminar desperdcios
Ampliar o aprendizado
Decidir o mais tarde possvel
Entregar o mais rpido possvel
Capacitar a equipe
Construir a integridade
Enxergar o todo
o PROGRAMAO EXTREME (EXTREME PROGRAMMING XP): esta metodologia
provavelmente a mais popular entre as metodologias geis. Ela se baseia em trs princpios
importantes: testar primeiro, reestruturar continuamente e programar em par.
Um dos conceitos mais importantes popularizados pela Programao Extreme (XP) a
programao em par. O cdigo sempre desenvolvido em pares. Enquanto uma pessoa insere
o cdigo, a outra revisa. Este site dedicado programao em par. O trabalho por Laurie
Williams et al., demonstra a eficcia da programao em par.
Estas so apenas diretrizes. Muitas organizaes escolhem um modelo e o adaptam s suas exigncias
de negcios. Por exemplo, algumas organizaes usam o modelo Cachoeira modificado para incluir
iteraes dentro de fases.
Concluso
A lio mais importante deste curso a de que o desenvolvimento de software deve seguir um
processo disciplinado. A escolha do processo, no entanto, depender da estabilidade dos requisitos,
da integralidade dos requisitos, dos processos de negcios adjacentes, da estrutura organizacional e
do ambiente de negcios prevalecente.
CURSO PROCESSO DE DESENVOLVIMENTO DE SOFTWARE 12
Referncias