experiência em modernização rápida de um sistema...

32
Experiência em Modernização Rápida de um Sistema Legado Arllen Lira, Marcos Gomes, Clodoaldo Ferreira X Simpósio Brasileiro de Qualidade de Software – X SBQS Curitiba – PR / Jun 2011 Processamento de Dados Amazonas S/A

Upload: lequynh

Post on 13-Nov-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

Experiência em Modernização Rápida de um Sistema Legado

Arllen Lira, Marcos Gomes, Clodoaldo Ferreira

X Simpósio Brasileiro de Qualidade de Software – X SBQS

Curitiba – PR / Jun 2011

Processamento de Dados Amazonas S/A

Agenda •  Introdução; • Contexto; •  Sistema Consigweb; • Motivação; • Utilização de TDD; • Resultados Obtidos; • Conclusão

Introdução

As evoluções das tecnologias que envolvem os sistemas computacionais são constantes. Para que o ciclo de vida de um sistema seja prolongado e se evite a deterioração do software, é essencial que as manutenções realizadas acompanhem tais evoluções, e, em certo momento pode-se identificar a possibilidade de troca de alguma das tecnologias para que se garanta a funcionalidade daquele produto. A isto se dá o nome de Modernização de Software [GARDNER, 2006]

Introdução

•  Projeto de modernização de um produto; •  Necessidade do prolongamento do ciclo de vida do

sistema; •  Migração de tecnologia proprietária para tecnologias

baseadas em software livre; •  Utilização de desenvolvimento orientado a testes;

Contexto do Ambiente

•  Processamento de Dados Amazonas S/A – PRODAM; Empresa pública de economia mista responsável pela prestação de serviços especializados de informática aos órgãos da administração pública estadual;

• A área onde a experiência foi desenvolvida foi a

Fábrica de Software - PRODAM

Sistema Consigweb

• O ConsigWeb é o sistema que controla os empréstimos consignados dos servidores públicos do Estado do Amazonas, atendendo órgãos estaduais e municipais.

Sistema Consigweb

• Originalmente desenvolvido em 2004; •  Sistema utiliza uma arquitetura baseada em

serviços, onde a camada de aplicação (software Web) faz requisições à camada de serviços (Mainframe), responsável pelo controle e armazenamento das informações.

Sistema Consigweb Arquitetura do Sistema:

Motivação

• A tecnologia usada na camada de aplicação utiliza o conjunto de biblioteca ASP não orientada a objeto, resultando em um código pouco coeso e muito acoplado. Este fato dificulta a m a n u t e n ç ã o e c r i a ç ã o d e n o v a s funcionalidades, o que muitas vezes introduz novos erros em lugares imprevisíveis do sistema;

Motivação

• A empresa pública responsável pelo sistema adotou as tecnologias Java como padrão, o que dificulta as manutenções pela escassez de desenvolvedores ASP;

Motivação

• Necessidade de novas implementações, visto que o empréstimo consignado está sujeito a alterações em suas operações de negócio.

Utilização de TDD

•  Para agilizar este processo de modernização e conseqüentemente a implementação, decidiu-se pela utilização de uma abordagem baseada em testes, visto que esta se fundamenta em um ciclo rápido de testes e codificação [BECK, 2003].

Utilização de TDD •  Foram produzidos ao todo 87 casos de teste, que foram registrados

utilizando-se a ferramenta Testlink [TestLink, 2009]

Utilização de TDD

• A descrição dos casos de teste foi uma atividade crítica crítica na modernização, pois foi necessário extrair regras de negócio diretamente do código fonte ASP, cerca de 220 arquivos, muitas vezes desorganizado e confuso.

Processo de Desenvolvimento

Processo de Desenvolvimento

Estratégia de Desenvolvimento

• O sistema foi desenvolvido por uma equipe de quatro programadores da Fábrica de Software da PRODAM, e contou com algumas práticas sugeridas pela Programação Extrema [BECK, 2004] para auxiliar no seu desenvolvimento;

