Computing">
1 Dissertacao Final Michel
1 Dissertacao Final Michel
1 Dissertacao Final Michel
Orientadora
Prof.a Dr.a Rejane Maria da Costa Figueiredo
Brasília
Ficha catalográfica elaborada automaticamente,
com os dados fornecidos pelo(a) autor(a)
iv
Agradecimentos
Agradeço a Deus, por ter me dado plenas condições de traçar um caminho de sucesso
na vida.
À minha família, meus pais Antônio e Onísia, minha esposa Graziela Colarullo pela
compreensão e suporte nos momentos difíceis.
A todos do Programa de Computação Aplicada da UNB que me possibilitaram uma
experiência incrível e que, mesmo em tempos de pandemia, se adaptaram e continuaram
com as atividades de ensino e com as pesquisas.
À minha orientadora, Dra. Rejane Figueiredo. Sinto-me muito privilegiado e agradeço
o carinho, a dedicação e a oportunidade de ter sido seu orientando.
Aos gestores e colegas do Tribunal de Justiça de Goiás que permitiram que eu con-
duzisse esta pesquisa em seu âmbito.
v
Resumo
vi
Abstract
Por outro lado, estudos recentes elaborados por Mantovani e Marczak [1] apontam que
desde os anos 2000, o Brasil vem aderindo cada vez mais aos métodos ágeis, como indica
a Figura 2.1, prática que se observa pelo mundo todo como uma das principais formas de
inovação digital. Thus, taken by the urgency sense, the systems development teams enter
in a loop of urgent and endless maintenance. In the public sector, the changes becomes
more slowly, but the challenges add up to a consolidated management during decades
of non-automated work. The difficulties to deal with software maintenance in Brazil
are similar to other countries, but there are scientific consensus that the application of
agile methods can reduce or solve maintenance problems in public or private companies.
The Goiás Court of Justice (TJGO) is an organ of the Brazilian Public Power that
stands out for its jurisdictional provision that is supported by several technology tools.
However, the lack of a well-defined software process, contributes to rework that could
be avoided. In this context, the objective of this work was to define and evaluate the
implementation of a software maintenance process for TJGO. The research methodology
adopted is explanatory type, with the use of the Design Science Research (DSR) tech-
nique, that allows to drive the research by technologics artifacts that enable to transform
situations, to change their conditions to more desirable states. The the results indicate
that, because of TJGO peculiarities, it was necessary to work the maintenance aspects
and to define a deployment architecture, and define a systematic process. According to
the perception of involved stakeholders, it was possible to observe to be observed man-
agement improvements, teamwork improvements, organizational climate improvements,
and more speed of deliveries.
vii
Sumário
1 Introdução 1
1.1 Contexto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Revisão Bibliográfica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 Problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.4 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.5 Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.5.1 Planejamento da Pesquisa . . . . . . . . . . . . . . . . . . . . . . . 9
1.5.2 Coleta de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.5.3 Análise e Interpretação dos Dados . . . . . . . . . . . . . . . . . . . 11
1.5.4 Redação dos Resultados . . . . . . . . . . . . . . . . . . . . . . . . 11
1.6 Estrutura do trabalho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2 Manutenção de Software 14
2.1 Considerações Iniciais do Capítulo . . . . . . . . . . . . . . . . . . . . . . 14
2.2 Métodos Ágeis em Empresas Públicas Brasileiras . . . . . . . . . . . . . . 14
2.3 Manutenção de Software com Metodologias Ágeis . . . . . . . . . . . . . . 18
2.3.1 Mantema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.3.2 Critical Feature Method (CFM) . . . . . . . . . . . . . . . . . . . . 22
2.3.3 Mantema Ágil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.3.4 Mantelasoft . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.3.5 Kanban . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.3.6 Scrum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.3.7 Scrumban . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.3.8 Impress . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.4 Considerações Finais do Capítulo . . . . . . . . . . . . . . . . . . . . . . . 32
viii
3 Arquitetura de Software e Testes 33
3.1 Considerações Iniciais do Capítulo . . . . . . . . . . . . . . . . . . . . . . 33
3.2 Arquitetura de Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.2.1 Arquitetura de Deployment . . . . . . . . . . . . . . . . . . . . . . 35
3.2.2 Continuous Integration (CI) . . . . . . . . . . . . . . . . . . . . . . 38
3.2.3 Continuous Delivery (CD) . . . . . . . . . . . . . . . . . . . . . . . 39
3.2.4 Microsserviços . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.3 Testes de Software e as Metodologias Ágeis . . . . . . . . . . . . . . . . . 42
3.3.1 Documentação de Requisitos e as Metodologias Ágeis . . . . . . . . 43
3.3.2 Teste no Time Ágil . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.4 Considerações Finais do Capítulo . . . . . . . . . . . . . . . . . . . . . . . 45
4 Materiais e Métodos 46
4.1 Considerações Iniciais do Capítulo . . . . . . . . . . . . . . . . . . . . . . 46
4.2 Planejamento da Pesquisa . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.3 Coleta de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.3.1 Instrumentos de Coleta de Dados adotados . . . . . . . . . . . . . . 47
4.3.2 Ciclos de Design Science . . . . . . . . . . . . . . . . . . . . . . . . 49
4.3.3 Critérios de Aceitação para os Ciclos de Design Science . . . . . . . 50
4.4 Análise e Interpretação dos Dados . . . . . . . . . . . . . . . . . . . . . . 51
4.4.1 Entrevistas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.4.2 Método de Análise de Conteúdo adotado . . . . . . . . . . . . . . . 52
4.5 Redação dos Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.6 Considerações Finais do Capítulo . . . . . . . . . . . . . . . . . . . . . . . 53
5 Contexto da TI no TJGO 54
5.1 Considerações Iniciais do Capítulo . . . . . . . . . . . . . . . . . . . . . . 54
5.2 Visão Geral da Estrutura Organizacional da TI no TJGO . . . . . . . . . 54
5.3 Divisão de Engenharia de Software (DES) . . . . . . . . . . . . . . . . . . 57
5.3.1 Núcleo Técnico de Sistemas Administrativos (NTSA) . . . . . . . . 60
5.4 Considerações Finais do Capítulo . . . . . . . . . . . . . . . . . . . . . . . 60
ix
6.4 Definir uma Arquitetura de Deployment . . . . . . . . . . . . . . . . . . . 67
6.4.1 FASE Investigação do Problema . . . . . . . . . . . . . . . . . . . . 68
6.4.2 FASE Design da Solução . . . . . . . . . . . . . . . . . . . . . . . . 68
6.4.3 FASE Validação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
6.4.4 FASE Implementação . . . . . . . . . . . . . . . . . . . . . . . . . . 70
6.4.5 FASE Avaliação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
6.5 Experimentação do Kanban . . . . . . . . . . . . . . . . . . . . . . . . . . 72
6.5.1 FASE Investigação do Problema . . . . . . . . . . . . . . . . . . . . 72
6.5.2 FASE Design da Solução . . . . . . . . . . . . . . . . . . . . . . . . 72
6.5.3 FASE Validação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
6.5.4 FASE Implementação . . . . . . . . . . . . . . . . . . . . . . . . . . 73
6.5.5 FASE Avaliação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
6.6 Experimentação do Scrum . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
6.6.1 FASE Investigação do Problema . . . . . . . . . . . . . . . . . . . . 74
6.6.2 FASE Design da Solução . . . . . . . . . . . . . . . . . . . . . . . . 75
6.6.3 FASE Validação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
6.6.4 FASE Implementação . . . . . . . . . . . . . . . . . . . . . . . . . . 77
6.6.5 FASE Avaliação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
6.7 Adoção de Metodologia Híbrida . . . . . . . . . . . . . . . . . . . . . . . . 78
6.7.1 FASE Investigação do Problema . . . . . . . . . . . . . . . . . . . . 78
6.7.2 FASE Design da Solução . . . . . . . . . . . . . . . . . . . . . . . . 79
6.7.3 FASE Validação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
6.7.4 FASE Implementação . . . . . . . . . . . . . . . . . . . . . . . . . . 80
6.7.5 FASE Avaliação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
6.8 Síntese da DSR e Dinâmica do Processo Adotado . . . . . . . . . . . . . . 82
6.8.1 Resumo da DSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
6.8.2 Dinâmica do processo adotado . . . . . . . . . . . . . . . . . . . . . 85
6.9 Considerações Finais do Capítulo . . . . . . . . . . . . . . . . . . . . . . . 88
x
7.4.2 Indicadores de solução . . . . . . . . . . . . . . . . . . . . . . . . . 97
7.4.3 Indicadores do Processo Definido no NTSA . . . . . . . . . . . . . . 99
7.5 Interpretação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
7.6 Considerações Finais do Capítulo . . . . . . . . . . . . . . . . . . . . . . . 106
8 Conclusão 107
8.1 Trabalhos Futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Referências 109
Apêndice 119
xi
Anexo 221
xii
Lista de Figuras
3.1 Exemplo de visão de deployment com notação UML 2.0 (Fonte: [5]). . . . 36
3.2 Exemplo de Aqruitetura de deployment ágil(Fonte: [6]). . . . . . . . . . . 37
3.3 Comparação entre abordagens tradicional e ágil em relação ao processo
de Engenharia de Requisitos (Fonte: [7]). . . . . . . . . . . . . . . . . . . 44
xiii
6.4 Satisfação com produto entregue (Fonte: Questionário APÊNDICE D). . 67
6.5 Design da Arquitetura de Deployment (Fonte: autoria própria). . . . . . 69
6.6 Quadro Kanban de manutenção no sistema de processos administrativos
do TJGO. (Fonte: [9]) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
6.7 Modelo utilizando Scrum para mautenção de software (Fonte:[3]). . . . . 76
6.8 Modelo utilizando Scrum e Kanban para manutenção de software (Fonte:
adaptado [3]). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
6.9 Caixa de entrada do e-mail institucional do TJGO (Fonte: [8]) . . . . . . 80
6.10 Ilustração do e-mail sendo utilizado como quadro Kanban (Fonte: autoria
própria) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
6.11 Consonância entre o Processo e a Arquitetura de Deployment. (Fonte:
Autoria Própria) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
6.12 Artefato da Arquitetura de Deployment. (Fonte: Autoria Própria) . . . . 85
6.13 Processo híbrido adotado no TJGO. (Fonte: adaptado Rehman et al. [3]) 86
xiv
A.3 Países que mais publicaram nos últimos 20 anos (Fonte: [11]) . . . . . . . 124
A.4 Evolução da pesquisa ano a ano (Fonte: [11]) . . . . . . . . . . . . . . . . 124
A.5 Mapa de calor coupling de citações nos úlitmos cinco anos (Fonte: [11]) . 125
xv
Lista de Tabelas
xvi
Lista de Abreviaturas e Siglas
ER Engenharia de Requisitos.
xvii
NTSJ Núcleo Técnico de Sistemas Judiciais.
PO Product Owner.
QA Quality Assurance.
xviii
Capítulo 1
Introdução
Neste capítulo apresenta-se o contexto deste trabalho, apontando a pergunta que mo-
tiva esta pesquisa. Apresenta-se também a revisão bibliográfica envolvendo os temas
manutenção de software e o emprego da metodologia ágil na manutenção, seguidos do
problema no contexto do Tribunal de Justiça do Estado de Goiás (TJGO), escopo deste
estudo. Na sequência, são apresentados os objetivos desta pesquisa e a metodologia
adotada para alcançá-los. Finalizando, apresenta-se a estrutura deste documento.
1.1 Contexto
A evolução tecnológica promove cenários que mudam rapidamente, sendo essencial que
as organizações e os órgãos públicos acompanhem essas mudanças. Durante muitas
décadas, a preocupação principal foi a inserção na era digital. Muitas pesquisas e pro-
dutos surgiram para facilitar e atender às necessidades primárias dos usuários. Algumas
soluções ultrapassaram gerações e se tornaram difíceis de serem mantidas.
Os sistemas computacionais estão inseridos nesse contexto e muitos sistemas resisti-
ram após as transformações e continuam funcionando. Alguns desses sistemas só existem
devido às manutenções contínuas que, em alguns casos, até se confundem com o desen-
volvimento.
Sommerville [15] ressalta que: “o divisor para saber onde termina o desenvolvimento
e onde começa a manutenção está se tornando irrelevante, pois poucas aplicações de
software são desenvolvidas a partir do zero”.
Nesse cenário, as equipes dedicam boa parte do tempo em manutenções urgentes, po-
dendo comprometer as demandas estratégicas e importantes da organização. A urgência
resulta em falta de tempo que, muitas vezes, é usada para justificar o não cumprimento
1
de requisitos, menos cobrados mas não menos importantes, como: qualidade; segurança;
testabilidade; e manutenibilidade.
Quando comparada a outras fases do ciclo de vida do software, a manutenção não
recebe a devida atenção, seja por não ter o atrativo de “criar” o novo, pela falta de
interesse do dono do produto ou pelo retorno financeiro[16]. Para Kajko-Mattsson [16],
a manutenção tem sido uma das atividades mais complexas, caras, difíceis e menos
compreendidas da Engenharia de Software.
A definição de um processo para manutenção de software se tornou fundamental para
se alcançar o sucesso. O custo de manutenção de sistemas em muitas organizações tem
sido observado como tendo uma variação de 40% a 70% dos recursos referentes ao ciclo
de vida completo do software [17].
Após o Manifesto Ágil, em 2001 [18], observou-se o crescimento na adoção de me-
todologias ágeis no mundo, seja nas empresas privadas ou nos governos. Os resultados
obtidos pelo emprego de métodos ágeis têm sido semelhantes entre o Brasil e o resto
do mundo, com aplicações e adaptações conforme o contexto. Algumas vezes, esses
resultados são influenciados pelo tamanho e maturidade das empresas [19, 20].
As práticas ágeis com foco na melhoria da qualidade do software, como o Desenvolvi-
mento Orientado por Testes (TDD - Test Driven Development), refatoração, integração
contínua, entre outras, estão sendo aplicadas em empresas mais experientes com mé-
todos ágeis. Além disso, as práticas de gestão tradicionais estão passando por muitos
ajustes e, em alguns casos, sendo abandonadas. Isso pode indicar um campo importante
para pesquisas, com o intuito de se construir um bom conhecimento sobre adaptação
das práticas ágeis aos diferentes cenários [19].
Outros temas de pesquisa relevantes são os relacionados à necessidade de melhoria
dos aspectos de manutenibilidade de sistemas utilizando-se metodologias ágeis [21, 12,
22], visto que, no geral, os estudos são destinados à fase de desenvolvimento e poucos
trabalhos são dedicados à fase de manutenção de software.
No Tribunal de Justiça de Goiás (TJGO), objeto de estudo deste trabalho, o cenário
da manutenção de seus sistemas é complexo e carece da definição de processos moder-
nos, que possibilitem uma melhor gestão e controle dos sistemas, com mais agilidade,
eficiência, colaboração, satisfação e valorização da mão de obra dos envolvidos.
2
1.2 Revisão Bibliográfica
Existem diferentes definições de manutenção de software. Na literatura é possível iden-
tificar alguns autores que assumem uma abordagem mais específica, enquanto outros
assumem uma abordagem mais geral. Entretanto, de acordo com Grubb e Takang [17],
o mais comum é associar a manutenção à modificação do sistema quando os requisitos
são alterados.
De acordro com Kong e Liu [23], diante de situações de manutenção de software, os
métodos tradicionais como Rational Unified Process (RUP) são incapazes de lidar com
a criticidade que algumas manutenções requerem.
Em 2001, o manifesto ágil trouxe mudanças nos processos de produção de software
e devido às características próprias da manutenção e seu alto valor para as instituições,
algumas pesquisas vêm sendo realizadas em busca de modelos mais apropriados.
Diante do exposto, considerando a pergunta de pesquisa, realizou-se uma revisão da
literatura (Apêndice A) para investigação dos processos e métodos ágeis nos últimos 20
anos, dando maior ênfase aos trabalhos dos últimos 5 anos. Desta revisão extraiu-se o
Referencial Teórico que pode ser visto no Capítulo 2.
Tarwani e Chug [24] avaliaram o desempenho e qualidade de software usando meto-
dologias ágeis para manutenção entre os anos de 2001 a 2015 e garantem que a adoção
das metodologias ágeis promove a melhoria contínua, maior produtividade e qualidade.
Mantovani e Marczak [1], apontam que algumas das principais razões para adoção
dos métodos ágeis são: Acelerar as entregas de produtos; Aumentar a produtividade;
Melhorar a capacidade de priorização; Reduzir riscos; e Melhorar a qualidade. Enquanto
que os maiores desafios enfrentados por órgãos brasileiros, no setor de TI, são [1]: Mu-
danças culturais; Resistência às mudanças; Obter colaboração dos clientes; Customizar
práticas ágeis; e Comprometimento da alta gestão.
Estudos apontam alguns fatores que otimizam o emprego das metodologias ágeis,
são eles: trabalhos em equipe [25, 26, 27], utilizar sprints [25], buscar simplicidade
[23], possibilitar solicitações urgentes [25], uso de histórias de usuários [26], equilibrar
a quantidade de documentação [25], manter o cliente próximo da equipe [27], gerar
transparência [26], trabalhar a sinergia na equipe [26, 25], testes durante todo ciclo
independente do tipo de manutenção [25, 26, 27], separar cada manutenção em diferentes
fluxos [3, 21, 22].
A pesquisa realizada por Svensson e Höst [27] apontou que os engenheiros de software
se beneficiaram de uma estrutura organizada devido às boas práticas dos método ágeis.
3
Heeager e Rose [25] aplicaram as boas práticas dos métodos ágeis na Aveva 1 , onde
relataram melhorias na qualidade do código fonte, na autoestima da equipe, maior vi-
sibilidade do progresso da manutenção, melhor comunicação e compartilhamento de
conhecimento entre os envolvidos.
Ribeiro e Domingues [28], analisaram as melhores condições para se empregar meto-
dologias ágeis em uma empresa pública de Portugal. Os autores [28] aplicaram o Scrum
com algumas adaptações necessárias ao setor público o qual destacaram que as organiza-
ções públicas possuem cultura, modo de operação e entrega diferentes do setor privado,
podendo tornar a implementação dessas metodologias um desafio.
A burocracia e o poder hierárquico são desafios para a implantação dos métodos ágeis
[29]. Nesse sentido, Rulinawaty e Lukman [29] realizaram um estudo que se concentrou
em oferecer uma visão integrada de como as organizações podem se tornar ágeis, como
combinar valores e missão com agilidade organizacional a partir de estruturas orientadas
a objetivos.
Para Mergel et al. [30], no modelo de gestão pública tradicional, os especialistas em
gerenciamento de informações se limitam a tarefas de gestão de contratos, planejamento
e supervisão e, por isso, é bastante comum a resistência às mudanças. Esse modelo
com raízes históricas reduz a capacidade de inovação em Tecnologia da Informação (TI)
e uma das consequências percebidas são os incentivos crescentes para terceirização no
setor, especialmente no desenvolvimento de TI e de serviços.
Para Kajko-Mattsson [31], nas manutenções de software, o objetivo é atender ao
problema. A única maneira de diminuir a subjetividade é explorando completamente o
domínio do software e identificando suas atividades inerentes. Para isso, há a necessidade
de tratar a manutenção levando em consideração as subcategorias (corretiva, adaptativa,
evolutiva) [31]. Assim, torna-se possível realizar uma análise minuciosa estabelecendo
bem o escopo do desenvolvimento e da manutenção, permitindo então diminuir a subje-
tividade e construir processos com maior precisão [31].
Para construção de um processo de manutenção de software, Kajko-Mattsson [31],
sugere que se responda às seguintes perguntas: “o que implementar ?”, “por que im-
plementar ?” e “como implementar o processo de manutenção ?”. Em determinadas
situações, as respostas a essas perguntas estão intimamente vinculadas aos problemas
que se deseja solucionar [31].
Assim, pesquisas anteriores produziram evidências de que a manutenção ágil afeta
os resultados e desempenhos de forma crítica. Entretanto, os fatores para se alcançar
1
Empresa de software para engenharia naval
4
o sucesso na agilidade operacional vão além da aplicação direta dos modelos, sendo,
muitas vezes, necessário conhecê-los e adaptá-los aos diversos cenários e perfis humanos.
Nesse sentido, Bouguerra et al. [32] explicam que ainda se sabe pouco sobre o vínculo
entre a agilidade e processos colaborativos em prol da sustentabilidade do ambiente de
trabalho. Eles verificaram que medidas ambientais que contribuam para a colaboração
também podem ser aprimoradas por meio de Arranjos de Trabalhos Flexíveis (Flexible
Work Arrangements (FWAs), por exemplo, horário flexível, redução do horário de tra-
balho e compartilhamento de trabalho [32]. Bouguerra et al. [32] afirmam ainda que,
para que isso não se torne um problema, deve-se implementar ferramentas de controle
eficazes.
Muitas dessas ferramentas podem ser obtidas por meio dos processos de melhoria con-
tínua. Para Melo [33], avaliar continuamente os fatores de produtividade é importante,
pois eles podem mudar sob as novas práticas de engenharia de software. No entanto,
poucas pesquisas investigaram os principais fatores que influenciam a produtividade do
time ágil.
Albuquerque [34], indicou que a continuidade de programas de melhoria está relacio-
nada aos fatores humanos, de projeto, organizacionais e técnicos associados ao processo,
e concluiu que alguns desses fatores estão presentes também na fase de implementação,
mas que o nível de importância é diferente quando comparado ao de manutenção.
Como resultados das boas práticas e da melhoria contínua dos processos, Albuquer-
que [34] detectou uma maior satisfação dos clientes, redução de custos e prazos, além do
aumento da produtividade e qualidade.
Os processos ágeis devem ser constantemente revistos e atualizados, de modo que se
adéquem à realidade, para se sustentarem ao longo dos anos. Para aumentar as chances
de sucesso, alguns modelos de maturidade foram criados, por exemplo: Capability Matu-
rity Model integration (CMMI), Melhoria de Processo de Software Brasileiro (MPS-BR),
e no âmbito da manutenção, o modelo SMmm (Software Maintenance Maturity Model)
e modelo Mantus que podem ser vistos no APÊNDICE J.
Lucas [35], propôs a adoção das boas práticas do modelo de maturidade de manuten-
ção de software SMmm , com foco em gestão, empregando-as em um processo adaptado
e concluiu que a aplicação das práticas derivadas do SMmm contribuíram para uma
melhora perceptível na redução de defeitos provocados pelas manutenções.
5
1.3 Problema
No contexto de desenvolvimento de sistemas do Tribunal de Justiça de Goiás (TJGO)
é comum a sensação de agilidade, ao descumprir a hierarquia para atendimento de pro-
blemas isolados motivados por fatores políticos pouco ou nada alinhados aos objetivos
estratégicos da organização, como consequência, tem-se uma TI frágil, reativa aos pro-
blemas gerados.
São premissas do Tribunal de Justiça do Estado de Goiás que a modernização tecno-
lógica avance com qualidade, celeridade, acessibilidade, agilidade, eficácia e efetividade
a custos reduzidos e com a satisfação dos seus usuários, sendo a satisfação da sociedade
o maior objetivo a ser alcançado. Dentre seus objetivos estratégicos, estão o aumento
da maturidade em governança de TI e a Comunicação, visando ao aprimoramento dos
processos e à entrega de serviços com qualidade e eficiência [36].
Todavia, existem muitos desafios para tornar essa premissa uma verdade. Um deles
está relacionado ao processo de desenvolvimento de software do TJGO, que apesar de
dispor de infraestrutura física e de ferramentas modernas para o desenvolvimento, possui
ainda deficiências primárias no desenvolvimento de software.
Os desenvolvedores possuem, à disposição, tecnologias de ponta e soluções complexas.
No entanto, em caso de uma manutenção emergencial o apreço às tecnologias deve dar
lugar às soluções fáceis e rápidas. Tecnologias complexas podem realmente diminuir o
ritmo e prolongar o estado de emergência [23].
Além disso, os sistemas devem continuar servindo sem grandes impactos negativos
causados pelas manutenções. Atualmente, o parque do TJGO conta com sistemas lega-
dos e sistemas em constante manutenção corretiva e evolutiva.
Desse modo, criou-se um ambiente em que a manutenção repetitiva predomina em
relação ao desenvolvimento de novas soluções de software, resultando numa equipe indivi-
dualista, altamente especializada, com resultados pequenos se comparados à capacidade
coletiva, provocando baixa qualidade nas entregas e riscos inerentes.
A Estratégia Nacional de Tecnologia da Informação e Comunicação (ENTIC-JUD),
instituída pelo Conselho Nacional de Justiça (CNJ), por meio da Resolução nº 211/2015,
[37], tem o propósito de avaliar anualmente o nível de cumprimento das diretrizes estraté-
gicas e evolução dos viabilizadores da Governança, Gestão e Infraestrutura de Tecnologia
da Informação e Comunicação (TIC) do Poder Judiciário [38].
A Estratégia Nacional de Tecnologia da Informação e Comunicação (ENTIC-JUD),
instituída pelo Conselho Nacional de Justiça (CNJ), por meio da Resolução nº 211/2015,
6
[37], tem o propósito de avaliar anualmente o nível de cumprimento das diretrizes estraté-
gicas e evolução dos viabilizadores da Governança, Gestão e Infraestrutura de Tecnologia
da Informação e Comunicação (TIC) do Poder Judiciário [38].
A Resolução 2011/2015, art. 12 [37], define estruturas organizacionais adequadas e
compatíveis com a relevância e demanda de TIC, considerando, no mínimo, os seguintes
macroprocessos:
A Resolução 2011/2015, art.2 , § 2, [37] estabelece ainda que: “Caberá a cada órgão
definir os seus processos, observando as boas práticas pertinentes ao tema, criando um
ambiente favorável à melhoria contínua”.
De acordo com April [39], para uma organização ser considerada madura é necessário
que ela tenha instituído o seu processo de manutenção de software. Nessa linha, a
ausência de um processo bem definido de manutenção de software não só contraria uma
recomendação do CNJ, como pode prejudicar, a longo prazo, as conquistas e objetivos
que o TJGO vem alcançando no cenário nacional nos últimos anos.
É nesse contexto que surge a pergunta de pesquisa: Como definir e implantar um
processo de manutenção de software para o TJGO, empregando a metodologia ágil num
cenário de órgão público brasileiro, com equipe interna de desenvolvimento ?
1.4 Objetivos
Reconhecendo que o cenário majoritário de desenvolvimento de software vivido pelo
TJGO mais se assemelha ao de manutenção, nesta pesquisa buscou-se realizar um estudo
7
da aplicação dos métodos ágeis, analisar as melhores práticas e recomendações para
manutenção dos sistemas desse órgão e aplicar algumas das práticas com o propósito de
transformar o processo de manutenção dos sistemas do TJGO.
Assim, o objetivo geral desta pesquisa é : definir e implantar um processo de manu-
tenção de software para o TJGO, empregando metodologias ágeis.
1.5 Metodologia
Dado o objetivo deste trabalho, nesta seção apresenta-se a classificação metodológica e
uma breve descrição do plano metodológico definido.
A presente pesquisa objetivou gerar conhecimentos para solução de problemas es-
pecíficos na prática. Envolve interesses locais, com abrangência social, fatores que a
caracterizam como uma pesquisa de natureza aplicada.
Quanto à abordagem do conteúdo, foram coletados dados e analisados de forma
qualitativa, utilizando-se da subjetividade.
Sobre a tipologia da pesquisa, dado seu objetivo, ela é classificada como experimental.
De acordo com Gil [40], pesquisas explicativas (experimentais) “têm como preocupação
central identificar os fatores que determinam ou que contribuem para a ocorrência dos
fenômenos”. Geralmente, estudos experimentais demonstram a viabilidade de determi-
nada técnica ou programa como uma solução, potencial e viável. Os procedimentos de
coleta de dados podem variar bastante e técnicas de observação podem ser desenvolvidas
durante a pesquisa [41].
Considerando que o pesquisador é integrante da equipe de desenvolvimento e ma-
nutenção de sistemas do TJGO há mais de dez anos e atual coordenador da equipe
responsável por sistemas administrativos (composta por servidores do quadro efetivo),
8
pode-se afirmar que o processo de produção de software do setor possui fatores ligados
ao comportamento humano moldado pela cultura organizacional.
Desse modo, a técnica adotada é a Design Science Research (DSR), que será vista em
detalhes no Capítulo 4 (Materiais e Métodos). Esta escolha se deu porque a DSR permite
conduzir a pesquisa pela produção de artefatos tecnológicos capazes de transformar si-
tuações, alterando suas condições para estados mais desejáveis, com viés epistemológico,
tendo em conta os rigores inerentes da técnica. São exemplos de artefatos: componen-
tes de software, hardware, organização, processo de negócio, serviço, método, técnica,
etc.[2].
O plano metodológico adotado neste trabalho, conforme apresentado na Figura 1.1,
e detalhado no Capítulo Materiais e Métodos, compreendeu quatro fases:
• Planejamento da Pesquisa;
• Coleta de Dados;
9
Figura 1.1: Plano Metodológico (Fonte: adaptado [2]).
• Observação: Conforme Wholin et al. [44], a técnica de observação pode ser utili-
zada para investigar como os engenheiros de software realizam uma determinada
tarefa. As técnicas de observação podem utilizar recursos como gravações de áu-
dio, reuniões, ou estímulos que levem aos pesquisados revelarem seus pensamentos
[44].
10
• Questionários: O questionário consiste na aplicação de uma série de perguntas a
um entrevistado. O pesquisador pode definir a forma das perguntas de acordo com
seu propósito [43].
• Método Análise de Conteúdo: Para análise dos dados resultantes das entrevistas
utilizou-se o método Análise de Conteúdo [45], cujo objetivo é respaldar os estudos
realizados com foco na questão de pesquisa. Como facilitador para aplicação do
método, utilizou-se da ferramenta computacional Atlas.ti [46], conforme sugerido
por Gibbis [47].
11
O Capítulo 1 - Introdução, compreende o contexto da pesquisa, a revisão bibliográ-
fica, os objetivos e a metodologia adotada.
O Capítulo 2 - Manutenção de Software, apresenta uma breve contextualização sobre
a manutenção de software, em seguida, relata trabalhos realizados sobre manutenção
com metodologias pioneiras, como Mantema (1999) [21], e algumas mais recentes, como
o guia Mantelasoft (2019) [48] e Impress (2019) [22].
No Capítulo 3 - Arquitetura de software e Testes, apresenta conceitos de Arquitetura
de Software, em seguida um destaque maior é dado para o segmento de arquitetura de
deployment. Adiante, são descritos conceitos de testes de software utilizando-se meto-
dologias ágeis. Ambos assuntos apresentam significativa relevância para se estabelecer
um processo de manutenção de software utilizando-se métodos ágeis.
O Capítulo 4 - Materiais e Métodos, diante do objetivo da pesquisa, apresenta-se o
passo a passo do planejamento metodológico.
No Capítulo 5 - Contexto da TI no TJGO, apresenta o objeto de estudo desta pes-
quisa. Descreve o contexto da área de Engenharia de Software do TJGO, com ênfase
no núcleo de sistemas administrativos e na organização das equipes, e no processo de
trabalho.
O Capítulo 6 - Manutenção de Software do TJGO, apresenta a execução metodoló-
gica, expondo os ciclos da DSR executados e as mudanças no processo de manutenção
de software, realizados no núcleo de sistemas administrativos do TJGO.
No Capítulo 7 - Análise de Conteúdo do Processo de Manutenção do TJGO -
empregou-se a técnica Entrevistas e o método de Análise de Conteúdo para a validação
dos achados.
No Capítulo 8 - Conclusão, o autor retoma o objetivo deste trabalho e descreve sobre
suas considerações decorrentes do estudo realizado.
Por fim, encontram-se as Referências Bibliográficas deste trabalho, seguida dos apên-
dices e anexo:
12
• Apêndice C - Questionários com Time de Analista de Sistemas Administrativos
e com os Diretores da Engenharia de Software e Diretor de TI - No decorrer da
pesquisa foram feitos questionários com o Time de TI e Diretores com propósito
de diminuir o viés inerente das observações do pesquisador. Foram analisadas
expectativas, grau de aceitação e disposição perante as mudanças. Diante dessas
análises, buscou-se melhorar as chances dos bons resultados;
13
Capítulo 2
Manutenção de Software
14
única visita de Kent Beck 1 ao país [19].
As cidades de São Paulo, Rio de Janeiro, Recife, Florianópolis, São Carlos e Brasília
foram fundamentais para a disseminação do emprego dos métodos ágeis em projetos
de desenvolvimento de software começando, assim, a ganhar forças na indústria e no
comércio brasileiro [19].
Estava claro que mudanças nos processos de software estavam acontecendo. Desde
1993, com a criação do Programa Brasileiro da Qualidade e Produtividade de Software
(PBQP Software), o Brasil investe na melhoria contínua da qualidade de software [50].
PBQP Software procura estimular a adoção de normas, métodos, técnicas e fer-
ramentas da qualidade e da Engenharia de Software, promovendo a melhoria da
qualidade dos processos, produtos e serviços de software brasileiros, de modo a
tornar as empresas mais capacitadas a competir em um mercado globalizado [51].
15
Estudos apontam que um dos principais desafios para implantação de Métodos Ágeis
é o de promover a mudança cultural na organização [56, 57, 30, 58]. Uma análise mais
profunda da cultura organizacional pode auxiliar na gestão da mudança e, consequente-
mente, contribuir para a implementação de ações táticas do processo de inovação com
as metodologias ágeis [56].
Rulinawaty e Lukman [29] relataram que a incapacidade da burocracia de se tor-
nar ágil é causada por fatores como: tempo reduzido, custos e sobreposições políticas.
Entretanto, eles [29] afirmam que, embora a estrutura hierárquica não ajude com os
processos ágeis, esse não é o maior problema, e sim o fato de que as organizações, ao
buscarem agilidade, tendem a desestruturar a hierarquia, esquecendo-se dos objetivos
organizacionais [29].
Por outro lado, estudos recentes elaborados por Mantovani e Marczak [1] apontam
que desde os anos 2000, o Brasil vem aderindo cada vez mais aos métodos ágeis, como
indica a Figura 2.1, prática que se observa pelo mundo todo como uma das principais
formas de inovação digital.
• Santos et al. [59] relataram a aplicação da metodologia Ágil Kanban para Ma-
nutenção de Software em um órgão público brasileiro. A escolha do Kanban se
deu pela capacidade de adaptação às frequentes mudanças nas requisições de ma-
16
nutenção de software pelo órgão junto ao fornecedor, prestador de serviços de
manutenção.
• Noronha et al. [57] utilizaram o método ágil Kanban de forma adaptada junto
em um Ministério brasileiro. O desafio foi implementar Kanban para apoiar a
gerência de pedidos de manutenção à fábrica de software, que prestava serviços de
manutenção de software. Foi empregada a pesquisa-ação. Os resultados permiti-
ram constatar que o novo processo atenuou problemas, diminuiu a resistência às
mudanças, e contribuiu para aumentar a satisfação dos envolvidos.
17
2.3 Manutenção de Software com Metodologias Ágeis
A corrida por informações e conhecimentos vem acompanhada por uma rotina de mu-
danças.
A cada nova mudança pode ser necessária a elaboração de um novo projeto de software.
Muitas vezes esses projetos são feitos intuitivamente, sem formalização adequada e prin-
cipalmente sem controles apropriados. As boas práticas de gerenciamento de projetos
vieram para ajudar a organizar as ideias e então otimizar o serviço, gerando resultados
de alta qualidade em menor tempo, custo e risco.
De acordo com o Project Management Institute (PMI), projeto é definido como: “um
esforço temporário empreendido para criar um produto, serviço ou resultado exclusivo”.
Essa definição leva em consideração as características de ser temporário, com início e fim
bem definidos, exclusivo, como produto ou capacidade de produzir algo, e progressivo,
em que se estabelecem etapas e progride por incrementos [62].
Isso envolve áreas de conhecimento como planejamento, gerência de custos e tempo,
organização de recursos humanos (equipe) e garantia da qualidade do produto e do
processo.
Essas áreas de conhecimentos estão alinhadas à Engenharia de Software que não
se limita apenas aos processos técnicos de desenvolvimento, mas também proporciona
modelos, formalismos, técnicas e ferramentas para o desenvolvimento de software com
qualidade [15].
A abordagem sistemática e organizada promovida pela Engenharia de Software é co-
mumente chamada de processo de software e conforme Sommerville [15], um processo de
software é uma sequência de atividades que leva à produção de um produto de software.
Existem quatro atividades fundamentais comuns a todos os processos de software.
São elas [15]:
• Especificação de software;
• Desenvolvimento de software;
• Validação de software;
18
• Evolução de software.
19
primária de progresso, contínua atenção à excelência técnica e bom design aumenta a
agilidade, as melhores arquiteturas emergem de equipes auto-organizáveis, entre outros
[63].
O foco do desenvolvimento ágil é a produção de software em alta qualidade, em um
prazo que maximize seu valor para o negócio [64].
Desde o modelo em espiral, se assume a mudança como risco do projeto e atividades
são propostas para a redução desse risco. A mudança é tratada como um problema. Nos
processos ágeis houve uma atenção especial às mudanças e elas se tornaram parte da
solução e não apenas do problema.
Para Bass et al. [61]: “Se a mudança é a única constante no universo, então a
mudança de software não é apenas constante, mas onipresente”.
De modo geral, os diversos modelos de desenvolvimento que surgiram após a cha-
mada “crise do software” de 1970 lidam com a manutenção como uma fase dentro do
processo de desenvolvimento. Entretanto, estudos apontam que a manutenção possui
características próprias e muitas vezes a inobservância dessas diferenças pode gerar ainda
mais manutenções [25, 32, 30, 3, 65].
Embora a manutenção possa ser considerada como uma continuação de novos desen-
volvimentos, há uma diferença fundamental entre as duas atividades:
“No desenvolvimento de algo novo, mesmo com certas restrições, existe um campo
aberto, livre, para as possibilidades. Já a Manutenção normalmente ocorre sob um
ambiente de restrições e parâmetros pré-existentes” [17].
Essas mudanças podem ser definidas como frequentes manutenções evolutivas ou cor-
retivas e, assim, algumas pesquisas são realizadas na busca de se minimizar os impactos
negativos da manutenção e também com o objetivo de otimizar os resultados do produto
de software. Nesse sentido, Pressman[66] salienta que: “não é raro uma organização de
software despender de 60% a 70% de todos os recursos com manutenção de software”.
Heeager e Rose [25], em 2015, afirmaram que:
“Os métodos ágeis foram bem aceitos e são muito utilizados no desenvolvimento de
software e estão começando a ser utilizados nas equipes de manutenção. No entanto, há
relativamente poucas pesquisas sobre ágeis na manutenção”.
Atualmente, as pesquisas em manutenção ainda são poucas, conforme pode-se ver na
revisão realizada (Apêndice A), principalmente quando comparadas ao desenvolvimento,
entretanto, já existem fundamentações científicas de que os métodos ágeis podem ser
utilizados com sucesso nas manutenções, com as devidas adaptações.
20
Assim, durante a revisão da literatura (Apêndice A), traçou-se um histórico dos
últimos vinte anos (Figura 2.2) de alguns métodos ágeis, aplicados à manutenção de
software, dando-se maior ênfase em temas recentes (últimos cinco anos).
Figura 2.2: Artigos sobre manutenção de software nos últimos vinte anos (Fonte: autoria
própria).
2.3.1 Mantema
Ao final dos anos noventa, ainda na geração dos modelos de processos tradicionais de
software, o Mantema [21] surge com propósitos específicos para manutenção de sistemas
de médio e grande porte, especialmente os terceirizados como, por exemplo, os relacio-
nados às instituições financeiras ou administrações públicas. Para atingir seus objetivos
ele utiliza as normas de referência: ISO/IEC 12207 [67] e IEEE 1219 [68].
A ISO/IEC 12207 [67] possui grupos de atividades que podem ser usadas em todo
ciclo de vida do software, para diferentes tipos de projetos, mas não detalha como
implementar as atividades dependendo do tipo de manutenção que se irá fazer. Além
disso, todas as atividades são agrupadas e distribuídas em sequência.
A falta de clareza de certas atividades da ISO/IEC 12207 referentes à manutenção,
pode prejudicar os mantenedores no momento de escolherem quais atividades devem
seguir. Essa dificuldade chamou a atenção de Polo et al. [21] que consideram este um
fator crítico para o sucesso na manutenção de software.
A IEEE 1219 [68] atualizada pela ISO/IEC 14764 [69] serve como complemento no
processo de manutenção da ISO/IEC 12207, descrevendo com mais detalhes as atividades
21
necessárias às manutenções de software, sejam elas corretivas, adaptativas, perfectivas
ou preventivas.
Desse modo, para Polo et al. [21], as normas ISO/IEC 12207 [67] e IEEE 1219 [68]
deveriam ser unidas e detalhadas com foco na manutenção. Essa união bem sucedida
deu origem ao Mantema, que divide a manutenção em cinco tipos: Corretiva e urgente,
Corretiva sem urgência, Evolutiva, Preventiva e Adaptativa. Além disso, descreve de
forma prática e objetiva:
• As responsabilidades;
Mantema deu origem a diversos estudos posteriores como, por exemplo, as referên-
cias: [70, 71, 48, 72]. Este último, se refere ao Mantema Ágil [72] que une características
do Mantema ao Scrum e será melhor detalhado na Seção 2.3.3.
22
O Critical Feature Method (CFM) [23] baseia-se no fato de que o enfrentamento de
uma situação de emergência não pode desperdiçar tempo com pesadas documentações
de requisitos presentes nas metodologias tradicionais. Em vez disso, deve-se focar no
desenvolvimento de soluções viáveis, com o mínimo de interrupções das funcionalidades
existentes dentro de prazos curtos e com miníma participação dos clientes. Diante disso,
o CFM elenca os principais valores:
• Desenvolvimento rápido;
• Documentação simples.
23
• Substituir a documentação formal por matrizes leves separadas em situações crí-
ticas e não críticas. O Manifesto Ágil [63] destaca que: software funcionando é
mais valorizado do que documentação muito abrangente e, desse modo, algumas
metodologias sugerem que a documentação seja, simples, podendo até mesmo ser
substituída por artefatos descartáveis. Assim, o modelo CFM propõe uma “Ma-
triz de Recursos Críticos” e uma “Matriz de Recursos Normais” para substituir o
formalismo das documentações de requisitos, desenvolvimento e testes [23].
2.3.4 Mantelasoft
Com base no Mantema-Ágil [72], na norma ISO/IEC 12207 [67] e com propósito de
torná-lo mais prático para aplicação em pequenas e médias empresas, respeitando as
características e necessidades peculiares desse setor, Suarez et al. [48], desenvolveram o
Mantelasoft, que foi empregado com sucesso na cidade de Pereira (Colômbia).
24
Durante suas pesquisas e avaliações, Suarez et al. [48] constataram que o Mantema
junto aos ágeis é o preferido para a realização das manutenções por causa de sua quali-
dade, competitividade e histórico, sendo um processo de muito sucesso nos últimos dez
anos. Entretanto, trata-se de um método complexo que requer tempo e recursos huma-
nos consideráveis para sua implementação. Esses foram os fatores que os motivaram a
desenvolver o Mantelasoft, que funciona como um guia ao Mantema-Ágil, para que, de
forma pontual as tarefas e atividades necessárias à manutenção de software em pequenas
e médias empresas.
O Mantelasoft [48], assim como Mantema-Ágil [72], utiliza o Scrum para alcançar
melhor desempenho e qualidade nas entregas parciais e periódicas. Além disso, por se
tratar de um guia passo a passo de tarefas e atividades, ele consegue tornar a manutenção
de software um processo controlável e mensurável.
O guia Mantelasoft [48] se divide em oito fases, sequenciais, que são: manutenção
geral, planejamento da manutenção, processo de manutenção, métricas de manutenção,
estimativa de custos de manutenção, pessoal de manutenção, evolução ou melhoria dos
produtos e atividade finais de manutenção. Essas fases, por sua vez, possuem tarefas e
atividades que instruem sobre a maneira de se realizar a manutenção utilizando-se de
um check-list [48].
Como resultados, os autores [48] afirmam que esse guia vem contribuindo para a
melhoria do processo de manutenção de software, área que se tornou vital e que tem
possibilitado que aqueles que a realizam de forma sistemática alcancem muitos benefícios.
Os autores citam como exemplo: aumento na vida útil dos sistemas, satisfação dos
clientes e adequação dos sistemas às mudanças geradas pelo negócio [48].
2.3.5 Kanban
Kanban é uma ferramenta que utiliza da informação visual. Surgiu com foco na manu-
tenção, sendo usada a princípio para manutenções dos veículos da Toyota e depois se
estendeu para diversos tipos de manutenção, inclusive para as manutenções de software.
As empresas de software estão cada vez mais adotando Kanban para manutenção,
pois trata-se de uma ferramenta que se afirmou depois de demonstrar bons resultados,
por oferecer visibilidade aprimorada do projeto, qualidade no software, motivação na
equipe, melhor comunicação e colaboração [73].
Assim, Ahmad et al. [73] pesquisaram os motivos de algumas empresas finlandesas
estarem deixando o Scrum para utilizarem o Kanban na manutenção dos sistemas. Seus
resultados mostraram que as equipes de manutenção, ao utilizar Scrum, enfrentaram
25
desafios como falta de visibilidade do trabalho, dificuldades em priorizar as tarefas,
falhas na comunicação e colaboração, sobrecarga devido aos compromissos exigidos pelas
sprints, dificuldades em sincronizar os trabalhos ou substituir pessoas.
As entrevistas realizadas por Ahmad et al. [73] demonstraram que as equipes de ma-
nutenção não conseguiam encaixar as atividades urgentes nas sprints pré-estabelecidas e
as datas de lançamentos eram quase aleatórias. Além disso, as reuniões diárias, muitas
vezes, duravam bem mais do que o estabelecido e muitas vezes os membros do time não
estavam disponíveis para comparecerem nas reuniões. Tais fatores foram resolvidos ao
se utilizar o Kanban.
Após a aplicação do Kanban em alguns estudos de caso, Ahmad et al. [73] concluíram
que, em resumo, para lidar com o desafio da falta de visibilidade, o Kanban é mais
adequado sendo indicado para onde exista um alto grau de variabilidade da prioridade,
como na manutenção em ciclos curtos. Nesse sentido, Kanban contribuiu para benefícios
como visibilidade e priorização das tarefas, melhoria na moral da equipe, melhoria na
comunicação, proteção das equipes quanto às exigências excessivas e compartilhamento
de conhecimento entre os envolvidos.
Entretanto, pesquisas apontam que o Kanban, assim como outros métodos, possui
significantes desafios que impactam negativamente no processo de desenvolvimento de
software, como falta de mecanismo de rastreamento do andamento do projeto, dificul-
dades em se estimar o WIP (Work In Progress), atrasos e, consequentemente, falhas nos
projetos [74].
Nesse sentido, Alaidaros et al. [74] propuseram melhorias no processo utilizando
Kanban que estendem o rastreamento do progresso, geram limites ótimos de WIP e
maior visão do fluxo de trabalho. Para isso, utilizaram métodos tradicionais de gerência
de projetos, e algoritmos otimizados para determinação do melhor WIP.
Eles [74] destacaram que muitos profissionais estão utilizando métodos ágeis mistu-
rados inclusive com outras técnicas, como as de gerência de projetos tradicionais, ou
métodos ágeis com outros métodos ágeis, como o método que une Kanban e Scrum,
formando o Scrumban [75], visto na Seção 2.3.7 e o Impress [22] mostrado na Seção
2.3.8.
2.3.6 Scrum
Heeager e Rose [25] revelaram os desafios de se adotar Scrum para processos de manuten-
ção. Eles [25] relataram que muitos dos problemas de se aplicar Scrum para manutenção
se dão pelo fato de que uma emergência não pode aguardar o cumprimento de uma sprint
26
com todos seus requisitos, e quando acontecem acabam atrasando o cumprimento das
metas. Assim, afirmaram que a aplicação dos métodos ágeis na manutenção pode não
ocorrer automaticamente e algumas otimizações podem ser necessárias para acomodar
os diferentes tipos de manutenção, diferentes fontes de trabalho e práticas locais.
Para tratar a urgência das manutenções corretivas, Heeager e Rose [25] sugerem que
os projetos evolutivos sejam planejados com um tempo extra para que, caso ocorra al-
guma emergência, seja possível atendê-la sem muitos impactos na manutenção evolutiva
em curso.
Pino et al. [72] aconselham o uso de sprints separadas para a manutenção, sendo uma
mais breve para correções de emergências imprevistas e outra maior com planejamento
para manutenções evolutivas.
Verificando que a literatura sugere o tratamento diferenciado para as diferentes ca-
tegorias de manutenção (adaptativa, corretiva, perfectiva e preventiva), Rehman et al.
[3] constataram que quando isso é atendido os resultados da manutenção com métodos
ágeis aumentam os casos de sucesso.
Diante do exposto, Rehman et al. [3] abordaram esse problema da concorrência
das manutenções se baseando nos trabalhos de Heeager e Rose [25] e Pino et al. [72],
utilizando-se do método ágil Scrum, e propuseram o modelo conforme a Figura 2.3.
27
e logo após verifica-se o tipo de manutenção, sendo que a manutenção corretiva é prio-
ritária e o trabalho é iniciado por meio de uma nova versão de código [3].
Caso a manutenção seja evolutiva, surge a necessidade de um monitoramento para
verificação de sprints urgentes e de emergência durante sua execução e, caso ocorra a
emergência, a sprint atual é pausada, o trabalho realizado é armazenado no sistema de
controle de versão e é iniciada a manutenção corretiva [3].
Após as manutenções corretivas, é verificado se há solicitações pausadas e então as
retorna de onde foram interrompidas.
Rehman et al. [3] esclarecem ainda que a manutenção deve ser realizada da seguinte
forma:
O trabalho de Rehman et al. [3] foi conferido por meio de um estudo de caso e
comprovou que o Modelo de Manutenção aumentou a satisfação do cliente, diminuiu o
retrabalho, melhorou a rastreabilidade dos erros e melhorias nos casos de testes. Assim,
consideraram que a meta de manutenção com o Scrum é possível e satisfatória.
2.3.7 Scrumban
Scrumban [75] é o resultado da união entre Scrum e Kanban com propósito de se apro-
veitar o melhor de cada um em prol de uma maior flexibilização do emprego das práticas
ágeis em diferentes situações de projeto.
28
Segundo os estudos de Alqudah e Rozilawati [4], os profissionais de Kanban e Scrum
estão convencidos de que para certas situações a combinação de ambos os métodos é
melhor que o uso de um ou de outro isoladamente. Entretanto, não é fácil selecionar
as características que serão utilizadas de cada um e para se escolher Scrum, Kanban ou
ambos exige-se um entendimento dos fatores que influenciam a seleção ou hibridização.
Não existem práticas específicas para Scrumban, os membros da equipe ágil precisam
entender quais práticas de Scrum e Kanban agregam mais valor e escolher as práticas
apropriadas para a situação. Para Alqudah e Rozilawati [4] Scrumban é mais adaptável,
especialmente quando há muitas alterações nos requisitos do usuário.
Alqudah e Rozilawati [4] avaliaram o Kanban, Scrum e Scrumban quanto à quanti-
dade de prescrição de cada um, papéis e responsabilidades, tempo de adoção, tamanho
da equipe, tamanho do projeto ou tarefa, priorização de requisitos,prazo de entrega,
práticas técnicas, custos e qualidade. Eles [4] verificaram que o Scrumban é bastante
adaptável, especialmente em situações nas quais ocorrem constantes alterações de requi-
sitos.
Com propósito de se comparar características do Scrum, Kanban e Scrumban, Alqu-
dah e Rozilawati [4] definiram resumidamente a Figura 2.4:
Os seguintes casos foram apontados por Algudah e Rozilawati [4] para indicar quando
utilizar cada método:
• Kanban: quando os envolvidos não estão dispostos a atuarem com papéis pré-
definidos; equipes que precisam executar tarefas prioritárias em menos de uma
semana, constantemente ou mesmo em questões de horas com entregas pequenas;
em equipes que precisam diminuir o lead time (tempo de entrega), aumentar a
qualidade e reduzir custos.
• Scrumban: as escolhas para sua composição se dão para cada caso particular. Por
exemplo, poderia iniciar o projeto adotando o Scrum evitando sprints, planeja-
mento, revisão e backlog da sprint quando a tarefa é pequena para caber em mais
de uma sprint ou quando é difícil estimar o tamanho das sprints e então poderiam
controlar a entrega ajustando o WIP. Da mesma forma, podem existir muitos cená-
rios e aplicações diferentes, ficando a cargo da equipe ajustar o método Scrumban
29
Figura 2.4: Comparação entre Kanban, Scrum e Scrumban (Fonte:[4]).
para cada situação. Para isso, deve-se entender as práticas de ambos os métodos
para poder selecionar quais usar.
30
2.3.8 Impress
Com o propósito de se manter um sistema de grande porte, com alto fluxo de mudanças,
em funcionamento por mais tempo, justificar os altos custos desses sistemas em produção
e adaptá-los às mudanças do negócio, Aquino e Dantas [22] propuseram o Impress.
O Impress é um Scrumban, que sustenta que demandas diferentes devem ser tratadas
por meio de estratégias de manutenções diferentes, de modo a respeitar suas peculiari-
dades quanto às definições de escopo, tempo, partes envolvidas, complexidade, urgência
e tamanho das solicitações. Assim, as diferentes demandas são divididas em duas cate-
gorias: Sustentação e Evolução [22].
De acordo com Aquino e Dantas [22], Impress se baseia nos princípios e conceitos
amplamente aceitos pelas áreas de conhecimento em Manutenção e Evolução de software
e princípios e práticas das metodologias ágeis, sendo as principais Scrum e Kanban.
Quanto à manutenção corretiva, o Impress se sustenta nos seguintes pilares [22]:
31
2.4 Considerações Finais do Capítulo
Neste capítulo foram apresentados um histórico sobre a evolução dos métodos ágeis
no Brasil, seguida de uma breve contextualização sobre a manutenção de software em
que foram apresentados alguns métodos voltados para manutenção. Esses método pro-
porcionam observar a evolução dos trabalhos buscando o aperfeiçoamento das técni-
cas de acordo com a dinâmica dos ambientes onde serão implantados. No Capítulo 3
apresentam-se conceitos importantes para se sustentar a qualidade e agilidade pressu-
postos dos métodos ágeis.
32
Capítulo 3
33
• A arquitetura de software de um sistema é o conjunto de estruturas necessárias
sobre o sistema, que compreende elementos de software, relações entre eles e pro-
priedades de ambos [61].
34
Geralmente, eles são divididos em documentos chamados de visões que podem ser usa-
das para entendimento, comunicação entre as partes interessadas e base para construção
e análises[5].
As visões podem ser categorizadas em visões de módulo (foco no código fonte), visões
de deployment (foco no deploy da aplicação), visões de runtime (foco nos componentes
e suas interações), visões de hardware (foco nos componentes de harware em geral) e
outros [5].
Métodos ágeis como o Scrum funcionam de forma iterativa e requerem frequentes
feedbacks dos clientes para assegurar respostas rápidas às mudanças [81]. Em adicional
o manifesto ágil [63] sugere que as entregas devem ser frequentes. Desse modo, a busca
por arquiteturas de deployment que suportem a agilidade requerida pelos métodos ágeis,
têm se tornado cada vez mais frequentes [82].
Embora a arquitetura de software, como um todo, tenha bastante influência sobre os
métodos ágeis, este capítulo objetiva gerar conhecimento para definição de uma arqui-
tetura de deployment direcionada à realidade do ambiente em que será aplicada capaz
de prover entregas do software em produção de forma controlada, rápida, frequente e
que atenda aos requisitos não funcionais de manutenibilidade, segurança, qualidade,
escalabilidade e alta disponibilidade.
35
Uma notação informal para arquitetura de deployment contém caixas, círculos, li-
nhas, setas que representam o software e elementos comportamentais [5]. Na Figura 3.1
tem-se um exemplo.
Figura 3.1: Exemplo de visão de deployment com notação UML 2.0 (Fonte: [5]).
Na Figura 3.1 é possível verificar onde cada artifact será entregue (deploy) ao hard-
ware (servidor). Trata-se de uma aplicação java com controle de versão Svn, sobre
um servidor Oracle 10g com seus respectivos contextos. Embora a Figura 3.1 esteja
utilizando notação UML 2.0, é muito comum encontrar visões arquiteturais utilizando
notação informal, com círculos representando armazenamento, retângulos representando
módulos de hardware ou software e setas para fluxo ou conexões, como no caso da Figura
3.2.
A materialização da visão de arquitetura de deployment para métodos ágeis pode
ser por meio de ferramentas de automatização capazes de criar múltiplos estágios para
entrega de software. O nome comum dado a essas ferramentas é: “pipeline” [82]. Um
pipeline utiliza de automação das fases de desenvolvimento do software para entregas
rápidas, contínuas e seguras (recuperação de código). Além disso, possibilita integração
de códigos promovendo o trabalho em equipe, monitoramento e testes.
Inicialmente o desenvolvedor envia seu código (git push) para o ambiente de controle
de versões, o pipeline (CloudBees com Jenkins) da Figura 3.2 é o responsável por fazer
o deploy da aplicação entre os ambientes de stage build, stage teste e stage deploy.
Para o sucesso dessa automatização, a Figura 3.2 mostra outras ferramentas comumente
36
utilizadas e necessárias para integração contínua e entrega contínua (CI/CD), do inglês
continuous integration/continuous delivery, são elas: GIT para integração contínua e
controle de versões e o orquestrador Openshift (ferramenta proprietária originada do
Kubernates), o orquestrador adiciona o código fonte em um container Docker 2 , e assim
assegura escalabilidade, alta disponibilidade e gerência dos módulos.
Um método estabelecido pelo movimento ágil para se implementar o pipeline é o
CI/CD . O movimento DevOps 3 adaptou essas práticas e adicionou o pipeline de deploy-
ment como um dos principais requisitos para automatizar o processo de desenvolvimento
de software melhorando a flexibilidade e facilidade de manutenção dos sistemas [82].
Embora os métodos ágeis sejam cada vez mais comuns, muitas organizações não
conseguiram alcançar os benefícios de CI/CD devido ao distanciamento entre equipes de
desenvolvimento e infraestrutura, fato motivador para que o DevOps se desenvolvesse
[85]. A aproximação e estabelecimento de processos de comunicação entre as equipes de
desenvolvimento e operação são fundamentais para prover agilidade nos projetos. Isso se
dá porque a arquitetura de software requer elementos de hardware e software alinhados
às necessidades do negócio.
37
A utilização da automatização por meio de CI/CD é considerada essencial para
emprego dos métodos ágeis, como bem expõe Vassallo et al. [86]. Tal automatização
traz vantagens como descoberta precoce de erros (de integração), controle das entregas,
aumento na qualidade, entre outras.
Laukkanen et al. [87] realizaram uma revisão da literatura em que constataram sete
principais problemas para emprego de CI/CD, cinco deles estão relacionados às diferentes
atividades de desenvolvimento de software: projeto da arquitetura, projeto do sistema,
integração, testes e entregas. Os outros dois não estão conectados a nenhuma parte
individual e são: fatores humanos/organizacionais e de falta de recursos. A maioria dos
problemas se concentram na integração e nos testes.
CI/CD estão relacionados e pode-se dizer que CD depende de CI [82]. Para se
ter entregas contínuas (CD), a integração entre os códigos (CI) deve ser praticamente
transparente, a arquitetura deve ser suficiente para suportar o desenvolvimento com
qualidade, os testes devem ser rápidos, não ambíguos e estáveis, o gerente de projetos
não deve demorar nas tomadas de decisões do que deve ou não ser enviado para produção.
Além disso, controlar os fatores humanos, como falta de disciplina, falta de motivação e
falta de experiência é crucial para manter entregas constantes.
38
Trata-se de uma solução ideal para evitar conflitos quando muitas aplicações são
desenvolvidas ao mesmo tempo. Vários testes automatizados, geralmente de unidade e
integração, são feitos para garantir que as mudanças não corrompam a aplicação. A CI
facilita a correção de qualquer erro encontrado[88].
3.2.4 Microsserviços
Os sistemas são compostos de funcionalidades, entretanto, essas funcionalidades inde-
pendem das estruturas que são escritas, elas não decidem sobre a arquitetura, ou seja,
pode-se dividir as funcionalidades em uma série de maneiras e então atribuir sobre di-
versas arquiteturas [61].
Diate disso, Bass et al. [61] diz: "[...] se a funcionalidade fosse a única coisa que
importasse, você não teria que dividir o sistema em partes; uma única bolha monolítica
sem estrutura serviria muito bem".
39
A frase de Bass et al. [61] resume a ideia do que é um monólito de software e
chama a atenção para a ideia da quebra desse monólito em partes menores, resultando
na definição de microsserviços.
Tradicionalmente, os sistemas são desenvolvidos de forma monolítica, como um único
bloco composto de rotinas e funções ou métodos e classes, mas ao compilar ou executar,
tudo se conecta formando um mesmo bloco monolítico de código.
As arquiteturas monolíticas geralmente usam uma abordagem de implantação “big
bang” que atualiza toda a aplicação de uma vez e algumas vezes incluem atualizações
de banco de dados. Essa abordagem pode ser lenta e sujeita a erros devido às suas
ramificações pesadas e, desse modo, menos ágeis [84].
Por outro lado, com o advento das metodologias ágeis e da cultura do DevOps, uma
nova forma de arquitetura vem sendo implementada, que é a arquitetura de microsser-
viços.
A ideia de se ter um baixo acoplamento, é de conseguir evoluir o sistema se apoiando
na substituição de seus componentes sem impactar significativamente o sistema por
completo [91]. Microsserviços vieram para estender esse conceito até o nível de deploy em
que pequenos módulos coesos de software são entregues e se comunicam, normalmente,
utilizando-se protocolo HTTP.
Não há um consenso quanto à definição de microsserviços, o que se percebe é que
diversos autores tentam adicionar características que se espera que um microsserviço
tenha, como por exemplo [92]:
40
• Ser desenvolvido por equipes divididas em torno de capacidades de negócios mo-
tivadas pela lei de Conway (trata-se de um ditado que afirma que as organizações
projetam sistemas que refletem sua própria estrutura de comunicação [93]).
Uma forma que facilita a replicação e implantação dos microsserviços é por meio
da utilização de containers de software. O padrão atual, amplamente difundido para
containers é o Docker, um container leve que possui um kernel Linux e interage com ele
praticamente sem overhead [83].
Utilizando-se Docker torna-se possível, ao programador, se concentrar na produção
de código, pois, após configurado, o Docker pode prover toda infraestrutura necessária
de um servidor de aplicação, podendo ser usado para manter o alinhamento tecnológico
entre os desenvolvedores sem lhes tirar a autonomia de criação.
Após a codificação, o desenvolvedor pode embutir o código no Docker e distribuir
em um cluster aproveitando de seu tamanho pequeno e leveza. Isso permite alcançar
repetibilidade e uniformidade perfeitas nos ambientes [83].
Para que todos os containers comuniquem entre si e também com outros servidores
é necessário uma estrutura capaz de realizar a orquestração entre eles. Essa estrutura
é chamada de orquestrador, sendo o mais comum na comunidade de software livre o
Kubernates [96].
Além de prover a orquestração dos componentes, o Kubernates possibilitam uma
série de outras funcionalidades como, por exemplo: escalabilidade horizontal, alta dis-
ponibilidade, rápidas e transparentes atualizações do software, computação distribuída,
entre outras [96].
41
Assim como o Docker, o Kuberntates é fudamental para construir sistemas com
capacidade para suportar CI/CD. Entretanto, deve-se buscar equilíbrio na quantidade
de microsserviços, pois a modularização em excesso pode ser um fator de aumento da
complexidade para Continuous Delivery [87].
42
3.3.1 Documentação de Requisitos e as Metodologias Ágeis
No passado, os métodos ágeis e os requisitos tradicionais eram conflitantes, particu-
larmente pelo hábito de se tratar a Engenharia de Requisitos (ER) de forma restrita,
como um conjunto de declarações do que o sistema “deveria” fazer com base em docu-
mentações que os ágeis preferem evitar. No entanto, a ER cobre um amplo campo de
requisitos, implícitos ou explícitos, que podem se adequar ao estilo ágil de comporta-
mento e pesamentos [98]
A definição e gerenciamento de requisitos são considerados como fatores críticos na
Engenharia de Software [99]. Uma especificação de requisitos inadequada funciona como
catalisador para outros problemas, como baixa produtividade da equipe e dificuldade em
manter o software [100].
Para se adequar à dinâmica dos métodos ágeis, os analistas de requisitos propuseram
uma documentação mais simples que fosse clara, objetiva e adaptável, dando origem ao
conceito de living documentation, ou documentação viva [14].
Diz-se que a documentação está viva porque ela deve ser dinâmica durante todo o
ciclo do projeto, deve haver uma comunicação clara entre analistas e clientes (linguagem
ubíqua) com propósito mais voltado ao comportamento e menos aos procedimentos.
A pesquisa de Schön (2017), citado por Fraga e Barbosa[101], identificou que os prin-
cipais documentos de requisitos utilizados nos métodos ágeis são: histórias de usuário,
protótipos, casos de uso e cartões de histórias. Alguns autores (Haugset e Stlhane, Mead,
Schön), conforme Fraga e Barbosa [14], indicaram também que os requisitos podem estar
documentados nos casos de testes.
A Figura 3.3 elenca as principais diferenças entre o levantamento de requisitos tra-
dicional e ágil.
As pesquisas indicam uma documentação de ER que se destaca quando se utiliza mé-
todos ágeis, são as histórias de usuários [102, 100, 99]. Elas são usadas para representar
a necessidade do cliente, devem ser simples, objetivas e expor os benefícios a serem en-
tregues. Os requisitos são discutidos de forma detalhada durante toda a implementação.
Em alguns casos, as histórias de usuários não são necessárias, sendo substituídas pela
comunicação face a face [101].
Embora o uso de requisitos ágeis gere ganho inicial de tempo, a ausência de detalhes
na documentação pode resultar em não alinhamento com as expectativas do cliente [14].
Na pesquisa de Medeiros et al. [100] cerca de 50% das tarefas de manutenção analisadas
tiveram problemas devido à insuficiência de documentação de requisitos. Já os estudos
de Mendes et al. [103] mostraram que o débito de documentação gera um aumento no
43
Figura 3.3: Comparação entre abordagens tradicional e ágil em relação ao processo de
Engenharia de Requisitos (Fonte: [7]).
esforço 47% maior que o estimado no projeto e um custo extra que chega aos 48%. Para
Borrego et al. [104], um dos desafios dos métodos ágeis é manter o conhecimento ao
longo do tempo devido à insuficiência de documentação.
Embora o Manifesto Ágil [63] preze mais pelo software em funcionamento do que
uma documentação abrangente, ele não se opõe a qualquer prática adicional que vise
melhorar a qualidade.
Com o crescimento dos métodos ágeis nos últimos anos, as pesquisas apontam di-
versas limitações em relação às atividades de Engenharia de Requisitos. Desse modo,
buscar o equilíbrio entre documentação e agilidade pode ser a melhor estratégia.
44
Salerno et al. [106] discutiram o impacto de se ter um profissional do time como
facilitador na identificação dos problemas e para auxiliar no melhor entendimento das
necessidades e engajamento do usuário, a este profissional deu-se o nome de Product
Designer que se mostrou crucial na identificação de melhores soluções aos problemas
dos usuários.
Profissionais de qualidade, também chamados de QA (Quality Assurance) ou testers,
passam a exercer papel dentro do time e geralmente não desperdiçam tempo escrevendo
documentação para depois fazer testes manuais. Normalmente, eles levantam os re-
quisitos junto ao profissional de negócio de modo que a especificação se torna o próprio
teste na medida que os desenvolvedores vão entregando pequenos incrementos facilmente
testáveis [105].
Muitos métodos de testes surgiram e alguns ganharam forças de modo a sustentar
os processos baseados nos métodos ágeis. Entre eles, vale ressaltar os conceitos de Test-
Driven Development (TDD), Acceptance Test Driven Development (ATDD), Behavior-
Driven Development (BDD) [107]. Para mais informações sobre essas técnicas veja o
APÊNDICE K.
45
Capítulo 4
Materiais e Métodos
46
Figura 4.1: Fase de Coleta de Dados (Fonte: autoria própria).
resultados.
A DSR proposta por Wieringa [2] foi a adotada neste trabalho. Entretanto, com uma
adaptação no ciclo DS original. Um fluxo de retorno entre as fases de Validação e Design
da Solução foi criado, dado que, antes da Implementação podem ser necessárias algumas
validações para que se tenha um Design da Solução satisfatório. A DSR adaptada é
apresentada na Figura 4.2.
47
Figura 4.2: Framework DSR de Wieringa (Fonte: adaptado [2]).
48
sentidos. O propósito foi obter dados para direcionamento da pesquisa, obter
informações para avaliar se as alterações estavam gerando os efeitos esperados ou
não.
49
Iniciou-se pela arquitetura, seguida pela experimentação do emprego do Kanban.
Com a experiência e limitações observadas, partiu-se para experimentação do SCRUM
utilizando-se o processo de Rehman et al. [3] e por fim, a aplicação do processo de
Rehman et al. [3] com metodologia híbrida. Apresentam-se os detalhes no Capítulo 6.
Neste trabalho, os 04 ciclos estão representados na Figura 4.3. Cada fase da DS possui
entradas relativas a um problema inicial ou resultante da interação anterior, formando
assim, uma conexão, um alinhamento entre os ciclos. Os refinamentos e alinhamentos
foram guiados pelos critérios de satisfação que conduziram para o término da pesquisa.
Cada ciclo possibilitou a melhoria contínua por meio da construção dos artefatos e
análise dos dados gerados por esses artefatos avaliados no contexto social. A análise dos
dados resultantes de cada ciclo conduziu a novos ciclos, e esses, até o nível de satisfação
desejado.
50
Figura 4.3: Ciclos DSR (Fonte: autoria própria).
4.4.1 Entrevistas
As entrevistas semiestruturadas foram realizadas por videoconferência utilizando-se fer-
ramenta computacional Zoom Video Communications [109], possibilitando a realização
51
remota e a gravação para posterior transcrição, conforme APÊNDICES (G, H e I).
Antes das entrevistas, um termo de compromisso e consentimento foi lido conforme
o APÊNDICE F. No termo são descritas cláusulas de ética e preservação do anonimato
para resguardar as partes. O objetivo de se aplicar as entrevistas foi coletar as percepções
dos envolvidos quanto ao processo de manutenção de software resultante. As entrevistas
foram realizadas após a realização do 4o ciclo da DSR. No Capítulo 7 apresentam-se os
04 ciclos.
A escolha por entrevistas se deu pela oportunidade de entrevistar os membros da
equipe, diretores e usuários gestores e possibilitar análises de modo a superar as incer-
tezas, enriquecer a leitura, e obter comprovações sobre o contexto do Tribunal e sobre
os artefatos gerados para diminuição dos problemas observados.
Os seguintes critérios foram utilizados para escolha dos participantes:
52
4.5 Redação dos Resultados
A fase de Redação do Resultados compreende esta monografia do trabalho de pesquisa
realizado.
53
Capítulo 5
Contexto da TI no TJGO
54
Um resumo da estrutura organizacional do TJGO até 31 de dezembro de 2020 pode
ser visto na Figura 5.1.
Figura 5.1: Organograma do TJGO até 31 de dezembro de 2020 (Fonte: adaptado [8]).
Figura 5.2: Organograma do TJGO após 31 de dezembro de 2020 (Fonte: adaptado [8]).
55
Figura 5.3: Organograma de TI do TJGO (Fonte:[8]).
As divisões que estão diretamente relacionadas a esta pesquisa são: Divisão de Enge-
nharia de Software (DES) e Divisão de Infraestrutura Tecnológica (DIT) com subdivisões
de Sistema Operacionais (SO), Banco de Dado (BD), Redes e outros.
Cada equipe da Divisão da DES possui integrantes, na maioria, servidores de carreira,
sob uma Coordenação e todos estão subordinados à Diretoria de Engenharia de Software.
A DIT também é composta por servidores de carreira mas possui significativa pre-
sença de trabalhadores terceirizados, os quais colaboram com as atividades pertinentes
da área. Cada Núcleo também possui um Coordenador e todos estão sob a gestão do
Diretor de Infraestrutura e Tecnologia.
Ressalta-se que a comunicação entre a DES e a DIT é uma via frequente e necessária
entre as duas divisões, todavia, trata-se de uma ferramenta que às vezes é prejudicada
pela falta de processo ou mesmo alinhamento entre as equipes, pois geralmente essa
comunicação ocorre de forma informal e direta entre os desenvolvedores e os técnicos de
infraestrutura. Percebe-se esta falha de comunicação, também, entre os núcleos da DES
gerando desalinhamento entre as equipes.
O TJGO é um órgão que teve poucos concursos para esfera administrativa, foram 4
concursos, sendo 3 nos últimos 15 anos. O autor dessa pesquisa tomou posse em 2008, no
56
segundo concurso, o de maior número de nomeados, cerca de 40 pessoas foram nomeadas
para trabalhar na TI, divididas nos cargos de Técnicos Judiciários (Graduados na área
de Informática), posteriormente alterado para Analista Judiciários pela lei 17.663/2012
[111] e Auxiliar Judiciário (Ensino Médio), atualmente extinto pela mesma lei. Era
notável a motivação e empolgação no início e também perceptível a diminuição do ritmo
ao longo dos anos, fenômeno observado também para os concursados subsequentes.
A demanda por produtos de software no TJGO acompanha o ritmo acelerado da
sociedade que cada vez mais depende de soluções automatizadas para realizar suas ati-
vidades. Como resposta a essas necessidades, foi contratada uma fábrica de software que
atualmente é gerenciada pela equipe de testes Núcleo para Testes de Software (NTTS)).
A seguir, detalhada-se as divisões da DES e NTSA, por serem os objetos principais
desta pesquisa.
57
Segundo Sommerville [15], a necessidade de gerenciamento de sistemas é uma im-
portante distinção entre o desenvolvimento profissional de software e a programação em
nível amador.
A nova forma de Governo iniciada após a Constituição Federal de 1988 se baseia
em princípios explícitos de Legalidade, Moralidade, Produtividade e Eficiência. Esses
princípios têm proporcionado novas formas de gestão pública. Segundo Aquino [113],
o princípio da eficiência deveria ser o norteador da administração pública, eliminando
processos burocráticos e introduzindo modelos gerenciais com foco nos resultados.
Entretanto, eliminar processos burocráticos não significa eliminar processos. Diante
da transformação tecnológica vivida pela sociedade, mais do que nunca, há uma cres-
cente necessidade de investimentos em gerenciamento de projetos de software porque
a engenharia de software profissional está sempre sujeita a restrições de orçamento e
prazo.
De forma errônea é comum que os analistas da DES tomem decisões sem o conheci-
mento da diretoria, muitas vezes com justificativas de estarem diminuindo a burocracia
em prol de um processo mais ágil. O fluxo de desenvolvimento se assemelha ao exposto
na Figura 5.4.
58
Após esse contato inicial, o desenvolvedor coleta os requisitos por telefone ou agenda
uma reunião para analisar melhor o problema.
De posse dos requisitos, que não são documentados, o desenvolvedor realiza a ativi-
dade e disponibiliza em produção para que seja validado e testado e, a partir da fase de
uso, são realizadas possíveis manutenções corretivas e evolutivas sem prazo estabelecido
de término.
O modelo básico que move a DES, é um modelo baseado no conceito da proatividade
e embora a equipe tenha um bom relacionamento interpessoal, seja bastante capacitada e
habilitada para exercer as atividades, alguns já estão bem acostumados com suas rotinas
e as propostas de mudança geralmente não são bem aceitas. Até mesmo para aqueles
que de fato se mantêm proativos, a mudança não é bem vinda pois causa uma sensação
de diminuição da importância individual.
Para Covey [114], proatividade significa muito mais do que apenas tomar a iniciativa,
trata-se da capacidade humana natural de subordinar os sentimentos aos valores.
Pessoas proativas são responsáveis por fazer acontecer. Seu comportamento é produto
de sua escolha consciente, baseada em valores, e não em resultados de um condiciona-
mento. Caso esse condicionamento aconteça, essas pessoas deixam de ser proativas e
passam a ser reativas [114].
Estudos apontam [113, 115, 116, 117, 55] que no setor público essa proatividade
é mais evidenciada no início da carreira dos recém concursados que são estimulados
pelos novos desafios, vontade de mudança, jovialidade. Contudo, após alguns anos essa
motivação tende a diminuir.
Na DES pode-se observar que, ao longo dos anos, cada servidor foi se identificando
com um ou outro sistema que melhor lhe agradava e se isolando dos demais. Muitas
vezes são sistemas desenvolvido e mantidos pela mesma pessoa durante anos, havendo
em certos casos, um acordo de não intervenção no trabalho um do outro. Isso acarreta
uma alta dependência do profissional associado ao sistema que só ele mantém.
Como cada desenvolvedor realiza todo ciclo de desenvolvimento de software na maior
parte do tempo sozinho, os testes também ficam a cargo de cada um e, no geral, se
limitam a testes funcionais. Embora exista um núcleo de testes de software, ele é limitado
aos testes dos produtos da fábrica. A cultura de testes de software na DES encontra-se
em fase inicial.
Devido à deficiências no processo de desenvolvimento atual, as modificações são feitas
às pressas, algumas entregas acabam não atendendo aos pré-requisitos, a documentação
e testes são postergados, tendendo a transformar o software numa “Imensa bola de lama”
59
[118] e, em alguns casos, nem ocorrem. Isso tem se tornado um processo crítico no órgão.
Todavia, mesmo com estas deficiência no processo, há de se considerar que, de modo
geral, destacam-se os esforço individuais dos profissionais da DES.
60
Capítulo 6
6.2 Contexto
Alguns dos maiores desafios enfrentados por órgãos públicos, no setor de TI, por ordem
de prioridade, são [1]:
• 1. Mudanças culturais;
• 2. Resistência à mudanças;
61
desafios, faz-se necessário a utilização de técnicas de gestão de pessoas, que não serão
abordadas.
A utilização dos métodos ágeis ajudam a superar esses desafios, isso acontece porque
são métodos flexíveis e capazes de trazer resultados rápidos e com qualidade.
Entretanto, conhecer as vertentes da manutenção, os requisitos para utilização dos
métodos e as boas práticas é fundamental para, de fato, se definir um processo e assim,
não cair no erro de achar que os métodos ágeis, por si só, cumprem essa tarefa.
Face ao exposto, identificou-se na revisão da literatura [21, 26, 70, 23, 72, 12, 32, 48,
22] quatro pontos principais que favorecem a definição de um processo de manutenção
ágil em órgão públicos (Figura 6.1):
Figura 6.1: Fatores que favorecem a definição de um processo de manutenção com ágeis
(Fonte: Autoria própria)
.
Os aspectos da gestão de pessoas não fazem parte do escopo deste trabalho. Logo,
apresenta-se neste capítulo, o emprego da Design Science Research como método para
se chegar no objetivo geral desta pesquisa explicativa: “definir e avaliar a implantação
de um processo de manutenção de software para o TJGO, empregando metodologias
ágeis”, através dos pilares: Arquitetura, Processo e Testes.
62
Os ciclos da DSR foram realizados após a observação dos problemas no contexto social
e do conhecimento adquirido com a revisão bibliográfica, que representa o contexto do
conhecimento.
Na DSR adotada (Capítulo 4, Figura 4.2), cada ciclo é composto pelas fases: Inves-
tigação do problema, Design da Solução, Validação, Implementação e Avaliação. Foram
realizados 04 ciclos de DSR, conforme:
• Diretoria de TI: compete ao gestor dessa divisão, gerir toda área de Tecnologia
da Informação do TJGO;
63
• Divisão de Engenharia de Software (DES): compete à DES desenvolver e
manter sistemas computacionais. Ela se subdivide em: Núcleo de Sistemas Admi-
nistrativos, Núcleo de Sistemas Judiciais, Núcleo de Internet e Intranet, e outros;
Na investigação dos problemas, na DES, observa-se nos últimos dez anos de serviço
no TJGO algumas tentativas frustradas de emprego de processos de desenvolvimento de
software:
64
• Próximo de 2018, uma iniciativa interna utilizando o Redmine. Como as equipes
estavam sobrecarregadas de demandas sem processo, acabaram resistindo ao uso.
Passaram a ver a inciativa como apenas mais um trabalho desnecessário dada a
cultura extremamente técnica da divisão.
Praticamente nenhum novo sistema foi desenvolvido nos últimos cinco anos na divisão
de sistemas administrativos do TJGO. Ainda assim, o trabalho é intenso para se manter
os sistemas legados, sendo que alguns, com tecnologias desatualizadas, requerem mão de
obra exclusiva.
É comum que desenvolvedores reclamem da quantidade de linguagens de programa-
ção e peculiaridade de instalação de cada uma delas, o que os levam a se isolar naquelas
tecnologias que mais dominam.
Ao alimentarem a cultura do individualismo, os desenvolvedores se tornaram alta-
mente especializados, gerando uma extrema dependência de seus conhecimentos sobre
as regras de negócios e domínios tecnológicos.
Diante dessa situação, criou-se o hábito dos demandantes dos sistemas interagirem
diretamente com os desenvolvedores. A interação ocorre principalmente por telefone,
e-mail e presencialmente a qualquer hora. Essa situação gera bastante pressão e todas
as demandas se tornam urgentes e com prazos, algumas vezes absurdos. Isso resulta em
um clima tenso de sobrecarga e estresse diante da quantidade crescente de demandas
sem controle e principalmente sem alinhamento estratégico, o que causa prejuízos, não
apenas aos desenvolvedores, mas também aos interesses institucionais.
Além dos prejuízos citados, as demandas sem controle resultam em entregas indiscri-
minadas em produção. Em seguida, o próprio cliente valida e testa se as funcionalidades
estão satisfatórias, o que resulta em novas demandas corretivas, evolutivas e urgentes,
num ciclo infinito de manutenções.
Em 2018, o TJGO investiu na contratação de uma Fábrica de Software para suprir
as demandas de sistemas do Poder Judiciário goiano. De acordo com os diretores de TI,
o objetivo da contratação de uma Fábrica de Software é adequar o TJGO às tendências
Nacionais de desenvolvimento. Na contra-mão dos resultados esperados, a contrata-
ção da fábrica de software tem provocado ansiedade e desconforto dos integrantes das
equipes.
Como integrante Coordenador da equipe NTSA e pesquisador, analisando os proble-
mas no contexto social do TJGO, o autor desta dissertação, na expectativa de que os
problemas observados diminuíssem, chegou na seguinte pergunta da pesquisa: “como de-
65
finir um processo de manutenção de software para o TJGO, empregando a metodologia
ágil num cenário de órgão público brasileiro, com equipe interna de desenvolvimento?”.
Após alguns meses de pesquisa esperava-se que o time estivesse de acordo com as mu-
danças que estavam sendo realizadas e então realizou-se um questionário para aferir esse
sentimento. O questionário pode ser visto no APÊNDICE C) e demonstra unanimidade
quanto ao desejo de mudanças conforme pode ser visto na Figura 6.2.
Figura 6.2: Time NTSA demonstra vontade de mudança (Fonte: Questionário APÊN-
DICE C).
Figura 6.3: Aprovação das mudanças pelos Clientes (Fonte: Questionário APÊNDICE
D).
66
O estímulo ao trabalho em equipe, frequentes reuniões de brainstorming, iniciativas
sobre a implantação de uma cultura de testes, participação dos interessados durante
todo ciclo do projeto, recorrentes feedbacks aos clientes, documentação e formalismos
adequados, deram início à entrega de melhores produtos, conforme pode ser visto na
Figura 6.4, em que 100% dos respondentes se mostraram, ao menos, satisfeitos com as
entregas. Detalhes do questionário no APÊNDICE D.
Figura 6.4: Satisfação com produto entregue (Fonte: Questionário APÊNDICE D).
67
6.4.1 FASE Investigação do Problema
Diante do contexto social observado, uma arquitetura de deployment poderia diminuir
os seguintes problemas:
• Individualismo;
Uma das importantes condições para suportar as entregas ágeis é estabelecer uma ar-
quitetura de entrega Contínua e Integrada (CI/CD) [88, 87, 18]. Assim, o planejamento
compreendeu uma arquitetura capaz de suportar mudanças rápidas com segurança com
baixo prejuízo dos sistemas em funcionamento, que possibilitasse a aproximação dos
desenvolvedores ao trabalho colaborativo com foco no desenvolvimento e menos em con-
figurações ou instalações. A visão de deployment dessa arquitetura pode ser vista na
Figura: 6.5 e a dinâmica do fluxo, será explicada na Seção 6.8.2.
Conforme os problemas observados, a dificuldade em se instalar e manter diversos
servidores de aplicação em localhost gera situação de estresse e perda de tempo. Desse
modo, planejou-se uma arquitetura de CI/CD em que o dev pudesse enviar seus códigos
em localhost para um ambiente compartilhado (Desenv1), facilmente escalonável (De-
senvN). Conforme literatura especializada: no desenvolvimento ágil, existe a necessidade
68
Figura 6.5: Design da Arquitetura de Deployment (Fonte: autoria própria).
do trabalho colaborativo, no entanto, unir o código pode ser lento e trabalhoso, ainda
mais se o dev tiver seu próprio ambiente local, sendo que o ideal é que a equipe trabalhe
em um mesmo ambiente compartilhado baseado em nuvem [88].
De acordo com os estudos, a manutenção deve ser testável, seja ela evolutiva ou
urgente, compreendendo testes de integração e regressão [3].
Os testes durante todo ciclo de desenvolvimento são essenciais para metodologias
ágeis [26, 27].
Diante do exposto, foram definidos os ambientes de testes: Teste1, TesteN, Staging
em que o Teste1 e TesteN são ambientes utilizados durante as manutenções evolutivas,
e assim, o testador e o cliente podem realizar testes em um ambiente controlado ao final
de cada sprint. Já o Staging é o ambiente semelhante ao produção utilizado para testes
antes de se enviar o código para produção, após o término de uma manutenção evolutiva
ou corretiva. No Staging é onde se faz testes de sistema, de integração e regressão.
69
6.4.3 FASE Validação
Após a geração de um artefato, novas investigações e confrontações no contexto do
conhecimento foram realizadas e em alguns casos geraram alterações no artefato antes
de ser experimentado na prática. As ferramentas utilizadas foram discutidas com os
especialistas da área de Infraestrutura (DIT), que possuem parceria com consultores da
empresa Red Hat e se dispuseram a ajudar.
Para a validação foram feitos questionamentos sobre a aplicabilidade do artefato.
Aqui há uma diferença em relação a fase de avaliação, pois neste momento, na valida-
ção, pode-se gerar pequenos ajustes mesmo que estes ajustes não estejam relacionados
diretamente com o problema [2], podem ser ajustes técnicos necessários para instalação,
ajustes que envolvam outras pessoas, equipes, ou mesmo adequações às normas internas
ou externas.
70
• A partir dos containers, novas oportunidades surgiram, como a possibilidade de se
realizar deploys automatizados utilizando-se CI/CD seguindo o design da Figura
6.5, inserção dos sistemas do TJGO nos conceitos de microsserviços, integrações
através de APIs Legancy Wraper, alta-disponibilidade, escalabilidade, deployabi-
lidade, manutenibilidade, conforme poderá ser constatado na fase de Avaliação
seguinte.
71
• A arquitetura de deployment possibilitou o escalonamento horizontal dinâmico
de recursos, gerando alta disponibilidade dos sistemas.
• Individualismo;
72
6.5.3 FASE Validação
A validação foi feita levando em consideração a simplicidade da aplicação do método, en-
tusiasmo da equipe em iniciar os trabalhos com metodologias ágeis e o custo benefício da
ferramenta, visto que se aproveitou uma das ferramentas utilizadas para a implantação
da arquitetura de deployment.
73
6.5.5 FASE Avaliação
A avaliação inicial foi positiva e o Kanban teve boa aceitação pela equipe. Na Figura
6.6 observa-se que algumas tarefas foram concluídas (Closed).
Com o tempo, as tarefas começaram a não ser executadas. Diversas demandas de
usuários gestores eram entregues diretamente aos desenvolvedores, muitas vezes por te-
lefone, passando na frente de outras demandas como de costume. Os desenvolvedores
passaram a ver o quadro Kanban como uma tarefa a mais e desnecessária, sendo prioriza-
das as demandas que os clientes levavam pessoalmente ou pediam por telefone, restando
às tarefas do Kanban serem esquecidas no quadro.
• Individualismo;
74
que relatam que um dos principais desafios para implantação dos métodos ágeis é o de
promover a mudança cultural na organização [28, 56, 57, 30, 29, 55].
Desse modo, utilizar um método mais prescritivo, um método que também é bastante
utilizado tanto para desenvolvimentos quanto para manutenções, apresentou ser uma
alternativa de sucesso.
75
ser enviado, via e-mail corporativo aos envolvidos, gerando transparência e reforçando
a característica de push do Scrum.
Além disso, faz-se necessário atentar-se ao tratamento diferenciado para as diferentes
categorias de manutenção (adaptativa, corretiva, perfectiva e preventiva), Rehman et al.
[3] constataram que quando isso é atendido, os resultados da manutenção com métodos
ágeis aumentam os casos de sucesso. Então, utilizando-se os método ágil Scrum, os
pesquisadores Rehman et al. [3] propuseram um modelo, conforme apresentado na
Figura 6.7.
76
6.6.3 FASE Validação
Perante o exposto, sobre as dificuldades encontradas na tentativa de se utilizar o Kanban,
dados os aspectos culturais do TJGO, o processo de manutenção de Rehman et al. [3]
apresentou ser adequado no TJGO, visto que trata-se de um método um pouco mais
prescritivo e também devido sua simplicidade e bons resultados quando empregado em
órgãos públicos [28, 54, 1].
77
deram lugar ao trabalho em equipe e, consequentemente, maior qualidade nas entregas
e melhorias na comunicação.
O controle de versões e pipeline ajudaram no sincronismo dos trabalhos, organização
e controle.
Um simples “relatório de acompanhamento”, APÊNDICE B, transformou-se numa
poderosa ferramenta de gestão, gerando controle, planejamento e visibilidade. A transpa-
rência gerada pelo relatório de acompanhamento foi essencial para diminuir as demandas
atravessadas.
Os testes em papel passaram a ser feitos na fase de Verificação e no final da inter-
venção, antes da entrega, reduzindo drasticamente a quantidade de erros em produção.
Entretanto, restava ainda um problema: “dificuldade em lidar com as vertentes de
manutenção”. O processo de Rehman et al. [3] não deixa claro como deve ser executada
a fase: “Execute e monitore”, embora se recomende que não se deve ficar preso ao
tamanho das sprints, ainda assim o Scrum requer planejamentos e reuniões. Além disso,
pausar uma sprint de manutenção não urgente e deslocar todo o time para uma nova
manutenção urgente não pareceu ser uma boa estratégia.
78
De acordo com a literatura, para lidar com a urgência das manutenções, questões
como documentação, planejamento, reuniões devem dar licença para o foco na solução
do problema [23]. Diante disso, o Kanban se mostra mais indicado para executar tarefas
prioritárias, com prazos curtos, como menos de uma semana ou mesmo em questões de
horas, com entregas pequenas [4].
Figura 6.8: Modelo utilizando Scrum e Kanban para manutenção de software (Fonte:
adaptado [3]).
79
Neste trabalho, essa pequena mudança adicionando o Kanban ao processo de Rhel-
man et al. [3] mostrou ser adequada para a melhoria do processo de manutenção do
TJGO.
O e-mail foi utilizado como uma adaptação ao Kanban, conforme Figura 6.10.
Figura 6.10: Ilustração do e-mail sendo utilizado como quadro Kanban (Fonte: autoria
própria)
80
Quando se inicia a execução da demanda, o Coordenador é avisado pelo executor,
situação que representa o status (Doing ou fazendo) e ao término (Closed) um e-mail é
enviado para o cliente (feedback) fortalecendo os laços de confiança.
Caso esteja ocorrendo uma manutenção evolutiva no Scrum e alguém do time precise
executar uma manutenção corretiva via Kanban, isso é anotado no relatório de acompa-
nhamento, podendo se transformar em um fator de risco para o projeto de manutenção
evolutiva. O desenvolvedor com maior experiência para aquela manutenção urgente in-
cia sua execução e a tarefa dele, que estava sendo executada na manutenção evolutiva, é
redistribuída para o time buscando o menor impacto nos prazos estimados.
Quanto à estimativa dos prazos, é definido na reunião de planejamento do projeto
e ocorre em consenso do time utilizando-se a técnica de Poker Planning do Scrum. A
partir da estimativa de entrega do projeto, o time planeja a entrega da próxima Sprint
dentro do timeboxing. Tanto para estimativa da entrega do projeto, quanto para as
entregas dentro da Sprint, estima-se uma margem de segurança para caso seja necessário
encaixar atividades urgentes, conforme sugerem Heeager e Rose [25]. Desse modo, não
é necessário pausar nenhuma das manutenções em detrimento da outra.
As entrevistas realizadas por Ahmad et al. [69] demonstraram que as equipes de ma-
nutenção não conseguiam encaixar as atividades urgentes nas sprints pré-estabelecidas e
as datas de lançamentos eram quase aleatórias. Além disso, as reuniões diárias, muitas
vezes, duravam bem mais do que o estabelecido e geralmente os membros do time não
estavam disponíveis para comparecerem nas reuniões. Neste trabalho, tais problemas
foram resolvidos ao se utilizar o Kanban.
81
6.8 Síntese da DSR e Dinâmica do Processo Ado-
tado
Compreender os ciclos da DSR, os dados de entrada e saída de cada fase foi essencial
para a compreensão do processo metodológico adotado. Nessa seção apresenta-se uma
síntese dos ciclos DSR e uma descrição sobre a dinâmica do processo de manutenção
estabelecido no NTSA.
Após a fase de Avaliação, alguns problemas podem continuar e outros podem surgir,
esse conjunto de problemas é enviado como entrada para o próximo ciclo, Tabela 6.2.
O Kanban mostrou-se bastante útil no cenário das manutenções de software, mas em
princípio, fatores culturais do TJGO impediram que o método desse certo.
Historicamente, outras tentativas de usar métodos ágeis falharam no TJGO. Na
maioria das vezes, as equipes esperavam que a ferramenta tecnológica direcionasse para
82
solução dos problemas e quando isso não acontecia, acabavam abandonando ou trocando
de ferramenta.
Além disso, fatores como demandas por telefone e outros meios informais foram
priorizados frente a outras demandas. Isso aconteceu, muitas vezes, sobre a justificativa
de se estar desburocratizando e sendo ágil.
83
Tabela 6.3: Ciclo do Scrum
Aos poucos o time foi deixando o Kanban de lado pois continuavam
Investigação recebendo demandas paralelas e os problemas se mantiveram
do problema
84
6.8.2 Dinâmica do processo adotado
A arquitetura de depoyment definida no TJGO e o processo de Rehman et al. [3]
adaptado para manutenções de software pela equipe do Núcleo Técnico de Sistemas
Administrativos (NTSA), demonstram sintonia conforme esboça a Figura 6.11.
Essa sintonia repercute nos resultados obtidos pela equipe e demonstrados no Capí-
tulo 7.
O artefato gerado pelos ciclo DSR (Tabela 6.1), foi uma arquitetura de deployment
representada pela Figura 6.12.
85
Na Figura 6.12 pode-se observar que existem duas possibilidades para o time enviar
seus trabalhos: para o Desenv1 ou para o Master. Essas duas possibilidades correspon-
dem a manutenção evolutiva e manutenção urgente, respectivamente.
Nas manutenções evolutivas, representadas no processo pela área verde Scrum (Fi-
gura 6.13), ao final das sprints o entregável é enviado para o Teste1 (Figura 6.12), onde
faz-se a apresentação aos stakeholders e revisão do trabalho da sprint, documentada no
relatório de acompanhamento do APÊNDICE B.
Figura 6.13: Processo híbrido adotado no TJGO. (Fonte: adaptado Rehman et al. [3])
.
86
O processo prevê, antes de tudo, uma fase de Planejamento (Figura 6.13, item 1)
que nada mais é que verificar e garantir que o controle de versão e os requisitos não
funcionais estejam preparados para manutenção ágil.
Logo após, análise da requisição (Figura 6.13, item 2) é realizada buscando classificar
se a manutenção é corretiva (urgente) ou algum outro tipo de manutenção, e em seguida
gera-se uma nova versão.
Normalmente, quando ocorre manutenção urgente durante uma manutenção evolu-
tiva (Figura 6.13), um membro do time é deslocado para ela. Esse evento é documentado
no relatório de acompanhamento APÊNDICE B.
Quando algum integrante é deslocado para resolver uma situação urgente, sua tarefa,
no projeto de manutenção evolutiva é redistribuída para o time.
De acordo com Kong e Liu [23], quando uma situação de urgência acontece, ela deve
ser priorizada, mesmo que depois tenha que recuperar alguma funcionalidade perdida.
Diante disso, Rehman et al. [3] adicionaram a possibilidade de interromper a sprint a
qualquer tempo, se necessário, conforme mostra a Figura 6.13, item 3.
Conforme Heeager e Rose [25] sugerem, os projetos evolutivos são planejados com
um tempo extra visto que as manutenções urgentes podem ocorrer a qualquer tempo.
Assim, planejando e estimando o prazo com margem de segurança para caso surja
alguma manutenção urgente [25], ainda não houve a necessidade de se pausar nenhuma
sprint no contexto de manutenções do TJGO.
Na Figura 6.12 é possível ver o ambiente de Staging onde são feitos testes de re-
gressão e integração independente do tipo de manutenção. Esses testes visam verificar
as possíveis perdas de funcionalidades citadas por Kong e Liu [23] e possíveis erros em
requisitos não funcionais.
Ao final da intervenção, Figura 6.13, item 4, sempre é fornecido um feedback ao
cliente, conforme propõe os autores [122]. Isso aumenta a satisfação e confiança do
cliente. Caso o cliente esteja de acordo e tenha terminado a intervenção, o “Serviço está
completo” (Figura 6.13, item 5) e a manutenção é enviada para produção (Figura 6.12).
Os projetos são compostos por times pequenos e ciclos curtos, conforme sugerem
Beck e Andres [122]. Caso o projeto demande muito tempo (mais que um trimestre),
ele é dividido em mais de um projeto para assegurar as entregas contínuas e facilitar a
gestão.
87
6.9 Considerações Finais do Capítulo
Neste capítulo, apresentou-se a realização de experimentos na área de sistemas admi-
nistrativos do TJGO utilizando-se a DSR, com o propósito de se encontrar os melhores
artefatos capazes de diminuir os problemas enfrentados pela ausência de um processo de
manutenção de software.
No Capítulo 7 apresenta-se a Análise de Conteúdo[45] utilizando-se entrevistas e
revisão da literatura. Uma análise das citações presentes na revisão bibliográfica são
confrontadas com os resultados das entrevistas realizadas com o time de TI (APÊNDICE
I), usuários gestores (APÊNDICE H) e diretores (APÊNDICE G).
88
Capítulo 7
89
ser analisado, sejam eles textos, livros, entrevistas, questionários, transcrições, áudios
e outros. Utiliza procedimento sistemático e objetivos de descrição do conteúdo das
mensagens [45].
A intenção da análise de conteúdo é a inferência (deduzir de maneira lógica) de
conhecimentos relativos à condições de produção (ou, eventualmente, de recepção), in-
ferência esta que recorre a indicadores (quantitativos ou não). A análise de conteúdo e a
análise documental são bastante semelhantes. Se retirar a função de inferência e limitar
as possibilidades técnicas apenas à análise categorial ou temática, pode-se identificá-la
como análise documental [45].
A partir desses conceitos, utilizou-se entrevistas semiestruturadas e transcrição dessas
entrevistas para se conduzir uma fundamentação metodológica baseada na Análise de
Conteúdo, utilizando-se a técnica de Análise de Categorias com finalidade de se fazer
inferências. Utilizou-se como base bibliográfica o método descrito por Bardin[45] que se
divide em três etapas:
• Pré-analise;
• Exploração;e
• Interpretação.
• Entrevistar os dois diretores superiores imediatos. Eles podem ser vistos na Figura
7.1 representados por: diretor da DES (diretor imediato do pesquisador) e diretor
de TI (diretor de toda área de Tecnologia da informação do TJGO);
90
Figura 7.1: Documentos selecionados (Fonte: autoria própria)
• h2: para um processo utilizando metodologias ágeis dar certo é necessário uma
arquitetura de deployment e testes para melhoria da qualidade.
91
7.4 Exploração do Material
Essa etapa se refere a aplicação sistemática das decisões tomadas. Consiste essencial-
mente em operações de codificação, decomposição ou enumeração, em função de regras
previamente formuladas [45].
A partir da leitura flutuante, a seguinte codificação foi definida a priori 7.2(a):
92
• Peculiaridades do setor público: informações que demonstram que o setor público
possui pontos diferentes que precisam ser entendidos e trabalhados;
Para melhor visualização dos códigos, buscou-se a categorização entre eles, conforme
mostra a Figura 7.4, gerada a partir da ferramenta Atlas.ti (Fonte: [46]).
Além disso, verificou-se a cobertura das entrevistas em relação aos códigos. Seu
resultado pode ser visto na Figura 7.4, que indica que houve uma boa cobertura das
entrevistas sobre os resultados esperados por meio da categorização. Isso significa que
as entrevistas foram bem conduzidas no sentido de se explorar o contexto social do
TJGO após os impactos dos artefatos produzidos e aplicados nesse meio.
93
Figura 7.4: Cobertura das entrevistas em relação aos códigos (Fonte: autoria própria)
• Individualismo, relatado por: A (p.8, 18:7, APÊNDICE I), B (p.1, 2:40, APÊN-
DICE I), C (p.3, 12:27, APÊNDICE I) e D (p.2, 2:45, APÊNDICE I);
94
Figura 7.5: Amostra de indicadores de problemas no contexto social (Fonte: autoria
própria)
95
• Dificuldades devido a hierarquia, relatado por: C (p.4, 13:57, APÊNDICE I);
• Cultura, relatado por: A (p.2, 03:09, APÊNDICE I), Diretor da DES (p.4, 12:36,
APÊNDICE G) e Diretor de TI (p.2, 4:34, APÊNDICE G);
• Sensação de estar bom como está, relatado por: D (p.1, 2:45, APÊNDICE I);
• Omissão da autoridade para decidir, relatado por: C (p.1, 3:20, APÊNDICE I);
• Resistência, relatado por: A (p.6, 11:50, APÊNDICE I), B (p.2, 3:39, APÊNDICE
I), C (p.2, 7:20, APÊNDICE I);
Diante da análise dessas amostras, buscou-se uma visão mais ampla sobre a densidade
de cada categoria perante a dissertação e as entrevistas.
96
Na Figura 7.6, apresenta-se um diagrama Sankey 1 , utilizado para mostrar as dife-
rentes contribuições de cada categoria. Nele é possível observar os diretores opinando
sobre as quatro categorias enquanto o time de TI se concentra mais nos problemas an-
teriores e fatores que prejudicam o processo. Já a dissertação cobre todos os pontos,
exceto a Tentativa do Kanban no contexto do TJGO, dando maior ênfase nos problemas
que prejudicam o processo visto que buscava-se entendimentos sobre eles.
• Importância dos testes, relatado por: B (p.4, 9:15, APÊNDICE I) e Gestor2 (p.2,
3:19, APÊNDICE H);
97
Figura 7.7: Amostra de soluções para o processo (Fonte: autoria própria)
• Visibilidade, relatado por: Gestor2 (p.2, 5:02, APÊNDICE H), C (p.3, 12:27,
APÊNDICE I);
Essas práticas condizem com a revisão bibliográfica [3, 26, 32, 85, 121].
A Figura 7.8 mostra as categorias que favorecem o processo.
Na Figura 7.8 é possível verificar a equipe de TI opinado sobre cada categoria, en-
quanto os gestores abordam pontos do processo que mais lhe chamaram a atenção como:
os testes, a manutenção evolutiva e a corretiva. Já os diretores viram maiores impactos
devido a arquitetura e o processo de manutenção com suas vertentes. Também percebe-
se uma grande densidade de prática úteis, fontes de diversos autores reunidas nesta
dissertação.
98
Figura 7.8: Problemas observados (Fonte: autoria própria)
Figura 7.9: O que se espera de um processo de software e fatores que favorecem (Fonte:
autoria própria)
99
e a amostra de resultados pode ser vista na Figura 7.10.
• Visibilidade, conforme: A (p.8, 18:07, APÊNDICE I), Gestor1 (p.2, 5:08, APÊN-
DICE H) e B (p.4,8:40, APÊNDICE H);
100
• Trabalho em equipe, conforme: A (p.10, 22:21, APÊNDICE I), B (p.2,5:29, APÊN-
DICE I) e Gestor1(p.2,5:08, APÊNDICE I);
7.5 Interpretação
Nesta seção serão feitas interpretações e inferências sobre os resultados para se concluir
sobre as hipóteses.
Até o momento, as informações são suficientes para se fazer algumas inferências, mas
os métodos quantitativos geram ainda mais confiança para confirmação das hipóteses.
Diante disso, serão apresentados e discutidos alguns dados quantitativos.
Na Figura 7.12 é possível observar a quantidade de vezes que determinada categoria
foi mencionada, as cores mais escuras indicam onde houveram maior concentração das
respostas. Outra observação é que é possível ver pouca declaração dos gestores em
relação aos problemas observados, enquanto os principais afetados são de fato o time de
TI.
101
Figura 7.12: Problemas observados (Fonte: autoria própria)
• “As mudanças que a gente teve ultimamente, eu percebi que foram, bem [pen-
sando], como vou dizer ? Bem... aceitas, não no começo, mas depois foi bem
interessante”. Transcrição de B (p.1, 2:40, APÊNDICE I);
• “[...]a resistência foi grande, acho que a resistência já diminuiu mas ela ainda existe,
mas foi grande”. Diretor da DES (p.4, 15:33, APÊNDICE G);
102
• “Na verdade eu acho que tem que ser assim, tem que chegar alguém e dizer que
vai ser assim e pronto”. Transcrição de A (p.3,6:42, APÊNDICE I).
Dada a hipótese h2: para um processo utilizando metodologias ágeis dar certo é neces-
sário uma arquitetura de deployment e testes para melhoria da qualidade.
Percebe-se na Figura 7.13 que a arquitetura de deployment foi a mais comentada
dada sua importância e benefícios percebidos.
Sem a definição de uma arquitetura, as entregas contínuas as quais a literatura sobre
ágeis se referem [86, 124] seriam comprometidas visto que ela fornece o elo entre os
objetivos e os resultados finais do sistema [61]. A (p.6,12:36, APENDICE I) relata a
precariedade de como eram feitos os deploys na Divisão de Engenharia de Software do
TJGO: “[...] era um processo inicialmente bem arcaico. Que em alguns pontos dava
aquela falsa impressão de praticidade, mas era bem perigoso. Você desenvolvia sem
passar por ninguém, já fazia seu deploy e estava em produção”.
103
Além disso as metodologias ágeis sugerem o trabalho em equipe, como por exemplo,
os conceito de time do Scrum [81], ou de programação em pares do XP [124]. Nesse caso,
a arquitetura de CI/CD [88] também contribui para esse objetivo, conforme observado
por C (p.7, 23:37 ,APENDICE I): “Essa ideia de entrega continua, isso aí aproxima
também as equipes”.
Então infere-se que uma arquitetura de deployment apropriada é fundamental para
trabalhar com um processo que se utiliza de métodos ágeis.
Quanto aos testes, pode-se dizer que ainda estão num processo bastante inicial no
TJGO e assim como foi com o processo de manutenção com ágeis, exigirá mais tempo
para que se torne uma realidade capaz de produzir melhores resultados. Entretanto,
conforme sugerem outros autores [26], os testes foram introduzidos em todo ciclo de
manutenção e de novo a arquitetura de deployment foi essencial para isso, visto que
possibilitou a definição de ambientes propícios para execução deles. Como comprovou
o Usuário Gestor2, ao final de cada sprint, ele foi convidado a testar as entregas em
ambiente apropriado e relatou: “Eu achei bacana também a forma de acompanhamento.
Fiz os testes [...]. Todos os testes que foram passados eu fiz.” (p.2,3:19,APÊNDICE H).
O Gestor2 (p.2,4:37,APÊNDICE H), relata ainda que encontrou uma inconformidade
com os requisitos e que foi possível identificá-la prematuramente por meio dos testes:
“no início a gente tinha pensado de um jeito e acabou mudando a forma que a gente viu
no teste e que precisava ser de outra forma”.
Assim, fica constatada a importância dos testes para os métodos ágeis diante do
requisitos ágeis de qualidade [63] e conforme o entrevistado B (p.4,9:15,APÊNDICE I):
“Fica como lições aprendidas, é que às vezes a gente precisa caprichar mais um pouquinho
no teste interno antes de passa para o usuário testar”.
Considerando a hipótese h3: para um processo de manutenção, é necessário tratar
as vertentes de manutenção separadamente.
Nos últimos dez anos, houveram algumas tentativas de se definir um processo de
software no TJGO, uma delas foi baseada no RUP e fatores como: Documentação
extensa, dificuldades em definir quais artefatos seriam necessários, falta de experiência,
falta de treinamento conforme exposto por C (p.1, 3:20, APENDICE) e D (p.4, 15:20,
APENDICE) contribuíram para o insucesso.
Outra tentativa foi o uso de ferramentas como Redmine e quadro Kanban e os fatores
de ambos não terem dado certo são semelhantes e basicamente se resumem a: Fatores
culturais causados por uma equipe técnica com baixa visão gerencial descrito pelo Diretor
104
da DES (p.4, 12:36, APÊNDICE G, resistência a mudança relatado por A (p.6, 11:50,
APÊNDICE I), B (p.2, 3:39, APÊNDICE I), C (p.2, 7:20, APÊNDICE I).
Além dos problemas descritos, outra dificuldade ao se estabelecer um processo de
manutenção é não tratar suas vertentes separadamente:
D (p.2-3,10:00, APÊNDICE I) exemplifica que o desenvolvimento do sistema judicial
do TJGO é visto como sucessivas manutenções mas sem tratar suas vertentes: “[...] os
de processo judicial - apesar de ter coisas novas - era meio que um incremento, uma nova
funcionalidade, sempre uma nova funcionalidade [...] e não encarava assim também né ?
Como: agora vou pegar uma alteração ou uma nova funcionalidade e tratá-la como um
novo projeto”.
Quando os modelos tratam a manutenção de forma geral sem levar em conta as sub-
categorias (corretiva, adaptativa, evolutiva) acabam não gerando conhecimento profundo
das peculiaridades de cada subcategoria o que impacta diretamente na definição do es-
copo da manutenção. As categorias de manutenção diferem muito para serem agrupadas
sob um mesmo modelo de processo [31].
Caso as características de cada manutenção não sejam tratadas separadamente, po-
dem gerar ainda mais manutenções [25, 32, 3, 12].
Ao tratar as vertentes da manutenção utilizando-se canais apropriados institucionais
(e-mail para manutenções corretivas e Sistema de Processo Administrativo para outras
manutenções) em conjunto com métodos ágeis (Kanban para manutenções urgentes e
Scrum para outras manutenções) os resultados foram satisfatórios conforme expõe o
Diretor de TI (p.3,8:56, APÊNDICE G) exposto na Figura 7.14.
105
Desse modo, fica comprovada a hipótese de que: para um processo de manutenção,
é necessário tratar as vertentes de manutenção separadamente.
106
Capítulo 8
Conclusão
A adoção das práticas ágeis é crescente no mundo todo. Nos órgãos públicos brasileiros,
a cobrança por soluções tecnológicas segue o ritmo acelerado, todavia fatores culturais
e fatores humanos levam à necessidade de adaptação dos métodos ágeis à realidade de
cada órgão.
As pesquisas apontam quatro pilares importantes para definir e implantar um pro-
cesso de manutenção de sistemas baseado em metodologias ágeis: Pessoas, Processo,
Arquitetura e Testes. Neste trabalho foram descritos os três últimos itens, empregados
num órgão público do poder judiciário brasileiro (TJGO). A Arquitetura e os Testes
foram empregados para a definição e avaliação da implantação de um processo de ma-
nutenção de software baseado em metodologias ágeis.
O TJGO não possuía um método de desenvolvimento bem definido, e contava com
uma equipe que dedicava a maior parte dos esforços a ciclos infinitos de manutenções,
respondendo às demandas por telefone.
Para melhorar as rotinas de trabalho, foram empregados métodos ágeis. Os resulta-
dos demonstraram que, na tentativa de se utilizar o Kanban, que é um método pouco
prescritivo, não houve adesão, e os servidores mantiveram suas rotinas.
Em seguida, ao se empregar o Scrum, observou-se mais comprometimento dos par-
ticipantes e, embora com resistência, a equipe aceitou o processo devido aos controles
proporcionados pelo método e pelos bons resultados alcançados.
Entretanto, embora o emprego do Scrum tenha consolidado o processo para manu-
tenções evolutivas, não se mostrou apropriado para manutenções urgentes. Desse modo,
buscou-se um integração entre o Kanban para manutenções urgentes e o Scrum para
manutenções evolutivas, resultando no processo Scrum de Rehman et al. [3] adaptado
107
para um Scrumban, confirmando assim a hipótese de que se faz necessário tratar as
vertentes de manutenção separadamente em um processo de manutenção.
Observa-se que foi fundamental estabelecer os alicerces para se alcançar a agilidade e
qualidade que os métodos ágeis requerem. Uma arquitetura de deployment possibilitou
uma gestão segura do trabalho em equipe, entregas contínuas e íntegras, participação
dos clientes utilizando-se ambientes apropriados, entre outros.
O emprego dos testes, mesmo em estágio inicial, mostrou-se relevante para a dimi-
nuição dos ciclos causados por manutenções mal feitas e para melhorias dos aspectos de
qualidade. Além disso, uma nova cultura de testes se iniciou.
A experimentação de métodos ágeis utilizando a técnica DSR possibilitou que os
ajustes fossem feitos para se adequar ao contexto social. Com isso, foi possível romper
com a cultura antiga de desenvolvimento, resultando num método Scrumban, o qual tem
gerado resultados satisfatórios, tanto para os diretores e clientes, quanto para equipe de
TI, observadas na avaliação feita através da Análise de Conteúdo.
108
Referências
[2] Wieringa, Roel J.: Design science methodology for information systems and soft-
ware engineering. Springer, 2014. xiii, 9, 10, 47, 48, 70, 71
[3] Rehman, Fateh, Maqbool Bilal, Riaz Muhammad, Qasim, Qamar Usman e Abbas
Muhammad: Scrum software maintenance model: Efficient software maintenance
in agile methodology. Em 2018 21st Saudi Computer Society National Computer
Conference (NCC), páginas 1–5. IEEE, 2018. xiii, xiv, 3, 12, 20, 27, 28, 49, 50,
63, 69, 75, 76, 77, 78, 79, 80, 83, 85, 86, 87, 98, 105, 107, 125
[5] Clements, Paul, Garlan David, Little Reed, Nord Robert e Stafford Judith: Doc-
umenting software architectures: views and beyond. 2003. xiii, 33, 35, 36, 68
109
[10] Analytics, Clarivate: Web of science, 2020. https://www-webofscience.ez54.
periodicos.capes.gov.br/. xiv, 123
[12] Erazo, Martínez Jennifer, Gómez Andrés Florez e Pino Francisco J.: Generando
productos software mantenibles desde el proceso de desarrollo: El modelo de refer-
encia mantus. Ingeniare. Revista chilena de ingeniería, 24(3):420–434, 2016. xv,
2, 62, 67, 105, 125, 208, 209, 210
[13] April, Alain, Hayes J. H., Abran Alain e Dumke Reiner: Software maintenance
maturity model (smmm): the software maintenance process model. Journal of
Software Maintenance and Evolution: Research and Practice, 17(3):197–223, 2005.
xv, 125, 211, 212, 213, 214
[14] Leal, Fábio Barros: Uma abordagem usando features bdd e modelo de objetivos para
o desenvolvimento ágil de software. 2019. xv, 43, 217, 218, 219
[17] Grubb, Penny e Takang A.: Software maintenance: concepts and practice. World
Scientific, 2003, ISBN 9812384263. 2, 3, 20
[18] Ambler, S. W.: Modelagem Agil: Práticas eficazes para a programação eXtrema e
o processo unificado. Bookman, 2004, ISBN 9788536302980. 2, 42, 68
[19] Melo, Claudia de O, Santos Viviane, Katayama Eduardo, Corbucci Hugo, Prik-
ladnicki Rafael, Goldman Alfredo e Kon Fabio: The evolution of agile software
development in brazil. Journal of the Brazilian Computer Society, 19(4):523–552,
2013. 2, 14, 15, 125
[20] Gren, Lucas, Goldman Alfredo e Jacobsson Christian: Agile ways of work-
ing: a team maturity perspective. Journal of Software: Evolution and Process,
32(6):e2244, 2020. 2
[21] Polo, Macario, Piattini Mario, Ruiz Francisco e Calero Coral: Mantema: A soft-
ware maintenance methodology based on the iso/iec 12207 standard. Em Pro-
ceedings 4th IEEE International Software Engineering Standards Symposium and
Forum (ISESS’99).’Best Software Practices for the Internet Age’, páginas 76–81.
IEEE, 1999. 2, 3, 12, 21, 22, 62, 122, 125
110
[22] Aquino Jr., G. S. de e Dantas A. M.: An agile approach applied to intense main-
tenance projects uma abordagem ágil aplicada a projetos de manutenção intensa.
2019. 2, 3, 12, 26, 31, 62, 72, 78, 79
[23] Kong, Xiaoying e Liu Li: Critical feature method-a lightweight web maintenance
methodology for smes. J. Digit. Inf., 5, 2004. 3, 6, 22, 23, 24, 62, 75, 79, 83, 86, 87
[25] Heeager, L. T. e Rose Jeremy: Optimising agile development practices for the main-
tenance operation: nine heuristics. Empirical Software Engineering, 20(6):1762–
1784, 2015. 3, 4, 20, 26, 27, 75, 81, 87, 105, 125
[26] Poole, Charles e Huisman Jan Willem: Using extreme programming in a mainte-
nance environment. IEEE Software, 18(6):42–50, 2001. 3, 62, 67, 69, 98, 104,
125
[27] Svensson, Harald e Höst Martin: Introducing an agile process in a software main-
tenance and evolution organization. páginas 256–264, 2005. 3, 69
[29] Rulinawaty, Sofjan Aripin e Lukman Samboteng: Leading agile organization can
indonesian bureaucracy become agile? Journal of Talent Development and Excel-
lence, 12(3s):330–338, 2020. 4, 16, 75, 96, 102
[30] Mergel, Ines, Gong Yiwei e Bertot John: Agile government: Systematic literature
review and future research. Government Information Quarterly, 35:291–298, 2018.
4, 16, 19, 20, 75, 96, 102
[32] Bouguerra, Abderaouf, Gölgeci İsmail, Gligor D. M e Tatoglu Ekrem: How do agile
organizations contribute to environmental collaboration? evidence from mnes in
turkey. Journal of International Management, página 100711, 2019. 5, 20, 62, 98,
105
[34] Albuquerque, Regina: Estudo sobre fatores que influenciam a manutenção de pro-
cessos de software em empresas avaliadas por modelos de referência. Tese de
Mestrado, Pontifícia Universidade Católica do Paraná, PR, Brasil, 2014. 5
111
[35] Lucas, A. P. L.: Gestão da manutenção de software: Um estudo de caso. Tese de
Mestrado, Pontifícia Universidade Católica do Rio de Janeiro, RJ, Brasil, 2016. 5,
95
[39] April, Alain: Studying supply and demand of software maintenance and evolution
services. Em 2010 Seventh International Conference on the Quality of Information
and Communications Technology, páginas 352–357. IEEE, 2010. 7
[40] Gil, Antonio Carlos: Como elaborar projetos de pesquisa, volume 4. Atlas São
Paulo, 2002. 8
[42] Vaishnavi, Vijay, Kuechler Bill e Petter Stacie: Design science research in infor-
mation systems. January, 20:2004, 2004. 9
[43] Dresch, Aline, Lacerda Daniel Pacheco e Júnior J. A. V. Antunes: Design sci-
ence research: método de pesquisa para avanço da ciência e tecnologia. Bookman
Editora, 2015. 9, 11, 89, 106, 122, 125
[44] Wohlin, Claes, Runeson Per, Höst Martin, Ohlsson Magnus C, Regnell Björn e
Wesslén Anders: Experimentation in software engineering. Springer Science &
Business Media, 2012. 10, 11
[45] Bardin, Laurence: Análise de Conteúdo. Edições 70, 2016. 11, 52, 88, 90, 92, 93
[47] Gibbs, Graham: Análise de dados qualitativos: coleção pesquisa qualitativa. Book-
man Editora, 2009. 11, 52, 89
112
[48] Suárez, L. M., Montoya A. F. e Vélez J. I.: Mantelasoft: una nueva guía para
mipymes desarrolladoras de mantenimiento de software. Entre Ciencia e Inge-
niería, páginas 95–99, 2019. 12, 22, 24, 25, 62
[49] Mariano, Ari Melo e Rocha Maíra Santos: Revisão da literatura: apresentação de
uma abordagem integradora. Em AEDEM International Conference, volume 18,
2017. 12, 121
[50] Cruz, Cláudio Silva da, Figuereido Rejane Maria da Costa e Andrade Edméia
Leonor Pereira de: Processo de contratação de serviços de tecnologia da informação
para organizações públicas. 2011. 15, 99
[55] Mauricio, Gustavo Carvalho e Neris Vânia Paula de Almeida: Utilização de méto-
dos ágeis por equipes de desenvolvimento de software em universidades públicas
brasileiras. Revista TIS, 4(3), 2016. 15, 59, 75, 96, 102
113
[59] Santos, J. V. P. dos, Noronha A. P. V. de, Figueiredo R. M. C. e Venson Elaine:
Using kanban in outsourced government projects of management maintenance de-
mands: a descriptive research. Em 13th International Conference on Information
Systems and Technology Management, 2016. 16
[61] Bass, Len, Clements Paul e Kazman Rick: Software architecture in Pratice.
Addison-Wesley, 2012, ISBN 9780321815736. 18, 20, 34, 39, 40, 67, 103
[63] Beck, K., Beedle M., Bennekum A. van, Cockburn A., Cunningham W., Fowler M.,
Grenning J., Highsmith J., Hunt A., Jeffries R., Kern J., Marick B., Martin R. C.,
Mellor S., Schwaber K., Sutherland J. e Thomas D.: Manifesto for agile software
development, 2001. http://www.agilemanifesto.org/, Accessed: 2020-04-01.
19, 20, 24, 33, 35, 44, 104
[64] Crispin, Lisa e Gregory Janet: Agile testing: A practical guide for testers and agile
teams. Addison-Wesley Professional, 2009. 20, 216, 219
[67] Singh, Raghu: International standard iso/iec 12207 software life cycle processes.
Software Process Improvement and Practice, 2(1):35–50, 1996. 21, 22, 24
[68] Ieee standard for software maintenance. IEEE Std 1219-1998, páginas 1–56, 1998.
21, 22
[69] ISO/IEC: International standard-iso/iec 14764 ieee std 14764-2006 software engi-
neering; software life cycle processes &; maintenance. 2006. 21
[70] Polo, Macario, Velthuis Mario Piattini e González Francisco Ruiz: Mantool: a tool
for supporting the software maintenance process. Journal of Software Maintenance
and Evolution: Research and Practice, 13(2):77–95, 2001. 22, 62
[71] Polo, Macario, Piattini Mario e Ruiz Francisco: Using a qualitative research method
for building a software maintenance methodology. Software: Practice and Experi-
ence, 32(13):1239–1260, 2002. 22
114
[72] Pino, F. J., Ruiz Francisco, García Félix e Piattini Mario: A soft-
ware maintenance methodology for small organizations: Agile MANTEMA.
Journal Of Software Maintenance and Evolution: Research and Pratice,
2012. https://onlinelibrary-wiley.ez54.periodicos.capes.gov.br/doi/
full/10.1002/smr.541, acesso em 2020-04-10. 22, 24, 25, 27, 62, 75, 125
[73] Ahmad, Muhammad Ovais, Kuvaja Pasi, Oivo Markku e Markkula Jouni: Transi-
tion of software maintenance teams from scrum to kanban. Em 2016 49th Hawaii
International Conference on System Sciences (HICSS), páginas 5427–5436. IEEE,
2016. 25, 26, 72, 75
[74] Alaidaros, Hamzah, Omar Mazni e Romli Rohaida: Towards an improved software
project monitoring task model of agile kanban method. Int. J Sup. Chain. Mgt Vol
(IJSCM), 7(3):118–125, 2018. 26
[75] Ladas, Corey: Scrumban-essays on kanban systems for lean software development.
Lulu. com, 2009. 26, 28
[76] Merson, Paulo: Ultimate architecture enforcement: custom checks enforced at code-
commit time. páginas 153–160, 2013. 33, 67, 68
[77] Booch, Grandy, Rumbaugh James e Jacobson Ivar: The unified modeling language
user guide. Reference manual, 1999. 34
[79] Booch, Grady, Rumbaugh James e Jacobson Ivar: UML: guia do usuário. Elsevier
Brasil, 2006. 34
[80] Silva, Dyego Alves da, de Oliveira Edgard Costa, Canedo Edna Dias e Mar-
tins Hugo Ferreira: Application of a hybrid process software requirements manage-
ment. Em 2016 11th Iberian Conference on Information Systems and Technologies
(CISTI), páginas 1–7. IEEE, 2016. 34
[82] Steffens, Andreas, Lichter Horst e Döring Jan Simon: Designing a next-generation
continuous software delivery system: Concepts and architecture. Em 2018
IEEE/ACM 4th International Workshop on Rapid Continuous Software Engineer-
ing (RCoSE), páginas 1–7. IEEE, 2018. 35, 36, 37, 38, 39, 67
[84] Yoder, Joseph W., Aguiar Ademar, Merson Paulo e Waseda Hironori Washizaki:
Deployment patterns for confidence. Workshop at AsianPLoP 2019 Tokyo. Ac-
cessed: 2021-05-05. 37, 40, 67
115
[85] Hemon, Aymeric, Lyonnet Barbara, Rowe Frantz e Fitzgerald Brian: From agile to
devops: Smart skills and collaborations. Information Systems Frontiers, 22(4):927–
945, 2020. 37, 98
[86] Vassallo, Carmine, Zampetti Fiorella, Romano Daniele, Beller Moritz, Panichella
Annibale, Di Penta Massimiliano e Zaidman Andy: Continuous delivery practices
in a large financial organization. páginas 519–528, 2016. 38, 71, 103, 125
[87] Laukkanen, Eero, Itkonen Juha e Lassenius Casper: Problems, causes and solutions
when adopting continuous delivery—a systematic literature review. Information
and Software Technology, 82:55–79, 2017. 38, 39, 42, 68
[88] Integração e entrega contínuas: pipeline ci/cd. https://www.redhat.com/pt-br/
topics/devops/what-is-ci-cd, 2021. Accessed: 2021-04-28. 38, 39, 68, 69, 104
[89] Mårtensson, Torvald, Ståhl Daniel e Bosch Jan: Enable more frequent integration
of software in industry projects. Journal of Systems and Software, 142:223–236,
2018. 38
[90] Häkli, Aleksi, Taibi Davide e Systa Kari: Towards cloud native continuous delivery:
An industrial experience report. páginas 314–320, 2018. 39, 67
[91] Mu, Lifeng, Sugumaran Vijayan e Wang Fangyuan: A hybrid genetic algo-
rithm for software architecture re-modularization. Information Systems Frontiers,
22(5):1133–1161, 2020. 40
[92] Merson, Paulo: Defining microservices. https://insights.sei.cmu.edu/blog/
defining-microservices/, Accessed: 2021-05-05. 40, 41
[93] Melvin, Conway: Conway’s law. https://www.melconway.com/Home/Conways_
Law.html, Accessed: 2021-05-05. 41
[94] Evans, Eric e Evans Eric J: Domain-driven design: tackling complexity in the heart
of software. Addison-Wesley Professional, 2004. 41
[95] Lewis, James e Fowler Martin: Microservices guide. https://www.martinfowler.
com/microservices/, Accessed: 2021-05-05. 41
[96] Foundation, Linux: Kubernates. https://kubernetes.io/pt-br/, Accessed:
2021-05-06. 41
[97] Tian, Yuchi, Pei Kexin, Jana Suman e Ray Baishakhi: Deeptest: Automated test-
ing of deep-neural-network-driven autonomous cars. Em Proceedings of the 40th
international conference on software engineering, páginas 303–314, 2018. 42
[98] Kasauli, Rashidah, Knauss Eric, Horkoff Jennifer, Liebel Grischa e de Oliveira
Neto Francisco Gomes: Requirements engineering challenges and practices in large-
scale agile system development. Journal of Systems and Software, 172:110851, 2021.
43
116
[99] Noel, Rene, Riquelme Fabián, Mac Lean Roberto, Merino Erick, Cechinel Cristian,
Barcelos Thiago S, Villarroel Rodolfo e Munoz Roberto: Exploring collaborative
writing of user stories with multimodal learning analytics: A case study on a soft-
ware engineering course. IEEE Access, 6:67783–67798, 2018. 43
[100] Medeiros, Juliana, Vasconcelos Alexandre, Silva Carla e Goulão Miguel: Require-
ments specification for developers in agile projects: Evaluation by two industrial
case studies. Information and Software Technology, 117:106194, 2020. 43
[101] Fraga, Bárbara e Barbosa Marcelo: A engenharia de requisitos nos métodos ágeis:
uma revisão sistemática da literatura. Em Anais do XIII Simpósio Brasileiro de
Sistemas de Informação, páginas 309–315. SBC, 2017. 43
[102] Hynninen, Timo, Kasurinen Jussi, Knutas Antti e Taipale Ossi: Software testing:
Survey of the industry practices. páginas 1449–1454, 2018. 43, 217, 219
[103] Mendes, Thiago Souto, Farias Mário André de F., Mendonça Manoel, Soares Hen-
rique Frota, Kalinowski Marcos e Spínola Rodrigo Oliveira: Impacts of agile re-
quirements documentation debt on software projects: a retrospective study. páginas
1290–1295, 2016. 43
[104] Borrego, Gilberto, Morán Alberto L., Palacio Ramón R., Vizcaíno Aurora e García
Félix O.: Towards a reduction in architectural knowledge vaporization during agile
global software development. Information and Software Technology, 112:68–82,
2019. 44
[105] Duarte, Luiz Fernando: Agile testing: dicas para testes de soft-
ware em times ágeis. 2018. https://imasters.com.br/agile/
agile-testing-dicas-para-testes-de-software-em-times-ageis. 44,
45
[106] Salerno, Larissa, Signoretti Ingrid, Marczak Sabrina e Bastos Ricardo: Repensando
papéis em equipes ágeis: Um estudo de caso no uso de uma abordagem combinada
de desenvolvimento ágil, user-centered design e lean startup. páginas 72–77, 2019.
44, 45
[107] Moe, Myint Myint: Comparative study of test-driven development (tdd), behavior-
driven development (bdd) and acceptance test–driven development (atdd). Interna-
tional Journal of Trend in Scientific Research and Development, páginas 231–234,
2019. 45, 216, 217
117
[110] BRASIL. Decreto Judiciário 2162/2018, Dispõe sobre a consolidação da estru-
tura administrativa e judicial das comarcas do Poder Judiciário do Estado de
Goiás, date = 2021, series = Tribunal de Justiça do Estado de Goiás, url =
http://tjdocs.tjgo.jus.br/documentos/505411. 55
[112] Santos, Leticia Cavassin Ferreira dos: Estilos de liderança. 2013. 57, 72
[113] Aquino, Jussara Maria Canuto de: Identificação e Imagem do Servidro Público:
Um estudo com os usuários do Tribunal de Justiça do Estado de Minas Gerais.
Tese de Doutoramento, Mestrado em Administração, 2010. 58, 59
[114] Covey, Stephen R: Os sete hábitos das pessoas altamente eficazes. Rio de Janeiro:
Editora Best Seller, 2000. 59
[117] Carmo, Eduardo do, Medeiros Cintia Rodrigues de O e Loebel Eduardo: No-
vatos motivados e veteranos acomodados: representações sociais de técnicos-
administrativos sobre a atuação no trabalho. Revista de Carreiras e Pessoas (Re-
CaPe)| ISSN-e: 2237-1427, 5(3), 2015. 59
[118] Foote, Brian e Yoder Joseph: Big ball of mud. 1997. https://www.laputan.org/
mud, Accessed: 2020-09-05. 60
[121] Rao, Nagesh: Scrumban Software Maintenance: 5 Steps to Stop Starting and Start
Finishing (English Edition). Createspace Independent Publishing Platform, 2017,
ISBN 1546519319. 72, 79, 98
[122] Beck, Kent e Andres Cynthia: Extreme programming explained: Embrace Change
2nd Edição. addison-wesley professional, 2004. 87
118
[125] Iso, ISO: Iec25010: 2011 systems and software engineering–systems and software
quality requirements and evaluation (square)–system and software quality models.
International Organization for Standardization, 34:2910, 2011. 208
[127] Beller, Moritz, Gousios Georgios, Panichella Annibale, Proksch Sebastian, Amann
Sven e Zaidman Andy: Developer testing in the ide: Patterns, beliefs, and behavior.
IEEE Transactions on Software Engineering, 45(3):261–284, 2017. 216, 220
[128] Borle, Neil C, Feghhi Meysam, Stroulia Eleni, Greiner Russell e Hindle Abram:
Analyzing the effects of test driven development in github. Empirical Software
Engineering, 23(4):1931–1958, 2018. 216
[129] Bernardo, Paulo Cheque e Kon Fabio: A importância dos testes automatizados.
Engenharia de Software Magazine, 1(3):54–57, 2008. 219, 220
[130] Ali, Sadia, Hafeez Yaser, Hussain Shariq e Yang Shunkun: Enhanced regression
testing technique for agile software development and continuous integration strate-
gies. Software Quality Journal, páginas 1–27, 2019. 220
[131] Piovesan, Ana Claudia: Framework para testes ágeis de software: uma proposta
exploratória. Tese de Mestrado, Universidade Tecnológica Federal do Paraná, 2018.
221
[132] Gambi, Alessio, Bell Jonathan e Zeller Andreas: Practical test dependency detec-
tion. Em 2018 IEEE 11th International Conference on Software Testing, Verifica-
tion and Validation (ICST), páginas 1–11. IEEE, 2018. 221
119
Apêndice A
120
Para condução da pesquisa, foram realizadas revisões da literatura com base na
Teoria do Enfoque Meta Analítico (TEMAC), proposto por Mariano e Rocha [49]. Esse
método se divide em três etapas:
• Preparação da pesquisa;
121
mais publicaram; universidades que mais publicaram; frequência de palavras-chave. O
levantamento foi realizada nas plataformas Web of Science e Scopus.
Diferente de outros métodos de pesquisa, no método DSR adotado, o objetivo da
revisão sistemática da literatura, é:
Assim, buscou-se realizar uma análise dos artigos publicados nos últimos 20 anos,
com maior foco nos últimos 5 anos e naqueles que se propuseram a solucionar problemas,
na prática, semelhantes aos pesquisado.
O artigo mais antigo analisado foi o de Polo et al.[21] de 1999 e o mais recente foi o
de Mantovani e Marczak [1] de 2020.
Além de Polo et al. [21], foi possível observar outras contribuições relevantes na
Figura A.1, como os trabalhos precursores das metodologias ágeis de Kent Beck, nos
anos 2000, dando início ao movimento ágil com Extreme Programming. Boehm e Turner
(2002) com trabalhos que sugerem o equilíbrio nas escolhas das metodologias, entre
outros. A Figura A.1 foi gerada pela pesquisa realizada na Web of Sience com os termos:
software maintenance and agile.
Outros termos foram gerados e combinados com propósito de se entender os caminhos
possíveis da pesquisa e podem ser vistos na Figura A.2, com suas respectivas quantidades
de citações. As palavras-chave possibilitaram observar atributos que estão diretamente
relacionados com a manutenção ágil.
122
Figura A.1: Gráfico de co-citações de 2000 até 2020 (Fonte: [10])
.
Foi observado que o Brasil é um país empenhado nas metodologias ágeis e vem
participando com destaque de pesquisas neste setor como demonstra a Figura A.3.
A revisão da literatura foi feita de forma qualitativa com a intenção de sintetizar os
achados de estudos e para isso utilizou-se de uma ficha com os artigos mais relevantes
(citações, co-citações, autores, palavra-chave) para manutenção ágil iniciando de forma
mais abrangente (últimos vinte anos, 19 artigos Web of Science e 139 no Scopus ) até
se chegar numa linha de refinamentos recentes (últimos cinco anos, 7 artigos no Web of
Science e 49 no Scopus).
Além dessas bases, também se realizou pesquisas no Google Scholar, incluindo pes-
quisas em português, porém trata-se de uma base com muitas inconsistências para se
123
Figura A.3: Países que mais publicaram nos últimos 20 anos (Fonte: [11])
.
124
Foram realizadas análises de co-citation, Figura A.1, dos últimos vinte anos para
se ter um embasamento teórico necessário para sustentar a pesquisa e coupling, Figura
A.5 dos últimos cinco anos para se observar as tendências mais recentes das pesquisas e
então identificar novas contribuições.
Figura A.5: Mapa de calor coupling de citações nos úlitmos cinco anos (Fonte: [11])
.
Após as análises foram reunidos documentos que possibilitaram traçar uma estratégia
de pesquisa e de leitura de alguns dos principais artigos. Tornou-se possível mapear
autores que contribuíram ou ainda contribuem para manutenção, nos últimos 20 anos,
utilizando-se de métodos ágeis como por exemplo: Polo et al. [21, 72], Erazo et al.
[12, 65], Poole e Huisman [26], Melo et al. [19], April [13], Heeager e Rose [25], Rehman
et al.[3], Vassalo et al.[86] e outros.
A pesquisa foi ajustada em ciclos e maior ênfase foi dada aos artigos dos últimos 5
anos, a cada ciclo, novas descobertas, desafios, direcionamentos, ajustes e experimen-
tações foram feitos utilizando-se a DSR. Por exemplo: inicialmente tinha-se a hipótese
de se utilizar apenas um método ágil para manutenção, mas muitos estudos teóricos-
práticos indicaram que o tratamento individual para, manutenção evolutiva e corretiva,
pode levar a uma melhor solução.
De acordo com Dresh [43], a revisão sistemática da literatura utilizando-se da DSR
visa formar um arcabouço teórico-prático de pesquisas que não só foram fundamentadas
em teorias mas que também utilizaram artefatos para solução de problemas semelhantes
no campo.
Desse modo, o critério de seleção adotado para escolha dos artigos, foi o de se escolher
aqueles que resultaram em artefatos aplicados em casos reais.
125
Apêndice B
Relatório de Acompanhamento
Projetos de Manutenção Evolutiva
126
Proad
(280734)
v 2.6.7
Situação : CONCLUÍDO
Relatório de manutenção no
Proad: sigilo de processo
Analista
Ciclano
desenvolvedor
Analista
Maria
desenvolvedor
Analista
Fulano
desenvolvedor
Analista de Req. e
Pedro
Testes
Coordenador (Scrum
Michel
Master)
5. Informações sobre este relatório de 5.1 As seguintes cores são utilizadas para
acompanhamento indicar o andamento do Projeto:
• O projeto se divide em tarefas de menor granularidade Azul Tarefa identificada e aguardando início
que são discutidas e envolvem a participação e Amarela Tarefa em andamento
consenso de todo o time e do usuário gestor, inclusive,
com relação a estimativa dos prazos utilizando-se da Verde claro Tarefa concluída
experiência e razoabilidade; Verde escuro Tarefa concluída antecipadamente
• Cada asterisco (*) indica uma Sprint de atraso Laranjada Tarefa cancelada
normalmente é seguido de uma justificativa; Vermelha Tarefa atrasada
• Uma marca de carinha feliz =) , com tom de verde mais Roxa Tarefa atrasada por outra tarefa
escuro, indica que o analista antecipou uma tarefa que Preta Tarefa não realizada
estava aguardando início no backlog;
Nome Papel
id Versão Data
02 12/08/21 Instalação, configuração e Coordenador
Implementar as novas regras para sigilo de alinhamento da equipe
01
documentos
Histórias de usuários Anal. de req. e testes
02 Melhorar a interface de processos sigilosos
Especificação de Anal. de req. e testes
03 Adicionar avisos quando o processo se tornar sigiloso Requisitos
Coordenador com aos
04 ... Cronograma stackeholders
Início Fim
Entrega 08/07/21 30/08/21
id Sp Data de início Data de fim Ação Observação
01 0 08/07/21 09/07/21 Requisitos Iniciais
02 1 12/07/21 12/07/21 Planejamento
03 1 13/07/21 21/07/21 Desenvolvimento
04 1 22/07/21 22/07/21 Apresentação
... ... ... ... …
... ... ... ... ….
11 4 12/08/21 12/08/21 Planejamento
12 4 13/08/21 23/08/21 Desenvolvimento Final do prazo estimado
13 4 24/08/21 24/08/21 Apresentação
14 5 24/08/21 27/08/21 Correção dos erros
15 5 30/08/21 30/08/21 Homologação e
entrega
9. Sprint em Andamento
10. Atrasos
Item Motivo
11. Reuniões
Entrega 01
REUNIÃO DE PLANEJAMENTO (maiores detalhes, ver Data Hora ini Hora fim
doc. de requisitos) - Planning Meeting
12/07/21 14:00h 17:15h
“Informações importantes de planejamento do projeto e distribuição das tarefas para próxima sprint”
REUNIÃO DE APRESENTAÇÃO - Sprint Review e Sprint Data Hora ini Hora fim
Restrospective
22/07/21 14h 15:15
“Apresentação ao PO do que está pronto, do que falta ser feito ou modificado. Após a apresentação para o PO,
a equipe discute sobre os problemas e sugestões de melhorias diante do que não saiu conforme planejado”
136
QUESTIONÁRIO 1
148
QUESTIONÁRIO 2
A seguinte pesquisa foi disponibilizada para os usuários gestores de acordo com que os
projetos de manutenção evolutiva foram realizados, durante o período de 01/06/2020 à
01/02/2021.
158
Categoria: Problemas anteriores percebidos
3:6 E: E quando você estava trabalhando em E: E quando você estava trabalhando em alguma coisa e chegava
alguma coisa e chegava uma dema… uma demanda dessa ?
R: Pois é [risos]
aí parava de fazer uma coisa e fazia essa demanda.
Por exemplo era uma pessoa de uma hierarquia lá, fulano de tal
que é muito importante e precisa disso (está precisando) então o
negócio meio que se atropelava.
3:16 às vezes, o cara chegava ali para mim e a às vezes, o cara chegava ali para mim e a demanda só eu que
demanda só eu que sabia. sabia.
3:17 teve época que a gente fez dois sistemas teve época que a gente fez dois sistemas para atender uma
para atender uma demanda só, demanda só
3:36 Antigamente tínhamos servidores que nem o Antigamente tínhamos servidores que nem o pessoal da
pessoal da infraestrutura s… infraestrutura sabia que existia [risos]
4:5 os analistas faziam praticamente todas as os analistas faziam praticamente todas as tarefas.
tarefas.
4:7 cada um fazia suas atividades. cada um fazia suas atividades.
4:10 se na nossa área lá, que tinha dez pessoas, se na nossa área lá, que tinha dez pessoas, dividia em grupos de
dividia em grupos de cinc… cinco pessoas, então cada um conseguia pegar aí dois a três
projetos no máximo
4:12 Eu acho que sempre foi uma dificuldade o Eu acho que sempre foi uma dificuldade o legado, a manutenção.
legado, a manutenção. Então e… Então eu acho que uma das coisas que sempre dificultava, o início
de um processo definido, com início, meio e fim [pensando]
... foi
essa manutenção, a necessidade de manutenção dos sistemas.
Porque manutenção dos sistemas exigia dedicação de um outro,
quase uma dedicação exclusiva.
4:17 Aí se você olha lá, era o modelo antigo, o Aí se você olha lá, era o modelo antigo, o cara era o chefe da área
cara era o chefe da área e… e tinham os projetos. Então, eu que ficava com os sistemas, tomava
conta dos sistemas, assim eu era o gerente daqueles sistemas e
fazia tudo, desde requisitos, implantação, treinamentos, divulgação
etc.
4:21 a gente ia no cliente, passava dois, três dias a gente ia no cliente, passava dois, três dias e levantava um tanto
e levantava um tanto de… de documentação, fazia, não tinha mais tanto contato com o cliente
e então entregava e daí passa três, quatro meses e o cliente
cobrava e entregava
6:7 chegava a demanda totalmente atravessada, chegava a demanda totalmente atravessada, de última hora, faça
de última hora, faça não imp… não importa como se virem,
6:9 Normalmente ele demandam, na maioria das Normalmente ele demandam, na maioria das áreas ali, da forma
áreas ali, da forma que quer… que querem. Sem um vínculo estratégico de metas e objetivos da
instituição. Projetos que muitas vezes não vão sequer agregar para
o Tribunal.
6:12 a gente estava tentando implantar algo novo a gente estava tentando implantar algo novo de baixo para cima e
de baixo para cima e não a… não a instituição entendendo que precisava ter um processo. Então,
a gente acabava lutando sozinhos, a instituição acabava não
acompanhando essa ideia de planejamento, de Tecnologia da
Informação.
6:13 as demandas chegavam atravessada em as demandas chegavam atravessada em montantes gigantescos e
montantes gigantescos, uma quanti… nós tínhamos que acabar.
6:14 Acabávamos parando para poder atender as Acabávamos parando para poder atender as demandas que
demandas que chegavam. E deix… chegavam. E deixávamos de planejar, de fazer todo um
alinhamento porque a instituição não acompanhava ideia que nós
tínhamos então a gente tava caminhando, nadando, sozinhos. Nós
não tínhamos o apoio da alta gestão e sem esse apoio não
chegamos a lugar nenhum.
6:15 a partir do momento que você está atolado a partir do momento que você está atolado de demandas você
de demandas você acaba sacr… acaba sacrificando o controle, o controle dessas demandas, o
controle das atividades, a gente ficava muito preocupado é “ter que
entregar”, “ter que entregar no prazo, prazo, prazo, prazo”, “não
depois eu preencho”, “depois eu anoto no Redmine”, “depois...”, mas
aí isso vira uma bola de neve e o “depois” nunca chegava.
7:1 o pessoal antigamente pelo menos, o pessoal antigamente pelo menos, trabalhava bem individual,
trabalhava bem individual, cada um… cada um da sua maneira, no seu próprio sistema e isso também
dificultava um pouco a gente poder definir um método de trabalho,
7:4 Geralmente o pessoal trabalhava com Geralmente o pessoal trabalhava com poucos sistemas , um ou
poucos sistemas , um ou dois, só e… dois, só exclusivamente. Era até ruim porque poucas pessoas
tinham o conhecimento, tanto de negócio quanto do funcionamento
do sistema e aí geravam alguns problemas quando a pessoa não
estava disponível, tava de férias… era bem complicado a gente ter
que atender alguma demanda.
7:8 R: Chegava por telefone ou o pessoal ia lá na R: Chegava por telefone ou o pessoal ia lá na sala.
sala. E: E isso você ac… E: E isso você achava bom ou ruim?
R: Não. Horrível ! O pessoal chegava lá, já ia fazendo a solicitação e
as vezes a gente estava trabalhando em outra coisa.
7:9 E: E quando você estava trabalhando em E: E quando você estava trabalhando em outra coisa, o que que
outra coisa, o que que aconteci… acontecia?
R: Era complicado né ? A gente tentava dialogar, assim...Ver se era
urgente mesmo. Se não fosse, pelo menos terminar a demanda que
estava sendo feita naquele momento, mas era complicado.
Tendo um ponto que receba as demandas, priorize e tenha a parte
de delegar mesmo, dividir ali entre os integrantes da equipe eu
acho que é bem melhor.
9:8 É simplesmente parou. É daquelas coisas É simplesmente parou. É daquelas coisas que não pegou. Tipo a
que não pegou. Tipo a própria… própria posição da diretoria que não pegou. Não sei se não era
prático ou não é. Eu acredito que era mais por conta da nossa
cultura lá dentro. Aquela coisa de ter muito aquela cultura mais
amadora e acabava que qualquer tentativa de implantação de
algum padrão, de um processo mais qualificado acabava tendo que
quebrar algumas barreiras. Isso começou a ser feito há uns dois
anos atrás e que realmente conseguiu fazer com que algumas
barreiras fossem quebradas. Foi um trabalho que teve que... foi
executado por você, inclusive, que foi um trabalho de correr atrás,
de dizer não, vai ser assim. A gente tem que melhorar, a gente tem
que se profissionalizar mais e tal e isso demandou um certo
trabalho de quem estava tentando implantar. Acho que isso que
tenha faltado antes né
9:11 O processo era um processo e inicialmente O processo era um processo e inicialmente era bem arcaico.
era bem arcaico. Primeiro qu… Primeiro que você tinha um acesso direto. Que em alguns pontos
dava aquela falsa impressão de praticidade, mas era bem perigoso.
Você tinha acesso direto praticamente a produção direto, você
desenvolvia sem passar por ninguém, já fazia seu deploy e estava
em produção. Não passava por ninguém e era uma forma
inicialmente, uma forma de quando entrei no tribunal, uma forma de
copiar os arquivos pra área onde seria sincronizada e acabou, era
simplesmente isso.
9:14 Era uma coisa bem… foi uma decadência Era uma coisa bem… foi uma decadência em termos de padrão que
em termos de padrão que eu tive… eu tive durante a carreira. Esse sistema era uma coisa bem
simples, quase: “faz aí e manda !” o próprio trabalho em equipe era
… [pensado]
as vezes tinha que falar o que você está fazendo pro
colega do lado e digitar o mesmo arquivo.
9:19 O que era no processo antigo, era O que era no processo antigo, era simplesmente chegar a alguma
simplesmente chegar a alguma coisa… coisa por telefone e às vezes da diretoria antiga era quase como se
os clientes fossem chefes. E isso acontecia com o aval da própria
diretoria nossa, que acontecia de um diretor financeiro te passar
uma demanda direta sem passar por qualquer hierarquia dentro da
TI e quando você pedia para entrar em contato, seguir uma
hierarquia básica pelo menos, a própria figura de diretores antigos
que existiram só repassava o telefone e pronto você trata direto
com o diretor financeiro ou outra pessoa que virou na prática o seu
chefe. E aí ninguém mais na equipe está sabendo o que você está
fazendo
9:20 Eu já passei dias que eu estava Eu já passei dias que eu estava desesperado e ninguém da equipe
desesperado e ninguém da equipe sabia… sabia. As vezes tem dias que você não está… e também ninguém
da equipe sabe porque não tem uma forma oficial de saber.
12:3 um problema de cultura organizacional. um problema de cultura organizacional. Desde o início, desde que
Desde o início, desde que eu e… eu estou na diretoria de TI eu vejo que o tribunal sempre tratou
essa questão, de desenvolvimento de software, como algo que
compete exclusivamente à antiga Diretoria de informática, atual
diretora de TI, não fazendo... não querendo fazer parte do processo
como demandantes, como levantadores de requisitos dos sistemas,
de sistemas. Vejo que sempre foi muito isso. Jogava a
responsabilidade para cima da diretoria, queria que a gente
resolvesse de forma rápida. Não existia governança, nesse sentido
das demandas, então era atendido quem pedia mais, então não
existia uma análise se a demanda é realmente importante, é
necessária, se ela deve ou não deve ser feita, primeiramente
juridicamente, posteriormente analisando pelo critério técnico.
12:9 porque muitas pessoas abriam Proad porque muitas pessoas abriam Proad (Processos Administrativos)
(Processos Administrativos) e mand… e mandavam direto para a gente e esse processo por falta de
prioridade ficavam sobrestados realmente na diretoria. E é aonde os
usuários reclamavam que: atuou o Proad, a não sei quanto tempo,
e tá até hoje parado
Categoria: Tentativas de uso do Kanban no TJGO
6:17 Tem uma questão cultural interna nossa Tem uma questão cultural interna nossa também da Diretoria de
também da Diretoria de Informá… Informática que é muito técnica e acha, muitas vezes, que essa
parte de gestão é muito burocrática e é desnecessária, que é uma
coisa que a gente tem que…[pensando] nós estamos tentando
quebrar isso, na cabeça do nosso pessoal internamente porque eles
precisam começar a enxergar que nós somos área estratégica e
não só executora. A gente precisa ter organização, assim, a
maioria não tem uma ideia um pouco mais administrativa e de
gestão mesmo de ter que lançar as atividades, ter que controlar o
que está sendo feito, de ter evidências das atividades executadas,
dos projetos entregues, se foi homologado, se não foi homologado.
7:3 Acho que o pessoal tem um pouco de Acho que o pessoal tem um pouco de resistência. Talvez com a
resistência. Talvez com a ferrament… ferramenta [pensativa] ou falta de hábito assim.
9:9 isso foi uma coisa que realmente ninguém isso foi uma coisa que realmente ninguém lembrava de usar, na
lembrava de usar, na verdade… verdade. Então parou porque ninguém usava. Você deixava as
coisas lá mas a gente nem lembrava de usar na verdade, eu acho.
Eu via lá,
9:10 Acabava que a gente via bastante porque Acabava que a gente via bastante porque tinha reunião de
tinha reunião de acompanhamen… acompanhamento direto, mas era só nisso... não é uma coisa
natural, mais mas neste caso era inércia mesmo. A gente tinha um
costume de mais de décadas de trabalho que para quebrar isso
tem que demandar um esforço mesmo, e você sabe disso né ?
Categoria: Peculiaridades no setor público
1:68 A aplicação de ágeis no Governo brasileiro é, A aplicação de ágeis no Governo brasileiro é, em sua maioria, bem-
em sua maioria, bem-suce… sucedida e, normalmente, conduzida em combinação com outras
abordagens ágeis de desenvolvimento de software ou, em sua
maioria, uma combinação de ágeis com métodos tradicionais. Fonte
[1]
1:72 O propósito foi atender de forma rápida e O propósito foi atender de forma rápida e com qualidade as
com qualidade as demandas d… demandas da Administração Pública, que cada vez mais exigem
agilidade na produção de software. Fonte [60]
1:74 buscaram evidências científfcas sobre os buscaram evidências científicas sobre os benefícios da utilização de
benefícios da utilização de… métodos ágeis na Administração Pública brasileira, em detrimento
ao histórico de fracassos de projetos de TI no governo. Fonte [58]
3:21 O que talvez atrapalha ali no Tribunal, O que talvez atrapalha ali no Tribunal, justamente é essa hierarquia
justamente é essa hierarquia… [pensando]... horizontal. E aí isso atrapalha um pouco. A gente
sente que, às vezes, depende do gosto lá do pessoal de cima e aí
atrapalha um pouquinho sim, essa questão de ter muita hierarquia.
4:2 Existia um processo em que era delegado, Existia um processo em que era delegado, por meio principalmente
por meio principalmente das… das competências das áreas, entendeu ? Então, eu acho que tinha
um, e em razão dos cargos.
4:3 tem as diretorias, os serviços, os cargos os tem as diretorias, os serviços, os cargos os papéis então estava
papéis então estava meio… meio que definido aí e tava no entendimento geral de que era
assim, de que funcionava assim. Não era documentado.
4:15 A questão dos cargos, talvez dificultava A questão dos cargos, talvez dificultava porque, por exemplo: se a
porque, por exemplo: se a ge… gente fosse definir um processo de software, a gente sempre
imaginava um processo de software mas não vendo o diretor da
área como o gerente do projeto, mas sim como o gerente da área.
4:16 Você conseguiu fazer essa mudança. Você Você conseguiu fazer essa mudança. Você assumiu a gerência dos
assumiu a gerência dos projeto… projetos e isso não tinha né ? Isso até então não tinha.
Normalmente o diretor da área não queria assumir, até porque era
uma transição
4:18 Aí mudou. Quando você assume um papel de Aí mudou. Quando você assume um papel de gerente dos projetos
gerente dos projetos aí faz m… aí faz mais sentido, porque acaba que ocorre um choque. Por
exemplo: a gente tá numa estrutura de projeto dentro da estrutura
funcional.
4:19 E: Em que você acha que isso impacta ? A E: Em que você acha que isso impacta ? A existência da burocracia,
existência da burocracia, hie… hierarquia, legislação ?
R: Eu acho que isso impacta, porque, por exemplo: se eu sou
gerente de projeto dentro da área em que tem um chefe. Qual vai
ser a minha autonomia em relação à equipe ? Qual vai ser a minha
autonomia em relação ao tempo ? Ao cronograma ?
4:20 Poderia dar conflito [pensando] e sua função Poderia dar conflito [pensando] e sua função poderia ser
poderia ser subutilizada… subutilizada e ser simplesmente um distribuidor de RH: “eu quero
fulano ali” então eu acho que o mais certo nessa estrutura funcional
é que, talvez o diretor, seja encarado como gerente de projeto. Se
tiver um gerente de projeto, se ele tiver autonomia, anda. Mas, se
ele não tiver autonomia acaba que fica concorrente
4:29 sempre pensava no processo como se fosse sempre pensava no processo como se fosse uma fábrica é às vezes
uma fábrica é às vezes a fáb… a fábrica você pensa: “nossa tem gente nova todo dia chegando, tá
crescendo, a equipe está ficando grande e a demanda está
aumentando e a equipe está crescendo como se fosse na empresa
privada”, se aumentou a demanda eu vou lá e contrato
6:6 E: Na sua opinião, por que a DES não possui E: Na sua opinião, por que a DES não possui um processo de
um processo de software be… software bem definido ? Você já falou um pouco na outra resposta,
mas poderia falar um pouco mais ?
R: Eu creio que é uma questão cultural do próprio Tribunal de
Justiça. O Tribunal, acho que nesse momento está começando a
enxergar a diretoria de informática e tecnologia da informação como
uma área estratégica e nos últimos anos a gente não viu isso,
6:8 então eles estão percebendo, que nós temos então eles estão percebendo, que nós temos que estar presentes
que estar presentes nessas… nessas tomadas de decisão, nessa decisões estratégicas e que
eles precisam ter consciência também do planejamento.
6:11 para a gente conseguir ter um dia um para a gente conseguir ter um dia um processo mesmo que
processo mesmo que funcione a in… funcione a instituição tem que mudar a forma de pensar
6:22 acaba que você tem que adequar uma ideia acaba que você tem que adequar uma ideia de gestão de projetos
de gestão de projetos numa re… numa realidade do Tribunal. Não tem algo que você consegue ir lá
e só encaixar
6:23 A gente tem que fazer as adequações para A gente tem que fazer as adequações para realidade do Tribunal
realidade do Tribunal que é… que é bem específica com os nossos usuários bem “melindrosos”
muitas vezes
9:4 Talvez no serviço público tenha o adicional Talvez no serviço público tenha o adicional de que é... [pensando]
de que é... [pensando] Te… Tem mais burocracia, tem mais os empecilhos burocráticos para se
implantar alguma coisa. Você não basta chegar e decidir: “não
vamos colocar isso aqui”, porque sempre vai esbarrar em alguém
ou alguém que está acostumado com alguma coisa e não quer
mudar
Categoria: Fatores que prejudicam o processo
1:20 as funcionalidades perdidas podem ser as funcionalidades perdidas podem ser recuperadas após o período
recuperadas após o período de e… de emergência, sendo que para isso basta utilizar-se de uma
manutenção adicional capaz de recuperar as principais
funcionalidades e a partir daí, retornar ao ciclo normal de
desenvolvimento e manutenção. Fonte [24]
1:21 situação de emergência não pode situação de emergência não pode desperdiçar tempo com pesadas
desperdiçar tempo com pesadas document… documentações de requisitos presentes nas metodologias
tradicionais. Fonte [24]
1:36 poucas pesquisas investigaram os principais poucas pesquisas investigaram os principais fatores que influenciam
fatores que influenciam a… a produtividade do time ágil. Fonte [20]
1:41 Por outro lado, a implementação de Por outro lado, a implementação de processos de software é uma
processos de software é uma ativid… atividade que requer grande esforço e investimento por parte das
empresas. Fonte [35]
1:52 diversas resistências como as impostas por diversas resistências como as impostas por fatores culturais e pelos
fatores culturais e pelos… integrantes do time Fonte [29]
1:53 Estudos apontam que um dos principais Estudos apontam que um dos principais desafios para implantação
desafios para implantação de Mét… de Métodos Ágeis é o de promover a mudança cultural na
organização. Fonte [ 56, 57, 31, 58]
1:58 Entretanto, eles afirmam que, embora a Entretanto, eles afirmam que, embora a estrutura hierárquica não
estrutura hierárquica não ajud… ajude com os processos ágeis, esse não é o maior problema e sim
o fato de que as organizações, ao buscarem agilidade, tendem a
desestruturar a hierarquia, esquecendo-se dos objetivos
organizacionais. Fonte [30]
1:59 no modelo de gestão pública tradicional, os no modelo de gestão pública tradicional, os especialistas em
especialistas em gerencia… gerenciamento de informações se limitam a tarefas de gestão de
contratos, planejamento e supervisão e, por isso, é bastante
comum a resistência às mudanças.Fonte [31]
1:66 processo de “big design up front”, que requer processo de “big design up front”, que requer especificação dos
especificação dos requi… requisitos completa e validada antes do início do desenvolvimento
real. De acordo com Mergel (2016, apud Mantovani e Marczak [1]
)
essa estratégia trouxe experiências negativas e falhas de gestão.
Fonte [1]
1:89 Atualmente as pesquisas em manutenção Atualmente as pesquisas em manutenção ainda são poucas,
ainda são poucas, principalmente… principalmente quando comparadas ao desenvolvimento [26]
1:90 A ISO/IEC 12207 [64]
possui grupos de A ISO/IEC 12207 [64]
possui grupos de atividades que podem ser
atividades que podem ser usadas… usadas em todo ciclo de vida do software, para diferentes tipos de
projetos mas não detalha como implementar as atividades
dependendo do tipo de manutenção que se irá fazer.
1:95 Suarez et al. [43]
constataram que o Suarez et al. [48]
constataram que o Mantema junto aos ágeis é o
Mantema junto aos ágeis é o pref… preferido para realização das manutenções dada sua qualidade,
competitividade e histórico, sendo um processo de muito sucesso
nos últimos dez anos.
Entretanto trata-se de um método complexo que requer tempo e
recursos humanos consideráveis para sua implementação.
1:102 Ahmad et al. [73]
pesquisaram os motivos de Ahmad et al. [73]
pesquisaram os motivos de algumas empresas
algumas empresas Finlandes… Finlandesas estarem deixando o Scrum para utilizarem o Kanban
na manutenção dos sistemas. Seus resultados mostraram que as
equipes de manutenção, ao utilizar Scrum, enfrentaram desafios
como falta de visibilidade do trabalho, dificuldades em priorizar as
tarefas, falhas na comunicação e colaboração, sobrecarga devido
aos compromisso exigidos pelas sprints, dificuldades em
sincronizar os trabalho ou substituir pessoas.
1:103 Ahmad et al. [73]
demonstraram que as Ahmad et al. [73]
demonstraram que as equipes de manutenção
equipes de manutenção não conse… não conseguiam encaixar as atividades urgentes nas sprints pré-
estabelecidas e as datas de lançamentos eram quase aleatórias.
Além disso as reuniões diárias, muitas vezes, duravam bem mais
do que o estabelecido e muitas vezes os membros do time não
estavam disponíveis para comparecerem nas reuniões. Fatores que
foram resolvidos ao se utilizar o Kanban.
1:105 o Kanban, assim como outros métodos, o Kanban, assim como outros métodos, possui significantes
possui significantes desafios qu… desafios que impactam negativamente no processo de
desenvolvimento de software como falta de mecanismo de
rastreamento do andamento do projeto, dificuldades em se estimar
o WIP, atrasos e consequentemente falhas nos projetos [74]
.
1:108 Heeager e Rose [26]
revelou os desafios de Heeager e Rose [26]
revelou os desafios de se adotar Scrum para
se adotar Scrum para proces… processos de manutenção.
Eles relataram que muitos dos problemas de se aplicar Scrum para
manutenção se dá ao fato de que uma emergência não pode
aguardar o cumprimento de uma sprint com todos seus requisitos e
quando acontecem acabam atrasando o cumprimento das metas da
sprint. Assim afirmaram que a aplicação dos métodos ágeis na
manutenção podem não ocorrer automaticamente e algumas
otimizações podem ser necessárias para acomodar os diferentes
tipos de manutenção, diferentes fontes de trabalho e práticas locais.
1:142 Normalmente espera-se que uma arquitetura Normalmente espera-se que uma arquitetura de CD assegure
de CD assegure poder comput… poder computacional elástico e alta capacidade de monitoramento
para suportar as mudanças frequentes nos requisitos, fato que gera
implicações financeiras devido a dificuldade em se mensurar a
quantidade de recursos necessários [90]
.
1:145 As arquiteturas monolíticas geralmente usam As arquiteturas monolíticas geralmente usam uma abordagem de
uma abordagem de implantaç… implantação "big bang"que atualiza toda aplicação de uma vez e
algumas vezes incluem atualizações de banco de dados. Essa
abordagem pode ser lenta e sujeito a erros devido suas
ramificações pesadas e, desse modo, menos ágeis [79]
1:149 Entretanto, deve-se buscar equilíbrio na Entretanto, deve-se buscar equilíbrio na quantidade de
quantidade de microsserviços… microsserviços pois a modularização em excesso pode ser um fator
de aumento da complexidade para Continuous Delivery [85]
1:151 Uma especificação de requisitos inadequada Uma especificação de requisitos inadequada funciona como
funciona como catalisador… catalisador para outros problemas, como baixa produtividade da
equipe e dificuldade em manter o software [98]
.
1:155 Embora o uso de requisitos ágeis gerem Embora o uso de requisitos ágeis gerem ganho inicial de tempo, a
ganho inicial de tempo, a ausên… ausência de detalhes na documentação podem resultar em não
alinhamento com as expectativas do cliente [15]
.
1:156 Medeiros et al. [100]
cerca de 50% das Medeiros et al. [100]
cerca de 50% das tarefas de manutenção
tarefas de manutenção analisada… analisadas tiveram problemas devido a insuficiência de
documentação de requisitos.
1:157 Mendes et al. [103]
mostraram que o débito Mendes et al. [103]
mostraram que o débito de documentação gera
de documentação gera uma a… uma aumento no esforço 47% maior que o estimado no projeto e
um custo extra que chega aos 48%.
1:158 Borrego et al. [104]
um dos desafios dos Borrego et al. [104]
um dos desafios dos métodos ágeis é manter o
métodos ágeis é manter o con… conhecimento ao longo do tempo devido à insuficiência de
documentação.
1:160 É comum empresas delegarem a É comum empresas delegarem a responsabilidade dos testes para
responsabilidade dos testes para outros t… outros times especialistas. Ao fazerem isso o processo de
desenvolvimento ágil é prejudicado pois normalmente os times
especialistas estão acostumados com o modelo tradicional de
testes. Essa situação gera conflitos entre as equipes que acabam
culpando umas às outras pela demora [103]
1:168 O momento para criação de testes O momento para criação de testes automatizados varia de acordo
automatizados varia de acordo com a e… com a experiência e conhecimento da equipe [110]
, muitas vezes a
prioridade está na velocidade da entrega, mesmo que seja
necessário abrir mão da qualidade e de outros atributos.
3:1 Na sua opinião, por que a DES ainda não Na sua opinião, por que a DES ainda não possui um processo de
possui um processo de softwar… software bem definido ?
R: Bom eu acho que é por conta de não ter uma, [pensando]
… uma
união entre as pessoas que queiram implementar esse processo de
software. Uma união e uma, digamos assim, alguém para “bater o
martelo” e falar : “esse vai ser o nosso processo
3:2 Então, assim, mesmo dentro da nossa Então, assim, mesmo dentro da nossa equipe ainda vejo “escape”
equipe ainda vejo “escape” de ide… de ideias para definir o processo se está ok ou não está. É isso daí
que eu acho que peca um pouco para expandir para toda DES.
3:3 eu acho que o RUP seria uma coisa muito eu acho que o RUP seria uma coisa muito robusta e talvez muito
robusta e talvez muito formal… formal para nosso ambiente aqui de início. Acho que isso pegou um
pouco. Tem muitos artefatos e começou-se uma discussão de
quais artefatos seriam usados ou não. Acho que peca nisso, a gente
colocar um processo muito estruturado num momento que a gente
não tinha muita experiência, ou capacidade de usar.
3:20 mesmo que tem um código ali meio mesmo que tem um código ali meio bagunçado
bagunçado
4:1 sempre teve um processo não documentado, sempre teve um processo não documentado, não documentado,
não documentado, mas eu acho… mas eu acho que desde o início tinha um processo de software.
Talvez não no padrão da literatura, da arquitetura ou da engenharia
mas existia um processo
4:6 já tinha uma forma de fazer já tinha uma forma de fazer
4:8 Eu acho que a outra coisa que levou Eu acho que a outra coisa que levou também a não ser tão
também a não ser tão definido, fo… definido, foi que, também, no início era muito misturado…
[pensando]
... os servidores [pensando]
– Como vou dizer ? -
servidores de TI, principalmente os analistas, programadores,
banco de dados atuavam muito diretamente com as outras áreas.
4:15 A questão dos cargos, talvez dificultava A questão dos cargos, talvez dificultava porque, por exemplo: se a
porque, por exemplo: se a ge… gente fosse definir um processo de software, a gente sempre
imaginava um processo de software mas não vendo o diretor da
área como o gerente do projeto, mas sim como o gerente da área.
4:16 Você conseguiu fazer essa mudança. Você Você conseguiu fazer essa mudança. Você assumiu a gerência dos
assumiu a gerência dos projeto… projetos e isso não tinha né ? Isso até então não tinha.
Normalmente o diretor da área não queria assumir, até porque era
uma transição
4:22 dificuldade do RUP era a documentação que dificuldade do RUP era a documentação que era exigida também
era exigida também sabe, eu… sabe, eu cheguei até a ver as coisas lá mas era mais pesado e
talvez faltasse treinamento, e por conta de ter pouca gente, pouca
gente assim, de já ter gente dedicada a manutenção de sistema,
essa pessoa talvez não tenha tido tanto interesse em querer … se
sou eu que faço a documentação, se sou eu que faço os testes, se
sou eu que faço tudo, para que eu vou fazer documentação para
mim mesmo ?
7:1 o pessoal antigamente pelo menos, o pessoal antigamente pelo menos, trabalhava bem individual,
trabalhava bem individual, cada um… cada um da sua maneira, no seu próprio sistema e isso também
dificultava um pouco a gente poder definir um método de trabalho,
7:3 Acho que o pessoal tem um pouco de Acho que o pessoal tem um pouco de resistência. Talvez com a
resistência. Talvez com a ferrament… ferramenta [pensativa]
ou falta de hábito assim.
7:7 Tem pessoas que tem um pouco de Tem pessoas que tem um pouco de resistência, mas eu acho que é
resistência, mas eu acho que é import… importante.
9:1 Eu acho que é um padrão, meio do mercado Eu acho que é um padrão, meio do mercado brasileiro, essa falta
brasileiro, essa falta de pa… de padronização
9:2 talvez tenha muito a ver com cultura nossa talvez tenha muito a ver com cultura nossa
9:3 A pessoa vai lá e faz tudo e acaba sendo A pessoa vai lá e faz tudo e acaba sendo prático, barato. Assim a
prático, barato. Assim a cur… curto prazo era barato e o pessoal acomodava
9:4 Talvez no serviço público tenha o adicional Talvez no serviço público tenha o adicional de que é... [pensando]
de que é... [pensando]
Te… Tem mais burocracia, tem mais os empecilhos burocráticos para se
implantar alguma coisa. Você não basta chegar e decidir: “não
vamos colocar isso aqui”, porque sempre vai esbarrar em alguém
ou alguém que está acostumado com alguma coisa e não quer
mudar
9:5 Uma pessoa que era de fora da equipe e Uma pessoa que era de fora da equipe e chegou impondo e talvez
chegou impondo e talvez tenha… tenha tido uma resistência interna
9:7 Quando tem algo muito rígido imposto acaba Quando tem algo muito rígido imposto acaba afetando essa
afetando essa questão da l… questão da liberdade mesmo, eu já vi em outros ambientes. Você
realmente é limitado e isso acaba mais atrapalhando do que
ajudando.
9:10 Acabava que a gente via bastante porque Acabava que a gente via bastante porque tinha reunião de
tinha reunião de acompanhamen… acompanhamento direto, mas era só nisso... não é uma coisa
natural, mais mas neste caso era inércia mesmo. A gente tinha um
costume de mais de décadas de trabalho que para quebrar isso
tem que demandar um esforço mesmo, e você sabe disso né ?
11:7 Agora se considerar a data que a demanda Agora se considerar a data que a demanda foi encaminhada para o
foi encaminhada para o setor… setor né de engenharia de software até efetivamente começar o
desenvolvimento aí eu
acho que foi um tempo maior,
Categorias: Práticas úteis para o processo
1:85 projeto é deffnido como: “um esforço projeto é deffnido como: “um esforço temporário empreendido para
temporário empreendido para cria… criar um produto, serviço ou resultado exclusivo” Fonte [62]
1:91 para Polo et al. [20]
as normas ISO/IEC para Polo et al. [20]
as normas ISO/IEC 12207 [67]
e IEEE 1219
12207 [67]
e IEEE 1219 [68]
d… [68]
deveriam ser unidas e detalhadas com foco na manutenção
1:93 Essa metodologia deffne uma estratégia de Essa metodologia deffne uma estratégia de manutenção ágil,
manutenção ágil, estabelecen… estabelecendo em detalhes o que deve ser realizado, quando, como
e por quem. Fonte [67]
1:94 Para Pino et al. [68]
diferentemente de outros Para Pino et al. [68]
diferentemente de outros métodos ágeis como
métodos ágeis como Prog… Programação Extrema e Programação Pragmática o Scrum fornece
uma estrutura para gerenciar projetos sem incluir práticas técnicas
enquanto que os demais se concentram nas descrições práticas
das atividades e técnicas relacionadas ao ciclo de desenvolvimento
de software.
Esses aspectos possibilitam combinar a estrutura de gerenciamento
de projetos do Scrum com processos técnicos de uma área de
conhecimento específfca como o Mantema que passa a usufruir
dos benefícios de uma metodologia ágil.
1:96 O guia Mantelasoft [48]
Se divide em oito O guia Mantelasoft [48]
Se divide em oito fases em sequência que
fases em sequência que são:… são: manutenção geral, planejamento da manutenção, processo de
manutenção, métricas de manutenção,
estimativa de custos de manutenção, pessoal de manutenção,
evolução ou melhoria dos produtos e atividade ffnais de
manutenção. Essas fases, por sua vez, possuem tarefas e
atividades que instruem sobre a maneira de se realizar a
manutenção utilizando-se de um check-list [48]
.
1:98 o Impress se sustenta nos seguintes pilares o Impress se sustenta nos seguintes pilares [23]
: • Deploy contínuo
[23]
: • Deploy contínuo e… e rápido através de técnicas de priorização de tarefas; • Visibilidade
e controle do fluxo de tarefas através do quadro Kanban e suas
práticas; • Engajamento ponta-a-ponta através da participação de
todos os envolvidos no ciclo de vida das tarefas; • Monitoramento
contínuo com metas de curto prazo (semanais), reuniões diárias e
manutenção em tempo real de métricas e Dashboards públicos.
1:99 Quando se trata de manutenção evolutiva, o Quando se trata de manutenção evolutiva, o Impress se baseia nas
Impress se baseia nas práti… práticas do Scrum e enfatiza as diffculdade de se eleger o Product
Owner (PO) em instituições em que os
sistemas de grande porte são compartilhados por muitos POs e
desse modo o Impress recomenda a criação de comitês
envolvendo representantes das diversas áreas para a tomada de
decisões. As demais práticas do Scrum se adequam perfeitamente
às demandas direcionadas ao ffuxo de sustentação [23]
.
1:100 Aquino e Dantas [23]
enfatizam a importância Aquino e Dantas [23]
enfatizam a importância de se administrar bem
de se administrar bem a… a mudança visto que equipes distintas trabalham com prazos e
processos diferentes para manutenir evolutivamente e
corretivamente o mesmo sistema e para atender e essa alta
necessidade de gerência de conffguração e mudança o Impress
incorpora padrões amplamente reconhecidos como Release Line,
Release-Prep Codeline, Active Development Line e Integration
build, e se inspira fortemente no modelo de gerência de
conffguração Gitffow.
1:101 As empresas de software estão cada vez As empresas de software estão cada vez mais adotando Kanban
mais adotando Kanban para manut… para manutenção pois trata-se de uma ferramenta que se affrmou
depois de demonstrar bons resultados, por oferecer visibilidade
aprimorada do projeto, qualidade no software, motivação na equipe,
melhor comunicação e colaboração [73]
.
1:104 Ahmad et al. [73]
concluíram que, em Ahmad et al. [73]
concluíram que, em resumo, para lidar com
resumo, para lidar com desaffo… desaffo da falta de visibilidade, o Kanban é mais adequado sendo
indicado para onde exista um alto grau de variabilidade da
prioridade como na manutenção em ciclos curtos. Nesse sentido,
Kanban contribuiu para benefícios como visibilidade e priorização
das tarefas, melhoria na moral da equipe, melhoria na
comunicação, proteção das equipes quanto à exigências excessivas
e compartilhamento de conhecimento entre os envolvidos.
1:106 Alaidaros et al. [74]
propuseram melhorias no Alaidaros et al. [74]
propuseram melhorias no processo utilizando
processo utilizando Kan… Kanban que estendem o rastreamento do progresso, gera limites
ótimos de WIP e maior visão do ffuxo de trabalho. Para isso
utilizaram métodos tradicionais de gerência de projetos, e
algoritmos otimizados para determinação do melhor WIP
1:107 Eles destacaram que muitos profissionais Eles destacaram que muitos proffssionais estão utilizando métodos
estão utilizando métodos ágei… ágeis misturados inclusive com outras técnicas como as de
gerência de projetos tradicionais ou métodos ágeis com outros
métodos ágeis, como o método que une Kanban e Scrum formando
o Scrumban [75]
1:109 Para tratar a urgência das manutenções Para tratar a urgência das manutenções corretivas, Heeager e Rose
corretivas, Heeager e Rose [26]
… [26]
sugerem que os projetos evolutivos sejam planejados com um
tempo extra para que, caso ocorra alguma emergência, seja
possível atendê-la sem muitos impactos na manutenção evolutiva
em curso.
1:112 O modelo se incia com o planejamento para O modelo se incia com o planejamento para rastreamento de
rastreamento de alterações n… alterações no sistema e logo após veriffca-se o tipo de manutenção
sendo que a manutenção corretiva é prioritária e o trabalho é
iniciado por meio de uma nova versão de código [3]
.
1:113 Caso a manutenção seja evolutiva surge a Caso a manutenção seja evolutiva surge a necessidade de um
necessidade de um monitoramen… monitoramento para veriffcação de sprints urgentes e de
emergência durante sua execução e caso ocorra a emergência, a
sprint atual é pausada, o trabalho realizado é armazenado no
sistema de controle de versão e é iniciada a manutenção corretiva
[3]
.
1:116 Execute cada tarefa de manutenção, Execute cada tarefa de manutenção, corretiva e evolutiva, de forma
corretiva e evolutiva, de forma sep… separada e então quando estiverem estáveis junte-as ao sistema
original.
1:117 Documente a iteração para manter a Documente a iteração para manter a integridade do sistema
integridade do sistema utilizando-s… utilizando-se de casos de uso ou casos de teste
1:121 Para Alqudah e Rozilawati [4]
Scrumban é Para Alqudah e Rozilawati [4]
Scrumban é mais adaptável,
mais adaptável, especialmente… especialmente quando há muitas alterações nos requisitos do
usuário.
1:122 Kanban: quando os envolvidos não estão Kanban: quando os envolvidos não estão dispostos a atuarem com
dispostos a atuarem com papéis… papéis pré- definidos; equipes que precisam executar tarefas
prioritárias em menos de uma semana, constantemente ou mesmo
em questões de horas com entregas pequenas;
em equipes que precisam diminuir o lead time (tempo de entrega),
aumentar a qualidade e reduzir custos. Fonte [4]
1:123 Scrum: quando os envolvidos demonstram Scrum: quando os envolvidos demonstram preferência na adoção
preferência na adoção dos métod… dos métodos recomendados; quando estão dispostos a exercerem
os papéis prescritos; para entregas maiores que duram uma ou
mais de uma semana; situações que o tempo de espera pode ser
maior; disseminação dos conhecimentos na equipe
1:124 Scrumban: as escolhas para sua composição Scrumban: as escolhas para sua composição se dão para cada
se dão para cada caso partic… caso particular; Por exemplo, poderia iniciar o projeto adotando o
Scrum evitando sprints, planejamento, revisão e backlog da sprint
quando a tarefa é pequena para caber em mais de uma sprint ou
quando a estimativa do tamanho da sprints é difícil e então
poderiam controlar a entrega ajustando o WIP. Da mesma forma,
podem existir muitos cenários e aplicações diferentes, ficando a
cargo da equipe ajustar método Scrumban para cada situação.
Para isso deve-se entender as práticas de ambos os métodos para
poder selecionar as práticas. Fonte [4]
1:125 São características do software que podem São características do software que podem facilitar a manutenção
facilitar a manutenção quan… quando forem necessárias e são divididas em 5 características
[125]
: • modularidade; • reutilização; • capacidade de ser
analisado; • capacidade de ser modificado; • capacidade de ser
testado.
1:132 Um pipeline utiliza de automação das fases Um pipeline utiliza de automação das fases de desenvolvimento do
de desenvolvimento do soft… software para entregas rápidas, contínuas e seguras (recuperação
de código). Além disso, possibilita integração de códigos
promovendo o trabalho em equipe, monitoramento e testes.
1:133 O movimento DevOps 1 adaptou essas O movimento DevOps adaptou essas práticas e adicionou o
práticas e adicionou o pipeline de… pipeline de deployment como um dos principais requisitos para
automatizar o processo de desenvolvimento de software
melhorando a flexibilidade e facilidade de manutenção dos sistemas
[82]
.
1:135 A utilização da automatização por meio de A utilização da automatização por meio de CI/CD é considerada
CI/CD é considerada essencia… essencial para emprego dos métodos ágeis, como bem expõem
Vassallo et al. [86]
.
1:136 Laukkanen et al. [87]
realizaram uma revisão Laukkanen et al. [87]
realizaram uma revisão da literatura em que
da literatura em que consta… constatou sete principais problemas para emprego de CI/CD, cinco
deles estão relacionados às diferentes atividades de
desenvolvimento de software: projeto da arquitetura, projeto do
sistema, integração, testes e entregas. Os outros dois não estão
conectados a nenhuma parte individual e são: fatores
humanos/organizacionais e de falta de recursos. A maioria dos
problemas se concentram na integração e nos testes.
1:137 No entanto o momento de unir esses códigos No entanto o momento de unir esses códigos (conhecido
(conhecido como merge day)… como,merge day) pode ser trabalhoso e demorado. Isso acontece
porque podem ocorrer conflitos entre a codificação de um
desenvolvedor e a codificação de outro. Esse problema pode ser
agravado se cada desenvolvedor tiver seu próprio ambiente de
desenvolvimento local.
O ideal seria que a equipe trabalhasse em um mesmo ambiente
compartilhado baseado em nuvem [88]
1:138 Evitar situações que possam prejudicar o Evitar situações que possam prejudicar o andamento do CI é
andamento do CI é fundamental… fundamental. Quando CI não funciona apropriadamente e falham,
causa uma perda de tempo e desvio de foco dos desenvolvedores,
diminuindo a produtividade [87]
1:139 Construir sistemas com capacidade para Construir sistemas com capacidade para suportar integrações
suportar integrações frequente… frequentes é um pré-requisito para continuous integration e suas
práticas [89]
.
1:140 Vários testes automatizados, geralmente de Vários testes automatizados, geralmente de unidade e integração,
unidade e integração, são… são feitos para garantir que as mudanças não corrompam a
aplicação. A CI facilita a correção de qualquer erro encontrado[88]
.
1:143 Uma arquitetura monolítica só é capaz de Uma arquitetura monolítica só é capaz de oferecer autonomia
oferecer autonomia lógica. P… lógica. Para se alcançar maior flexibilidade arquitetural, uma
proposta é utilizar um padrão ou estilo arquitetônico de
microsserviços [82]
.
1:144 Bass et al. [61]
resumem a ideia do que é um Bass et al. [61]
resumem a ideia do que é um monólito de software
monólito de software e cha… e chama atenção para ideia da quebra desse monólito em partes
menores que resulta na deffnição de microsserviços.
1:146 Após a codiffcação o desenvolvedor pode Após a codiffcação o desenvolvedor pode embutir o código no
embutir o código no Docker e d… Docker e distribuir em um cluster aproveitando de seu tamanho
pequeno e leveza. Isso permite alcançar repetibilidade e
uniformidade perfeitas nos ambientes [83]
1:147 Para que todos containers comuniquem entre Para que todos containers comuniquem entre si e também com
si e também com outros serv… outros servidores é necessário uma estrutura capaz de realizar a
orquestração entre eles. Esta estrutura é chamada de orquestrador
sendo o mais comum na comunidade de software livre o
Kubernates [96]
.
1:148 Além de prover a orquestração dos Além de prover a orquestração dos componentes, o Kubernates
componentes, o Kubernates possibilit… possibilita uma série de outras funcionalidades como por exemplo:
escalabilidade horizontal, alta disponiblidade, rápidas e
transparentes atualizações do software, computação distribuída,
entre outros [96]
.
1:152 Para se adequar à dinâmica dos métodos Para se adequar à dinâmica dos métodos ágeis, os analistas de
ágeis, os analistas de requisit… requisitos propuseram uma documentação mais simples que fosse
clara, objetiva e adaptável, dando origem ao conceito de living
documentation, ou documentação viva [15]
.
1:153 Schön (2017), citado por Fraga e Schön (2017), citado por Fraga e Barbosa[101]
, identiffcou que os
Barbosa[101]
, identiffcou que os prin… principais documentos de requisitos utilizados nos métodos ágeis
são: histórias de usuário, protótipos, casos de uso e cartões de
histórias
1:154 alguns autores (Haugset e Stlhane, Mead, alguns autores (Haugset e Stlhane, Mead,
Schön), conforme Fraga e B… Schön), conforme Fraga e Barbosa [10]
, indicaram também que os
requisitos podem estar documentados nos casos de testes.
1:155 Embora o uso de requisitos ágeis gerem Embora o uso de requisitos ágeis gerem ganho inicial de tempo, a
ganho inicial de tempo, a ausên… ausência de detalhes na documentação podem resultar em não
alinhamento com as expectativas do cliente [15]
.
1:159 Embora o Manifesto Ágil [63]
preze mais pelo Embora o Manifesto Ágil [63]
preze mais pelo software em
software em funcionamento… funcionamento do que uma documentação abrangente, ele não se
opõe a qualquer prática adicional que vise melhorar a qualidade.
1:161 Os métodos ágeis possuem poucos papéis Os métodos ágeis possuem poucos papéis definidos e geralmente o
definidos e geralmente o time é… time é responsável desde a concepção do produto até a entrega
não existindo o papel do testador[106]
.
1:162 Salerno et al. [106]
discutiram o impacto de Salerno et al. [106]
discutiram o impacto de se ter um profissional do
se ter um proffssional do t… time como facilitador na identificação dos problemas e para auxiliar
no melhor entendimento das necessidades e engajamento do
usuário, a este profissional deu-se o nome de Product Designer que
se mostrou crucial na identificação de melhores soluções aos
problemas dos usuários.
1:163 Proffssionais de qualidade, também Profissionais de qualidade, também chamados de QA (Quality
chamados de QA (Quality Assurance)… Assurance) ou testers passam a exercer papel dentro do time e
geralmente não desperdiçam tempo escrevendo documentação
para depois fazer testes manuais. Normalmente eles levantam os
requisitos junto ao profossional de negócio de modo que a
especificação se torna o próprio teste a medida que os
desenvolvedores vão entregando pequenos incrementos facilmente
testáveis [105]
.
1:164 Muitos métodos de testes surgiram e alguns Muitos métodos de testes surgiram e alguns ganharam forças de
ganharam forças de modo a s… modo a sustentar os processo baseados nos ágeis. Entre elas, vale
ressaltar os conceitos de (TDD), Acceptance Test Driven
Development (ATDD), Behavior-Driven Development (BDD) que
utilizam testes unitários para entregar funcionalidades em um
processo ágil [107]
.
1:165 A execução manual de um caso de teste é A execução manual de um caso de teste é rápida e efetiva, mas a
rápida e efetiva, mas a execuç… execução, atualização e repetição de um número elevado de testes
é uma tarefa cansativa que com o tempo se torna inviável. Desse
modo, é comum que os testadores não executem todos os casos a
cada mudança e daí surgem os erros, levando a prejuízo para todos
os envolvidos e diminuindo a qualidade das entregas[129]
.
1:167 Cada modiffcação ou correção de um erro Cada modificação ou correção de um erro resulta em muito esforço
resulta em muito esforço para… para execução de todos testes manuais e caso não seja feito
poderá acarretar erros de regressão, que são aqueles erros que
afetam outros módulos do sistema que estavam funcionando antes
da manutenção, e assim entrar num ciclo de manutenção tornando
uma tarefa tão difícil que passa a valer a pena reconstruir o
software novamente [129]
.
1:169 Uma prácia comum é iniciar a criação de Uma prácia comum é iniciar a criação de testes quando os
testes quando os requisitos es… requisitos estão estáveis sem solicitação de grandes mudanças e
após a execução dos testes manuais. As equipes que possuem
membros que adotam papel de testador e desenvolvedor em
momentos diferentes não costuma apresentar testes automatizados
visto que não sobra tempo para tantas tarefas [120]
.
1:170 Duas estratégias para automatização de Duas estratégias para automatização de testes foram identiffcada
testes foram identiffcada no tr… no trabalho de Alves [120]
: começar com as partes mais simples ou,
pensando no custo com a manutenção na automação, aqueles
testes de maior frequência
1:171 Entretanto, construir uma suíte de testes Entretanto, construir uma suíte de testes automatizados, requer
automatizados, requer padron… padronização de atividades, arquitetura que suporte os testes e
conhecimento em codificação e análise por parte do testador. Para
fazer testes de unidade, é necessário entender sobre o código, se
for teste de sistema deve-se conhecer as regras de negócio e os
resultados esperados.
Além disso, conhecer bem os cenários evita a construção de casos
de testes repetidos e quais testes devem ser de fato automatizados
pois o trabalho para mantê-los atualizados já é bastante grande
[120]
.
1:172 Através de métricas é possível identiffcar se Através de métricas é possível identificar se os testes estão sendo
os testes estão sendo va… vantajosos. Uma das formas mais utilizadas é a contagem de
defeitos obtidos em desenvolvimento, homologação e produção
[131]
.
3:14 ficou mais visível. ficou mais visível.
3:15 visibilidade grande no trabalho que a gente visibilidade grande no trabalho que a gente
3:19 ter um tempo ali, organizar essas demandas ter um tempo ali, organizar essas demandas
3:22 a participação do usuário gestor é muito a participação do usuário gestor é muito importante.
importante.
3:23 aquela reunião de apresentação, e ali ele aquela reunião de apresentação, e ali ele acaba participando
acaba participando também, também,
3:24 poder abrir uma vídeo chamada e o cara poder abrir uma vídeo chamada e o cara participar sem sair da
participar sem sair da mesa del… mesa dele.
3:25 Então isso aí ajudou demais, ajuda demais. Então isso aí ajudou demais, ajuda
O cara ver o que está produz… demais. O cara ver o que está produzindo, falar que tem erro, que
não é assim tal eu acho muito importante.
3:26 É de suma importância esses prazos aí. Até É de suma importância esses prazos aí. Até ajudou a organizar o
ajudou a organizar o trabal… trabalho a gente se organiza melhor. Porque antes não tinha
condição de dar prazos, quem definia o prazo era o cara que
estava pedindo ele e todo mundo que pede quer a coisa daqui dois,
três dias, coisa impossível assim.
3:27 Tem que ter prazos, e mesmo que ele seja Tem que ter prazos, e mesmo que ele seja assim, vamos definir o
assim, vamos definir o prazo… prazo ali do início sem saber na verdade quanto tempo vai levar
exatamente. Tem que ter um prazo.
3:28 A gente começa pela reunião de A gente começa pela reunião de planejamento, marca para
planejamento, marca para próxima seman… próxima semana para falar o que a gente produziu, eu acho
interessante. Tem que cumprir esses prazos.
3:29 seguir os prazos que foram definidos, prazos seguir os prazos que foram definidos, prazos das reuniões, dos
das reuniões, dos encontr… encontros eu achei bem interessante.
4:26 eu acho que é importante um cara ter um eu acho que é importante um cara ter um pouco de domínio de um
pouco de domínio de um determi… determinado módulo, ou seja, o sistema dependendo do tamanho,
pode até ter do sistema todo, do que ele não ter o controle
4:30 manutenção evolutiva, talvez quem tem mais manutenção evolutiva, talvez quem tem mais dormindo sistema faça
dormindo sistema faça mais… mais rápido,
9:6 Na verdade eu acho que tem que ser assim, Na verdade eu acho que tem que ser assim, tem que chegar
tem que chegar alguém que v… alguém que vai dizer que vai ser assim e pronto. Talvez o que não
tenha funcionado é a interação entre quem impôs e a equipe.
11:4 Sobre aquele relatório de acompanhamento Sobre aquele relatório de acompanhamento que era disponibilizado
que era disponibilizado ao fi… ao final de toda reunião de acompanhamento, né? Você viu
importância nele, ou não?
R: É relevante porque para ter noção a questão da transparência,
de saber o que tá acontecendo.
Eu acho extremamente válido.
12:4 Então, nesse sentido na gestão passada nós Então, nesse sentido na gestão passada nós criamos o comitê de
criamos o comitê de govern… governança de TI, que uma das competências é analisar todas as
demandas de alteração de sistemas do tribunal, se são pertinentes
ou não e se sim, qual a ordem de prioridade delas.
12:5 Conseguimos também aprovar lá no órgão Conseguimos também aprovar lá no órgão especial uma resolução
especial uma resolução que tra… que trata, que estabelece a política de desenvolvimento e
sustentação de software no âmbito do tribunal de Justiça de Goiás ,
que dá essas diretrizes sobre o procedimento e cria formalmente
em nome do tribunal essas figuras do: demandante, do levantador
de requisitos, dos desenvolvedores, mostrando que algo
multidisciplinar.
Categoria: Arquitetura
1:126 O modelo Mantus contém seis processos e O modelo Mantus contém seis processos e uma série de práticas
uma série de práticas que são… que são definidas para cada processo sendo eles: de requisitos de
software, projeto, arquitetura, construção, avaliação e gestão da
documentação cada um deles tenta maximizar as sub-
características de manutenção descritas na norma ISO/IEC 25010
[5].
1:127 Para suportar os métodos ágeis para Para suportar os métodos ágeis para manutenção, de acordo com a
manutenção, de acordo com a realid… realidade de cada instituição, são necessários o uso de ferramentas
para suportar com agilidade necessária as manutenções
emergenciais, dado que a excelência técnica e bom design
aumentam a agilidade [28]
1:128 A capacidade de um sistema de software A capacidade de um sistema de software produzir resultados
produzir resultados corretos n… corretos não é útil se levar muito tempo para fazer isso ou se o
sistema não permanecer ativo tempo suficiente para entregá-lo, ou
mesmo se o sistema revelar os resultados para pessoas
indesejadas. Nos requisitos arquiteturais é onde estas
preocupações são abordadas [7]
1:129 Sistemas de software são construídos para Sistemas de software são construídos para satisfazer os objetivos
satisfazer os objetivos de n… de negócios das organizações. A arquitetura é a ponte entre estes
objetivos e os resultados finais do sistema [57].
1:130 Os requisitos não funcionais são também Os requisitos não funcionais são também chamados de requisitos
chamados de requisitos de atri… de atributo de qualidade e envolvem performance, manutenibilidade,
disponibilidade, usabilidade, escalabilidade, segurança e outros.
Eles podem definir a arquitetura, designs patterns a serem
utilizados e decisões nos projetos [57]
1:131 Uma alocação bem realizada possibilita que Uma alocação bem realizada possibilita que os requisitos
os requisitos expressos no… expressos no software sejam satisfeitos pelas características de
hardware [7].
1:132 Um pipeline utiliza de automação das fases Um pipeline utiliza de automação das fases de desenvolvimento do
de desenvolvimento do soft… software para entregas rápidas, contínuas e seguras (recuperação
de código). Além disso, possibilita integração de códigos
promovendo o trabalho em equipe, monitoramento e testes.
1:133 O movimento DevOps 1 adaptou essas O movimento DevOps adaptou essas práticas e adicionou o
práticas e adicionou o pipeline de… pipeline de deployment como um dos principais requisitos para
automatizar o processo de desenvolvimento de software
melhorando a fiexibilidade e facilidade de manutenção dos sistemas
[78].
1:134 Embora os métodos ágeis sejam cada vez Embora os métodos ágeis sejam cada vez mais comuns, muitas
mais comuns, muitas Organizaçõe… Organizações não conseguiram alcançar os benefícios de CI/CD
devido ao distanciamento entre equipes de desenvolvimento e
infraestrutura, fato motivador para que o DevOps se desenvolvesse
[80]
1:135 A utilização da automatização por meio de A utilização da automatização por meio de CI/CD é considerada
CI/CD é considerada essencia… essencial para emprego dos métodos ágeis, como bem expõem
Vassallo et al. [80].
1:136 Laukkanen et al. [82] realizaram uma revisão Laukkanen et al. [82] realizaram uma revisão da literatura em que
da literatura em que consta… constatou sete principais problemas para emprego de CI/CD, cinco
deles estão relacionados às diferentes atividades de
desenvolvimento de software: projeto da arquitetura, projeto do
sistema, integração, testes e entregas. Os outros dois não estão
conectados a nenhuma parte individual e são: fatores
humanos/organizacionais e de falta de recursos. A maioria dos
problemas se concentram na integração e nos testes.
1:137 No entanto o momento de unir esses códigos No entanto o momento de unir esses códigos (conhecido como
(conhecido como merge day)… merge day) pode ser trabalhoso e demorado. Isso acontece porque
podem ocorrer confiitos entre a codificação de um desenvolvedor e
a codificação de outro. Esse problema pode ser agravado se cada
desenvolvedor tiver seu próprio ambiente de desenvolvimento local.
O ideal seria que a equipe trabalhasse em um mesmo ambiente
compartilhado baseado em nuvem [83]
1:138 Evitar situações que possam prejudicar o Evitar situações que possam prejudicar o andamento do CI é
andamento do CI é fundamental… fundamental. Quando CI não funciona apropriadamente e falham,
causa uma perda de tempo e desvio de foco dos desenvolvedores,
diminuindo a produtividade [82]
1:139 Construir sistemas com capacidade para Construir sistemas com capacidade para suportar integrações
suportar integrações frequente… frequentes é um pré-requisito para continuous integration e suas
práticas [84].
1:141 Embora existam modelos prescritivos, na Embora existam modelos prescritivos, na vida real a adoção do CD
vida real a adoção do CD requ… requer iterações e ações específicas para cada caso[82]
1:142 Normalmente espera-se que uma arquitetura Normalmente espera-se que uma arquitetura de CD assegure
de CD assegure poder comput… poder computacional elástico e alta capacidade de monitoramento
para suportar as mudanças frequentes nos requisitos, fato que gera
implicações financeiras devido a dificuldade em se mensurar a
quantidade de recursos necessários [85].
1:143 Uma arquitetura monolítica só é capaz de Uma arquitetura monolítica só é capaz de oferecer autonomia
oferecer autonomia lógica. P… lógica. Para se alcançar maior fiexibilidade arquitetural, uma
proposta é utilizar um padrão ou estilo arquitetônico de
microsserviços [78].
1:144 Bass et al. [57] resumem a ideia do que é um Bass et al. [57] resumem a ideia do que é um monólito de software
monólito de software e cha… e chama atenção para ideia da quebra desse monólito em partes
menores que resulta na definição de microsserviços.
1:147 Para que todos containers comuniquem entre Para que todos containers comuniquem entre si e também com
si e também com outros serv… outros servidores é necessário uma estrutura capaz de realizar a
orquestração entre eles. Esta estrutura é chamada de orquestrador
sendo o mais comum na comunidade de software livre o
Kubernates [92].
1:148 Além de prover a orquestração dos Além de prover a orquestração dos componentes, o Kubernates
componentes, o Kubernates possibilit… possibilita uma série de outras funcionalidades como por exemplo:
escalabilidade horizontal, alta disponibilidade, rápidas e
transparentes atualizações do software, computação distribuída,
entre outros [92].
1:171 Entretanto, construir uma suíte de testes Entretanto, construir uma suíte de testes automatizados, requer
automatizados, requer padron… padronização de atividades, arquitetura que suporte os testes e
conhecimento em codificação e análise por parte do testador. Para
fazer testes de unidade, é necessário entender sobre o código, se
for teste de sistema deve-se conhecer as regras de negócio e os
resultados esperados.
Além disso, conhecer bem os cenários evita a construção de casos
de testes repetidos e quais testes devem ser de fato automatizados
pois o trabalho para mantê-los atualizados já é bastante grande
[113].
3:35 E: A gente ter usado controle de versão, E: A gente ter usado controle de versão, pipeline, escalabilidade…
pipeline, escalabilidade…23:3… R: Ah não... isso aí é quase mil por cento [risos]. Isso aí ficou bom
demais. Isso aí foi uma coisa que… no começo a gente vinha
usando um controle de versão mais “malê-má” (mais ou menos)
também. Mas essa, que eles chamam de DevOps aí, que envolve
toda essa infraestrutura de entrega do software ficou excelente.
Isso aí melhorou, para mim, melhorou muito. Isso aí teria que ter...
foi a “chave de ouro” para mim [risos]. Ficou muito fácil para gente
disponibilizar um software
3:37 Quando a gente começou a trabalhar com Quando a gente começou a trabalhar com essa ideia de entrega
essa ideia de entrega contínua,… contínua, isso aí aproxima também as equipes. Por exemplo, o
pessoal da infra acaba que agora está sabendo o que estamos
fazendo. Tipo ver um software ou olham uma telinha e falam que
determinado software está muito lento. Antigamente não tinha isso,
então melhorou muito
4:33 E: Quanto ao a forma de trabalho, com E: Quanto ao a forma de trabalho, com relação à arquitetura, como
relação à arquitetura, como era… era antes e como é hoje ?
R: Teve uma mudança boa viu. Eu acho que isso foi uma evolução
necessária boa mesmo.
8:7 é uma das formas que tem de dar um é uma das formas que tem de dar um retorno para a sociedade de
retorno para a sociedade de forma… forma na prestação jurisdicional de forma ágil, célere e que atenda
a questão das publicidades dos atos é um investimento em
tecnologia, em TI e em projetos que realmente possa ter essa
função principalmente de trazermos ferramentas que vá realmente
otimizar os serviços do Judiciário
9:11 O processo era um processo e inicialmente O processo era um processo e inicialmente era bem arcaico.
era bem arcaico. Primeiro qu… Primeiro que você tinha um acesso direto. Que em alguns pontos
dava aquela falsa impressão de praticidade, mas era bem perigoso.
Você tinha acesso direto praticamente a produção direto, você
desenvolvia sem passar por ninguém, já fazia seu deploy e estava
em produção. Não passava por ninguém e era uma forma
inicialmente, uma forma de quando entrei no tribunal, uma forma de
copiar os arquivos pra área onde seria sincronizada e acabou, era
simplesmente isso.
9:12 Depois que foi implementado o controle de Depois que foi implementado o controle de versão. Nem isso tinha
versão. Nem isso tinha ante… antes e já foi um grande avanço o que melhorou muito muitas
coisas e agora a gente está com um processo mais adequado.
9:13 Primeiro ficou muito mais fácil de trabalhar Primeiro ficou muito mais fácil de trabalhar em equipe mesmo.
em equipe mesmo. Você sa… Você sabe o que cada um fez e não conflita trabalho, você tem
menos trabalho também, trabalho de mostrar o que você fez na
forma do commit e subir. Segue o padrão, não é você que vai subir,
tem um processo de quem vai fazer isso. Como vai chegar a
atividade para você e de como você vai passar essa atividade para
frente e isso foi uma evolução enorme que teve no TJ e até
comentei isso no questionário do ano passado que a gente
realmente nunca teve um padrão de verdade que não fosse aquele
tentado em 2015, naquela época... mas, que abrangesse mais o
processo todo. Desde como as coisas chegam para você. De como
você divide o que vai ser feito. O processo ficou completo agora.
11:2 Eu achei bacana também a forma de Eu achei bacana também a forma de acompanhamento. Fiz os
acompanhamento. Fiz os testes. Você… testes. Você perguntou dos testes. Todos os testes
que me foram passados eu fiz. Inclusive, depois que teve algum
erro eu entrei em contato e tive o suporte necessário então foi
tranquilo
11:3 isso foi extremamente importante porque no isso foi extremamente importante porque no início a gente tinha
início a gente tinha pensa… pensado de um jeito e acabou mudando para outra forma, que a
gente viu no teste e que precisava ser de outra forma.
12:10 Olha com certeza evoluiu e muito, evoluiu Olha com certeza evoluiu e muito, evoluiu muito em termos do
muito em termos do sistema,… sistema, da infra, da metodologia de trabalho e de gestão da equipe
e gestão do projeto. Hoje as entregas são previsíveis, existe
previsibilidade das entregas, o que será feito em qual versão e a
estimativa de tempo, com um sistema escalonável agora, de
acordo com a demanda, então com certeza a evolução foi muito
grande num curto espaço de tempo.
Categoria: Vertentes da manutenção
1:92 Essa união bem sucedida deu origem ao Essa união bem sucedida deu origem ao Mantema que divide a
Mantema que divide a manutenção… manutenção em cinco tipos: Corretiva e urgente, Corretiva sem
urgência, Evolutiva, Preventiva e Adaptativa. Fonte [22]
1:97 O Impress sustenta que demandas diferentes O Impress sustenta que demandas diferentes devem ser tratadas
devem ser tratadas através… através de estratégias de manutenções diferentes, de modo a
respeitar suas peculiaridades quanto as definições de escopo,
tempo, partes envolvidas, complexidade, urgência e tamanho das
solicitações.
Assim, as diferentes demandas são divididas em duas categoria:
Sustentação e Evolução [23]
1:108 Heeager e Rose [26]
revelou os desafios de Heeager e Rose [26]
revelou os desafios de se adotar Scrum para
se adotar Scrum para proces… processos de manutenção.
Eles relataram que muitos dos problemas de se aplicar Scrum para
manutenção se dá ao fato de que uma emergência não pode
aguardar o cumprimento de uma sprint com todos seus requisitos e
quando acontecem acabam atrasando o cumprimento das metas da
sprint. Assim afirmaram que a aplicação dos métodos ágeis na
manutenção podem não ocorrer automaticamente e algumas
otimizações podem ser necessárias para acomodar os diferentes
tipos de manutenção, diferentes fontes de trabalho e práticas locais.
1:110 Pino et al. [72]
aconselham o uso de sprints Pino et al. [72]
aconselham o uso de sprints separadas para a
separadas para a manutenç… manutenção, sendo uma mais breve para correções de
emergências imprevistas e outra maior com planejamento para
manutenções evolutivas.
1:111 Verificando que a literatura sugere o Verificando que a literatura sugere o tratamento diferenciado para
tratamento diferenciado para as… as diferentes categorias de manutenção (adaptativa, corretiva,
perfectiva e preventiva), Rehman et al. [3]
constataram que quando
isso é atendido os resultados da manutenção com métodos ágeis
aumentam os casos de sucesso.
1:116 Execute cada tarefa de manutenção, Execute cada tarefa de manutenção, corretiva e evolutiva, de forma
corretiva e evolutiva, de forma sep… separada e então quando estiverem estáveis junte-as ao sistema
original.
1:119 Scrumban [75]
é o resultado da união entre Scrumban [75]
é o resultado da união entre Scrum e Kanban com
Scrum e Kanban com propósit… propósito de se aproveitar o melhor de cada um em prol de uma
maior fiexibilização do emprego das práticas ágeis em diferentes
situações de projeto.
1:120 Alqudah e Rozilawati [4]
os profissionais de Alqudah e Rozilawati [4]
os profissionais de Kanban e Scrum estão
Kanban e Scrum estão con… convencidos de que para certas situações a combinação de ambos
os métodos é melhor que o uso de um ou de outro isoladamente
entretanto não é fácil selecionar as características que serão
utilizadas de cada um e para se escolher Scrum, Kanban ou ambos
exige-se um entendimento dos fatores que infiuenciam a seleção ou
hibridização.
4:12 Eu acho que sempre foi uma dificuldade o Eu acho que sempre foi uma dificuldade o legado, a manutenção.
legado, a manutenção. Então e… Então eu acho que uma das coisas que sempre dificultava, o início
de um processo definido, com início, meio e fim [pensando]
... foi
essa manutenção, a necessidade de manutenção dos sistemas.
Porque manutenção dos sistemas exigia dedicação de um outro,
quase uma dedicação exclusiva.
4:13 Os de processo judicial sempre foi - apesar Os de processo judicial sempre foi - apesar de sempre ter coisas
de sempre ter coisas nova… novas - era meio que um sistema único então parecia como se
fosse um incremento, uma nova funcionalidade, sempre uma nova
funcionalidade,
4:14 E: Sempre uma manutenção evolutiva né ? E: Sempre uma manutenção evolutiva né ?
R: É… e não encarava as… R: É… e não encarava assim também né ? Como : agora vou pegar
uma alteração e encarar uma alteração ou uma nova
funcionalidade como um novo projeto. Encarava como manutenção
evolutiva mesmo, como se: “eu vou corrigir isso aqui, isso aqui e
fazer isso aqui a mais
8:6 Essa aí foi outra forma de que nós Essa aí foi outra forma de que nós pudéssemos falar e realmente
pudéssemos falar e realmente essa d… essa demanda que nós temos, em termos de necessidade,
pudesse chegar até a parte operacional, na parte de execução da
área de TI. Realmente trouxe um resultado muito bom. Inclusive, já
encaminho, normalmente já trata, e já dá o retorno. Todas as
demandas que eu solicitei por esse mecanismo, por essa
ferramenta (que foi através do e-mail), todos eles alcançamos os
objetivos e principalmente aquilo que agente buscava, que era
alguma implementação, alguma melhoria alguma situação de
relevância e de extrema urgência, que realmente foram todos
realizados dentro do tempo satisfatório.
11:5 E depois que a gente entregou o sistema E depois que a gente entregou o sistema aconteceram alguns erros,
aconteceram alguns erros, né?… né? Mesmo depois de entregues. Como foi resolvido esses erros
para você. Você acha que... na sua experiência como foi?
R: Foi rápido, foi prontamente.
12:10 Olha com certeza evoluiu e muito, evoluiu Olha com certeza evoluiu e muito, evoluiu muito em termos do
muito em termos do sistema,… sistema, da infra, da metodologia de trabalho e de gestão da equipe
e gestão do projeto. Hoje as entregas são previsíveis, existe
previsibilidade das entregas, o que será feito em qual versão e a
estimativa de tempo, com um sistema escalonável agora, de
acordo com a demanda, então com certeza a evolução foi muito
grande num curto espaço de tempo.
12:11 As demandas, pelo menos as que passaram As demandas, pelo menos as que passaram por mim, ou as quais
por mim, ou as quais eu tive c… eu tive ciência, eu vejo que todas foram entregues num curto
espaço de tempo. Realmente, a equipe conseguiu fazer essas
correções de uma forma muito rápida inclusive algumas outras
evoluções, então com certeza também definitivamente elas
impactam no cronograma das ações planejadas, mas infelizmente
todos ou quase todos os projetos a gente acaba tendo alguns
imprevistos. Porque uma coisa é um erro de um sistema onde não
inviabiliza trabalho outra é realmente é um erro que esteja
inviabilizando o projeto, o software, né a solução e requer uma
atualização emergencial
Categoria: Testes importam
1:140 Vários testes automatizados, geralmente de Vários testes automatizados, geralmente de unidade e integração,
unidade e integração, são… são feitos para garantir que as mudanças não corrompam a
aplicação. A CI facilita a correção de qualquer erro encontrado[88].
1:150 Para Ambler (2005) conforme Piovesan [131] Para Ambler (2005) conforme Piovesan [131] considera que a
considera que a qualidade ág… qualidade ágil desejada é resultado de várias práticas sendo elas: o
desenvolvimento iterativo e incremental, técnicas de teste ágeis,
automação de testes unitários e de regressão, métricas de
codiffcação e o trabalho colaborativo.
1:163 Profissionais de qualidade, também Profissionais de qualidade, também chamados de QA ( Quality
chamados de QA (Quality Assurance)… Assurance) ou testers passam a exercer papel dentro do time e
geralmente não desperdiçam tempo escrevendo documentação
para depois fazer testes manuais. Normalmente eles levantam os
requisitos junto ao profissional de negócio de modo que a
especificação se torna o próprio teste a medida que os
desenvolvedores vão entregando pequenos incrementos facilmente
testáveis [105].
1:164 Muitos métodos de testes surgiram e alguns Muitos métodos de testes surgiram e alguns ganharam forças de
ganharam forças de modo a s… modo a sustentar os processo baseados nos ágeis. Entre elas, vale
ressaltar os conceitos de (TDD), Acceptance Test Driven
Development (ATDD), Behavior-Driven Development (BDD) que
utilizam testes unitários para entregar funcionalidades em um
processo ágil [105].
1:165 A execução manual de um caso de teste é A execução manual de um caso de teste é rápida e efetiva, mas a
rápida e efetiva, mas a execuç… execução, atualização e repetição de um número elevado de testes
é uma tarefa cansativa que com o tempo se torna inviável. Desse
modo, é comum que os testadores não executem todos os casos a
cada mudança e daí surgem os erros, levando a prejuízo para todos
os envolvidos e diminuindo a qualidade das entregas[129].
1:166 Crispin e Gregory [64] existem alguns Crispin e Gregory [64] existem alguns motivos para se querer
motivos para se querer automati… automatizar testes, são eles: • Testes manuais são demorados; •
Testes manuais são propensos a erros; • Liberar tempo para
trabalhar melhor; • Gerar uma rede segura de testes; • Fornecer
frequente e rápido feedback; • Codiffcação guiada por testes e
exemplos podem ir mais longe; • Testes fornecem documentação;
• Retorno sobre o investimento.
1:168 O momento para criação de testes O momento para criação de testes automatizados varia de acordo
automatizados varia de acordo com a e… com a experiência e conhecimento da equipe [120], muitas vezes a
prioridade está na velocidade da entrega, mesmo que seja
necessário abrir mão da qualidade e de outros atributos.
1:171 Entretanto, construir uma suíte de testes Entretanto, construir uma suíte de testes automatizados, requer
automatizados, requer padron… padronização de 60 atividades, arquitetura que suporte os testes e
conhecimento em codificação e análise por parte do testador. Para
fazer testes de unidade, é necessário entender sobre o código, se
for teste de sistema deve-se conhecer as regras de negócio e os
resultados esperados.
Além disso, conhecer bem os cenários evita a construção de casos
de testes repetidos e quais testes devem ser de fato automatizados
pois o trabalho para mantê-los atualizados já é bastante grande
[120].
3:30 do jeito que tá assim, por exemplo, iniciar o do jeito que tá assim, por exemplo, iniciar o processo de teste de
processo de teste de apl… aplicação aí que tem 3, 4 anos que ela tá aí eu acho que, teria que
talvez a gente teria que, ter começado o teste ao contrário. Sei lá,
assim, a gente queria começar a fazer os testes unitários ali para
saber se o código está ok, aí eu não sei porque para funcionar o
processo eu acho que tem que começar primeiro do teste.
3:31 A gente se desenvolve baseado em testes, A gente se desenvolve baseado em testes, primeiro você vai ali
primeiro você vai ali planeja… planejando seu teste tal e depois você cai na implementação.
Agora testar uma coisa que já tá disponível, talvez, a gente teria
que ter outra coisa
3:32 Eu acho que é importante fazer esses testes Eu acho que é importante fazer esses testes é mesmo que o
é mesmo que o desenvolvedo… desenvolvedor que está programando e vai testando ao mesmo
tempo, vai testando a interface,
3:33 mas o papel do teste é importante assim mas o papel do teste é importante assim teria que ter mesmo
teria que ter mesmo porque é… porque é uma coisa muito cansativa também como a gente não tem
o processo desenvolvimento iniciado voltado ao teste no caso
dessas aplicações rodando, assim para quem tá desenvolvendo é
uma coisa tediosa
3:34 do jeito que está hoje está quase do jeito que está hoje está quase compensando pedir para o
compensando pedir para o usuário ges… usuário gestor testar, falar para ele assim: “entra aí no ambiente e
faz uns testes aí”
7:13 E: E sua opinião sobre os testes? Tem E: E sua opinião sobre os testes? Tem alguma?
alguma? 9:15 R: Importantíssimo… 9:15 R: Importantíssimos e uma coisa que eu acho assim que em
alguns projetos lá a gente, meio que fica como lições aprendidas, é
que às vezes a gente precisa caprichar mais um pouquinho mais no
teste interno mesmo antes de passar para o usuário testar às vezes.
7:14 Eu acho que se a gente conseguir melhorar Eu acho que se a gente conseguir melhorar Esse aspecto vai trazer
Esse aspecto vai trazer mais… mais qualidade ainda para nossos entregas.
11:2 Eu achei bacana também a forma de Eu achei bacana também a forma de acompanhamento. Fiz os
acompanhamento. Fiz os testes. Você… testes. Você perguntou dos testes. Todos os testes
que me foram passados eu fiz. Inclusive, depois que teve algum
erro eu entrei em contato e tive o suporte necessário então foi
tranquilo
11:3 isso foi extremamente importante porque no isso foi extremamente importante porque no início a gente tinha
início a gente tinha pensa… pensado de um jeito e acabou mudando para outra forma, que a
gente viu no teste e que precisava ser de outra forma.
Categoria: O que se espera do processo
1:64 apresenta que grande parte das melhorias apresenta que grande parte das melhorias propostas no MPS.BR
propostas no MPS.BR podem se… podem ser alcançadas utilizando-se Scrum: 67% dos resultados
esperados pelo MPS.BR são atendidos pelo Scrum, 25% são
parcialmente atendidos, contra apenas 8% dos resultados que não
são atendidos. Fonte [54]
1:68 A aplicação de ágeis no Governo brasileiro é, A aplicação de ágeis no Governo brasileiro é, em sua maioria, bem-
em sua maioria, bem suce… sucedida e, normalmente, conduzida em combinação com outras
abordagens ágeis de desenvolvimento de software ou, em sua
maioria, uma combinação de ágeis com métodos tradicionais Fonte
[1]
1:69 A escolha do Kanban se 13deu pela A escolha do Kanban se deu pela capacidade de adaptação às
capacidade de adaptação às frequent… frequentes mudanças nas requisições de manutenção de software
pelo órgão junto ao fornecedor, prestador de serviços de
manutenção. Fonte [59]
1:70 Os resultados permitiram constatar que o Os resultados permitiram constatar que o novo processo atenuou
novo processo atenuou proble… problemas, diminuiu a resistência as mudanças, e contribuiu para
aumentar a satisfação dos envolvidos. Fonte [57]
1:73 Após a aplicação do modelo, constataram Após a aplicação do modelo, constataram que os indicadores de
que os indicadores de desempe… desempenho melhoraram, assim como a satisfação dos clientes.
Fonte [58]
1:75 os autores, as motivações para a adoção de os autores, as motivações para a adoção de ágeis incluem: (1) uma
ágeis incluem: (1) uma ent… entrega rápida de valor ao cliente; (2) uma maior colaboração entre
TI e negócios; (3) uma maior satisfação do cliente. Além disso, os
autores [57]
chamam a atenção para um fato novo: (4) aumento na
moral da equipe de TI do governo, reduzindo a dependência de
empresas contratadas. Fonte [58]
1:77 (1) comunicação entre os membros da (1) comunicação entre os membros da equipe de desenvolvimento,
equipe de desenvolvimento, bem com… bem como, entre desenvolvedores e clientes; (2) aprendizado de
novas tecnologias; (3) qualidade do produto; (4) visibilidade do
projeto; (5) produtividade das equipes; (6) redução de custos; (7)
capacidade de gerenciar as mudanças e as prioridades; e (8)
conformidade com exigências burocráticas do Governo. Fonte [58]
1:84 De acordo com April [38]
, para uma De acordo com April [38]
, para uma organização ser considerada
organização ser considerada madura… madura é necessário que ela tenha instituído o seu processo de
manutenção de software.
1:134 Embora os métodos ágeis sejam cada vez Embora os métodos ágeis sejam cada vez mais comuns, muitas
mais comuns, muitas Organizaçõe… Organizações não conseguiram alcançar os benefícios de CI/CD
devido ao distanciamento entre equipes de desenvolvimento e
infraestrutura, fato motivador para que o DevOps se desenvolvesse
[85]
6:1 E: Na sua opinião, dado o contexto TJGO e E: Na sua opinião, dado o contexto TJGO e recomendações do
recomendações do CNJ, o que… CNJ, o que se espera de um processo de software ?
2:50 R: Espera-se um planejamento.
6:2 planejamento da demanda, um alinhamento planejamento da demanda, um alinhamento estratégico da
estratégico da instituição, u… instituição, um alinhamento estratégico c
6:4 ter um planejamento melhor na parte de ter um planejamento melhor na parte de desenvolvimento para
desenvolvimento para alcançar u… alcançar uma prestação jurisdicional mais eficaz.
6:5 o sistema tem que garantir também que o sistema tem que garantir também que essas regras estão bem
essas regras estão bem tratadas… tratadas e que não vá ter nada prejudicial ao usuário em si.
Categoria: Fatores que favorecem
1:83 por meio da Resolução nº 211/2015, [60]
, por meio da Resolução nº 211/2015, [38]
, tem o propósito de
tem o propósito de avaliar a… avaliar anualmente o nível de cumprimento das diretrizes estraté-
gicas e evolução dos viabilizadores da Governança, Gestão e
Infraestrutura de Tecnologia da Informação e Comunicação (TIC)
do Poder Judiciário [39]
.
1:86 Em 2001 o Manifesto Ágil [63]
trouxe consigo Em 2001 o Manifesto Ágil [63]
trouxe consigo os princípios para
os princípios para desenv… desenvolvimento ágil de software que ganhou popularidade no
mundo todo e vem ajudando os engenheiros de software a
atingirem as expectativas dos clientes. Ele trouxe consigo, além de
outros princípios, aqueles que favorecem a manutenção
1:88 Pressman[66]
salienta que: “não é raro uma Pressman[66]
salienta que: “não é raro uma organização de
organização de software de… software despender de 60% a 70% de todos os recursos com
manutenção de software”.
1:136 Laukkanen et al. [87]
realizaram uma revisão Laukkanen et al. [87]
realizaram uma revisão da literatura em que
da literatura em que consta… constatou sete principais problemas para emprego de CI/CD, cinco
deles estão relacionados às diferentes atividades de
desenvolvimento de software: projeto da arquitetura, projeto do
sistema, integração, testes e entregas. Os outros dois não estão
conectados a nenhuma parte individual e são: fatores
humanos/organizacionais e de falta de recursos. A maioria dos
problemas se concentram na integração e nos testes.
4:4 Eu penso que nesses dez anos, acabou que Eu penso que nesses dez anos, acabou que a gente cresceu junto
a gente cresceu junto com a… com a informática. A informática foi crescendo e em 2007 é que
entraram mais pessoas.
4:9 ? A medida que a demanda vai aumentando A medida que a demanda vai aumentando e se não tem pessoas
e se não tem pessoas suficien… suficientes, aí surge a necessidade de ter um processo.
4:11 eu acho que a demanda que faz surgir a eu acho que a demanda que faz surgir a necessidade da definição
necessidade da definição do pr… do processo
4:28 Como não tem uma rotatividade tão grande Como não tem uma rotatividade tão grande de gente,
de gente,
12:1 o CNJ está trabalhando de uma forma de o CNJ está trabalhando de uma forma de pouco a pouco unificar a
pouco a pouco unificar a justiç… justiça brasileira.
12:2 E a outra coisa que eles também deixou E a outra coisa que eles também deixou muito claro, o desejo
muito claro, o desejo deles, é… deles, é que não faça uso de tecnologias privadas, condicionando o
tribunal a uma tecnologia existente (detentora somente por parte de
uma empresa).
12:6 Durante a gestão passada então, a gente Durante a gestão passada então, a gente trabalhou muito com
trabalhou muito com esse foco… esse foco normativo e início de uma implantação nova de cultura.
Categoria: O que se espera do processo
1:64 apresenta que grande parte das melhorias apresenta que grande parte das melhorias propostas no MPS.BR
propostas no MPS.BR podem se… podem ser alcançadas utilizando-se Scrum: 67% dos resultados
esperados pelo MPS.BR são atendidos pelo Scrum, 25% são
parcialmente atendidos, contra apenas 8% dos resultados que não
são atendidos. Fonte [54]
1:68 A aplicação de ágeis no Governo brasileiro é, A aplicação de ágeis no Governo brasileiro é, em sua maioria, bem-
em sua maioria, bem suce… sucedida e, normalmente, conduzida em combinação com outras
abordagens ágeis de desenvolvimento de software ou, em sua
maioria, uma combinação de ágeis com métodos tradicionais Fonte
[1]
1:69 A escolha do Kanban se 13deu pela A escolha do Kanban se deu pela capacidade de adaptação às
capacidade de adaptação às frequent… frequentes mudanças nas requisições de manutenção de software
pelo órgão junto ao fornecedor, prestador de serviços de
manutenção. Fonte [59]
1:70 Os resultados permitiram constatar que o Os resultados permitiram constatar que o novo processo atenuou
novo processo atenuou proble… problemas, diminuiu a resistência as mudanças, e contribuiu para
aumentar a satisfação dos envolvidos. Fonte [57]
1:73 Após a aplicação do modelo, constataram Após a aplicação do modelo, constataram que os indicadores de
que os indicadores de desempe… desempenho melhoraram, assim como a satisfação dos clientes.
Fonte [58]
1:75 os autores, as motivações para a adoção de os autores, as motivações para a adoção de ágeis incluem: (1) uma
ágeis incluem: (1) uma ent… entrega rápida de valor ao cliente; (2) uma maior colaboração entre
TI e negócios; (3) uma maior satisfação do cliente. Além disso, os
autores [57]
chamam a atenção para um fato novo: (4) aumento na
moral da equipe de TI do governo, reduzindo a dependência de
empresas contratadas. Fonte [58]
1:77 (1) comunicação entre os membros da (1) comunicação entre os membros da equipe de desenvolvimento,
equipe de desenvolvimento, bem com… bem como, entre desenvolvedores e clientes; (2) aprendizado de
novas tecnologias; (3) qualidade do produto; (4) visibilidade do
projeto; (5) produtividade das equipes; (6) redução de custos; (7)
capacidade de gerenciar as mudanças e as prioridades; e (8)
conformidade com exigências burocráticas do Governo. Fonte [58]
1:84 De acordo com April [38]
, para uma De acordo com April [38]
, para uma organização ser considerada
organização ser considerada madura… madura é necessário que ela tenha instituído o seu processo de
manutenção de software.
1:134 Embora os métodos ágeis sejam cada vez Embora os métodos ágeis sejam cada vez mais comuns, muitas
mais comuns, muitas Organizaçõe… Organizações não conseguiram alcançar os benefícios de CI/CD
devido ao distanciamento entre equipes de desenvolvimento e
infraestrutura, fato motivador para que o DevOps se desenvolvesse
[82]
6:1 E: Na sua opinião, dado o contexto TJGO e E: Na sua opinião, dado o contexto TJGO e recomendações do
recomendações do CNJ, o que… CNJ, o que se espera de um processo de software ?
2:50 R: Espera-se um planejamento.
6:2 planejamento da demanda, um alinhamento planejamento da demanda, um alinhamento estratégico da
estratégico da instituição, u… instituição, um alinhamento estratégico c
6:4 ter um planejamento melhor na parte de ter um planejamento melhor na parte de desenvolvimento para
desenvolvimento para alcançar u… alcançar uma prestação jurisdicional mais eficaz.
6:5 o sistema tem que garantir também que o sistema tem que garantir também que essas regras estão bem
essas regras estão bem tratadas… tratadas e que não vá ter nada prejudicial ao usuário em si.
Apêndice F
193
TERMO DE COMPROMISSO
Esta pesquisa integra parte do trabalho de coleta de dados para conclusão do curso
de mestrado no Programa de Pós-graduação em Computação Aplicada da Universidade
de Brasília (UNB). Trata-se de um programa que, entre outros objetivos, tenta levar
possíveis soluções para dentro das empresas, principalmente empresas públicas, através
do rigor acadêmico do mestrado.
Pretende-se com essa entrevista obter dados que evidenciem as atividades de processo
de software desempenhadas dentro do TJGO. Serão inspecionados aspectos referentes
às dificuldades encontradas, tecnologias utilizadas, benefícios conseguidos e perfil das
partes envolvidas para lidar com manutenções de software.
Trata-se de uma pesquisa na qual as preocupações quanto ao anonimato, confiden-
cialidade e ética estão em primeiro lugar. Você está sendo convidado a participar por
livre vontade e poderá deixar de participar a qualquer momento, sem prejuízo. As res-
postas serão tratadas com finalidade única e exclusiva de se entender os fenômenos que
envolvem a Engenharia de Software.
Entretanto, é importante esclarecer que trata-se de uma pesquisa que se tornará
pública, faz uso da ferramenta de videoconferência Zoom, e possui perguntas que serão
gravadas e transcritas, que se forem bem analisadas podem dar indícios de autoria. Desse
modo, compete ao entrevistado a responsabilidade sobre as informações prestadas e ao
entrevistador a cautela quanto às perguntas.
A transcrição será anexada ao trabalho final e o(a) senhor(a) receberá uma cópia por
e-mail.
O tempo de resposta aproximado será de 10 min.
194
PERGUNTAS PARA EQUIPE DE TI
Solicitar apresentação:
Qual a formação ? Qual o cargo ? Quanto tempo de serviço no TJ ?
1 - Na sua opinião por que a DES ainda não possui um processo de software bem
definido ?
- estimular a fala sobre: os porquês do RUP não ter dado certo
- estimular a fala sobre: o Redmine e sobre o Kanban
Solicitar apresentação:
Qual a função ? Qual a lotação atual ? Quanto tempo de serviço no TJ ?
1- Gostaria que você falasse um pouco sobre o projeto que fizemos juntos, se gostou
de participar, se viu diferença com outros projetos de software que já tenha participado
no TJGO?
- estimular a fala sobre: os ambiente de testes, relatório de acompanhamento, reu-
niões de apresentação desde o começo.
195
PERGUNTAS PARA OS DIRETORES
Solicitar apresentação:
Qual a função ? Qual a lotação atual ? Quanto tempo de serviço no TJ ?
2 - Na sua opinião, por que a DES ainda não possui um processo de software bem
definido (Resolução 119/2019)?
- estimular a fala sobre: as principais dificuldades, outras tentativas não deram certo.
196
Apêndice G
197
TRANSCRIÇÃO DA ENTREVISTA REALIZADA COM O DIRETOR DE
TI
14/06 13h
Vide Termo de Compromisso no APÊNDICE F.
14/06 13h
Vide Termo de Compromisso no APÊNDICE F.
199
TRANSCRIÇÃO DA ENTREVISTA REALIZADA COM O USUÁRIO
GESTOR 1
11/06/2021 - 15h
Vide Termo de Compromisso no APÊNDICE F.
11/06 - 17 h
Vide Termo de Compromisso no APÊNDICE F.
202
TRANSCRIÇÃO DA ENTREVISTA REALIZADA COM O ANALISTA
“A”
10/06/2021 12:00h
Vide Termo de Compromisso no APÊNDICE F.
10/06/2021 13 h
Vide Termo de Compromisso no APÊNDICE F.
10/06/2021 14h
Vide Termo de Compromisso no APÊNDICE F.
10/06/2021 -16h
Vide Termo de Compromisso no APÊNDICE F.
207
A seguir, serão apresentados dois modelos que podem apoiar a evolução de um pro-
cesso de manutenção de sistemas. Primeiro, apresenta-se o modelo Mantus que, com
base na ISO 25010, identifica atributos que influenciam na manutenção desde o mo-
mento do desenvolvimento do sistema e adiante, apresenta-se o modelo de maturidade
SMmm de melhoria contínua em manutenção de software.
• modularidade;
• reutilização;
Mantus não descreve como fazer e sim o quê fazer e, desse modo, pode ser implemen-
tado de diferentes formas. Esse modelo estabelece a relação entre seus processos em duas
perspectivas: de forma geral e independente para características de manutenção e espe-
cífica para cada uma das cinco sub características de manutenção: modularidade (M),
reusabilidade (R), capacidade para ser analisado (CA), capacidade para ser modificado
(CM) e capacidade para ser provado (CP). Para cada sub característica, se estabelecem
práticas bases, atividades, necessárias para atingir os resultados esperados.
• ISO/IEC14764;
• IEEE1219;
• ISO/IEC12207;
• CMMI;
• SWEBOK.
A partir dessa revisão sistemática, April et al.[13] apresentaram o modelo SMmm que
aborda atividades de manutenção de software que ajudam a identificar pontos de melho-
rias no processo de manutenção. O SMmm funciona como um complemento para o pro-
cesso de melhoria contínua proposto no Capability Maturity Model Integration (CMMI).
Esse modelo agrupa os processos de manutenção em três grupos: Processos Primários,
processos de suporte para apoiar os processos primários e processos organizacionais.
O SMmm também recebe insumos e faz referência a outros seis modelos de ma-
turidade e melhores práticas de publicações que consideram uma variedade de tópicos
relacionados à manutenção de software [13]:
• Serviço de TI CMM.
De acordo com April et al. [13] sempre que apresentavam o modelo SMmm em confe-
rências eles eram questionados se tal pesquisa era realmente necessária, visto que existem
outros modelos, como o próprio CMMI, que já abordam a manutenção de software. Para
responder a essa pergunta, eles explicavam que as atividades são exclusivas dos mante-
nedores e não fazem parte dos processos de desenvolvimento de software. Quando essas
atividades de manutenção exclusivas são comparadas com o conteúdo do modelo CMMI,
pode-se observar que o modelo CMMI, com seu foco principal no gerenciamento de pro-
jetos, não aborda explicitamente os problemas específicos da manutenção de software.
Desse modo, o SMmm foi projetado como um modelo de referência complementar ao
CMMI. Isso é útil porque, embora existam atividades diferentes, algumas são comuns
para desenvolvedores e mantenedores como, por exemplo:
• Definição de processo;
• Codificação;
• Teste;
• Gerenciamento de configurações; e
• Garantia da Qualidade.
Manter um alinhamento também é importante para que aqueles que já usam o CMMI
possam reconhecer e usar a estrutura do modelo de maturidade proposto. A arquitetura
do SMmm difere um pouco da versão CMMI, mas as diferenças mais significativas são:
• Transição de software;
• suporte operacional;
Segundo seus autores, April at al. [13], o SMmm é um modelo focado no cliente. O
objetivo final dos programas de melhoria com resultado da aplicação do SMmm é uma
maior satisfação do cliente em vez de rígida conformidade com padrões referenciados por
esse modelo representando para as organizações/clientes:
De acordo com April et al. [13], atingir uma maior maturidade em manutenção pode
resultar em:
• menores custos de manutenção e suporte;
215
A seguir, serão apresentadas conceitos sobre as técnicas de testes que a comunidade
ágil tem adotado. Primeiro apresenta-se o TDD, uma técnica que tem ganhado popula-
ridade com os métodos ágeis, em especial aos adeptos do Extreme Programming (XP),
em seguida ATDD, BDD e motivos para se automatizar os testes.
2. Escrever um teste que cumpra uma pequena tarefa da história do usuário e executar
esse teste. Em seguida produzir um teste que falhe;
Ao escrever os testes antes do desenvolvimento faz com que se tenha maior foco
nos requisitos e seus resultados, evitando assim que os testes sejam enviesados. Este
método traz benefícios como: aumento da qualidade, produtividade além da redução de
envolvimento humano em atividades manuais e repetitivas [107, 126].
Entretanto, embora o TDD seja uma prática sugeria para se alcançar qualidade de
software utilizando métodos ágeis, ela ainda está longe de ser uma prática amplamente
utilizada [127, 128].
K.0.2 ATDD (Acceptance Test Driven Development)
ATDD foca na qualidade externa do software, requer a participação do cliente para for-
necer histórias de usuários finais à equipe de desenvolvimento/teste. Essas histórias são
refinadas em testes de aceitação que conduzem o processo de desenvolvimento. Consiste
dos seguintes passos [107]:
1. Escrever um cenário;
2. Rodar o cenário que falha;
• Background: Descreve um cenário inicial que será executado antes de cada cenário;
a cada mudança e daí surgem os erros, levando a prejuízo para todos os envolvidos e
diminuindo a qualidade das entregas[129].
Nos últimos anos a disponibilidade, o nível das ferramentas de testes e a preocupação
com a qualidade aumentaram em toda indústria [102].
De acordo com Crispin e Gregory [64] existem alguns motivos para se querer auto-
matizar testes, são eles:
222
Nº Processo PROAD: 202004000223041
PODER JUDICIÁRIO
Tribunal de Justiça do Estado de Goiás
CORREGEDORIA-GERAL DA JUSTIÇA
Gabinete do 3º Juiz Auxiliar
PARECER Nº 000629/2020
Assinado digitalmente por: ALDO GUILHERME SAAD SABINO DE FREITAS, JUIZ DE DIREITO, em 12/05/2020 às 12:23.
Para validar este documento informe o código 309774875878 no endereço https://proad-v2.tjgo.jus.br/proad/publico/validacaoDocumento
Nº Processo PROAD: 202004000223041
Manifesto.
Assinado digitalmente por: ALDO GUILHERME SAAD SABINO DE FREITAS, JUIZ DE DIREITO, em 12/05/2020 às 12:23.
Para validar este documento informe o código 309774875878 no endereço https://proad-v2.tjgo.jus.br/proad/publico/validacaoDocumento
ASSINATURA(S) ELETRÔNICA(S)
Tribunal de Justiça do Estado de Goiás
Para validar este documento informe o código 309774875878 no endereço https://proad-v2.tjgo.jus.br/proad/publico/validacaoDocumento