Thursday, August 19, 2010

Arquitetura de Software

Os sistemas de software vêm se tornando cada vez mais essenciais à sociedade e às organizações. Dentre os fatores que impulsionaram este fato estão a evolução do hardware nas últimas décadas e a explosão do uso da Internet. Software representa atualmente um fator de competitividade para as empresas, as quais apresentam uma demanda crescente por sistemas e uma exigência de prazo e qualidade cada vez maiores. Com tudo isso, o perfil do desenvolvimento de software vai se modificando, com o foco migrando para sistemas distribuídos, mais complexos e com uma produção em grande escala. Para suportar este novo perfil do desenvolvimento de software, uma disciplina vem emergindo e ganhando importância: a arquitetura de software. A arquitetura enfatiza a organização global do sistema, definindo a sua topologia e permitindo que desenvolvedores voltem a sua atenção para os requisitos funcionais e não-funcionais que precisam ser atendidos, antes de se aterem ao projeto das estruturas de dados e algoritmos. Em outras palavras, projetar a estrutura global de um sistema emerge como um problema novo: o desenvolvimento de software orientado para arquitetura (MENDES, 2002). Diversas definições são dadas para arquitetura de software na literatura. Dentre elas, destacam-se: “Descrição dos elementos a partir dos quais os sistemas são construídos (componentes), interações entre estes elementos (conectores), padrões que guiam sua composição, e restrições sobre estes padrões” (SHAW e GARLAN, 1996). “A estrutura de componentes de um programa/sistema, seus relacionamentos, princípios e diretrizes que governam seu projeto e evolução ao longo do tempo” (GARLAN e PERRY, 1995). “A arquitetura de um sistema consiste da(s) estrutura(s) de suas partes (incluindo as partes de software e hardware envolvidas no tempo de execução, projeto e teste), da natureza e das propriedades relevantes que são externamente visíveis destas partes (módulos com interfaces, unidades de hardware, objetos), e dos relacionamentos e restrições entre elas” (D’SOUZA e WILLS, 1999). A arquitetura desempenha um papel ainda mais importante nas abordagens de engenharia de software voltadas à reutilização, como a ED, onde ela estabelece a estrutura na qual os componentes reutilizáveis do domínio são conectados e instanciados, e para a qual os novos componentes das aplicações devem apresentar compatibilidade. Neste contexto, torna-se cada vez mais evidente a necessidade do projeto arquitetural nos processos de engenharia de software.

Enjoy!

No comments: