MANUTENÇÃO DE SOFTWARE
Francisco Luiz Sobrinho, Samily Rocha Gois
Faculdade de Tecnologia SENAC – Goiânia/GO (SENAC/GO)
Av. Independência número 1002 - CEP 74645-010 – Setor Leste Vila Nova - Goiânia
GO – Brasil
Engenharia de Software
Gestão da Tecnologia da Informação II - Matutino
[email protected], [email protected]
Abstract. The amount of software running on any kind of organization is
attracting attention for one stage of the life cycle of software, previously
considered Secondly, the maintenance of software. The problems arising from
this activity need to be well understood. That usually is not feasible to replace
the software products of an organization by others based on recent
technologies, makes the system maintenance an additional challenge to the
search of techniques and methods for software maintenance.
Resumo. A quantidade de software em funcionamento em todo tipo de
organização vem despertando atenção para uma fase do ciclo de vida de
software, até então considerada em segundo lugar, a manutenção de software.
Os problemas oriundos dessa atividade precisam ser bem compreendidos. O
fato de geralmente não ser viável substituir os produtos de software de uma
organização por outros baseados em tecnologias recentes, torna a
manutenção de sistemas um desafio adicional para a busca de técnicas e
métodos para a manutenção de software.
1. Introdução
A Engenharia de Software desenvolve, cria e aperfeiçoam continuamente métodos,
procedimentos e ferramentas para tornar a atividade de desenvolver e manter software
uma tarefa que possa ser medida, controlada e avaliada. Ao longo das últimas décadas
houve uma melhora significativa do conceito de software, de suas características e dos
seus processos. Todo esse desenvolvimento na atualidade destina-se à atividade de
manutenção de software e essa importância ocorre por causa da quantidade de software
em funcionamento nas organizações, mas não são substituídos, e é justamente por causa
disso que surge a necessidade de manutenção de software. Essa Necessidade concorre a
diversos problemas originados de diversas fontes como: a própria administração das
organizações, o perfil dos clientes ou as deficientes técnicas utilizadas na construção de
software.
Este artigo colabora para melhor entender as dificuldades de uma das importantes
atividades dentro do ciclo de vida do software, a atividade de manutenção de software.
Existem Trabalhos em algumas instituições de ensino superior no sentido de estabelecer
uma disciplina própria para manutenção de software em cursos de graduação e essa
iniciativa mostra a necessidade da importância de ensinar manutenção de software no
meio acadêmico, antes de os alunos se tornarem profissionais. Fica claro dessa maneira,
entender a importância de pesquisar e correlacionar as informações sobre a atividade de
manutenção de software dentro das organizações, evidenciando assim, quais são as
dificuldades dessa atividade (manutenção de software), para que sejam estabelecidos
programas de ensino baseados na prática e não apenas fechados dentro da realidade do
meio acadêmico.
Muitos problemas referentes ao desenvolvimento e manutenção de software
continuam em muitos casos sem solução, apenas com muitos conceitos sem evolução.
Entender o significado da manutenção de software constitui o passo fundamental para o
estudo e aprofundamento de soluções para os problemas ligados a essa tarefa.
2. Dificuldades – O que pode ser feito?
É importante destacar que diversos profissionais estão trabalhando diretamente em
manutenção de software no meio organizacional mesmo sem uma graduação específica,
mas contribuindo para os fatores importantes envolvidos com a manutenção de software,
favorecendo opções para essa real necessidade, bem como proporcionando atendimento
às organizações.
A atividade de manutenção de software é distinguida pela modificação de um
produto de software já entregue ao cliente para correção de supostos erros, melhorando
seu desempenho ou qualquer outro atributo, para adaptação desse produto a um
ambiente modificado (IEEE, 1998).
Segundo Pfleeger (2001), existem três diferenças na manutenção de software
muito embora o mesmo seja tratado de forma genérica, porém, com propósitos distintos:
I.
II.
Softwares construídos com base em uma especificação rígida e bem
definidos cujos resultados esperados são bem conhecidos: um
software construído pode realizar operações com matrizes (adição,
multiplicação e inversão). Esse software devidamente implementado
praticamente não haverá necessidade de manutenção.
Em outra situação, são agrupados os softwares que são
implementações, de soluções aproximadas para problemas do mundo
real, sendo que soluções completas só são conseguidas na teoria
nesses casos. Exemplo: em um jogo de xadrez suas regras são bem
definidas, mas não é possível construir um software que calcule a
cada passo todos os movimentos possíveis das peças do tabuleiro, de
maneira que consiga determinar o melhor movimento. O número de
movimentos possíveis é grande para ser calculado em um espaço de
tempo relativamente curto. A solução para esse problema baseia-se
em descrever o problema de forma abstrata para então definir os
requisitos de software a partir dessa abstração. Percebe-se que esse
III.
tipo de sistema já contempla diferentes interpretações por parte do
desenvolvedor, que tende a produzir software com maior necessidade
de manutenção em relação ao primeiro exemplo. Por ser uma
abstração para especificação de requisitos, a mudança pode aparecer
caso a abstração mude na medida em que um maior entendimento do
problema seja alcançado.
Nessa situação, alguns tipos de software consideram mudanças no
ambiente onde o software vai ser utilizado, condição não existente
nas situações anteriores. Neste caso, o software corresponde àquele
criado com base em um modelo dos processos abstratos envolvidos
no sistema e precisará mudar sempre que ocorrerem mudanças nesses
modelos, inicia no ambiente que ele modela. Um tipo de software
assim seria aquele que apresenta informações de economia de um
país. À medida que a economia passa a ser compreendida o modelo
muda e com ele a abstração do problema, causando uma necessidade
de manutenção. Esses softwares são encontrados no dia-a-dia das
organizações.
O processo de manutenção de software não compreende a uma atividade isolada,
pois sua execução tem partes diferentes e precisam interagir de forma que os objetivos
da manutenção sejam entendidos e os resultados alcançados. Essas partes são
apresentadas da seguinte forma: Organizações Cliente: corresponde ao adquirente do
software, conforme definido pela norma ISO/IEC 12207. Isso significa que as
organizações que possui o software requisita o serviço de manutenção; Mantenedor:
trata-se da organização que oferece o serviço de manutenção; Usuário: representa a
organização ou pessoa que utiliza o software, valendo-se suas funcionalidades para
automatizar e facilitar as tarefas.
O relacionamento entre essas partes é a constituição de um fluxo para os pedidos
de manutenção conferido na figura 1.0.
A organização possui um responsável pela solicitação de manutenção que
especifica os requisitos e informa ao mantenedor. Esse responsável considera os erros
apontados pelo help-desk encarregado do diálogo com os usuários. Do lado do
mantenedor, a organização que presta o serviço encarrega alguém para avaliar as
requisições, julgando ser necessário ou não para os objetivos do software e do
solicitante. Se o pedido for aceito, destaca-se um encarregado para estabelecer um
cronograma de entrega e o mesmo deverá ser seguido pela equipe de manutenção que
são as pessoas envolvidas em atender as solicitações. O usuário utiliza o software
reportando para o help-desk que por sua vez informará o responsável pelas solicitações
de manutenção fechando o ciclo.
Figura 1.0: Fluxo envolvido na manutenção de software
Com relação à falha e ao defeito de software, Pressman (2005) explica que a IEEE
define para o contexto de hardware a explicação de que um defeito o constitui uma
anomalia do produto. Já uma falha pode significar um defeito em um dispositivo, uma
definição incorreta de passos, processos ou de dados em um programa de computador.
No contexto de manutenção de software, os termos falha e defeito são sinônimos e
ambos se referem a algum problema relacionado à qualidade, identificado depois de o
software ser entregue ao usuário.
Atividades de manutenção de software são caracterizadas por intervenções no
produto de software de forma a evitar sua deterioração. Um software não se desgasta,
mas se deteriora no sentido de os objetivos de suas funcionalidades cada vez menos se
adequarem ao ambiente externo.
A manutenção de software deverá contemplar o nível de satisfação do usuário em
relação ao software utilizado.
3. Norma ISO/IEC 12207
Em 1987 a ISO e a IEC estabeleceram om Comitê Técnico Conjunto – JTC (Join
Technical Committee) sobre tecnologia da informação, a fim de efetuar a normatização
no campo de sistemas de tecnologias da informação. Dentre os objetivos estava o
estabelecimento de um padrão para processos de ciclo de vida de um software, que
culminou a norma ISO/IEC 12207, que teve início em 1989.
Essa norma provê um conjunto de Processos de Engenharia de Software que uma
organização deve utilizar para adquirir, fornecer, desenvolver ou manter software, pois
documenta os processos do ciclo de vida de software em um modelo de referência de
processos.
4. Conclusão
A grande maioria dos estudos existentes na área de manutenção de software utiliza a
metodologia de “pesquisar-e-transferir”, no sentido de pesquisa fechada dentro do meio
acadêmico enquanto existe uma necessidade de usar a abordagem “indústria-comolaboratório”, uma vez que é nas indústrias que a atividade de manutenção existe como
atividade real e intensa do dia-a-dia.
Manutenção de software deve ser considerada com base em seu ambiente de
aplicação e, essa abordagem representa a melhor fonte de evidências para sustentar e
guiar as pesquisas de melhoria e sistematização da atividade.
A ausência de um processo de manutenção de software, como dita as normas de
Engenharia de Software, não é de todo condenável se o processo criado pela própria
organização funcionasse de maneira satisfatória. O que deve ser observado é a pressão
gerada pelos clientes muitas vezes prejudica o cumprimento correto da sequência de
passos estipulada pela própria organização para tratar a manutenção de software.
A inexistência de manutenção preventiva é um fato que precisa ser analisado em
conjunto com os objetivos de negócio da organização e com seus projetos em relação à
vida útil do software que mantém.
5. Referências:
IEEE (1998) – especifica a forma de um conjunto de documentos em oito estágios
definidos de teste de software. Melhora o desempenho ou qualquer atributo para
adaptação desse produto a um ambiente modificado.
S. L, Pfleeger (2001) – Software Engineering Theory and Practice – second edition
ISBN-10:0130290491|ISBN-13:9780130290496.
R. S., Pressman (2005) – Explica IEEE – Artigo: alternativas para redução de problemas
na manutenção de software: artigo revista Engenharia de software by Mateus
Maida Paduelli, Mestre em Computação pela USP.
Norma ISO/IEC 12207 – Comitê Técnico Conjunto-JTC (Join Technical Committee)
Tecnologia da Informação – Teve início em 1989 – Versão inicial (1995) –
Estrutura para manutenção de software.
Download

Artigo Manutenção de Software