Académique Documents
Professionnel Documents
Culture Documents
RESUMO
Em avanço constante, a Engenharia de Software vem tentando atingir
níveis mais altos de qualidade definindo modelos para melhoria dos processos
de desenvolvimento, buscando softwares que atendem totalmente os requisitos
do usuário final, com o menor número de falhas e com menor custo possível.
Mas a qualidade dos produtos de software não pode estar somente vinculada
aos processos de construção e aos produtos produzidos por esses processos,
pois não há garantia que esta qualidade se propague por toda vida útil deste
software. Existe uma real necessidade de modelos de qualidade para a fase de
manutenção de software visando processos que garantam a qualidade durante
esta fase, amenizando a deterioração da qualidade a partir do momento que o
software for implantado e começar a sofrer manutenções. Esses modelos de
qualidade já podem ser evidenciados em alguns padrões e normas de
qualidade nacionais e internacionais. Visando atender esta necessidade, este
trabalho apresenta uma proposta de processo de manutenção de software para
possibilitar a continuidade da qualidade dos serviços e produtos de software
após a sua entrega ao usuário final, apoiado por uma ferramenta automatizada
de gerenciamento de worflows, e tendo como base uma organização tradicional
que desenvolve e mantém software.
ÍNDICE
1. INTRODUÇÃO ..................................................................... 02
4. CONTEXTUALIZAÇÃO ....................................................... 06
6. CONCLUSÃO ...................................................................... 10
8. ANEXOS ............................................................................. 12
2
INTRODUÇÃO
Existe, atualmente, uma grande atenção voltada para melhoria da
qualidade dos produtos de software. Muitas organizações buscam e utilizam,
de forma constante, modelos e padrões para alcançar níveis mais altos de
qualidade dos seus produtos[1]. A maioria destes modelos confere a qualidade
do software ao processo de construção e aos seus resultados. Porém, essa
qualidade alcançada no final do processo de desenvolvimento do software não
tem garantia da sua própria extensão durante toda a vida útil deste software.
Dessa forma, a utilização de um modelo de qualidade para o processo de
desenvolvimento de projetos de software não assegura um processo de
manutenção com qualidade, havendo necessidade de modelos próprios para
essa fase do ciclo de vida do software.
É interessante é que a fase do ciclo de vida do software que, na maioria
dos casos, consome mais recursos, humanos e financeiros, das organizações
que produzem softwares, é a que menos atenção recebe no planejamento do
desenvolvimento do software. Essa desatenção gera muitas dificuldades para a
realização das futuras manutenções. A falta de documentação mínima, um
controle de alterações e configurações deficiente, a descriminação das equipes
de manutenção são algumas dessas dificuldades que acarretam em um grande
obstáculo para dar continuidade na qualidade das atividades e produtos
gerados pela fase de manutenção. Além disso, a falta de um modelo próprio,
de treinamentos específicos ou de ferramentas adequadas influencia
negativamente nos processos de manutenção. Dessa forma, as manutenções
no software, após sua entrega, deverão ser realizadas utilizando-se algum
modelo de qualidade para evitar que a qualidade adquirida no processo de
desenvolvimento se adultere. É importante entender que empregar o mesmo
modelo de qualidade do desenvolvimento pode tornar o processo de
manutenção inviável por custar mais e ser mais demorado que a própria
manutenção, na maioria dos casos. Buscando garantir um melhor e maior
controle dos serviços e produtos envolvidos na fase de manutenção, esse
trabalho foca a definição de um processo de manutenção de software como
solução, total ou parcial, das dificuldades existentes.
Através deste papel, nós apresentamos uma proposta de um processo
de manutenção software, para atividades de manutenção tanto corretivas,
adaptativas e perfectivas. Essa proposta apresentada compreende também na
demonstração de uma ferramenta automatizada que dará suporte para as
atividades de manutenção durante o processo e relata a necessidade da
mudança da cultura das organizações que desenvolvem e mantém softwares, a
partir do relato breve da atual situação de uma organização tradicional.
Este trabalho se divide em 6 seções. Após esta introdução, relatamos
sobre qualidade de software e apresentamos alguns modelos, destacando os
padrões para processo de manutenção. Na terceira seção justificamos a
necessidade de um processo de manutenção bem definido para controle e
organização das atividades e documentos envolvidos. A contextualização de
uma organização, que servirá de exemplo para nossa proposta, é apresentada
na seção 4. Na quinta seção apresentamos a proposta do processo de
manutenção, com a definição das atividades principais, os documentos
necessários e envolvidos e a utilização de um software como ferramenta
automatizada para controlar as atividades. A necessidade da mudança na
cultura interna da organização também é relatada nesta seção. Finalmente, a
seção 6 apresenta as conclusões do trabalho.
3
QUALIDADE DE SOFTWARE
Primeiramente, o que é qualidade?
Existem muitas definições, mas segunda a norma brasileira sobre o
assunto (NBR ISO 8402), qualidade é a totalidade das características de um
produto (bem ou serviço) que lhe confere a capacidade de atender às suas
próprias condições e objetivos propostos e de satisfazer às necessidades
diferenciadas de seus usuários, evolução de tempo, questões de segurança,
etc.
A qualidade não é importante apenas por ser um diferencial dentro do
mercado para que a empresa possa vender e lucrar mais, mas também por se
tornar um pré-requisito que qualquer organização deve atender e conquistar
para conseguir colocar seu produto no mercado global.
Na área de software, há uma maior preocupação sobre qualidade, visto
que a evolução desta área se deu de uma forma muito rápida, que hoje o
produto gerado por ela assumiu um papel muito importante na sociedade e que
qualidade é o sucesso para o negócio, como em qualquer outro.
Essa preocupação com a qualidade de software é essencial já que
qualidade é[2]:
a) Competitividade: a melhor forma de diferenciar seus produtos dos
produzidos pelos seus concorrentes;
b) Sobrevivência: clientes querem qualidade. Sem esse fator sua
organização perder mercado.
c) Custo/Benefício: a melhor forma de aumentar produtividade e
aumentar a qualidade do software, reduzindo os custos.
4
• Princípios de engenharia
- Analisar o problema antes de desenvolver a solução;
- Quebrar problemas complexos em problemas menores;
- Garantir que subproblemas unam-se pelo controle de seus
relacionamentos
5
Nessa norma, os processos do ciclo de vida do software são agrupados
em 3 classes que são definidas por um conjunto de processos de acordo com a
estrutura da tabela II (em anexo).
Como destacamos, tanto a ISO 9126 como a ISO 12207 definem, dentro
das suas estruturas, seções para o processo de manutenção de software,
propondo padrões e modelos para aumentar a qualidade das atividades e dos
produtos gerados durante a fase de manutenção, garantindo a qualidade final
do software também após sua implantação, e durante o seu ciclo de vida.
1. MANUTENÇÃO DE SOFTWARE
A manutenção de software não pode ser vista apenas como uma fase
dentro do processo de desenvolvimento de software e sim como uma nova
iteração dentro do ciclo de vida do software.
O processo de manutenção de software é um conjunto de atividades de
adaptação, melhoramento, evolução, adequação ou correção do software, e
dos artefatos envolvidos, perante o mundo real a os requisitos reais do seu
usuário final, que envolve todas as fases do processo de desenvolvimento
como análise, projeto, implementação, teste, documentação, integração, etc.
Atualmente percebeu-se a necessidade de uma maior atenção para
esse tema, visto que a manutenção é uma fase inevitável e a mais longa do
ciclo de vida de um software e por gerar um grande custo a qualquer
organização que mantém softwares chegando a consumir até 65% do custo
total de um produto[4]. Dessa forma as normas internacionais de qualidade já
destacam padrões e modelos que definem e classificam a manutenibilidade de
um software, que é o atributo que caracteriza a facilidade de modificação e
adaptação do mesmo, e as atividades que definem o processo de manutenção.
Existem muitos problemas que podem dificultar a atividade de
manutenção, especialmente para os softwares mais antigos, como:
• A falta de documentação ou documentação incompleta ou defasada;
• Falta de disponibilidade dos desenvolvedores para esclarecimentos
sobre o software;
• Módulos fortemente integrados;
• Códigos fontes complexos;
• Falta de controle de configuração do software;
• Etc.
6
Sobre esta última meta, processo de manutenção visa facilitar a
adequação das alterações em itens de software, minimizando os esforços da
fase de manutenção e permitindo, de forma ampla, suportar manutenções
corretivas, adaptativas ou perfectivas. Esse processo deve garantir[5]:
- A documentação de todos os pedidos de manutenção;
- Realização/Execução dos pedidos de manutenção
através de atividades sequenciais bem definidas;
- Controle e organização de versões e variantes de cada
artefato identificado;
- Registro de todas as alterações aplicadas para gerar
históricos;
Como a origem dos pedidos de manutenção pode ser as mais variadas
possíveis, desde uma necessidade real do usuário a alterações legais, é
importante que haja um processo formal, controlado e documentando, para que
as alterações sejam efetivadas ou ignoradas, registrando-se as informações
independentes da aceitação dos pedidos.
Com o objetivo de atender a necessidade de um melhor controle e uma
melhor organização das atividades e dos documentos envolvidos na fase de
manutenção de software, elaboramos um modelo de processo de manutenção
software para uma organização de software descrita a seguir.
2. CONTEXTUALIZAÇÃO
A empresa em questão tem como principal atividade o desenvolvimento
de um sistema único de atendimento a clientes, telemarketing, controle de
tarefas internas e CRM. Como filosofia adotada, a empresa não vende um
produto pronto mas uma ferramenta que se adeqüe à necessidade de cada
cliente. Sendo assim, apesar de ser comercializado apenas um produto de
software, este è adequado às necessidades individuais de cada organização
que o adquire.
Após a implantação do software, é oferecido um contrato de
manutenção sem restrições. Isto é, o valor mensal pago permite que o cliente
solicite qualquer tipo de alteração, seja no aplicativo em si ou nos relatórios
emitidos, desde que estas mudanças não alterem a finalidade principal do
software.
Quanto à equipe envolvida no processo, esta se resume a apenas duas
pessoas. Uma delas tem como função a análise das alterações solicitadas e
sua implementação. A outra é responsável pela implantação do sistema,
treinamento dos usuários e levantamento dos novos requisitos.
Devido à pequena equipe, existência de quatro contratos de
manutenção e à ausência de qualquer processo definido de implementação e
manutenção, a empresa tem enfrentado alguns problemas de insatisfação dos
usuários e estouro de cronogramas. Isto também tem feito com que a pessoa
responsável pelo levantamento de requisitos tão tenha executado esta função.
Sendo assim, toda solicitação é feita através de e-mail, sendo enviada
diretamente do cliente ao analista, e este fica responsável pela verificação da
solicitação, sua implementação e testes.
Além dos quatro contratos existentes, a empresa também dá
manutenção em sistemas de clientes que não pagam mensalmente, sendo
estes cobrados por hora.
7
De fato, a falta de processos definidos de manutenção, além de
prejudicar a empresa frente aos seus clientes atuais, também tem impedido
que novos projetos sejam iniciados.
À partir do contexto apresentando, o esquema abaixo descrito tem como
finalidade propor um modelo de processo de manutenção que padronize a
solicitação das alterações, sua implementação e testes, buscando aumentar a
satisfação dos clientes e melhorar a qualidade do software produzido.
8
analista identifica os artefatos envolvidos e a solicitação é
encaminhada para um desenvolvedor para que seja atendida. Se
não for pertinente, a solicitação é concluída e o analista envia
uma resposta para o cliente.
Atividades:
9
d) Análise conclusiva da solicitação de manutenção
10
Sugestão de mudanças na cultura da empresa
A implantação, simplesmente, de um processo de manutenção
de software bem definido e com qualidade, não garantirá o sucesso e a
qualidade dos serviços e produtos se não houver um entendimento e
uma aceitação, por parte de todas as pessoas da organização, das
práticas de qualidade na execução dos trabalhos.
Assim, para poder conscientizar todas as pessoas envolvidas,
direta ou indiretamente, da necessidade de se ter uma qualidade de alto
nível e de suas responsabilidades por essa qualidade, um programa
cultural deverá ser executado paralelamente à implantação dos
processos, buscando garantir que as atividades, os documentos e as
ferramentas, definidas no processo, sejam executados, manipulados e
utilizados o mais corretamente possível. Geralmente, utilizam-se
treinamentos e reuniões como ferramentas para discutir qualidade
dentro das organizações.
Nosso plano de mudança cultural visa a delimitação dos
processos e a especificação dos papéis dentro dos processos,
especialmente no processo de manutenção.
Na delimitação dos processos deverá haver uma distinção entre
os processos de desenvolvimento e o processo de manutenção. Cada
processo deve ser bem definido e separado para que não haja
confusões nas atividades realizadas e não se perca o foco de cada
processo, já que cada um utiliza modelos próprios de qualidade. A
definição do processo de manutenção é caracterizada pela implantação
da proposta descrita nesse trabalho acompanhado de treinamentos para
esclarecer e orientar, as pessoas envolvidas, sobre a utilização das
técnicas e ferramentas aqui apresentadas.
A especificação de papéis visa determinar as funções
representadas dentro do processo. Um papel é uma função realizada por
uma pessoa, em um determinado momento do processo, independente
do seu cargo dentro da organização, ou seja, uma mesma pessoa pode
ser o analista, o desenvolvedor e mantenedor de um software, desde que
fique realmente claro onde, como e quando cada papel deverá ser
representado dentro do processo. Na organização demonstrada acima,
há a necessidade de uma ampliação na equipe e uma melhor definição
dos papéis dentro do processo de manutenção. As atribuições relativas a
cada papel devem ser descritas claramente e as atividades deverão ser
executadas conforme definido no processo de manutenção.
A partir da implantação do processo de manutenção, deverá haver
também, como parte do plano de mudança cultural, iniciativas da
administração e dos colaboradores da organização para aprimorar o
processo e aumentar o incentivo das pessoas envolvidas para realizarem
tarefas melhores e com mais qualidade.
CONCLUSÃO
Existe hoje, na área de produção de software, uma maior atenção
voltada para padrões de qualidade de produtos e serviços, visando
acompanhar os requisitos do mercado e atender as necessidades reais dos
clientes. Porém, o produto software possui características próprias bem
distintas e se difere de outros produtos que possuem linha de produção e
11
padrões já bem definidos de qualidade.
A Engenharia de software vem buscando modelos e padrões para
melhorar os processos de desenvolvimento dos produtos, tentando atingir
níveis mais altos de qualidade. Mas a qualidade do produto de software não
está apenas na sua produção e nos resultados por ele gerados, mas também
nos processos de manutenção desse produto, após sua entrega, que visa a
extensão dessa qualidade por toda vida útil do software, tentando sempre
corrigi-lo, adaptá-lo e aprimorá-lo para melhor atender às necessidades reais
de seus usuários e de seu ambiente, necessidades essas que se modificam
com o passar do tempo.
Deve-se entender que para garantir a qualidade do software durante sua
manutenção, devemos utilizar um modelo, um padrão de qualidade, como no
processo de desenvolvimento, para garantir a continuidade dos níveis de
qualidade dos serviços e produtos gerados após a entrega.
Neste trabalho apresentamos uma proposta de um simples processo de
manutenção visando atender as necessidades de organizações tradicionais
que desenvolvem e mantém softwares. Foram descritas as atividades
necessárias para atender uma solicitação de manutenção de um cliente,
iniciando à partir do recebimento da solicitação até sua conclusão. Alguns
documentos utilizados para dar apoio às atividades foram apresentados, bem
como uma ferramenta automatizada para gerência da seqüência das
atividades. Relatamos também a necessidade de uma mudança de cultura
dentro da organização, para conscientizar todas as pessoas envolvidas da
necessidade de se registrar todas as solicitações dos clientes, documentar as
alterações e, conseqüentemente, alcançar níveis mais altos de qualidade e
satisfação.
REFERÊNCIAS BIBLIOGRÁFICAS
[3] WEBER, Kival Chaves; ROCHA, Ana Regina Cavalcanti da; ABREU, Maria
Célia de. Qualidade e Produtividade em Software. 3 ed. MAKRON Books do
Brasil Editora Ltda, São Paulo, 2001.
12
[5] GREYCK, Márcio. Material Didático apresentado nas aulas de
Manutenção de Software do Curso de Gestão em Tecnologia da
Informação. Faculdade ALFA, 2004;
ANEXOS
FIGURA 1
13
TABELA I
Característica Subcaracterística
Adequação
Acurácia
Funcionalidade
Interoperabilidade
(satisfaz as necessidades?)
Conformidade
Segurança de acesso
Maturidade
Confiabilidade
Tolerância a falhas
(é imune a falhas?)
Recuperabilidade
Inteligibilidade
Usabilidade
Apreensibilidade
(é fácil de usar?)
Operacionalidade
Eficiência Tempo
(é rápido e “enxuto”?) Recursos
Analisabilidade
Manutenibilidade Modificabilidade
(é fácil de modificar?) Estabilidade
Testabilidade
Adaptabilidade
Portabilidade Capacidade p/ ser instalado
(é fácil de usar em outro ambiente?) Conformidade
Capacidade para substituir
TABELA II
Aquisição Documentação
Garantia da Qualidade
Operação Verificação
Validação
Desenvolvimento
Revisão Conjunta
Manutenção Auditoria
Resolução de Problema
Processos Organizacionais
Gerência Infra-estrutura
14
Melhoria Treinamento
15