Por ANTÔNIO MENDES DA SILVA FILHO

Doutor em Ciência da Computação

 

Sistemas de Software Evolutivos

 

Introdução

Diversas instituições dos mais variados segmentos têm utilizado a WWW (World-Wide Web) a fim de disponibilizar informações, prover serviços, comunicar-se com clientes, dentre outras coisas. Essa categoria de sistemas baseados na Web e orientados a clientes tem como requisitos de suma importância: facilidade de manutenção, disponibilidade de serviços e confiabilidade operacional. Isto se deve, em parte, a necessidade de oferecer serviços de forma ininterrupta aos clientes, além de possibilitar fácil modificação e atualização dos serviços [Umar97, Connalen00]. Entretanto, em sistemas orientados para Web, questões como consistência, segurança e distribuição encontram-se espalhadas em vários componentes do sistema, o que dificulta qualquer modificação em pontos específicos.

A classe de sistemas orientado para Web requer a disponibilidade de serviços 24 horas por dia, 7 dias por semana, além do fácil suporte às modificações a fim de atender necessidades de novos negócios e demandas de clientes. Cabe salientar que o projeto desses sistemas deve prover suporte para evolução rápida e confiável. Entretanto, os esforços para a construção de sistemas orientados para Web têm se concentrado mais no desenvolvimento, sem focalizar simultaneamente o apoio à evolução desses sistemas. Nesse sentido, tem-se observado que o nível de abstração concebido para um modelo arquitetural evolutivo, expresso e implementado precisa ser elevado e que o desenvolvimento de sistemas dessa natureza devem explicitamente fazer uso dessas abstrações a fim de lidar com modificações antecipadas e não antecipadas.

Atualmente, os sistemas orientados para Web fazem reuso de frameworks e componentes, tais como browsers, servidores e objetos de negócios, o que resulta num menor esforço de codificação. Todavia, isto requer que os profissionais de informática dediquem uma maior parcela de tempo para compreender uma ampla variedade de conhecimento de linguagens de programação, linguagens de scripting e bibliotecas de objetos. Nesse sentido, é importante ressaltar que esta abordagem difere daquela predominante no passado, onde o conhecimento de uma linguagem de programação, biblioteca de objetos e sistema operacional era suficiente. Hoje em dia, quando há uma proliferação de sistemas orientados para Web, questões como segurança, distribuição e persistência são, em geral, distribuídas em diversas estruturas o que dificulta todo e qualquer tipo de manutenção.

Adicionalmente, as diferentes formas de representação utilizadas no desenvolvimento desses sistemas também impõem dificuldades tanto a verificação quanto a validação dos mesmos, refletindo diretamente sobre a confiabilidade do sistema. Além disso, há a necessidade de capturar o processo de desenvolvimento e as decisões das tecnologias empregadas. Nesse sentido, a escolha adequada do nível de abstração no processo de desenvolvimento de software, encarregada de ‘mascarar’ diversos detalhes de variações de implementação, constitui uma forma de lidar com os problemas de explosão de conhecimento, separação de interesses, verificação, validação e agilidade. Para tanto, torna-se imprescindível priorizar os projetos arquiteturais que podem ser produzidos, modificados e validados de maneira confiável e rápida.

Assim, é possível apontar questões relacionadas à compreensão e desenvolvimento de sistemas orientados para Web. Nesse sentido, torna-se necessário definir a avaliar uma abordagem de desenvolvimento (nova) de sistemas orientados para Web que faça uso de abstrações declarativas associadas ao projeto arquitetural, permitindo ocultar detalhes de implementação bem como prover suporte à verificação, validação evolução de software. Note que um aspecto a ser a tratado é separação de interesses que pretende levar em consideração a evolução antecipada e não antecipada de software. Adicionalmente, os modelos declarativos poderão ser transformados de maneira semi-automática em múltiplas estruturas de implementação e componentes, além de poderem ser mapeados para outras formas de representação a fim de realizar verificação e validação do sistema. Para tanto, pode-se:

  • Definir e empregar uma técnica de modelagem que permita capturar a lógica e objetos de negócios, bem como mapeá-los para um formato declarativo.

  • Definir técnicas orientadas a evolução que levem em conta a separação de interesses.

  • Definir e utilizar mecanismos que permitam a transformação do modelo declarativo em formatos adequados tanto à verificação quanto a validação.

Tópicos Relacionados

Diversos exemplos relacionam declarações em XML com linguagens específicas. Uma solução de projeto poderia focar numa abordagem integrada para abstrações centradas na XML, representando arquiteturas e frameworks que iriam capturar explicitamente interesses relacionados à evolução antecipada, bem como iriam prover notações que visam facilitar modificações relacionadas à evolução não antecipada. Tais abstrações serão utilizadas para gerar os componentes operacionais do sistema e representações com o propósito de verificação e validação.

Representações Declarativas e Específicas do Domínio – Diversas linguagens de domínio específico ou DSLs (Domain-Specific Languages) são encontradas na literatura [Neighbors94]. DSLs, em geral, são declarativas, sendo consideradas como linguagens de especificação para representação de frameworks e podem ser empregadas para melhorar a manutenibilidade [Derusen98]. Cabe destacar que especificações declarativas em XML podem ser transformadas usando a XSL (Extended Stylesheet Language) [Clark05]. É importante observar que essas abordagens objetivam dar suporte a mecanismos da linguagem ao invés de prover abstrações que apóiem a evolução antecipada bem como não antecipada.

