Professional Documents
Culture Documents
Manuteno de Software:
problemas tpicos e diretrizes
para uma disciplina especfica
USP So Carlos
Junho/2007
21/05/2007
vi
vii
AGRADECIMENTOS
A Deus, em primeiro lugar, pela sade, inteligncia e por ter me colocado ao lado das
pessoas certas para ajudarem-me neste trabalho.
Aos meus pais, Srgio e Diva, exemplos de persistncia, trabalho e honestidade, por
todo o carinho e ateno que sempre me dedicaram. Eles representam o foco de minha
inspirao conduzindo-me por todas as conquistas e realizaes. Aos meus irmos,
verdadeiros amigos, por todo o apoio nos momentos em que necessitei. Aos meus avs e avs
pelo exemplo de vida e perseverana.
A Rosely Sanches, professora, orientadora e acima de tudo amiga pela confiana
depositada em mim e por fazer-me acreditar em minha capacidade. Tambm pelas suas
assistncias, orientaes e contribuies durante todas as atividades desta pesquisa.
E a todos que, de alguma forma, contriburam para essa minha vitria.
Muito Obrigado!
viii
ix
xi
RESUMO
xii
xiii
ABSTRACT
xiv
xv
SUMRIO
.
1. INTRODUO ................................................................................................................................. 21
1.1 CONTEXTO E MOTIVAO .............................................................................................................. 21
1.2 OBJETIVOS ................................................................................................................................... 23
1.3 ORGANIZAO DO TRABALHO ........................................................................................................ 25
2. MANUTENO DE SOFTWARE .................................................................................................... 27
2.1 CONSIDERAES INICIAIS.............................................................................................................. 27
2.2 ATIVIDADE DE MANUTENO DE SOFTWARE ................................................................................... 27
2.2.1 Definies ........................................................................................................................... 28
2.2.2 Evoluo de Software......................................................................................................... 30
2.2.3 Natureza e Caractersticas ................................................................................................. 33
2.2.4 Tipos de Manuteno ......................................................................................................... 34
2.2.5 Custos e Desafios............................................................................................................... 36
2.3 NORMA ISO/IEC 12207................................................................................................................ 37
2.4 SISTEMAS LEGADOS ..................................................................................................................... 41
2.4.1 Conceitos ............................................................................................................................ 42
2.4.2 Problemtica dos Sistemas Legados ................................................................................. 42
2.5 GERENCIAMENTO DE MANUTENO DE SOFTWARE ........................................................................ 44
2.6 HISTRICO DOS PROBLEMAS DE MANUTENO DE SOFTWARE ....................................................... 48
2.7 CONSIDERAES FINAIS ............................................................................................................... 52
3. ESTUDO DE CASO ......................................................................................................................... 53
3.1 CONSIDERAES INICIAIS.............................................................................................................. 53
3.2 DESCRIO DA ORGANIZAO ...................................................................................................... 53
3.3 DINMICA DE MANUTENO .......................................................................................................... 54
3.3.1 Registro de Manutenes................................................................................................... 54
3.3.2 Controle de Verses ........................................................................................................... 56
3.4 METODOLOGIA .............................................................................................................................. 58
3.4.1 Parte A Base de Dados ................................................................................................... 59
3.4.2 Parte B Questionrio e Entrevista ................................................................................... 59
3.5 ANLISE DOS DADOS COLETADOS ................................................................................................. 59
3.5.1 Estatsticas sobre a Base de Dados................................................................................... 60
3.5.2 Ambiente e Equipe de Manuteno ................................................................................... 63
3.6 PROBLEMAS IDENTIFICADOS .......................................................................................................... 64
3.7 CONCLUSES PARCIAIS ................................................................................................................ 64
4. PROBLEMAS DE MANUTENO DE SOFTWARE ...................................................................... 67
4.1 CONSIDERAES INICIAIS.............................................................................................................. 67
4.2 PROBLEMAS DO PASSADO VERSUS PROBLEMAS ATUAIS ................................................................. 67
4.3 PROBLEMAS DE MANUTENO PUBLICADOS .................................................................................. 68
4.4 RELACIONAMENTO ENTRE OS PROBLEMAS DE MANUTENO E OS GRUPOS DE PROCESSOS DA NORMA
ISO/IEC 12207 .................................................................................................................................. 70
xvi
4.5 CONSIDERAES FINAIS ............................................................................................................... 73
5. ALTERNATIVAS DE REDUO DOS PROBLEMAS DE MANUTENO DE SOFTWARE ...... 75
5.1 CONSIDERAES INICIAIS.............................................................................................................. 75
5.2 EXTENSO DO ESTUDO DE CASO ................................................................................................... 76
5.2.1 Metodologia ........................................................................................................................ 76
5.2.2 Solues Identificadas........................................................................................................ 76
5.2.3 Consideraes Gerais ........................................................................................................ 79
5.3 SOLUES COM BASE NA NORMA ISO/IEC 12207 ......................................................................... 80
5.3.1 Grupo de Processos de Engenharia .................................................................................. 83
5.3.2 Grupo de Processos de Operao ..................................................................................... 88
5.3.3 Grupo de Processos de Gerncia ...................................................................................... 89
5.3.4 Grupo de Processos de Recursos e Infra-estrutura........................................................... 97
5.3.5 Grupo de Processos de Gerncia de Configurao......................................................... 102
5.4 PROPOSTAS NA LITERATURA ....................................................................................................... 107
5.5 CONSIDERAES FINAIS ............................................................................................................. 108
6. CARACTERSTICAS DO ENSINO DE MANUTENO DE SOFTWARE ................................... 109
6.1
6.2
6.3
6.4
6.5
6.6
xvii
LISTA DE FIGURAS
.
FIGURA 1.1: MODELO GERAL DO DESENVOLVIMENTO DESTE TRABALHO..................................................... 23
FIGURA 2.1: FLUXO ENVOLVIDO NA MANUTENO DE SOFTWARE (ADAPTAO POLO ET AL. 1999)............. 29
FIGURA 2.2: CURVA DE ESFORO PARA MANUTENO DE SOFTWARE (ADAPTAO DE BHATT
ET AL. 2004) 33
FIGURA 2.3: CICLO DE VIDA DE MANUTENO DE SOFTWARE (ADAPTAO DE KUNG & HSU, 1998) ............ 34
FIGURA 2.4: ESTRUTURAO DA NORMA ISO/IEC 12207 ........................................................................ 38
FIGURA 2.5: PROCESSOS DO CICLO DE VIDA DA NORMA ISO/IEC 12207................................................... 38
FIGURA 2.6: ATIVIDADES DO PROCESSO DE MANUTENO DE SOFTWARE E SISTEMA (ISO/IEC 12207) ...... 40
FIGURA 2.7: ESTRUTURA DA ABORDAGEM CONSERTO RPIDO .................................................................. 46
FIGURA 2.8: ESTRUTURA DA ABORDAGEM MELHORIA INTERATIVA .............................................................. 46
FIGURA 2.9: ESTRUTURA DA ABORDAGEM REUSO TOTAL .......................................................................... 46
FIGURA 2.10: RELAO DE CAUSA ENTRE OS FATORES ENVOLVIDOS NA MANUTENO DE SOFTWARE .......... 51
FIGURA 3.1: ETAPAS ENVOLVIDAS NA SOLICITAO DE MANUTENES ...................................................... 55
FIGURA 3.2: PADRO DE NUMERAO DE VERSES ................................................................................. 57
FIGURA 3.3: LINHA DO TEMPO PARA DISPONIBILIZAO DE VERSES ......................................................... 58
FIGURA 3.4: TOTAL MENSAL DE SOLICITAES DE MANUTENO .............................................................. 60
FIGURA 3.5: DIAS NECESSRIOS PARA A CONCLUSO DE MANUTENES .................................................. 61
FIGURA 3.6: DISTRIBUIO DE PRIORIDADES DAS MANUTENES ............................................................. 61
FIGURA 3.7: DISTRIBUIO DOS PROBLEMAS ENTRE OS TIPOS DE MANUTENO ........................................ 62
FIGURA 3.8: TEMPO CONSUMIDO EM DESENVOLVIMENTO VERSUS EM MANUTENO .................................. 62
FIGURA 4.1: DISTRIBUIO DOS PROBLEMAS NOS GRUPOS DE PROCESSOS ............................................... 72
FIGURA 7.1: ESTRUTURA HIERRQUICA ADOTADA PARA OS ASSUNTOS DA DISCIPLINA .............................. 122
FIGURA 7.2: VISO GERAL DA ESTRUTURA DE MDULOS E TPICOS ........................................................ 136
xviii
xix
LISTA DE QUADROS
.
QUADRO 2.1: DEFINIES IEEE PARA AS CATEGORIAS DE MANUTENO DE SOFTWARE ........................... 35
QUADRO 2.2: VERIFICAO DO CONHECIMENTO SOBRE CADA ITEM RESPONDIDO....................................... 50
QUADRO 3.1: SITUAES POSSVEIS PARA OS CHAMADOS DE MANUTENO ............................................. 55
QUADRO 3.2: CARACTERSTICAS DE MANUTENO CONSIDERADAS E SEUS OBJETIVOS .............................. 59
QUADRO 3.3: PROBLEMAS DE MANUTENO DE SOFTWARE LISTA PARCIAL............................................. 64
QUADRO 4.1: COMPARAO ENTRE PROBLEMAS DE MANUTENO DE SOFTWARE ..................................... 68
QUADRO 4.2: PROBLEMAS DE MANUTENO DE SOFTWARE LISTA GERAL ............................................... 69
QUADRO 4.3: GRUPOS DE PROCESSOS NO OBSERVADOS E AS RESPECTIVAS CONSEQNCIAS ................ 71
QUADRO 5.1: PROCESSOS DA NORMA ISO/IEC 12207 E PROBLEMAS DE MANUTENO DE SOFTWARE ...... 80
QUADRO 5.2: ENGENHARIA: PROCESSO DE ELICITAO DE REQUISITOS ................................................... 83
QUADRO 5.3: ENGENHARIA: PROCESSO DE ANLISE DE REQUISITOS DE SOFTWARE ................................. 84
QUADRO 5.4: ENGENHARIA: PROCESSO DE TESTE DE SOFTWARE ............................................................ 86
QUADRO 5.5: ENGENHARIA: PROCESSO DE MANUTENO DE SOFTWARE E SISTEMA ................................ 87
QUADRO 5.6: OPERAO: PROCESSO DE SUPORTE AO CLIENTE .............................................................. 88
QUADRO 5.7: GERNCIA: PROCESSO DE ALINHAMENTO ORGANIZACIONAL ................................................ 89
QUADRO 5.8: GERNCIA: PROCESSO DE GERNCIA ORGANIZACIONAL ...................................................... 91
QUADRO 5.9: GERNCIA: PROCESSO DE GERNCIA DE PROJETO ............................................................. 92
QUADRO 5.10: GERNCIA: PROCESSO DE GERNCIA DE QUALIDADE .......................................................... 94
QUADRO 5.11: GERNCIA: PROCESSO DE GERNCIA DE RISCOS ............................................................... 95
QUADRO 5.12: RECURSOS E INFRA-ESTRUTURA: PROCESSO DE GERNCIA DE RECURSOS HUMANOS ......... 97
QUADRO 5.13: RECURSOS E INFRA-ESTRUTURA: PROCESSO DE TREINAMENTO .......................................... 99
QUADRO 5.14: RECURSOS E INFRA-ESTRUTURA: PROCESSO DE GERENCIAMENTO DO CONHECIMENTO ..... 100
QUADRO 5.15: RECURSOS E INFRA-ESTRUTURA: PROCESSO DE INFRA-ESTRUTURA .................................. 101
QUADRO 5.16: GERNCIA DE CONFIGURAO: PROCESSO DE DOCUMENTAO ....................................... 102
QUADRO 5.17: GERNCIA DE CONFIGURAO: PROCESSO DE GERNCIA DE CONFIGURAO ................... 104
QUADRO 5.18: GERNCIA DE CONFIGURAO: PROCESSO DE GERNCIA DE SOLICITAES DE MUDANA 105
QUADRO 6.1: CURSOS DE COMPUTAO E DISCIPLINAS DE ACORDO COM A SBC .................................... 114
QUADRO 6.2: NFASES SUGERIDAS PARA A DISCIPLINA DE MANUTENO DE SOFTWARE .......................... 116
QUADRO 7.1: MDULOS PARA UMA DISCIPLINA DE MANUTENO DE SOFTWARE ...................................... 123
xx
QUADRO 7.2: TPICOS DO MDULO A CONCEITOS ............................................................................. 124
QUADRO 7.3: TPICOS DO MDULO B AMBIENTE DE MANUTENO .................................................... 126
QUADRO 7.4: TPICOS DO MDULO C MANUTENIBILIDADE DURANTE O DESENVOLVIMENTO ................. 129
QUADRO 7.5: TPICOS DO MDULO D MANUTENO NO PRODUTO FINAL DE SOFTWARE .................... 131
CAPTULO
1
Introduo
.
1.1 Contexto e Motivao
O termo engenharia de software foi criado em uma conferncia no final da dcada de 60
(Naur & Randell, 1968), sediada em Garmisch, Alemanha, que envolveu usurios, fabricantes
e pesquisadores, interessados em tratar dos constantes problemas no desenvolvimento de
software.
Os problemas enfatizados na poca abrangiam atrasos na entrega, oramentos irreais,
falta de resposta correta aos anseios dos usurios e dificuldades diversas para criar, usar,
manter e melhorar software. Desde aqueles primeiros momentos, a engenharia de software
iniciou seu desenvolvimento, passando a criar e aperfeioar continuamente mtodos,
procedimentos e ferramentas para tornar a atividade de desenvolver e manter software uma
tarefa que pudesse ser medida, controlada e avaliada. De uma forma simples, pode-se dizer
que ao longo das ltimas dcadas houve um amadurecimento do conceito de software e de
suas caractersticas e processos atrelados.
Todo esse desenvolvimento culmina na atualidade com o aumento da ateno
destinada atividade de manuteno de software. Essa importncia decorre, em parte, da
crescente quantidade de software em funcionamento nas organizaes ao redor de todo globo,
que por representarem investimentos significativos, precisam continuar em funcionamento
atravs dos anos, e no serem substitudos, momento no qual surge a necessidade de
Captulo 1 Introduo
22
Captulo 1 Introduo
23
1.2 Objetivos
Os objetivos desta pesquisa, bem como os passos realizados para alcan-los, podem ser
visualizados de uma maneira global pelo esquema mostrado na figura 1.1.
Captulo 1 Introduo
24
Captulo 1 Introduo
25
Captulo 1 Introduo
26
CAPTULO
2
Manuteno de Software
.
2.1 Consideraes Iniciais
O desenvolvimento de qualquer software, exceto programas muito simples, uma tarefa
bastante complexa. Esse fato se tornou evidente com a crise de software, o que originou o
conceito de engenharia de software como uma abordagem sistemtica, disciplinada e
quantificvel para o desenvolvimento, manuteno e descarte de software.
A engenharia de software surgiu inicialmente mais como uma promessa do que uma
realidade. De fato, muitos dos problemas ligados ao desenvolvimento e manuteno de
software continuam sem soluo, apesar de muitos conceitos terem evoludo.
Entender o que significa manuteno de software, e principalmente a abrangncia do
significado do termo, constitui passo fundamental para o estudo e aprofundamento de
solues para os problemas atrelados a essa tarefa.
Faz-se importante destacar nesse ponto que o autor deste trabalho vem trabalhando
diretamente com manuteno de software no meio organizacional h alguns anos, desde o
momento em que concluiu seu curso de graduao na rea de computao. Esta experincia
acaba por influenciar a percepo dos fatores mais importantes envolvidos na prtica com a
manuteno de software, contribuindo para a concretizao deste trabalho.
28
2.2.1 Definies
A atividade de manuteno de software caracterizada pela modificao de um produto de
software j entregue ao cliente, para a correo de eventuais erros, melhora em seu
desempenho, ou qualquer outro atributo, ou ainda para adaptao desse produto a um
ambiente modificado (IEEE, 1998).
Embora a definio trate genericamente qualquer produto de software, existem
diferenas entre a manuteno de softwares com propsitos distintos. Essa distino
explicada por Pfleeger (2001), que estabelece trs categorias de sistemas.
Uma primeira classificao2 representa aqueles softwares construdos com base em
uma especificao rgida e bem definida, cujos resultados esperados so bem conhecidos. Por
exemplo, um software construdo para realizar operaes com matrizes (adio, multiplicao
e inverso). Nesse tipo de software, uma vez que tenha sido construdo considerando a correta
implementao do mtodo, dificilmente haver a necessidade de manutenes.
J em uma segunda classificao3, so agrupados os softwares que constituem
implementaes de solues aproximadas para problemas do mundo real, uma vez que
solues completas somente so conseguidas na teoria nesses casos. Como exemplo, pode-se
citar um jogo de xadrez. Embora suas regras sejam bem definidas, no possvel construir um
software que calcule a cada passo todos os possveis movimentos de peas do tabuleiro, de
forma a determinar o melhor movimento. Isso porque o nmero de movimentos possveis
muito grande para ser calculado em um intervalo de tempo relativamente curto. A tcnica
utilizada para desenvolver esse tipo de soluo baseia-se em descrever o problema de forma
abstrata e ento definir os requisitos de software a partir dessa abstrao.
Percebe-se que esse tipo de sistema j abre espao para diferentes interpretaes por
parte do desenvolvedor, o que tende a produzir software com maior necessidade de
manuteno do que quando comparado aos da classificao anterior. Por considerar uma
abstrao para especificao de requisitos, a necessidade de mudana pode aparecer caso a
abstrao mude, na medida em que um maior entendimento do problema seja alcanado.
Finalmente, uma terceira e ltima classe de softwares4 considera mudanas no
ambiente onde o software vai ser utilizado, caracterstica no existente nas duas classificaes
anteriores.
2
29
FIGURA 2.1: FLUXO ENVOLVIDO NA MANUTENO DE SOFTWARE (ADAPTAO POLO ET AL. 1999)
30
31
Abandonar sistemas existentes para iniciar projetos a partir do zero representa uma perda
considervel (Silva & Santander, 2004).
Visando entender melhor as caractersticas de evoluo de software, Lehman (1996),
publicou suas oito leis da evoluo de software6. De acordo com esse trabalho, seriam oito
as principais caractersticas que regem o envelhecimento de um software, e foram
determinadas aps mais de vinte anos de estudos e observaes. Inicialmente foram definidas
apenas trs leis (Lehman, 1974), que passaram a ser cinco (Lehman, 1980), alcanando seis
leis (Lehman, 1991). Finalmente, aps estudos mais longos com processos de software, as
atuais oito leis foram publicadas. Essas leis consideram no apenas o software em si, mas as
caractersticas da organizao que o desenvolve e mantm.
A primeira lei, caracterizada pela evoluo contnua, explica que um software
desenvolvido para tratar um problema do mundo real, precisa ser constantemente adaptado,
pois caso contrrio, ele se tornar progressivamente menos satisfatrio. Essa lei baseia-se na
experincia, sendo que a evoluo somente pode acontecer por meio de um processo de
manuteno controlado e dirigido.
Na segunda lei, o autor explica que existe um aumento progressivo de complexidade
do software medida que este se desenvolve, o que pode ocasionar uma desestruturao
crescente. Esse problema ser inevitvel, a menos que algum trabalho seja feito para reduzilo, e ocasionado por alteraes efetuadas em cima de outras alteraes, na medida em que o
software adaptado ao seu ambiente.
A terceira lei prega uma auto-regulao do processo de evoluo do software. Isso
significa que a organizao responsvel pelo desenvolvimento desse software estabelecer
normas e verificaes capazes de assegurar o entendimento das dificuldades e prover
respostas que sero utilizadas para o crescimento e estabilizao tanto do processo, como do
produto de software. O gerenciamento de retornos positivos e negativos dos pontos de
controle um exemplo de mecanismos de estabilizao. Existem vrios outros, e juntos eles
estabelecem uma dinmica disciplinada cujos parmetros so, pelo menos em parte,
normalmente distribudos.
A quarta lei trata da conservao da estabilidade organizacional, no sentido de que ao
longo de todo ciclo de vida do software, a forma como a organizao ir trabalh-lo sempre
produzir resultados constantes. A lei sugere que mudanas de pessoal e recursos tm pouco
efeito sobre a evoluo do sistema.
Na quinta lei, apresentada a caracterstica de conservao de familiaridade, o que
significa dizer que o conhecimento dos objetivos da organizao ao lanar uma nova
6
32
atualizao do software, conhecido entre os membros da equipe que trabalha com esse
software. Quanto mais mudanas forem necessrias ao software, maior ser a dificuldade de
manter toda a equipe ciente dos objetivos organizacionais. A taxa, qualidade de progresso e
outros parmetros so influenciados, at mesmo limitados, pela taxa de aquisio da
informao necessria pelos participantes coletivamente e individualmente.
A sexta lei consagra a caracterstica do contnuo crescimento do software, decorrente
de novas funcionalidades, a fim de manter a satisfao do cliente. Essas mudanas podem ser
correes de erros, adies de novas funcionalidades ou melhorias em funes pr-existentes.
A maioria certamente no foi planejada pela equipe de desenvolvimento na poca da primeira
verso, ou foram causadas devido a alguma mudana no domnio operacional em que o
software est inserido. Essas mudanas no planejadas inicialmente geram a necessidade de
mdulos extras para o software, causando assim um inevitvel aumento do contedo
funcional.
Na stima lei, apresentada a caracterstica de qualidade decrescente do software,
medida que evolui. Isso ocorre uma vez que o software est inserido em um ambiente
imprevisvel, no qual existem possibilidades ilimitadas que entraro em contraste com as
caractersticas de evoluo do software, limitadas pelo nmero de recursos e tempo
disponvel, expondo a suscetibilidade do software a eventos externos. Ainda que esse
software funcionar satisfatoriamente por muitos anos, isto no ser um indicativo de que
continuar funcionando a contento nos anos vindouros. Essa caracterstica somente poder ser
evitada com um esforo para deteco e correo contnuas.
Finalmente, na oitava lei, publicada somente na dcada de 1990, o autor apresenta a
caracterstica de sistema de retorno, o que significa que o sistema de evoluo de um software
ser constantemente realimentado pelo retorno de seus usurios. A vida de um software um
ciclo bem estabelecido de retornos positivos e negativos dos usurios entre cada verso do
software. Em longo prazo, a taxa de crescimento do sistema ser estabelecida pela quantidade
de retornos negativos e positivos, e controlado por fatores como quantidade de recursos
(verba), nmero de usurios solicitando novas funcionalidades ou reportando algum erro,
interesses administrativos e tempo entre uma verso e outra.
De uma maneira geral, as leis de Lehman abordam caractersticas aplicveis a grandes
corporaes, que desenvolvem softwares complexos e com longo ciclo de vida. No ficam
claras quais as dificuldades para a manuteno de software. O que se tem um panorama
geral da evoluo de software, apresentando em diversas leis a necessidade de interveno no
software para que problemas sejam evitados, mas nada diz a respeito das dificuldades que
emergem dessa interveno.
33
ET AL. 2004)
Pela figura percebe-se que o software sensvel ao contexto no qual est inserido,
estando sujeito a mudanas na medida em que seu ambiente muda, causando a necessidade de
considerar e tentar prever esses fenmenos, tanto durante o desenvolvimento como durante a
manuteno.
34
FIGURA 2.3: CICLO DE VIDA DE MANUTENO DE SOFTWARE (ADAPTAO DE KUNG & HSU, 1998)
Quanto tempo o software vai levar para entrar na fase de declnio uma previso
quase impossvel, visto que, uma vez na fase de maturidade, o software adquiriu certa
estabilidade na organizao, possivelmente j se enquadrando na classificao de sistema
legado. Nesse sentido, a fase de declnio corresponderia quela na qual uma deciso a respeito
de manter ou substituir o software deve ser tomada, conforme exposto com mais detalhes no
tpico 2.4, relacionado a sistemas legados.
35
Do ingls, enhancements.
Planejada
No-Planejada
Reativa
Corretiva
Adaptativa
Emergencial
Pr-ativa
Perfectiva
36
37
38
Processos Organizacionais
Processos de Apoio
Grupo de Processos de Gerncia de
Configurao
Documentao
Gerncia de Configurao
Gerncia de Resoluo de Problemas
Gerncia de Solicitaes de Mudana
39
40
41
um modelo fixo ao qual uma organizao que a adote se submete. Ao contrrio disso, ela
funciona como uma estrutura de apoio, devendo a organizao que a adotar proceder com
adaptaes nas recomendaes para a sua realidade.
42
Se por um lado o software no pode ficar como est, j que ou possui erros, ou no
est mais atendendo s novas necessidades de negcios, por outro, substitu-lo pode trazer
problemas ainda maiores.
Neste tpico sero consideradas as caractersticas desses softwares e algumas das
solues, e paliativos, j propostos, uma vez que se relacionam diretamente com a atividade
de manuteno de software.
2.4.1 Conceitos
Um software desenvolvido no passado e ainda um utilizao em uma determinada
organizao constitui um sistema legado.
Em funo da dependncia cada vez maior em relao a sistemas de software, as
organizaes em geral, especialmente as de grande porte, investiram muito dinheiro no
desenvolvimento de softwares para atender s suas necessidades operacionais e de gerncia.
Considerando que a evoluo da tecnologia, tanto de hardware como de software, foi muito
rpida nos ltimos anos, provocando o abandono de linguagens de programao mais antigas
e a adoo de novas metodologias de desenvolvimento de software, fortemente esperado
que aqueles softwares, frutos de grandes investimentos das organizaes, tenham sido
construdos com alguma tecnologia ou mtodo que hoje obsoleto. Esses softwares,
chamados de sistemas legados, constituem mais um desafio para a engenharia de software,
especialmente para a atividade de manuteno de software, uma vez que dificilmente sero
abandonados de imediato, justamente por causa do investimento que representam.
A vida til de um software muito variada. Alguns softwares de grande porte podem
continuar em uso durante mais de dez anos, e em alguns casos organizaes podem ainda
contar com software desenvolvido h mais de vinte anos (Sommerville, 2003). Uma tentativa
de quantificar a quantidade de software legado existente foi feita em 1990, e ainda naquela
data, estimou-se que haveria no mundo cerca de 120 bilhes de linhas de cdigo pertencentes
a esse tipo de software (Ulrich, 1990).
43
Partes do software, ou ele todo, podem ter sido desenvolvidas com o uso de alguma
linguagem de programao obsoleta. Isso torna difcil encontrar profissionais com
conhecimento e experincia na linguagem, o que pode forar a terceirizao da
manuteno (normalmente a um custo elevado);
O software pode ter sido otimizado para reduzir a ocupao de espao ou melhorar sua
velocidade de execuo. Isso pode causar problemas de compreenso para
profissionais que aprenderam somente as tcnicas modernas de engenharia de
software, no tendo tido contato com os truques usados no passado;
44
de
manuteno,
inclusive
questes
como
impossibilidade
de
45
um caminho, ora por outro, sendo importante o acompanhamento do resultado das decises
tomadas, efetuando ajustes o tempo todo, medida que falhas forem diagnosticadas.
Ao tomador de deciso em organizaes de software, fundamental o conhecimento
claro tanto dos objetivos de sua organizao, como das caractersticas e dificuldades da
atividade de manuteno de software, para ento somente ser capaz de conduzir
adequadamente sua equipe.
Dentro desse contexto, Basili (1990) props trs paradigmas diferentes para tratar a
manuteno de software: (i) Conserto Rpido8; (ii) Melhoria Interativa9; (iii) Reuso Total10.
A idia de conserto rpido compreende aplicar primeiramente as mudanas
necessrias no cdigo-fonte do software e ento depois atualizar a documentao, nessa
ordem. Essa abordagem corresponde normalmente preferida pelo mantenedor, justificando a
deciso pela urgncia da manuteno (Visaggio, 2001). A deciso de alterar a documentao
aps a manuteno, no entanto, no comumente uma boa prtica, pois pressionado pelo
tempo, o mantenedor executa mal, ou no executa, essa tarefa, dificultando cada vez mais
manutenes posteriores. Na figura 2.7 mostrado um paralelo entre o software atual e o
derivado da manuteno, notando-se, que o ponto de partida o cdigo-fonte do software
antes da manuteno.
46
A proposta de melhoria interativa, por sua vez, prope inicialmente adequar e atualizar
a documentao de alto nvel que ser afetada, para ento propagar as mudanas at o nvel de
cdigo-fonte. Na figura 2.8 representada essa idia.
47
apenas mais indicada do que a segunda, quando o impacto da modificao envolver poucos
componentes, o que pode ser reforado pelo menor tempo empregado para tornar a
manuteno operacional. Porm, e principalmente, para alteraes maiores, o emprego da
melhoria contnua a melhor indicao, pois permite antever defeitos e conseqentemente
reduzir re-trabalhos, contribuindo para a garantia de qualidade global do software. Esse
ltimo mtodo funciona ainda como uma maneira automtica de continuamente revisar a
consistncia do software.
Nesse ponto, o autor deste trabalho tem a acrescentar que verificou, por sua
experincia na prtica em algumas organizaes, o emprego do mtodo de corrigir o problema
diretamente no cdigo-fonte, exceo feita em algumas situaes mais complexas que
envolvem pequenas reunies entre os profissionais responsveis pela manuteno, produzindo
em algumas delas um roteiro escrito de passos ou de fatores a observar para a manuteno. No
entanto, na maior parte dos casos, esses registros no eram utilizados para a atualizao da
documentao de software existente. O procedimento mais adotado o de revisar e completar
a documentao de tempos em tempos, com base em vises gerais do software. justo
destacar, no entanto, que algumas organizaes decidem por desenvolver internamente seu
prprio sistema de controle de manutenes, no qual se registra requisies formais de
manuteno, podendo ser mais ou menos completo dependendo da organizao, contendo
descrio da soluo, tempo despendido, estrutura do software entre outros. Essa postura, no
entanto, normalmente adotada por organizaes de mdio e grande porte. Existem trabalhos
dedicados a sistematizar e melhorar a construo desse tipo de ferramenta, como por exemplo,
o trabalho de Koskinen et al. (2004), que prope uma ferramenta baseada em hipertexto para
auxiliar a recuperao de diversas informaes sobre um software que sofrer manuteno.
Outro desafio gerencial notvel em manuteno de software relaciona-se
necessidade de estimar esforo para atividade, conforme explica De Lucia et al. (2004). Com
uma maneira eficaz de estimar o esforo, fica mais fcil aos tomadores de deciso argumentar
sobre as melhores opes para a organizao, contribuindo para a deciso de terceirizar ou
no a atividade. Esse auxlio na tomada de deciso envolve consideraes como:
48
Portanto, decidir entre manter uma equipe interna de manuteno ou submeter o software
manuteno por outra organizao exige estudo cuidadoso, e isso se justifica pela simples
lembrana de que a organizao pode ter dependncia enorme em relao a esse software,
necessitando de seu correto e adequado funcionamento o tempo todo.
Aplicar manuteno de software as tcnicas, ferramentas, modelos de processos,
etc., prprios do desenvolvimento de software no constitui uma deciso correta, pois
manuteno e desenvolvimento apresentam caractersticas distintas, como afirma Polo et al.
(2003).
Algumas razes que justificam essas caractersticas distintas so apresentadas pelo
mesmo autor:
Outro fator de diferena est ligado ao fato de que a manuteno tem mais
similaridade com um servio do que com desenvolvimento, o que acaba implicando na
necessidade de no aplicar as mesmas estratgias de desenvolvimento em manuteno.
Essa ltima razo pode ainda ser apontada como fator que justifica o aumento no
49
Yourdon afirmou que a postura da alta direo das organizaes que dependiam de software
seria a de atacar o problema apenas quando ele emergisse de fato.
Antes, porm, do que afirmou Yourdon, ainda na dcada de 1980, estudos referentes a
problemas com manuteno de software j ocorriam, e um pioneiro e relevante trabalho foi
realizado por Lientz e Swanson (1980), publicado na forma de um livro. Esse trabalho
descreve os resultados obtidos com estudos no intuito de averiguar a forma como as
organizaes tratavam a questo de manuteno de software na poca.
A pesquisa contou com duas fases. Na primeira, realizada com 69 organizaes, foram
levantadas as caractersticas da atividade de manuteno de software por elas realizada. Essa
fase inicial obteve as seguintes concluses:
A manuteno de software existente consome uma mdia de 48% das horas anuais do
pessoal de sistemas e programao;
50
era fornecido um quadro (quadro 2.2), que visava avaliar o conhecimento que o entrevistado
tinha a respeito do que acabava de responder.
QUADRO 2.2: VERIFICAO DO CONHECIMENTO SOBRE CADA ITEM RESPONDIDO
Marque a sentena apropriada
A resposta anterior :
a. Razoavelmente precisa, baseada em dados confiveis.
b. Uma estimativa grosseira, baseado em dados mnimos.
c. Uma suposio, sem base em dados.
Mais de um tero dos sistemas descritos tinham sua manuteno realizada por apenas
uma pessoa;
A maioria dos profissionais alocados para manuteno tinha outras tarefas ao mesmo
tempo;
Quanto mais velho era o sistema, maior era o esforo que deveria ser empregado em
sua manuteno, e mais sujeita a organizao estava em perder o conhecimento em
torno desse sistema, devido rotatividade dos profissionais.
Finalmente, os autores chegaram aos principais problemas de manuteno enfrentados
51
em manuteno de software.
Em 1986, outro estudo (Chapin, 1986), envolveu 250 gerentes de manuteno de
software e buscou saber quais eram os principais problemas de manuteno nas equipes por
eles lideradas. Dos resultados obtidos, foi estabelecida uma classificao em oito categorias.
Entre os problemas apontados, a grande maioria referia-se a caractersticas do prprio
software, como documentao insuficiente e cdigo excessivamente complexo ou mal
estruturado.
Em outra pesquisa (Dekleva, 1990), realizada pelo Software Maintenance Association
(SMA), o intuito foi a obteno de respostas para a seguinte pergunta: Quais os trs
principais problemas de manuteno de software no seu departamento de sistemas de
informao?, sendo que os resultados permitiram apontar questes ligadas principalmente a
dificuldades de gerenciamento, caractersticas de desenvolvimento de software, administrao
de equipes e mudanas no ambiente externo ao software.
Em 1992, valendo-se de uma tcnica de pesquisa iterativa denominada delphi, que
leva a um consenso entre os entrevistados, Dekleva (1992), obteve uma lista de problemas de
manuteno muito parecida com os apresentados por Lientz e Swanson, incluindo apenas o
problema da dificuldade da organizao em medir o desempenho de sua equipe de
manuteno. Novamente, foi constatado que problemas de ordem gerencial so absolutamente
dominantes no contexto de problemas de manuteno de software. Na figura 2.10, extrada do
trabalho de Dekleva (1992), mostrada a relao de causa identificada entre os fatores
envolvidos na atividade de manuteno. As ms caractersticas ou mal gerenciamento de um
fator, prejudicam o fator correlacionado.
Existem ainda outros trabalhos com resultados semelhantes, como o de Dart et al.
(2001), conduzido pelo Software Engineering Institute (SEI) junto a uma agncia do governo
dos Estados Unidos. Uma caracterstica interessante apontada nesse estudo refere-se
52
CAPTULO
3
Estudo de Caso
.
3.1 Consideraes Iniciais
Um estudo de caso foi conduzido com o objetivo de verificar os problemas de manuteno de
software existentes em uma organizao empenhada no desenvolvimento de software
comercial. Essa organizao mantm uma base de dados contendo registros histricos de
manutenes efetuadas sobre um sistema de informao por ela desenvolvido e mantido. O
resultado deste estudo de caso foi publicado em um artigo (Paduelli & Sanches, 2006),
apresentado no III Workshop de Manuteno de Software Moderna (WMSWM06), evento
paralelo ao V Simpsio Brasileiro de Qualidade de Software. As subsees a seguir so
baseadas no artigo.
54
55
56
57
de clientes com os quais foi estabelecido um acordo para realizao desses testes. Isso ocorre
na ltima semana do ms que antecede aquele de disponibilizao da nova verso.
A idia de disponibilizar verses intermedirias a um ou mais clientes para testes reais
em ambiente parte do de produo, corresponde a uma das tcnicas de teste apresentadas
por Pressman (2005), intitulada teste beta. Segundo o autor, esse o tipo de teste conduzido
nas instalaes do prprio cliente, sem acompanhamento do desenvolvedor, estando o cliente
responsvel por registrar problemas e inform-los em intervalos regulares.
Evidentemente entre a data de estabelecimento de cronograma para os chamados
pendentes e a data de liberao da nova verso, surgem normalmente chamados novos e
urgentes, que no podem esperar at prxima verso. No geral, procura-se evitar essa
situao, mas quando ocorrem, verses intermedirias modificadas a partir da ltima verso
oficial, somente com a alterao urgente ora solicitada, so disponibilizadas e apenas para o
cliente que precisou da manuteno urgente.
Um padro para nomenclatura das verses foi adotado, buscando atrelar a verso ao
seu ms de lanamento, bem como informar o nmero da reviso atual da verso (caso a
verso oficial tenha necessitado de alguma alterao emergencial). Na figura 3.2 ilustrado
um exemplo do padro de numerao adotado.
Build_070401_00
A B C
Os dois ltimos dgitos so incrementados em uma unidade, medida que a verso for
passando por manutenes emergenciais (aquelas que no podem ser acumuladas para a
verso do ms seguinte). No exemplo da figura, a verso em questo a oficial (reviso 00),
do ms de abril de 2007.
A verso de homologao, uma vez testada pelo perodo de uma semana nos clientes
selecionados, e com eventuais problemas detectados e corrigidos, oficialmente convertida
em uma verso final (oficial), e disponibilizada no site para todos os clientes, na primeira
semana do ms seguinte ao de testes. Na figura 3.3 a seguir ilustrado esse processo.
58
homologao,
eventualmente
esses
clientes
so
acompanhados
pessoalmente por algum consultor, ou remotamente via apoio por telefone, e-mail, VNC
(software que permite conexo ao desktop remoto do cliente), entre outros.
Na medida em que problemas so verificados, se forem erros nas manutenes
realizadas para a verso que ser disponibilizada, esses erros so imediatamente corrigidos e a
verso de homologao atualizada. Se forem problemas novos (novas necessidades de
alteraes ainda no previstas), eles so registrados e ento programados para
disponibilizao em verses posteriores do software.
3.4 Metodologia
A metodologia de pesquisa buscou, por um lado, estudar a base de dados na qual esto os
registros de manuteno, e, por outro lado, entrevistar os profissionais responsveis pela
11
12
59
tarefa de manuteno. A forma como cada etapa foi conduzida est descrita a seguir.
Objetivo
60
Nota-se que no existe uma constncia no nmero de manutenes por ms, o que
sugere uma imprevisibilidade nas necessidades de manuteno por parte dos clientes. Em
abril de 2005 foi registrado o maior nmero de chamados de manuteno (355). Os dados
representam uma mdia de 163,45 solicitaes de manuteno por ms (desvio padro de
83,7). Constatou-se ainda que a mdia de solicitaes diria de 8,59 novas requisies. Uma
possvel razo para a existncia de pocas com maior incidncia de pedidos de manuteno
seria o fato de o nmero de solicitaes entregues naquele ms ter sido maior, o que
normalmente acarretaria mais falhas colaterais, ou seja, aquelas que acabam incidindo em
outros mdulos do software, apesar dos testes e da homologao em clientes.
Os registros de solicitaes de manuteno incluem desde operaes simples, que
resultam em poucos dias para a implementao, at solicitaes mais complexas, que podem
levar semanas, e at meses, para serem concludas. Solicitaes desse porte normalmente
exigem que o projeto de um ou mais mdulos seja reestruturado, o que justifica o tempo gasto
para entrega ao cliente.
A distribuio, em termos de dias gastos para a implementao de manutenes,
mostrada na figura 3.5.
61
Nota-se que o cliente busca respostas rpidas, considerando com prioridade elevada a
maior parte dos chamados de manuteno efetuados.
Do ponto de vista dos quatro tipos de manuteno software (adaptativa, perfectiva,
corretiva e preventiva), realizou-se a quantificao das manutenes efetuadas dentro desses
tipos. Para esse levantamento, foi considerada a classificao das manutenes informada em
cada registro feito na base de dados. O resultado obtido apresentado na figura 3.7.
62
63
De acordo com o mostrado na figura, percebe-se que a organizao consumiu, nos trs
exemplos, mais de 60% do esforo empregado em atividades de manuteno, e esse
percentual tende a subir com o passar do tempo.
64
Problemas
Tcnicos
Os problemas, como pode ser visto no quadro, foram classificados de acordo com sua
natureza em problemas gerenciais e tcnicos. No item a seguir so tecidas consideraes
gerais sobre o resultado obtido.
65
que os de carter mais tcnico. De fato, constatou-se que conciliar dificuldades tcnicas de
manuteno com os anseios dos usurios no uma tarefa simples, e infelizmente no vem
obtendo o sucesso desejado.
A ausncia de um processo de manuteno de software formal, como dita normas de
engenharia de software, no seria de todo condenvel se o processo interno criado pela
prpria organizao funcionasse de maneira satisfatria. O que se observou foi que a presso
gerada pelos clientes muitas vezes prejudica o cumprimento correto da seqncia de passos
estipulada pela prpria organizao para tratar a manuteno de software.
Por fim, a inexistncia de manuteno preventiva um fato que precisa ser analisado
em conjunto com os objetivos de negcio da organizao e com seus projetos em relao
vida til do software que mantm.
66
CAPTULO
4
Problemas de Manuteno de Software
.
4.1 Consideraes Iniciais
Este captulo apresenta uma comparao entre os problemas de manuteno de software
atuais, identificados pelo estudo de caso, e aqueles registrados no passado, buscando inferir
algum padro de evoluo nos mesmos. Alm disso, estabelece um rol de problemas de
manuteno de software, publicados por diferentes autores, na forma de uma lista de
dificuldades inerentes atividade de manuteno, para fins de anlise nos prximos captulos.
Procurou-se estabelecer uma denominao direta e simples para os problemas, facilitando a
leitura, o entendimento e posteriores referncias.
68
tpico 2.6, obtidos por Lientz e Swanson (1980), e os identificados no estudo de caso. O
quadro associa os problemas relacionando-os de acordo com a sua natureza.
QUADRO 4.1: COMPARAO ENTRE PROBLEMAS DE MANUTENO DE SOFTWARE
Problemas apontados por
Lientz e Swanson (1980)
Problemas atuais
Baixa qualidade da
documentao dos sistemas
69
Referncias
Lientz e Swanson (1980);
Estudo de Caso
Lientz e Swanson (1980);
Dekleva (1992); Dart et al.
(2001); Estudo de Caso
Dekleva (1992)
Estudo de Caso
Estudo de Caso
Estudo de Caso
Fatores de Infra-estrutura
Problema
16. Necessidade de suporte automatizado gerncia de
configurao de software
17. Ferramentas para manuteno precisam ser diferentes
daquelas de desenvolvimento
18. Falta de recursos tecnolgicos adequados
19. Estagnao tecnolgica no ambiente de trabalho
Referncias
Dart et al. (2001)
Dart et al. (2001)
Dart et al. (2001); Estudo de
Caso
Dart et al. (2001)
Referncias
70
Referncias
Estudo de Caso
Dekleva (1992)
Fatores de software
Problema
Referncias
dificultam
definio
de
71
(25)
18
16
14
12
10
8
6
4
2
0
72
47,1%
23,5%
14,7%
11,8%
G
er
n
ci
a
ad
e
lid
Q
ua
ur
a
o
de
tia
de
In
f
e
0%
on
f ig
Re
u
so
0%
o
ra
-e
st
ru
tu
ra
Pr
oc
es
s
ci
a
Re
cu
rs
os
el
h
or
ia
de
G
er
n
o
O
pe
ra
ar
ia
ge
nh
En
en
to
rn
ec
im
0%
G
ar
an
2,9%
0%
Fo
Aq
ui
si
0%
Percebe-se, pela figura anterior, que existe uma grande concentrao de problemas
relacionados principalmente com fatores de ordem gerencial, ligados interao com pessoas
e processos, respondendo por 47,1% dos problemas.
Dentre os dez grupos de processos, cinco ficaram sem nenhum problema relacionado.
Os grupos de aquisio e de fornecimento apresentam uma razo clara: esto relacionados
criao de um produto de software novo, portanto fortemente ligadas ao desenvolvimento, o
que no foi considerado. O grupo de melhoria de processo pode ser visto sob duas
perspectivas, que consideram a existncia ou no de processos implantados na organizao.
Na primeira das vises, assumindo que a organizao possua processos implantados, os
problemas de manuteno poderiam ser associados a falhas nesses processos, alegando-se que
seriam essas falhas as responsveis diretamente pela maioria dos problemas de manuteno.
Isso, no entanto, no corresponde realidade, j que normalmente os processos no existem
nas organizaes.
Em outra viso do grupo de melhoria de processo, agora considerando que a
organizao no possua processos implantados, seria inadequado valer-se desse fato para se
associar a esse grupo praticamente todos os problemas de manuteno, sob a alegao de que
existem como resultado da ausncia de processos adequados para tratar a manuteno de
software. A inadequao desse posicionamento se justifica pelo fato de que possvel
estabelecer uma melhor relao dos problemas com outros processos da norma, muitas vezes
de forma direta, valendo-se para isso das tarefas estipuladas para cada processo. O no
73
74
diferentes podem ser utilizados para se referirem s mesmas dificuldades. razovel pensar
ainda que novos problemas surjam, constituindo novas categorias de problemas, distintas das
aqui definidas.
Esse fato, porm, no invalida ou torna de todo desatualizado o que foi exposto, j que
a literatura, e tambm o estudo de caso apresentado, apontam uma relativa estabilidade entre
os problemas mais relevantes ao longo do tempo.
admissvel, tambm, que o surgimento de novas tcnicas de programao, novas
tecnologias e metodologias, influenciem a forma como as organizaes trabalham, e nesse
caso poderiam reduzir os problemas aqui apresentados.
Outra observao necessria se faz com relao aos problemas e os tamanhos de
software sobre os quais incidem. O que ocorre, de fato, que os problemas apresentados
incidem de maneira geral sobre qualquer tamanho de software, variando apenas a nfase que o
problema representa para cada tamanho de software.
Por fim, a relao estabelecida entre os problemas e os grupos da norma, permite uma
viso inicial das caractersticas do processo de ciclo de vida de software que devem ser
tomadas com maior ateno para o contexto de minimizao de problemas de manuteno de
software. No captulo seguinte, esse relacionamento retomado e considerado com maiores
detalhes.
CAPTULO
5
Alternativas de Reduo dos Problemas
de Manuteno de Software
.
5.1 Consideraes Iniciais
As alternativas de respostas para os problemas de manuteno de software apresentadas neste
captulo esto embasadas em trs fontes distintas: na norma ISO/IEC 12207, nas solues
encontradas na organizao analisada no estudo de caso, e nas propostas de outros autores que
se dedicaram ao assunto.
Acredita-se que a norma seja um excelente veculo para conduzir uma organizao de
software pelas melhores prticas, j que seu contedo resultado de um esforo
fundamentado no que poderia se chamar estado-da-arte da engenharia de software. Outra
considerao importante diz respeito maneira como a norma se apresenta. Ela no um
modelo fechado que diz como fazer e manter software da melhor forma, mas sim, mostra o
que deve ser considerado para que isso seja alcanado. Dessa forma, a norma funciona como
um guia para ser seguido por organizaes interessadas em tratar sistematicamente seu
processo de software.
O estudo de caso apresentado anteriormente estendido neste captulo, expondo agora
prticas adotadas pela organizao que trouxeram resultados satisfatrios para a preveno ou
conteno de problemas de manuteno de software em seu ambiente de trabalho.
Finalmente, os mesmos autores que identificaram problemas de manuteno de
software em seus trabalhos tambm contribuem para fornecer propostas de reduo desses
problemas.
76
5.2.1 Metodologia
A metodologia aplicada na extenso do estudo de caso tambm foi baseada em questionrios
e entrevistas (apndice A).
O intuito principal desses questionrios foi o de servirem para a abertura de uma
discusso na qual exemplos de solues eficientes fossem citados pelos entrevistados. Como
o objetivo era que a organizao mostrasse quais atitudes vinha adotando para tratar de
maneira satisfatria sua atividade de manuteno, no havia como estipular questes prvias,
por isso o questionrio reduzido funcionou somente como recurso para incio de entrevista.
De fato, as solues citadas, bem como observaes e todas as informaes relevantes para o
contexto da entrevista, foram registradas pelo entrevistador em documento a parte e
posteriormente compiladas.
Melhoria em treinamento: uma prtica relevante adotada pela organizao diz respeito
a treinamento. A soluo considerada foi a de verificar entre os profissionais
interessados, quais eram as ferramentas de software que gostariam de um
aprofundamento em conhecimentos, por meio de certificaes. A partir desse
levantamento, a organizao se comprometeu em comprar os livros necessrios
preparao para alguns exames de certificao oficial. Como exemplo, tem-se uma das
modalidades de certificao de DBA SQL Server da Microsoft. O gerenciador de
banco de dados SQL Server corresponde ao utilizado pela organizao, e sua
77
78
Melhoria em testes: essa foi uma das mudanas significativas para a reduo do
nmero de problemas de software que acabavam no ambiente de produo dos
clientes. A medida adotada foi a de insistir no uso de teste beta (testes pelo cliente, em
seu ambiente), porm a maneira de negociao foi alterada. A organizao se
comprometeu a preparar todo ambiente paralelo ao de produo, necessrio para
79
efetuar os testes, sempre que uma verso de testes fosse disponibilizada, ficando a
cargo do cliente apenas proceder com os testes, sem necessidade de qualquer
configurao de software. O cliente deveria oferecer apenas os recursos de hardware
(computador, espao em disco rgido para replicao do banco de dados de produo
etc.). Alm disso, a liberao da verso inicial de testes passou a ocorrer somente aps
revises mais rgidas realizadas internamente na organizao por uma pessoa dedicada
exclusivamente a essa tarefa.
Por fim, verificou-se que a questo da documentao interna das manutenes era uma
das preocupaes da organizao, porm ainda sem soluo satisfatria implementada,
portanto no citada aqui.
Embora no se tenha adotado um processo de manuteno complexo e rgido, a lista
de modificaes internas citada contribuiu para a diminuio daqueles problemas mais
simples e que causavam grande impacto negativo junto aos clientes.
No entanto, uma nova dificuldade parece ter surgido, e tambm j estava sendo
combatido pela gerncia atravs de maiores exigncias, que era justamente o fato de os
procedimentos novos adotados nem sempre estarem sendo seguidos, como por exemplo, a
necessidade de sempre registrar na base de conhecimento as solues adotadas para
problemas que ainda no constavam dessa base.
80
Projeto de Software
Construo de Software
Integrao de Software
Teste de Software
Integrao de Sistema
Teste de Sistema
Instalao de Software
Gerncia Organizacional
Gerncia de Projeto
Gerncia de Qualidade
Gerncia de Riscos
Medio
Grupo de Processos de Melhoria de
Processo
Estabelecimento de Processo
Avaliao de Processo
Melhoria de Processo
Grupo de Processos de Recursos e
Infra-estrutura
Gerncia de Recursos Humanos
Treinamento
Gerncia de Conhecimento
81
Infra-estrutura
13
82
Gerncia de Configurao
usurios
por
13
De acordo com a norma, infra-estrutura pode incluir hardware, software, mtodos, ferramentas, tcnicas,
padres e outras facilidades para desenvolvimento, operao e manuteno.
83
(ii)
(iii)
(iv)
(v)
(vi)
Obteno dos requisitos do cliente: consiste em obter e definir quais so os requisitos do cliente,
por meio de solicitaes diretas e pela especificao de entradas para o seu sistema. Isso pode
ser obtido por reviso dos propsitos de negcio do cliente, verificao do ambiente operacional
e de hardware e ainda outros documentos.
Entendimento das expectativas do cliente: tem por objetivo assegurar que tanto fornecedor
quanto o cliente entenderam cada requisito da mesma maneira. Revises com os clientes para
um entendimento melhor das suas necessidades e expectativas devem ser conduzidas.
Concordncia com os requisitos: busca obter formalmente junto ao cliente e seus interessados a
concordncia total com relao aos requisitos estipulados.
Estabelecimento final dos requisitos: essa tarefa produz um documento formal considerado o
estabelecimento final dos requisitos para uso na fase de projeto e para confronto com futuras
mudanas de necessidades do cliente.
Gerenciamento de mudanas de requisitos do cliente: consiste em gerenciar todas as mudanas
do cliente em relao ao documento original de requisitos, garantindo que melhorias resultantes
de mudana de tecnologias ou de necessidades do cliente possam ser identificadas e aquelas
que sejam afetadas por mudanas possam ser analisadas em relao a impacto e riscos,
permitindo a tomada de aes.
Estabelecimento de mecanismo de comunicao com cliente: consiste em prover meios para
que o cliente possa ser alertado do status e disposio das suas mudanas de requisitos.
84
(ii)
(iii)
(iv)
(v)
(vii)
85
86
(ii)
(iii)
(iv)
Uma estratgia de regresso definida para ser usada para re-testar o software
quando uma alterao em seus itens for realizada.
Tarefas necessrias
87
(ii)
(iii)
(iv)
(v)
(vi)
(vii)
88
(ii)
Avaliao da satisfao do cliente tanto com relao ao suporte oferecido como com
relao ao produto;
(iii)
(iv)
Estabelecer suporte do produto: estabelecer um servio por meio do qual o cliente possa
apresentar problemas e questes encontradas no uso do produto e receber ajuda para
solucion-los.
89
90
(iii)
(iv)
(v)
(vi)
Cada indivduo na organizao deve entender seu papel para alcanar os objetivos
de negcios e avaliar se est apto a cumprir esse papel.
Tarefas necessrias
Desenvolver uma viso estratgica: desenvolver uma viso estratgica para a organizao, que
seja capaz de identificar os objetivos de negcios e sua relao com funes de engenharia de
software e de sistemas.
Definir o framework de processos: identificar os processos que precisam ser executados para
que seja possvel alcanar os objetivos de negcios.
Prover comprometimento gerencial: prover suporte gerencial para a aplicao e melhoria
estratgica de processos.
Comunicar a viso e objetivos: explicar a viso e objetivos estratgicos da organizao para
todos os indivduos que trabalhem para ela, utilizando mecanismos adequados de comunicao
e gerenciamento.
Garantir o compartilhamento de uma viso comum: garantir que cada indivduo da organizao
compreenda a viso comum e se comprometa a cumprir sua funo individual com eficincia.
Permitir participao ativa: permitir que cada indivduo contribua para se alcanar os objetivos
de negcios e apresentar iniciativas de melhoria de processos.
91
(ii)
(iii)
92
eles podem representar um entrave para a efetivao de outros processos, como o alinhamento
organizacional citado no processo anterior.
Os problemas de manuteno de software relacionados com o processo de gerncia
organizacional so totalmente de natureza humana e relacionados com a tradicional postura de
valorizao, muitas vezes absoluta, do desenvolvimento frente a manuteno de software.
Todavia, no seria justo acusar a organizao que adota tal postura como incapaz de visualizar
e entender de maneira ampla seu negcio de software. Essa postura clssica, e resultante da
prpria histria de evoluo da engenharia de software, vem agora gradativamente sendo
alterada, sendo que a velocidade dessa alterao depende muito de uma anlise cuidadosa dos
objetivos de mdio e longo prazo de cada organizao.
(ii)
(iii)
(iv)
(v)
(vi)
(vii)
93
94
sobre a atividade de manuteno. Esse problema se une ao do software no ser visto pela
gerncia como um produto que precisa, ainda durante o desenvolvimento, ter a manuteno
trabalhada. A unio desses dois problemas revela um outro: a falta de conhecimento sobre o
processo de software como um todo. E aqui vale uma observao prtica importante: no se
podem atribuir a gerentes de projetos que no so de software, tarefas de gerncia de projetos
de software, sem assegurar que estes conheam as peculiaridades inerentes ao trabalho com
software e seu ciclo de vida.
(ii)
(iii)
(iv)
(v)
(vi)
95
(ii)
(iii)
96
(v)
97
(ii)
(iii)
(iv)
98
Motivar equipes de projeto: motivar equipes para a execuo de seus trabalhos, assegurando
que todos tm: (i) entendimento do seu trabalho, (ii) uma viso de comum interesse, (iii)
mecanismos apropriados de comunicao e trabalho, (iv) suporte da gerncia no que o indivduo
estiver executando.
Manter interaes entre equipes de projeto: obter e manter um acordo no gerenciamento de
interaes entre equipes.
Avaliar desempenho: avaliar o desempenho de pessoal, tanto individualmente como por
equipes, no que se refere s suas contribuies aos objetivos da organizao como um todo.
Assegurar que os fatos levantados sero discutidos com o pessoal.
Prover retorno sobre o desempenho: prover retorno s pessoas, referente aos resultados de
avaliaes efetuadas.
Manter registros de pessoal: manter registros adequados de pessoal, incluindo no apenas
detalhes pessoais, mas tambm informaes a respeito de habilidades, treinamentos
completados e avaliaes de desempenho.
99
(ii)
100
moda ou a ltima metodologia para desenvolvimento gil. Tal fato se deve valorizao do
desenvolvimento. Porm, se a manuteno passar a ser outro ponto forte de ateno, a pessoa
encarregada de tarefas de manuteno ter a possibilidade de estar em contato com tcnicas e
ferramentas que so estado-da-arte, mas da manuteno. Por exemplo, tm-se as tcnicas
modernas de decompilao, as ferramentas de recuperao de documentao etc. Dessa forma
o no contato com o estado-da-arte representa uma alegao referente aos artefatos utilizados
em desenvolvimento, uma vez que infelizmente ainda so pouco conhecidos aqueles possveis
de serem utilizados em manuteno.
(ii)
(iii)
Estabelecer um sistema de gerenciamento do conhecimento: estabelecer e manter uma infraestrutura de gerenciamento do conhecimento, bem como mecanismos para suportar as
atividades de identificar, classificar, exportar e usar o conhecimento.
Criar uma rede de contribuidores de conhecimento: estabelecer uma rede de especialistas
provendo sua natural interao.
Desenvolver uma estratgia de gerenciamento do conhecimento: definir uma estratgia
apropriada de gerenciamento do conhecimento baseada em necessidades organizacionais,
individuais, de domnio e de projetos.
Capturar o conhecimento: identificar e registrar cada item de conhecimento de acordo com a
classificao estabelecida e critrio de disseminao.
Disseminar a propriedade do conhecimento: compartilhar o conhecimento com especialistas,
usurios e projetistas.
Melhorar o conhecimento disponvel: validar e enriquecer o conhecimento armazenado,
assegurando sua adequao aos valores da organizao.
101
Por fim, o ltimo processo desse grupo que recebe destaque o processo de infraestrutura, mostrado no quadro 5.15.
QUADRO 5.15: RECURSOS E INFRA-ESTRUTURA: PROCESSO DE INFRA-ESTRUTURA
Grupo de Processos de Recursos e Infra-estrutura
Processo: Infra-estrutura
Objetivos: Manter a infra-estrutura confivel e estvel, uma vez que necessria para o apoio
do desempenho de qualquer outro processo.
Resultados esperados de uma implementao com sucesso:
(i)
(ii)
(iii)
(iv)
102
Prover apoio para o processo de infra-estrutura: prover suporte para aqueles que utilizam o
processo de infra-estrutura.
Manter o processo de infra-estrutura: realizar manuteno no processo de infra-estrutura com o
propsito de corrigir defeitos e melhorar o desempenho.
103
(ii)
(iii)
(iv)
(v)
(vi)
104
(ii)
(iii)
(iv)
(v)
(vi)
(vii)
105
(ii)
(iii)
(iv)
(v)
(vi)
(vii)
(viii)
106
Tarefas necessrias
Desenvolver uma estratgia de gerenciamento de mudanas: estabelecimento de uma
estratgia de gerenciamento de mudanas para assegurar que as mudanas possam ser
descritas, registradas, analisadas e implementadas.
Registrar os pedidos de mudanas: cada requisio de mudana deve ser unicamente
identificada e registrada.
Registrar o status dos pedidos de mudana: requisies de mudana devem possuir um status
associado para permitir facilidade no monitoramento.
Estabelecer as dependncias e relaes com outros pedidos: identificar o relacionamento do
pedido de mudana com outros pedidos para estabelecer suas dependncias (por exemplo,
mudanas no mesmo componente de software ou mudanas requisitadas para uma futura
verso j planejada do software).
Avaliar o impacto da mudana: avaliar o impacto da mudana, os recursos e os potenciais
benefcios resultantes.
Identificar as atividades de verificao e validao necessrias: antes de implementar a
mudana, o escopo das atividades de verificao e validao correspondentes deve ser
identificado.
Aprovar as mudanas antes de implementao: todas as mudanas devem ser aprovadas antes
da implementao.
Incluir mudana em cronograma: as mudanas aprovadas devem ser agendadas para
implementao.
Revisar a mudana implementada: todas as mudanas devem ser revisadas aps
implementao e antes de serem concludas, de modo a garantir que tiveram os efeitos
desejados e atingiram os objetivos.
107
Disseminar
conhecimento
relativo
ao
estado-da-arte
de
ferramentas
conhecimentos;
108
CAPTULO
6
Caractersticas do Ensino
de Manuteno de Software
.
6.1 Consideraes Iniciais
Dentre as atividades previstas no ciclo de vida de software, a manuteno a que possui a
menor ateno e conseqente incipincia em seu ensino (Dias, 2004), apesar de no ser uma
atividade nova, j que o seu surgimento est relacionado ao surgimento dos primeiros
softwares (Zvegintzov & Parikh, 2005).
Para ensinar manuteno de software, alm de conhecer profundamente essa atividade
fundamental saber o que vem sendo feito pela comunidade cientfica no intuito de transmitir
o conhecimento a respeito. Essa compreenso pode ser til para a extrao de recomendaes
do que deve ser aperfeioado e tambm de erros que j foram identificados, de forma a poder
propor solues no absolutamente novas, mas baseadas em correes de erros e melhoria dos
acertos de experincias anteriores.
110
que 40 a 50% dos softwares de usurio apresentam defeitos no-triviais (Boehm & Basili,
2001).
Um dos problemas de ensinar engenharia de software est ligado vasta quantidade de
termos e conceitos, o que pode resumir uma disciplina de engenharia de software em uma
disciplina de termos e conceitos de engenharia de software (Stiller & LeBlanc, 2002). Ainda
segundo a viso desse autor, necessrio que exista um projeto prtico para prover um
contexto para os termos e conceitos, pois caso contrrio os alunos no retero o contedo de
maneira apropriada.
De acordo com Soares (2005), fatores relacionados com a questo tcnica
(metodologias, linguagens etc.) em engenharia de software esto mais amadurecidos do que
aqueles ligados a caractersticas sociais (como trabalho em equipe), sendo necessria a unio
desses fatores para um ensino adequado da disciplina.
Diversas so as propostas para ensino de engenharia de software, algumas
preocupadas essencialmente com a forma de ensinar, enquanto outras com o contedo a
ensinar, como exemplificado a seguir:
Em Tomayko (1987), distinguem-se quatro modos em que esta disciplina pode ser
ministrada: aulas expositivas; aulas expositivas e seminrios; aulas expositivas e
estudos de casos com pequenas equipes; aulas expositivas e estudos de casos com
grandes equipes, de quinze a trinta alunos, sendo o professor o gerente da equipe.
por Ghezzi e Mandrioli (2005) ao dizer que a engenharia de software precisa ser ensinada de
forma atrelada ao seu contexto. Isso significa que o engenheiro de software deve no apenas
conhecer tcnicas de engenharia de software, mas tambm linguagens de programao,
algoritmos e estrutura de dados, banco de dados, sistemas operacionais, etc., que estaro ainda
ligados ao ambiente para o qual o software for ser desenvolvido (organizao comercial,
indstria, sistema de misso crtica etc.). Em suma, o ensino de engenharia de software deve
abordar, na medida do possvel, assuntos muito diversos.
Os conhecimentos necessrios a um engenheiro de software, de acordo com Ghezzi e
Mandrioli (2005), esto relacionados ao domnio amplo de:
Mtodos de projeto;
Tecnologia e ferramentas.
111
somente podem ser totalmente entendidas fora do ambiente acadmico, ou seja, com a prtica
no mundo real. Aqui possvel um paralelo com o ensino de manuteno de software, que
guarda tambm essa caracterstica de total aprendizado somente com a prtica, o que vem a
reforar os objetivos deste trabalho, quando tenta aproximar problemas da prtica com a
teoria acadmica.
112
14
http://www.sbc.org.br
113
Analisando a grade curricular proposta para esse curso, verifica-se que o total de horas
previsto para a matria engenharia de software de 210 horas, sendo representado por apenas
uma disciplina. O termo manuteno de software no aparece, de forma que se algo nesse
sentido ensinado, isso dever ser feito dentro da nica disciplina oferecida, e ser muito
ligado viso do professor que ministrar essa disciplina, de forma que o enfoque em
manuteno poder ser variado, ou at no existir.
Para o curso de Bacharelado em Engenharia de Computao, Teixeira et al. (2002)
explica que o objetivo formar recursos humanos para o desenvolvimento e aplicao de
tecnologias da computao no controle de processos e automao industrial. O currculo
proposto para esse curso reserva um total de 680 horas para a matria de engenharia de
software, distribudas por oito disciplinas. Fica claro um enfoque bem maior em engenharia
de software quando comparado com o curso de licenciatura. O plano de engenharia de
computao considera que o egresso poder exercer atividades de manuteno de software e
dentro da disciplina Mtodos e Ferramentas de Engenharia de Software apresenta, como um
dos objetivos, capacitar o aluno no uso de mtodos e ferramentas para manuteno de
software.
No curso de Bacharelado em Sistemas de Informao, Costa et al. (2000) explica que
o objetivo do curso a formao de profissionais para atuao em planejamento, anlise,
utilizao e avaliao de modernas tecnologias de informao aplicadas s reas
administrativas e industriais, em organizaes pblicas e privadas.
Por se tratar de um curso que oferece uma viso de administrao de empresas e
sistemas de informao, esperava-se que esse pudesse ser o curso mais propenso em ensinar
manuteno de software por meio de uma disciplina especfica, isso porque o egresso poder
deparar-se com situaes onde precisar decidir sobre o futuro de sistemas legados, por
exemplo, determinando sua descontinuidade ou manuteno. Porm, esse fato no se
verificou. O curso reserva um total de 432 horas para a matria engenharia de software,
distribudas em quatro disciplinas. Em nenhuma delas est previsto explicitamente o ensino
de manuteno de software. A disciplina de Engenharia de Software Aplicada prev exercitar
com o aluno o ciclo de vida de software, subentendendo-se que a atividade de manuteno
possa ser mesclada nessa disciplina, novamente estando dependente do perfil do professor que
a ministrar.
Finalmente, no curso de Bacharelado em Cincia da Computao, fechando os quatro
cursos de computao definidos pela SBC, Ferreira et al. (2001) explica que o objetivo
formar recursos humanos para o desenvolvimento tecnolgico da computao. Nesse curso,
144 horas so reservadas para a matria engenharia de software, distribudas em duas
114
Disciplinas de
Engenharia de Software
Total de
Horas
Total
Geral
Licenciatura em Computao
Engenharia de Software
210
210 h
Engenharia de Computao
Engenharia de Software I
Engenharia de Software II
Engenharia de Software III
Gerncia de Configurao
Processo de Engenharia de Software
Mtodos e Ferramentas para Eng. de Soft.
Qualidade de Engenharia de Software
Tpicos Especiais em Eng. de Software
120
80
80
80
80
80
80
80
680 h
Sistemas de Informao
Engenharia de Software A
Engenharia de Software B
Engenharia de Software Aplicada
Tpicos Especiais em Eng. de Software
72
72
72
72
288 h
Cincia da Computao
Engenharia de Software
Laboratrio de Engenharia de Software
72
72
144 h
http://www.acm.org
115
de 1990 e aps essa data, na qual significativos avanos proporcionaram uma adaptao dos
currculos para os cursos de Engenharia de Computao, Cincia da Computao e Sistemas
de Informao. Tais avanos incluem a importncia atribuda ao tema de engenharia de
software dentro do contexto de cincia da computao.
A importncia que o tema engenharia de software assumiu a partir de 1990 nos
Estados Unidos est atrelada ao fato de que quanto mais a computao usada para abordar
quantidades crescentes de problemas complexos, criar software de confiana se torna mais
difcil. Na medida em que os problemas se tornam cada vez mais complexos, no possvel
que apenas uma pessoa entenda o software por completo, considerando ainda que diferentes
mdulos de um software possam precisar interagir de forma imprevisvel. O uso da
computao para tarefas crticas, que envolvam segurana de pessoas, tambm pode ser
considerado um dos fatores que influenciaram o desenvolvimento da engenharia de software.
De uma forma geral, o que foi possvel compreender era que produzir software
consistia em uma tarefa difcil, muito cara e muito necessria.
Segundo ainda o mesmo autor, a percepo de todos esses fatos fez com que a
engenharia de software se tornasse uma disciplina fundamental em cursos de computao,
sendo aplicada inicialmente em cursos de computao na Inglaterra e Austrlia durante a
dcada de 1980 e adotada mais tarde, durante a dcada de 1990, nos Estados Unidos.
Percebe-se que essa evoluo da engenharia de software contnua, e os currculos
propostos pela ACM j consideram a atividade de manuteno de software como uma
disciplina especfica.
A importncia da disciplina difere de acordo com o curso de computao em questo.
Para mostrar essa importncia relativa, Shackelford prope em seu trabalho uma escala de 0 a
5, que representa um ndice de nfase atribuda disciplina. O valor 5 (cinco) representaria a
mxima nfase possvel, enquanto 0 (zero) indicaria nenhuma relevncia dentro do curso
considerado. Para cada disciplina dentro de um curso, a escala diria qual a mnima e qual a
mxima nfase que a disciplina pode ter dentro do currculo do curso. Essa estipulao de
mximo e mnimo visa oferecer flexibilidade para a grade curricular como um todo, que
poderia variar as horas-aula dentro da faixa de mxima e mnima nfase de cada disciplina.
As nfases propostas para a disciplina de manuteno de software foram consideradas
para elaborar o quadro 6.2, no qual mostrada a distribuio dessas nfases para cada um dos
trs cursos de computao em questo.
116
EC*
CC**
SI***
mn.
mx.
mn.
mx.
mn.
mx.
16
117
118
discusso do tema. A disciplina introduziu ainda o uso de uma lista de discusso via internet,
para discusses de assuntos relevantes ao tema.
Entre os resultados, obtidos por meio de uma pesquisa com os egressos da disciplina,
verificou-se que 50% dos alunos no tinham conhecimento da importncia do tema, 100%
disseram que passaram a se interessar pelo tema, 62,5% iniciaram a definio de um processo
de manuteno em seu ambiente de trabalho; ocorreu um acrscimo de 18,18% no uso de
ferramentas CASE para apoiar essa atividade; houve um crescimento de 14,29% em termos
de controle gerencial dessa atividade; 33,33% dos alunos presenciaram a criao de um setor
ou grupo especfico para administrar as manutenes em suas empresas; 100% concordaram
com a relevncia do tema; e 100% julgaram a disciplina realmente necessria para o curso.
Um resultado interessante do relato anterior a constatao da relevncia que os
egressos deram ao tema e as iniciativas de aplicao de conceitos tericos de manuteno de
software na prtica.
CAPTULO
7
Perspectivas para uma Disciplina
de Manuteno de Software
.
7.1 Consideraes Iniciais
Neste captulo so resumidas as propostas de resposta aos problemas de manuteno de
software em diretrizes para a elaborao de uma disciplina especfica sobre o assunto no meio
acadmico. O objetivo apresentar caminhos que orientem quais pontos devem ser
considerados com cuidado em uma futura implementao prtica da disciplina.
A experincia do autor com manuteno de software representa uma caracterstica
favorvel no momento de tecer indicaes do contedo a ser abordado pela disciplina, pois
permite confrontar o aprendizado que adquiriu nessa rea durante seu curso de graduao com
a experincia prtica desde ento obtida com manuteno de software.
Relativamente ao aprendizado durante a graduao, notvel a viso limitada que foi
formada, pois apenas em alguns momentos dentro de disciplinas de desenvolvimento de
software esse contedo foi abordado. De fato, ao experimentar os problemas reais no dia-a-dia
de organizaes que produzem e mantm produtos de software em constante evoluo, foi
sensvel a deficincia em entender alguns pontos. Primeiramente, existiu a deficincia em
perceber a importncia que a manuteno de software pode representar para a organizao,
obrigando-a a tratar o assunto de maneira independente e sistmica. Em segundo lugar, no
foi imediata a percepo do perigo de se criar uma falta de credibilidade da organizao frente
aos seus clientes, uma vez que reiteradamente problemas relacionados a alteraes de
software no fossem resolvidos ou fossem de maneira insatisfatria.
120
18
19
http://www.mtecbo.gov.br.
Parecer n.: CNE/CES 583/2001 - www.mec.gov.br.
121
122
123
importncia prtica da atividade, essa seja a abordagem mais correta, por basear-se no estudo
e entendimento dos problemas reais.
124
Uma vez que os mdulos e seus principais objetivos foram determinados, os tpicos
que cada um dever conter podem ser estabelecidos.
A especificao dos tpicos para cada mdulo feita de forma a apresentar o tpico e
a respectiva constatao que justificou sua existncia. Essa constatao est baseada nas
seguintes fontes:
sendo que nas consideraes finais deste captulo feita uma anlise crtica da estrutura
apresentada.
Fundamentao
(TF)
(TF)
(TF)
(TF)
(TF)
(TF), (EC)
Legenda:
TF = Teoria Fundamental, EC = Estudo de Caso, OA = Outros Autores (vide item 5.4).
125
126
Fundamentao
Equipe de manuteno
(TF), (16)
Gesto para manuteno: neste tpico deve ser apresentado o problema existente em
aplicar critrios de gesto no adequados ao contexto de software. importante
destacar que alm de ser necessria uma gerncia capaz de compreender as
127
128
129
que aqui no apareceram por no terem se revelado importantes para o contexto considerado.
No quadro 7.4 esto listados esses tpicos.
QUADRO 7.4: TPICOS DO MDULO C MANUTENIBILIDADE DURANTE O DESENVOLVIMENTO
Tpico
Fundamentao
Documentao (parte 1)
130
Definio e aplicao de critrios de testes (parte 1): a idia central neste tpico a
de mostrar que um produto de software entregue com erros acarretar a antecipao de
necessidades de manuteno. Note que corrigir erros em um software j entregue
constitui atividade de manuteno, segundo a definio da IEEE, ainda que o software
tenha acabado de ser entregue. Por conseqncia, os alunos devem valer-se do
conhecimento de engenharia de software para utilizarem tcnicas de definio e
aplicao de testes eficientemente.
131
Fundamentao
Documentao (parte 2)
(TF), (10)
Manuteno preventiva
(TF), (9)
Planejamento de manuteno
(TF), (4)
132
Da mesma forma que nos mdulos anteriores, a seguir apresenta-se a descrio geral
do contedo de cada tpico.
Definio e monitoramento de requisitos de qualidade (parte 2): neste tpico deve ser
tratada a exposio de quais so os requisitos desejveis de qualidade nas
manutenes e como acompanhar seu efetivo cumprimento, propondo-se correes
conforme necessrias. Novamente, importante que o aluno esteja ciente que
manutenes mal validadas geraro novas necessidades de manuteno, assim como
desconfiana do cliente.
133
recursos. Aqui a verificao e validao assume um papel ainda mais relevante do que
durante o desenvolvimento, isso porque o impacto negativo de alteraes fora de
conformidade com o que o cliente precisa pode produzir efeitos negativos muito
grandes, uma vez que o cliente provavelmente j apresenta dependncia em relao s
funcionalidades do software. Essa viso de dependncia em relao ao produto de
software estvel e correto deve ser trabalhada junto aos alunos.
134
fonte. claro que isso nem sempre ser possvel e os casos que de fato exigirem
manutenes precisam ser bem entendidos e analisados do ponto de vista de efeitos
colaterais em outros mdulos do software.
Manuteno preventiva: neste tpico deve ser apresentado aos alunos o conceito de
manuteno preventiva e a exposio de suas principais tcnicas. Alm disso, os
objetivos desse tpico incluem criar uma viso crtica do aluno sobre o tema. Isso
significa explicar a necessidade de recursos humanos extras e a complexidade para
trabalhar a manuteno preventiva, tornando necessrio sempre avaliar os objetivos
estratgicos da organizao em relao ao seu produto de software, para a partir desse
entendimento decidir sobre preocupar-se ou no com manuteno preventiva.
Definio de poltica de troca de verses: neste tpico deve ser exposta a necessidade
de previamente se estabelecer qual processo ser utilizado para a disponibilizao e
troca de verses, informando o cliente o que ficar a seu cargo e o que ser
responsabilidade da organizao. Vrias formas de tratar essa disponibilizao podem
ser aplicadas, sendo as mais comuns a disponibilizao de download via internet ou o
uso de CD-ROM. Dependendo da infra-estrutura do cliente, a opo por download
pode no ser vivel, devendo ser consideradas outras alternativas. O aluno precisa
tomar conhecimento dos inmeros problemas que podem surgir com a troca de
verses, como por exemplo, o cliente no saber como proceder e a organizao no
possuir algum para apoi-lo nessa tarefa. Problemas como esse podem dar a
135
Medio de nvel de satisfao do cliente: neste tpico o aluno deve perceber que a
manuteno de software pode ser considerada tambm como um fator de
competitividade. A esperada satisfao do cliente com a entrega do produto final aps
desenvolvimento seguindo padres e processos bem definidos, somente poder ser
conservada com o suporte, e conseqentes manutenes necessrias. Estabelecer
formas de medir o nvel de satisfao do cliente aps meses, ou anos, da entrega do
software favorecer a adoo de medidas, principalmente relacionadas com
manuteno e suporte, para manter uma relao positiva da organizao com o cliente.
Uma forma de medir essa satisfao pode ser com um sistema baseado em web que
permita ao cliente marcar, para cada pedido de manuteno efetuado, a sua impresso
com relao soluo oferecida. Por exemplo, para cada manuteno registrada e
concluda, o cliente poderia ter a sua disposio a possibilidade de selecionar entre
algumas opes de resposta, a que melhor refletisse seu sentimento com relao ao
atendimento oferecido para a manuteno.
136
137
138
CAPTULO
8
Concluso
.
8.1 Consideraes Gerais
O crescimento do nmero de sistemas legados e a dificuldade para mant-los adequados s
necessidades das organizaes foram a principal observao que guiou a elaborao deste
trabalho.
Percebe-se mais do que nunca como o mundo dos softwares dinmico e as
abordagens modificam-se atravs dos tempos. Partindo de uma euforia inicial por
desenvolvimento e formas de melhorar esse desenvolvimento, atinge-se agora um estgio a
mais, um crescente equilbrio com outra atividade do ciclo de vida de software: a manuteno.
Isso no significa que o desenvolvimento esteja com sua importncia sendo reduzida.
Pelo contrrio, no param de surgir novas idias, ferramentas e metodologias, algumas vezes
com propostas inovadoras, para facilitar o desenvolvimento e a prpria evoluo de software.
A idia de valer-se de componentes de software reutilizveis em diferentes projetos um
exemplo da tentativa da comunidade de pesquisadores de favorecer ainda mais o
desenvolvimento de software.
O fato que se percebe agora o surgimento de trabalhos e pesquisas voltadas
exclusivamente para manuteno de software, o que inclui o surgimento de eventos (como
congressos) especficos para esse fim. E isso com certeza fruto da verificao de que j se
conta com um volume grande de software em pleno funcionamento pelo mundo e que
precisar continuar em funcionamento por tempo indeterminado. Como prover vitalidade a
Captulo 8 Concluso
140
esse legado que a evoluo da computao produziu, e que hoje so tratados como bens das
organizaes, representa o foco de muitas pesquisas recentes.
8.2 Contribuies
As contribuies deste trabalho incluem a apresentao e estudo de fatos relacionados
atividade de manuteno de software, principalmente dos problemas ligados a essa atividade,
fornecendo parmetros inicias para guiar a confeco de uma disciplina de manuteno de
software em graduaes na rea de computao.
A apresentao dos problemas tpicos de manuteno de software e seu confronto com
a norma ISO/IEC 12207 um dos pontos fortes deste trabalho, pois se a norma considerada
um excelente guia para a prtica controlada e ajustvel do processo de desenvolvimento de
software, defront-la com os problemas de manuteno uma forma de identificar o que vem
sendo feito errado nas organizaes.
A esse entendimento das causas dos problemas de manuteno une-se a proposta dos
assuntos que devem ser tratados em uma futura disciplina de manuteno de software. Esses
assuntos so reflexos imediatos das constataes das razes principais dos problemas de
manuteno apresentados, e acredita-se que devam ser o ponto de partida para testes com uma
disciplina de manuteno de software.
Mais do que a disciplina em si, o propsito maior deste trabalho consiste em motivar e
conscientizar seus futuros leitores para a importncia da manuteno de software, que
ironicamente ainda colocada de lado em muitas organizaes, apesar de elas mesmas
sofrerem com a falta de controle sobre essa atividade.
Captulo 8 Concluso
141
Captulo 8 Concluso
142
REFERNCIAS BIBLIOGRFICAS
.
ANDREWS, J. H.; LUTFIYYA, H. L. (2000) Experiences with a software maintenance project
course, IEEE Transactions on Software Engineering (TSE), v. 43, n. 4, p. 383-388.
BASILI, V. (1990) Viewing Maintenance as Reuse-Oriented Software Development, IEEE
Software, v. 7, n. 1, p. 19-25.
BECK, K. (1999) Extreme Programming Explained, First Edition. Addison-Wesley.
BENNETT, K. H.; RAJLICH, V. T. (2000) Software maintenance and evolution: a roadmap, In:
Conference on The Future of Software Engineering, Limerick, Ireland, June.
BENNETT, K. H.; RAMAGE, M.; MUNRO, M. (1999) Decision Model for Legacy Systems,
IEEE Proceedings on Software (TSE), v.146, n. 3, p. 153-159.
BHATT, P.; SHROFF, G.; MISRA, A. K. (2004) Dynamics of software maintenance, ACM
SIGSOFT Software Engineering Notes, v. 29, n. 5, p. 1-5.
BHATT, P.; WILLIAMS, K.; SHROFF, G.; MISRA, A. K. (2006) Influencing Factors in
Outsourced Software Maintenance, ACM SIGSOFT Software Engineering Notes, v. 31,
n. 3, p. 1-6.
BLASI,
P.
J.
(1999)
Overview
of
ACM.
Disponvel
<http://www.acm.org/about_acm/ov.html>. Acesso em: 09 mai. 2006.
em:
BOEHM, B.; BASILI, V. (2001) Software Defect Reduction Top 10 List, Computer, v. 34, n.
1.
CARDOW, J.E. (1992) Can software maintenance be taught?, In: Conference on Software
Maintenance, Orlando, FL, USA, November.
CASTRO, J. F. B.; GIMENES, I. M. S.; MALDONADO, J. C. (2000) Uma proposta de Plano
Pedaggico para a matria Engenharia de Software, In: II Curso de Qualidade de Cursos
de Graduao da rea de Computao e Informtica, Curitiba, PR, Brasil, Julho.
CHAPIN, N. (1986) Software maintenance: A different view, In: Conference on Software
Maintenance, Orlando, FL, USA, November.
COSTA, C. M.; AUDY, J. L. N.; MAZZUCCO, J.; FURTADO, J. V. (2000) Plano Pedaggico para
cursos de Bacharelado em Sistemas de Informao, Sociedade Brasileira de Computao
(SBC). Disponvel em <http://www.sbc.org.br/index.php?subject=39>. Acesso em: 09 mai.
2006.
Referncias Bibliogrficas
144
DAHMER, A.; SANTOS, B. S. DOS; OGIBA, S.; KIST, T. (2002) Uma Proposta de Plano
Pedaggico para o Curso de Licenciatura em Computao, Sociedade Brasileira de
Computao (SBC). Disponvel em: <http://www.sbc.org.br/index.php?subject=39>.
Acesso em: 14 mai. 2006.
DART, S.; CHRISTIE, A. M.; BROWN, A. W. (2001) A Case Study in Software Maintenance,
Technical Report, Carnegie Mellon University.
DEKLEVA, S. M. (1990) Annual Software Maintenance Survey: Survey Results, Software
Maintenance Association, Vallejo, California, USA.
________. (1992) Delphi study of software maintenance problems, In: Conference on
Software Maintenance, Orlando, FL, USA, November.
DE LUCIA, A., POMPELLA, E., STEFANUCCI, S. (2004) Effort estimation for corrective software
maintenance. In: 14th International Conference on Software Engineering and Knowledge
Engineering, Ischia, Italy, July.
DIAS, M. G. B. (2004) Uma experincia no ensino de manuteno de software, In:
Workshop de Manuteno de Software Moderna (WMSWM04), Braslia, DF, Brasil,
Outubro.
FERREIRA, A. P. L.; BATTAIOLA, A. L.; SOUZA, F. F.; TORI, R. (2001) Proposta de Plano
Pedaggico: Bacharelado em Cincia da Computao, Sociedade Brasileira de
Computao (SBC). Disponvel em: <http://www.sbc.org.br/index.php?subject=39>.
Acesso em: 09 mai. 2006.
GHEZZI, C.; MANDRIOLI, D. (2005) The Challenges of Software Engineering Education, In:
27th International Conference on Software Engineering, Saint-Louis, Missouri, USA,
May.
HAZZAN, O.; DUBINSKY, Y. (2003) Teaching a Software Development Methodology: The
case of Extreme Programming, In: 16th Conference on Software Engineering Education
and Training (CSEE&T 2003), Madrid, Spain, March.
IEEE (1998) Std 1219 IEEE Standard for Software Maintenance, Institute of Electrical
and Eletronic Engineers, New York, NY, USA.
ISO/IEC 12207 (1998) Standard for Information Technology - Software Lifecycle
Processes, International Standard Organization, New York, NY, USA.
ISO/IEC 12207 (2002) Standard for Information Technology - Software Lifecycle
Processes/Amd.1, International Standard Organization, New York, NY, USA.
ISO/IEC 12207 (2004) Standard for Information Technology - Software Lifecycle
Processes/Amd.2, International Standard Organization, New York, NY, USA.
ISO/IEC 15504 (2003) Software Process Assessment, International Standard Organization,
New York, NY, USA.
KOSKINEN, J.; SALMINEN, A.; PAAKKI, J. (2004) Hypertext support for the information needs
of software maintainers, Journal of Software Maintenance and Evolution: Research and
Practice, v. 16, n. 3 , p. 187-215.
KUNG, H.; HSU, C. (1998) Software Maintenance Life Cycle Model, In: International
Conference on Software Maintenance, Bethesda, Maryland, USA.
LEHMAN, M. M. (1974) Programs, Cities, Students, Limits to Growth?, In: Imperial College
of Science Technology, London, England, May.
________. (1980) On Understanding Laws, Evolution and Conservation in the Large
Program Life Cycle, Journal of Systems and Software (JSS), v. 1, n. 3, p. 213-221.
Referncias Bibliogrficas
145
________. (1991) Software Engineering, the Software Process and their Support, IEEE
Software Engineering Journal: Special Issues on Software Environments and Factories, v.
1, n. 3, p. 213-221.
________. (1996) Laws of Software Evolution Revisited. In: 5th European Workshop on
Software Process Technology, Nancy, France, October.
LIENTZ, B. P.; SWANSON, E. B. (1980) Software Maintenance Management, Reading, MA,
Addison-Wesley.
NAUR, P.; RANDELL, B. (1968) Software Engineering: Report, In: Conference of NATO
Science Committee, Garmisch, Germany, October.
NIESSINK, F. (1999) Software Maintenance Research in the Mire?, In: Annual Workshop on
Empirical Studies of Software Maintenance (WESS99), Oxford, United Kingdom,
September.
NUNES, J. D. (2005) Projetos de Planos Pedaggicos Orientados a Problemas, Biblioteca
Digital
da
SBC.
Disponvel
em
<<
http://www.sbc.org.br/bibliotecadigital/download.php?paper=218>>. Acesso em: 20 jan.
2007.
PADUELLI, M.; SANCHES, R. (2006) Problemas em manuteno de software: caracterizao e
evoluo, In: III Workshop de Manuteno de Software Moderna, Vila Velha, ES, Brasil,
Maio.
PFLEEGER, S. L. (2001) Software Engineering: theory and practice. Second Edition, New
Jersey, Prentice Hall.
PIGOSKI, T. M. (1996) Practical Software Maintenance: Best Practices for Managing Your
Software Investment, Willey Computer Publishing.
POLO, M.; PIATTINI, M.; RUIZ, F.; CALERO, C. (1999) Roles in the maintenance process,
ACM SIGSOFT Software Engineering Notes, v. 24, n. 4, p. 84-86.
POLO, M.; PIATTINI, M.; RUIZ, F. (2003) Using a qualitative research method for building a
software maintenance methodology, Software Practice and Experience, v.32, n. 13, p.
12391260.
PRESSMAN, R. S. (2005) Software Engineering: a practitioners approach, 6.ed.,
McGrawHill Higher Education.
RODRIGUEZ, E. (2004). Overview of ACM / Education. Disponvel
<http://www.acm.org/about_acm/ov_edu.html>. Acesso em: 09 mai. 2006.
em:
SHACKELFORD, R.; CROSS, J. H.; DAVIES, G.; IMPAGLIAZZO, J.; KAMALI, R.; LEBLANC, R.;
LUNT, B.; MCGETTRICK, A.; SLOAN, R.; TOPI, H. (2004) Computing Curricula 2004: A
Guide to Undergraduate Degree Programs in Computing, Joint Task Force for Computing
Curricula 2004, The Association for Computing (ACM), November.
SILVA, L.; SAYO, M.; LEITE, J. C. S. P.; BREITMAN, K. (2003) Enriquecendo o cdigo com
cenrios, In: Simpsio Brasileiro de Engenharia de Software (SBES), Manaus, AM,
Brasil, Outubro.
SILVA, L. DE P.; SANTANDER, V. F. A. (2004) Uma Anlise Crtica dos Desafios para
Engenharia de Requisitos em Manuteno de Software, In: Workshop em Engenharia de
Requisitos, Tandil, Argentina, Dezembro.
SINGH, R. (1996). International Standard ISO/IEC 12207 Software Life Cycle Processes,
Software Process Improvement and Practice, vol. 2, p. 3550.
Referncias Bibliogrficas
146
APNDICE A
.
Questionrios utilizados no estudo de caso
A seguir so apresentados os questionrios utilizados para obter parte dos dados analisados no
estudo de caso do captulo 3.
Por no se conhecer previamente o tamanho das respostas, e visando evitar que a
estrutura do questionrio pudesse limit-las, as questes foram listadas em uma pgina e as
respostas eram dadas em pginas seguintes.
Para a confeco dos questionrios, os seguintes pontos foram considerados:
QUESTIONRIO
OBJETIVOS: Coletar dados referentes maneira como a equipe de manuteno de
software trabalha, obtendo respostas que influenciaro diretamente a elaborao de uma
relao de problemas caractersticos da atividade de manuteno de software na
organizao.
PARTE 1: Caractersticas do gerenciamento da atividade de manuteno.
1. Como um cliente se manifesta para apresentar uma necessidade de manuteno de
software? (e-mail, telefone, algum sistema especfico de help-desk etc.)
2. Uma vez que uma alterao de software foi requisitada pelo cliente, qual o processo
usado para avaliar tal solicitao? (todo pedido do cliente atendido?)
Apndice A
4. Considerando que nem sempre clara a comunicao entre o responsvel por obter os
requisitos de software e o cliente, como so tratados os problemas de m especificao de
manutenes? (exemplo, quando o profissional que for tratar a manuteno no entender o que deve ser
feito de fato)
5. comum que prazos acordados com o cliente no sejam cumpridos? Caso positivo, a
que se devem, principalmente, os atrasos?
6. Supondo que j exista um cronograma de manutenes a entregar, como so distribudas
internamente as tarefas? (ou seja, existe algum critrio para determinar qual profissional atender qual
solicitao?)
7. Considerando agora que a manuteno do cdigo-fonte j foi efetuada, quais os critrios
para testes antes de fornecer a verso modificada ao cliente?
8. Estando a modificao implementada e testada, como ela fornecida ao cliente? (por meio
de download em site, CD de atualizao etc.)
PARTE 2: Caractersticas tcnicas da abordagem das manutenes.
9. De maneira simples, como tratada a documentao das manutenes? (considere
questes como reviso geral da documentao de projeto).
10. Considerando a grande quantidade de arquivos associados a um projeto de software,
como tratado o controle de verso desses arquivos, quando manutenes simultneas
precisam ser feitas em arquivos comuns? (alguma ferramenta de controle de verso usada?
comum terem problemas com a ferramenta?)
Apndice A
QUADRO A.2: QUESTIONRIO DA SEGUNDA ETAPA: QUESTES GERAIS PARA DISCUSSO
QUESTIONRIO
OBJETIVOS: Identificar solues eficientes adotadas pela organizao para tratar seus
problemas de manuteno de software.
1. Os problemas com a atividade de manuteno de software so geralmente muitos.
Partindo desse fato, como sua empresa vem tratando a questo: (assinale apenas uma
alternativa):
Normalmente apenas resolvemos os problemas medida que surgem.
Buscamos, alm de resolver os problemas medida que surgem, adotar medidas para
preveni-los.
Apndice A
APNDICE B
.
Tabela de Atividades (CBO)
A Classificao Brasileira de Ocupaes (CBO) corresponde ao documento que reconhece,
nomeia e codifica os ttulos bem como descreve as caractersticas das ocupaes do mercado
de trabalho brasileiro1.
No quadro B.1 esto listadas as denominaes principais e os respectivos sinnimos
das ocupaes ligadas anlise de sistemas (o quadro exclui funes de tcnicos e auxiliares
normalmente sem exigncia de curso superior).
QUADRO B.1: DENOMINAES PRINCIPAIS E RESPECTIVOS SINNIMOS DAS OCUPAES (CBO)
Denominao principal
Sinnimos
- Analista de comrcio eletrnico (e-commerce)
- Analista de sistemas de informtica administrativa
Analista de desenvolvimento de
sistemas
- Analista de rede
- Analista de telecomunicao
http://www.mtecbo.gov.br
Apndice B
- Administrador de rede e de sistemas computacionais
Administrador de redes
Administrador de sistemas
operacionais
Engenheiro de aplicativos em
computao
Engenheiro de equipamentos em
computao
Programador de internet
- Programador de computador
- Programador de processamento de dados
Programador de sistemas de
informao
Apndice B
Apndice B
Apndice B