Por ANTONIO MENDES DA SILVA FILHO

Doutor em Ciência da Computação. Docente do DIN/UEM

 

Arquitetura de Software:

Uma Nova Área em Ciência da Computação

 

Livro do autor...clique na imagem...Aproximadamente quatro décadas atrás, software constituía uma pequena porção dos sistemas computacionais e, portanto, seus custos de desenvolvimento e manutenção eram insignificantes quando comparado ao hardware. Entretanto, hoje em dia software constitui uma grande parcela dos sistemas atuais e seus custos têm crescido de forma avassaladora. Como resultado desta mudança, muitos métodos têm sido propostos objetivando melhorar o processo de desenvolvimento bem como minimizar os custos de manutenção. Este cenário torna-se pior quando sistemas complexos e de grande porte são considerados.

Para lidar com a complexidade e o tamanho de sistemas, engenheiros de software têm feito uso de princípios de projeto como, por exemplo, ocultação de informações. Contudo, à medida que os sistemas tornam-se cada vez maiores, o uso de uma disciplina deve ser enfatizado de modo a obter resultados de baixo custo e maior qualidade. Dentro deste contexto, arquitetura de software tem entrado em cena de modo a lidar com sistemas grandes e complexos. Perceba que à medida que tamanho e complexidade dos sistemas de software aumentam, o problema do projeto extrapola as estruturas de dados e algoritmos da computação. Em outras palavras, projetar a estrutura geral do sistema emerge como um problema novo. Questões estruturais envolvem organização e estrutura geral de controle; protocolos de comunicação, sincronização; atribuição de funcionalidade a componentes de projeto; escalabilidade e desempenho; seleção de alternativas de projeto. Estas questões compreendem o projeto de software a nível arquitetural.

Adicionalmente, torna-se cada vez mais evidente que processos de engenharia de software requerem projeto arquitetural de software. Primeiro, é importante ser capaz de reconhecer estruturas comuns de modo que projetistas de software possam compreender as relações existentes entre sistemas e desenvolver sistemas novos baseado em variações de sistemas antigos. Segundo, o entendimento de arquiteturas de software permite engenheiros tomarem decisão sobre alternativas de projeto. Terceiro, uma descrição arquitetural do sistema é essencial para analisar e descrever propriedades de um sistema complexo. Quarto, o conhecimento de notações para descrever arquiteturas possibilita engenheiros apresentarem novos projetos de sistemas a outros membros de uma equipe de desenvolvimento.

Dentro deste contexto, um dos atributos chave para se alcançar maturidade em uma disciplina de engenharia é o uso rotineiro de soluções existentes no desenvolvimento de novos sistemas. A prototipação é largamente utilizada em projetos inovadores antes que implementações ou a aceitação de um produto aconteça.

À medida que sistemas crescem, também cresce a complexidade e torna-se mais difícil satisfazer a um número cada vez maior de requisitos bem como atender às restrições de orçamento e cronograma. Numa visão e estratégia de reuso de software, tem-se enfatizado a importância de reuso centrado na arquitetura para o desenvolvimento de software durante todo seu ciclo de vida. A efetividade do uso de arquitetura como estrutura para reuso pode ser vista através de analogias feitas com campos estabelecidos, tais como engenharia civil e química. A arquitetura de software serve como uma estrutura que permite o entendimento de componentes de um sistema e seus inter-relacionamentos, especialmente àqueles atributos que são consistentes ao longo do tempo e implementações.

Lamentavelmente, arquiteturas de software recebem pouco ou nenhum tratamento sistemático na maioria dos cursos de Ciência da Computação em nosso país, tanto a 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 pode ouvir algo sobre paradigmas arquiteturais. Entretanto, pouco ou nada tem sido feito no sentido de desenvolver habilidades para entender as arquiteturas existentes bem como desenvolver novas. Isto implica em lacunas nos currículos atuais, pois os estudantes deveriam aprender como desenvolver sistemas complexos. Todavia, as ferramentas necessárias não são apresentadas.

Sabe-se ainda que projetar e implementar sistemas de grande porte é uma atividade difícil e que demanda longo tempo de desenvolvimento. No entanto, as discussões existentes sobre o porque deste fato são incompletas. Objetivando-se atender a essas necessidades, um livro [1] sobre esse tópico apresenta os modelos emergentes de arquitetura de software bem como discute as práticas atuais.  Também, examina-se como desenvolver sistemas do ponto de vista arquitetural.

______________
[1] A.  M. Silva Filho, Arquitetura de Software, Editora Campus, 2002

ANTONIO MENDES DA SILVA FILHO

     

 


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