Frameworks – Frameworks orientado a objetos, em geral, lidam com modificações que podem ser antecipadas em tempo de projeto [Fayad99]. Embora frameworks implementem estruturas muito flexíveis que podem ser instanciadas para produzir aplicações, essas estruturas são comumente complexas, difícil de compreender e reutilizar. Por exemplo, no caso de um framework de interface de usuário, tem-se que ele requer um período de 6 a 12 meses para se obter um nível de produtividade elevado. Um exemplo de tratamento do problema de usabilidade de framework é apresentado em [Gamma94].

Separação de Interesses e Evolução – As pesquisas em manutenção, evolução e reengenharia têm focalizado a compreensão e análise de código fonte [Derniname99]. Notações como a UML têm sido estendidas para modelar aplicações de hipermídia orientadas para Web fazendo uso de um conjunto de estereótipos, valores rotulados e restrições. Já a pesquisa sobre a evolução não antecipada inclui técnicas baseadas na separação de interesses para estender um sistema de software. Entretanto, não há suporte declarativo para combinar interesses no desenvolvimento de frameworks e para assegurar que eles sejam combinados corretamente e não venham a corromper invariantes do sistema.

Modelagem Formal, Verificação e Validação – Na literatura, encontram-se diversas aplicações de verificação e validação formal que fazem uso de provadores de teoremas e verificação de modelos. Verificadores de modelos, tais como XMC, SMV e SPIN [Holtzman96] verificam as propriedades decorrentes do comportamento infinito de um sistema para validar como segurança, liveness e outras propriedades. As técnicas de verificação de modelo e programação lógica (Prolog – XSB [Ramakrishna97]) combinadas e as ferramentas relacionadas parecem não terem sido utilizadas para validar a evolução de sistemas tratados, levando em consideração restrições e propriedades desejadas.

Considerações Finais

O desenvolvimento de sistemas de software orientados para Web considera o reuso de componentes e frameworks, tais como browsers, servidores e outros componentes que resulta em menos linhas de código. Em tal situação, é necessário compreender e dedicar mais tempo a uma ampla variedade de detalhes de implementação relacionados a componentes, servidores e tecnologias de interconexão. Note que a equipe que desenvolve originalmente o sistema, em geral, não documenta adequadamente o sistema e as decisões de projeto e implementação associadas. Além disso, ao longo do tempo, o conhecimento associado ao desenvolvimento do sistema se perde em função da equipe migrar para outras tarefas ou instituições, o que resulta num enorme esforço de aprendizado para qualquer nova equipe devido à necessidade de analisar e compreender muitos diferentes tipos de componentes e tecnologias de interconexão. Dessa forma, tem-se que a manutenção de sistemas legados orientados para Web terá maior custo e exigirá mais tempo.

Enquanto as pesquisas atuais se concentram mais no projeto e desenvolvimento desses sistemas, a solução sugerida aqui neste texto visa agregar um modelo declarativo encarregado de tratar a separação de interesses associadas à evolução antecipada e não antecipada, bem como o projeto, desenvolvimento e validação arquitetural. Note ainda que a camada de abstração incorporada numa abordagem declarativa tem por objetivo ocultar diversos detalhes das aplicações Web atuais.

 

Clique e cadastre-se para receber os informes mensais da Revista Espaço Acadêmico

Referências

[Clark05] Clark, J., XSL Transformations (XSLT) Specification 1.0, W3C Recommendation. Acessado em Janeiro de 2005.

[Connalen00] Connalen, J., Building Web Applications with UML, Addison-Wesley, 2000.

[Derniname99] Derniame, J.C., Kaba, B.A., Wastell, D. (Eds), Software Process: Principles, Methodology, and Technology, Springer-Verlag LNCS 1500, 1999.

[Derusen98] Derusen, A., Klint, P., Little Languages: Little Maintenance, Journal of Software Maintenance, vol. 10, pp. 75-92, 1998.

[Fayad99] Fayad, M.E., Schmidt, D.C., Johnson, R.E., Domain-Specific Application Frameworks, Wiley Computer Publishing, 1999.

[Gamma94] Gamma, E., Helm, R., Johnson, R., Vlissides, J., Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley, 1994.

[Holtzman96] Holtzman, G.J., Peled, D., The State of SPIN, in Alur and Henzinger, pp. 385-389, 1996.

[Ramakrishna97] Ramakrishna, Y. S., Ramakrishna, C. R., Ramakrishna, I. V., Smolka, S. A., Swift, T. W., and Warren, D. S., Efficient Model Checking Using Tabled Resolution, in Grumberg, editor, Computer Aided Verification (CAV’97), volume 1243 of Lecture Notes in Computer Science, Haifa, Israel, Springer-Verlag, 1997.

[Umar00] Umar, A., Application (Re-)Engineering: Building Web-Based Applications and Dealing with Legacies, Prentice Hall, 1997.

clique e acesse todos os artigos publicados...

http://www.espacoacademico.com.br - Copyright © 2001-2005 - Todos os direitos reservados