por ANTONIO MENDES DA SILVA FILHO

Doutor em Ciência da Computação (UFPE)

 

Arquitetura de Software – sobre a importância do reuso

 

“When we build, let us think that we build for ever.” 

John Ruskin

 

Atualmente, há no mundo quase 1(um) trilhão de linhas de código escritas em pouco mais de 500 (quinhentas) linguagens. Adicionalmente, tem-se uma variedade de plataformas e utilitários de apoio que evoluem constantemente. Concomitante a isso, a pressão do mercado para reduzir o tempo de desenvolvimento dos produtos, exige dos desenvolvedores a habilidade de construir sistemas com qualidade e requer dos gerentes de projeto a capacidade de gestão que visa garantir tanto a entrega do produto quanto a satisfação do cliente. Nesse sentido, tem havido esforços para reutilizar artefatos desenvolvidos em projetos anteriores.

O reuso de artefatos é possível quando se tem o projeto arquitetural do sistema, pois este orienta o processo de desenvolvimento, permitindo antever atributos de qualidade do sistema, além de melhor administrar o cronograma de execução do projeto.

A inserção do projeto arquitetural no ciclo de vida de desenvolvimento de software é fruto do crescimento em tamanho e em complexidade dos sistemas de software. Aqui, um aspecto essencial é a riqueza de informações oferecida pela arquitetura. Considere, por exemplo, a planta baixa de uma casa que permite qualquer pessoa visualizar os cômodos da casa, sua distribuição, acesso aos cômodos, a interligação entre eles, penetração da luz solar, circulação de ar, dentre outras características. Tudo isso fornece uma visão do todo. Uma arquitetura de software, similarmente, é uma estrutura ou conjunto de estruturas de um sistema que compreende os componentes de software, as propriedades externamente visíveis desses componentes, bem como o inter-relacionamento entre eles. 

Vale ressaltar que a arquitetura serve como um meio de comunicação entre as partes interessadas de um projeto e oferece suporte às decisões no decorrer de um projeto, estando num nível de abstração que possibilita seu reuso e transferência em sistemas. Nesse sentido, cabe destacar que a arquitetura de software:

(1) constitui um artefato reutilizável,

(2) suporta o desenvolvimento baseado em componentes e linha de produto,

(3) oferece um vocabulário de projeto,

(4) separa funcionalidades,

(5) vincula o projeto a atributos de qualidade e

(6) dispõe de mecanismos de interconexão.

Perceba que arquitetura de software é um elemento essencial em qualquer projeto de sistema de software atuando como um elo entre requisitos e código.

Dentro deste contexto, torna-se cada vez mais necessário capacitar profissionais com habilidade de construir soluções em níveis distintos de abstração. Ao organizar uma solução em níveis discretos, o profissional é capaz de concentrar-se num único aspecto da solução, desconsiderando outras questões e complexidades existentes. Assim, a capacitação de novos profissionais deve primar por apresentar técnicas de como ‘componentizar’ uma solução de modo que o sistema resultante ofereça suporte a um conjunto de atributos da qualidade.

Adicionalmente ao que foi discutido acima, cabe salientar que software é um elemento ubíquo, encontrado nas mais variadas aplicações, desde um simples jogo que roda em aparelhos celulares até caixas eletrônicos de bancos, salas de controle de tráfego de metrô e avião. A sociedade tem demandado cada vez mais sistemas que têm natureza distribuída e complexa em ambientes heterogêneos. Apesar dessa necessidade, não há, no mercado, profissionais para atender essa demanda por sistemas com qualidade. E por que isso acontece? Uma significativa parte dos profissionais que chega ao mercado não tem conhecimento de como:

(1) fazer avaliação e implantação de arquitetura de software em projetos ou sistemas,

(2) fazer análise de integração e custo de manutenção de sistemas,

(3) fazer o projeto arquitetural para desenvolvimento de código e sistema com qualidade, e

(4) fazer avaliação da qualidade do código, considerando o uso de métricas.

Onde encontrar a solução? Ela está na arquitetura de software que serve de fundamento a qualquer sistema. Arquitetura de software pode tanto permitir quanto impedir a obtenção dos atributos de qualidade de qualquer sistema de software. Atributos como desempenho, segurança, confiabilidade, robustez e usabilidade são determinados pela arquitetura de software. Trata-se, portanto, de uma área do conhecimento de suma importância, pois ela:

(1) serve como veículo de comunicação entre aqueles envolvidos num projeto,

(2) contribui efetivamente para as tomadas de decisões em qualquer projeto de software e

(3) constitui uma abstração reutilizável e, portanto, transferível entre sistemas.

Todavia e lamentavelmente, arquiteturas de software recebem pouco ou nenhum tratamento sistemático na maioria dos cursos de Computação e correlatos, tanto no nível de graduação quanto de pós-graduação. Quando muito, estudantes são expostos a uma ou duas arquiteturas de aplicação (tais como para um compilador ou para partes de um sistema operacional) e podem ‘ouvir’ algo sobre paradigmas arquiteturais. Pouco ou quase nada tem sido feito no sentido de desenvolver habilidades de arquiteto de software. Portanto, torna-se necessário capacitar novos profissionais e reciclar aqueles que já estão no mercado de trabalho mostrando como arquitetura de software pode ser usada na prática, destacando:

(Práticas de) Como um arquiteto de software pode organizar o código de um sistema

Como um arquiteto avalia e implanta arquiteturas de software em projetos e sistemas

Como um arquiteto de software atua no processo de desenvolvimento de software

Como um arquiteto avalia a qualidade do código baseada métricas de produto

Como reduzir custos de manutenção e amortizar custos de desenvolvimento

Como obter benefícios decorrentes de um projeto bem arquitetado

 

 

Leitores interessados no tópico podem encontrar mais informações no sites:

http://www.wwisa.org/wwisamain/index.htm

http://www.sei.cmu.edu/architecture/sat_init.html

http://www-306.ibm.com/software/rational/

http://www.sharedinsights.com/networks/ea/

http://www.espacoacademico.com.br/016/16amsf.htm

 

por ANTONIO MENDES DA SILVA FILHO

   

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

 

clique e acesse todos os artigos publicados...  

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