Escolar Documentos
Profissional Documentos
Cultura Documentos
de Mudança
Objetivos da Unidade:
ʪ Material Teórico
ʪ Material Complementar
ʪ Referências
TEMA 1 de 3
ʪ Material Teórico
No processo de manutenção do software, medidas devem ser tomadas para orientar as nossas
atividades, auxiliando na avaliação de impacto de uma alteração ou mesmo avaliando méritos
sobre as modificações propostas (PFLEEGER, 2004).
Quando falamos em facilidade de manutenção, não estamos falando apenas no código, pois essa
abordagem vai muito além disso, incluindo também os seguintes itens:
Devido a isso, são necessárias medidas para a avaliação de facilidade de manutenção para todos
os produtos que se pretende fornecer.
A facilidade de manutenção, segundo Pfleeger (2004), pode ser fornecida de duas maneiras:
Dependente do produto;
Depende da documentação;
Você Sabia?
Não se mede se um sistema possui fácil manutenção sem a realização
de seu monitoramento em um ambiente específico de uso
(SOMMERVILLE, 2016).
É fato que queremos medir a facilidade de manutenção de um sistema antes que ele seja
entregue ao cliente final, pois assim conseguimos ter uma boa noção de quais recursos serão
necessários para resolver qualquer problema que possa acontecer. Nesse caso utilizam-se os
atributos internos do software, que nada mais são do que os atributos relacionados com a
estrutura do sistema.
Devido a essa maneira de realizar o processo não ser uma medida direta, deve-se ponderar a
praticidade da abordagem indireta com a precisão da abordagem externa (PFLEEGER, 2004).
Visões da Manutenibilidade
Para realizar a medição da manutenibilidade, focando no tempo médio para a resolução de um
problema, é necessário realizar registros cautelosos de algumas informações referentes a cada
problema:
Acompanhar o tempo médio para a correção de problemas utilizando gráficos é uma forma de
verificar se o sistema está se tornando mais manutenível ou não, porém outras medidas podem
ser utilizadas:
Uma das medidas mais utilizadas na manutenção de sistemas é o número ciclomático. O número
ciclomático considera o aspecto da complexidade estrutural do código-fonte de um sistema,
fazendo a medição do número de caminhos linearmente existentes ao longo do código. Utiliza
como base o conceito de grafos e é calculado convertendo-se o código em seu diagrama de fluxo
de controle equivalente, utilizando-se das propriedades do grafo para gerar sua medida
(PFLEEGER, 2004).
Segundo Pfleeger (2004), a facilidade de manutenção pode ser modelada utilizando-se três
dimensões:
A estrutura de controle;
A estrutura de informações;
A tipografia, nomeação e comentário do sistema do qual se está fazendo a
manutenção.
Na sequência, o índice polinomial foi aplicado a mais de 700 componentes contendo mais de 200
mil linhas de código em linguagem de programação C. Como resultado, a análise de
manutenibilidade disponibilizou uma classificação de componentes que ajudou a HP a distinguir
aqueles que possuíam uma difícil manutenção (PFLEEGER, 2004).
Também utilizaram polinômios para realizar a comparação entre dois sistemas que possuíam
tamanhos, plataformas e linguagens semelhantes, obtendo resultados para auxiliar nas
decisões sobre desenvolvimento e compras, direcionando componentes para manutenção
preventiva e perfectiva (PFLEEGER, 2004).
Gerência de configuração;
Análise de impacto;
Gerência de Configuração
É impossível evitar alterações durante a construção de um sistema, pois as modificações são em
grande parte o motivo de desentendimento dentro das equipes de desenvolvimento e quando
aparecem e não são analisadas de forma correta, antes de sua implementação, podem ocasionar
na falta de controle da equipe sobre o projeto (PRESSMAN; MAXIM, 2016).
Um sistema vive em constante mudança, portanto essa é uma característica bem comum a todos
os softwares. As empresas necessitam de alterações em seus requisitos de software durante todo
o ciclo de vida de um sistema, sejam por adaptações por mudanças em regras de negócio ou
mesmo em correções de bugs que surgem durante o uso do sistema (SOMMERVILLE, 2016).
Existem diversas ferramentas que podem ser utilizadas para apoiar o processo de
gerenciamento de mudanças em uma empresa, desde ferramentas simples, que servem apenas
para realizar o monitoramento de bugs ou mesmo sistemas integrados (SOMMERVILLE, 2016).
Alguns sistemas permitem que qualquer usuário possa abrir chamados relatando defeitos ou até
mesmo sugestões de futuras modificações no sistema, monitorando também a equipe de
manutenção e desenvolvimento em seu retorno aos chamados (SBROCCO; MACEDO, 2012).
O processo de gerenciamento de configuração e mudanças se inicia no momento em que uma
parte interessada realiza a solicitação de uma alteração, mencionando todas as modificações
desejadas no software. A solicitação pode ser realizada de forma manual ou automatizada, porém
se utiliza um formulário de solicitação de mudança, chamado CRF (Chang Request Form)
(SOMMERVILLE, 2016).
Logo depois do envio da solicitação, ela deve ser analisada, conferida e validada por um
conferente, que por sua vez é uma pessoa da equipe do cliente, suporte ou mesmo do time de
manutenção, em caso de ser uma modificação de ordem interna.
Uma solicitação também pode ser rejeitada e sua rejeição pode se dar por diversos motivos,
dentre eles:
Implementação já realizada;
Importante!
Uma técnica importantíssima utilizada para realizar a análise de
impacto que uma alteração pode causar é a matriz de rastreabilidade.
Por meio da matriz de rastreabilidade é realizado um cruzamento entre
a relação que os requisitos possuem entre si ou com outros aspectos do
software. Com a matriz de rastreabilidade é possível localizar
rapidamente quais setores do sistema serão afetados por uma mudança
(PAULA FILHO, 2019).
Depois de uma análise criteriosa, decide-se se a mudança será interessante para a empresa, ou
seja, se ela não causará prejuízos. Em muitos casos existe um comitê que é responsável por
realizar todo o controle das mudanças, esse comitê é chamado de grupo de desenvolvimento do
produto.
O grupo de desenvolvimento do produto possui como principal função a responsabilidade pelas
tomadas de decisões sobre as possíveis mudanças, porém esse comitê apenas é invocado em
solicitações mais complexas, portanto, em correção de pequenos problemas o comitê não deve
ser ativado.
Os custos;
Podemos definir como configuração de software os itens que possuem todas as informações
desenvolvidas no processo de desenvolvimento de software (PRESSMAN; MAXIM, 2016).
Importante!
Os itens de configuração de software, chamados também de SCIs, do
inglês (Software Configuration Items), podem gerar outros itens de
configuração de software, segundo (PRESSMAN; MAXIM, 2016), a
primeira lei da Engenharia de Sistemas diz: “Não importa onde você
esteja no ciclo de vida do sistema, o sistema mudará, e o desejo de
alterá-lo persistirá por todo o ciclo de vida”.
As alterações podem surgir de diferentes aspectos, dentre os mais comuns podemos citar os
seguintes:
Custo;
Tempo.
Por sua vez, os engenheiros de software visam assegurar que o trabalho será realizado de forma
eficaz, sem atritos e utilizando também em alguns casos ferramentas automatizadas para o
controle dos artefatos de software (PRESSMAN; MAXIM, 2016).
Em muitos casos, diversas versões do sistema podem estar sendo trabalhadas ao mesmo tempo,
portanto, as modificações podem gerar diversos arquivos. Existem ferramentas automatizadas
que possibilitam realizar a junção dos arquivos, tratando conflitos e gerando diversas versões
das alterações (PAULA FILHO, 2019).
A tarefa do cliente é realizar a utilização do software, mas deve seguir regras e alguns padrões de
utilização. Sua utilização do controle de configuração e mudanças é apenas para realizar
possíveis solicitações (PRESSMAN; MAXIM, 2016).
Análise de Impacto
Saiba Mais
A análise de impacto utiliza-se da matriz de rastreabilidade para
mapear cruzamentos entre componentes do próprio projeto por meio
dos requisitos, tendo como principal função o detalhamento de todo o
trabalho para o entendimento de possíveis efeitos que uma mudança
poderá causar em um outro componente do sistema (PRESSMAN;
MAXIM, 2016).
Ao estudar a matriz de rastreabilidade, Pressman e Maxim (2016) mencionam que a análise de
impacto é responsável por realizar três tarefas fundamentais:
Rede de impacto;
A Rede de impacto é a tarefa que é responsável por localizar os componentes de uma equipe de
desenvolvimento e todos que podem afetar ou ser afetados pelas alterações realizadas no
sistema (PRESSMAN; MAXIM, 2016).
Por fim, o gerenciamento de impacto retroativo é uma tarefa que é capaz de analisar todas as
modificações produzidas por outros componentes da equipe de manutenção ou
desenvolvimento do sistema e o impacto que poderá ocasionar em seu próprio trabalho,
agregando ferramentas e processos para mitigar tais impactos (PRESSMAN; MAXIM, 2016).
Editores de texto;
Comparadores de arquivos;
Compiladores e linkers;
Ferramentas de depuração;
Os editores de texto podem ser úteis de diversas formas, primeiramente podem copiar um
código ou sua documentação de um local para outro, evitando assim erros que podemos gerar
quando duplicamos um texto. Na sequência um editor de texto pode acompanhar alterações
relativas a um arquivo baseline, armazenado separadamente, armazenando hora e data em que
cada entrada de texto ocorreu e, se necessário, proporcionam um meio de retornar a uma versão
anterior (PFLEEGER, 2004).
Segundo Pfleeger (2004), os analisadores estáticos de código são responsáveis por calcular
informações estatísticas sobre atributos estruturais do código, tais como:
A profundidade do aninhamento;
Número ciclomático;
ʪ Material Complementar
Livros
ʪ Referências
MUNIZ, A. et al. Jornada Devops: unindo cultura ágil, Lean e tecnologia para entregar software
com qualidade. 2. ed. Rio de Janeiro: Brasport, 2020. (e-book)
PFLEEGER, S. L. Engenharia de software: teoria e prática. 2. ed. São Paulo: Editora Pearson, 2004.
PINTO, A. S. A importância de criar uma cultura DevOps nas organizações. IETEC, 28/05/2018.
Disponível em: <https://www.ietec.com.br/clipping/2018/07-julho/A-import%C3%A2ncia-de-
criar-uma-cultura-DevOps-nas-organiza%C3%A7%C3%B5es.pdf>. Acesso em: 05/05/2021.
SOMMERVILLE, I. Engenharia de software. 10. ed. São Paulo: Editora Pearson, 2019.
WAZLAWICK, R. S. Engenharia de software: conceitos e práticas. Rio de Janeiro: Elsevier, 2013.