•  Fases pequenas, posse coletiva do código,

projeto simples , refatoração, integração contínua e reuniões em pé.

Estratégia de Desenvolvimento

• Adoção da arquitetura MVC; • Utilização do framework Struts 2; • Desenvolvimento baseado nos casos de teste

gerados; •  Para cada módulo da aplicação, foi gerada uma

classe responsável por tratar as requisições dos serviços do Mainframe.

Estratégia de Desenvolvimento

•  Exemplo de requisição ao Mainframe através de XML:

Resultados Obtidos

• A modernização do sistema transcorreu de forma rápida. Em três meses de desenvolvimento, a equipe foi capaz de reescrever toda a camada de aplicação do ConsigWeb;

• Gerou 15 mil linhas de código, distribuídas em

aproximadamente 129 classes Java e cerca de 150 arquivos JSP.

Resultados Obtidos

•  A utilização do desenvolvimento orientado a testes possibilitou uma maior ênfase na qualidade do código, diminuindo o número de erros encontrados por caso de uso;

•  Permitiu que o projeto fosse implementado de forma mais rápida, visto que o programador, ao usar como referência de implementação as especificações dos casos de teste, atendeu plenamente os requisitos do produto construído.

•  O menor número de erros ocasionou um número menor de correções e manutenções durante o processo de desenvolvimento.

Resultados Obtidos

•  A utilização do desenvolvimento orientado a testes possibilitou uma maior ênfase na qualidade do código, diminuindo o número de erros encontrados por caso de uso;

•  Permitiu que o projeto fosse implementado de forma mais rápida, visto que o programador, ao usar como referência de implementação as especificações dos casos de teste, atendeu plenamente os requisitos do produto construído.

•  O menor número de erros ocasionou um número menor de correções e manutenções durante o processo de desenvolvimento.

Resultados Obtidos

• O uso dos casos de testes como especificação da funcionalidade desonerou a especificação do sistema, sem que houvesse perda na qualidade do código produzido.

• O menor número de erros ocasionou um número

menor de correções e manutenções durante o processo de desenvolvimento.

Resultados Obtidos

Melhoria de Interface…

Interface antiga…

Interface nova !

Conclusão

•  A nova versão do sistema permite que o sistema seja mantido por qualquer equipe dentro da organização, além de já permitir o acréscimo de novas funcionalidades, agregando assim valor ao sistema.

•  A adoção da documentação baseada nos casos de

testes desonerou o tempo de análise e ainda garantiu qualidade na implementação, pois os programadores voltaram seus esforços para atender os casos de testes, diminuindo assim o número de erros (o desenvolvimento da aplicação apresentou um número menor de erros na implementação quando comparado a outros projetos desenvolvidos pela equipe).

Conclusão

• Eliminando defeitos cedo no processo normalmente evita-se longos e desgastantes períodos de manutenção posteriores em um projeto.

Referências BECK, K., (2003) “Test-Driven Development: By Example”. Addison-Wesley. Pearson Education, Kent Beck. BECK, K., (2004) Programação Extrema (XP) Explicada: Acolha as Mudanças. Porto Alegre, RS. Bookman. GARDNER, D., (2006) “Not just a nip and tuck, application modernization extends the lifecycle of legacy code assets”, ZDNet, October 24, 2006. ISO/IEC 9126 (2001) International Organization for Standardization. “Software Engineering - Product Quality”. Estados Unidos. ROSEN, M., (2006) “BPM and SOA – Where Does One End and Other Begin?”. Disponível online em http://www.cioindex.com/nm/articlefiles/69474-BpmSoA.pdf (último acesso: abril de 2010) TESTLINK Testing Tool, (2009) “TestLink Documentation. TEAMST - Home of TestLink developers Community”, http://www.teamst.org/, Novembro, 2009.

Perguntas ???

Obrigado !

Arllen Lira Desenvolvedor Especialista- PRODAM

[email protected] http://arllenlira.com

http://www.prodam.am.gov.br