Escolar Documentos
Profissional Documentos
Cultura Documentos
n1 Silvafilho PDF
n1 Silvafilho PDF
1. Introduo
H, aproximadamente, quatro dcadas atrs, software constitua uma pequena seno
nfima parcela dos sistemas computacionais quando comparado ao hardware. Naquela
poca, os custos de desenvolvimento e manuteno de software eram desprezveis.
Hoje, porm, software responsvel por significativa poro dos sistemas
computacionais. Encontramos software nas mais diversas aplicaes. No uso domstico,
fazemos uso de processadores de texto e planilhas eletrnicas. Entretanto, software tem
sido elemento chave e muito utilizado em sistemas de grande porte. Podemos
exemplificar seu uso no controle e superviso dos sistemas de gerao/distribuio de
energia bem como em sistemas de telecomunicaes, onde ele encarregado do
roteamento e controle de milhares de ligaes telefnicas. Hoje em dia, empresas e
pessoas tm conseguido otimizar suas atividades, geralmente, fazendo uso de sistemas
computacionais. O computador tem se tornado um companheiro e sido uma ferramenta
fundamental em nosso cotidiano.
Todavia, ao mesmo tempo em que os sistemas computacionais tm tornado-se
quase ubquos em inmeras aplicaes, tamanho e complexidade do software tm
aumentado tanto que as tcnicas de abstrao utilizadas at o final do anos 80 (como,
por exemplo, tipos de dados abstratos, linguagens de programao de alto nvel e
tcnicas de decomposio modular) j no so mais suficientes para lidar com esses
novos problemas envolvendo o projeto de software a nvel de sistema. Isto refere-se ao
nvel de organizao de um sistema ou, mais propriamente, o nvel de arquitetura de
software.
Perceba que abstrao uma forma de lidar com a complexidade de problemas e
sistemas. Como seres humanos, costumamos reconhecer que estamos, regularmente,
reconstruindo um padro j utilizado em um contexto diferente. Exemplo disso seria a
especificao ou parte de um cdigo. Poderamos dizer que a essncia da abstrao
reconhecer um padro, atribuindo-lhe nome e definindo seu uso, e analis-lo buscando
formas para especific-lo.
Diferentemente do uso de tcnicas que empregam algoritmos, estruturas de
dados e as linguagens de programao que as implementam, o crescimento em escala
dos sistemas de software demandou notaes para conectar mdulos, tcnicas para
gerenciar configuraes e controlar verses. Entretanto, medida que os sistemas
tornavam-se maiores e mais complexos, outros fatores como, por exemplo desempenho
e qualidade, passaram a ser considerados tambm. Tais fatores esto intimamente
relacionados organizao global do sistema de software o qual ser objeto de estudo
deste artigo.
2. Evoluo Tecnolgica
1
Electronic Numeric Integrator and Computer.
2
Electronic Discrete Variable Computer.
Entretanto, pouco a pouco, software passa a constituir uma tecnologia chave,
sendo usada nas mais diversas reas, desde aplicaes financeiras e comerciais a
aplicaes complexas, tais como controle de usinas de energia e misses espaciais. Aos
poucos, a indstria de computadores passa a ser um dos ramos de negcios mais
competitivos do planeta e o componente software torna-se a fora prevalecente em
termos de inovao tecnolgica.
Apesar da importncia que esta nova tecnologia passa a ter na poca, inexiste
ferramentas oferecendo suporte ao desenvolvimento de software e pouco se conhece
sobre seu processo de desenvolvimento. Concomitante a estes fatos, as aplicaes
comeam a tornar-se maiores e mais complexas, demandando uma parcela cada vez
maior de software. Ademais, outro fator a destacar o crescente papel da manuteno.
Todos esses fatores contriburam para o surgimento da Engenharia de Software, termo
que foi cunhado numa conferncia seminal do NATO em Garmisch, Alemanha, em
1968 [Naur 69].
Baseado no que foi apresentado at aqui, tem-se que a idia bsica de arquitetura de
software aquela de que um sistema de software em elevado nvel de abstrao pode
ser descrito atravs de subsistemas ou componentes distintos, sendo estes
interrelacionados. Note quo fundamental a arquitetura de um sistema de software e
quo essencial tambm o projeto arquitetural dentro do processo de desenvolvimento
de um sistema. Perceba ainda que uma arquitetura de referncia ou base constitui um
elemento fundamental para o desenvolvimento de linhas de produo de software, onde
mltiplos sistemas com funcionalidades distintas podem ser concebidos.
Vamos tentar entender mais o seu papel. Considere a Figura 1 que ilustra um
afunilamento nas descries arquiteturais de um sistema.
decomposio da
requisitos funcionalidade
possveis arquiteturas
solues (de referncia)
arquitetura
implementao selecionada
Por outro lado, durante a implementao, decises j foram tomadas e uma nica
arquitetura implementada. Entretanto, antes da implementao de uma arquitetura, a
funcionalidade do sistema particionada a fim de identificar possveis subsistemas ou
mdulos. Isto permitir analisar os mdulos compondo o sistema bem como os
requisitos, visando encontrar ou apresentar uma arquitetura que satisfaa s
necessidades do sistema. Neste caso, as arquiteturas podem ser vislumbradas como
referncias que retratam as funcionalidades levantadas durante a decomposio
funcional, acarretando numa alocao funcional a uma descrio arquitetural. Em outras
palavras, a arquitetura de um sistema envolve a diviso de funes entre subsistemas ou
mdulos bem como os mecanismos de interao entre os mdulos e a representao da
informao compartilhada.
Alm disso, o arquiteto de software dever ter um foco nas implicaes que os
objetivos organizacionais tero sobre as opes tcnicas, isto , uma viso global do
sistema. Ele dever construir modelos para o problema em mos, buscando achar uma
soluo e explorando abordagens alternativas. Documentao imprescindvel a fim de
apresentar e discutir com os demais membros da equipe de desenvolvimento e com o
gerente responsvel pelo projeto.
A seo anterior deste texto fez uma introduo de um novo tpico de estudo,
dentro da engenharia de software, o qual visto como um aspecto crtico no projeto de
qualquer sistema de software de grande porte - a arquitetura de software -
caracterizando o nvel arquitetural do projeto de software. Arquitetura de software a
estrutura global do sistema capturada atravs da organizao deste descrita em elevado
nvel de abstrao, em termos dos elementos computacionais pertinentes e das
interaes entre esses elementos. Numa discusso sobre a evoluo tecnolgica, v-se
que ao longo das trs ltimas dcadas, a estrutura de software tem tornado-se numa das
questes de maior interesse. Apesar disto, apenas recentemente a arquitetura de
software tem surgido com novo campo de estudo para pesquisadores e profissionais de
engenharia de software. Evidncia desta tendncia visvel face grande quantidade de
trabalhos em diversas reas, tais como linguagem de interface de mdulos, arquiteturas
especficas de domnio, linguagens para descrio de arquiteturas, e padres de projeto,
temas estes explorados nos captulos subsequentes.
Um dos principais aspectos do projeto arquitetural o uso de padres de
organizao de um sistema. Muitos desses padres, tambm chamados de estilos
arquiteturais, tm sido desenvolvidos ao longo do tempo medida que projetistas de
sistemas reconhecem o valor de princpios de organizao bem como estruturas para
certas categorias de software. Assim, no captulo 2 de [Silva Filho 2002] feito a
introduo de um novo tpico de estudo apresentado um conjunto de estilos
arquiteturais. So apontados compromissos e caractersticas associadas vrias opes
de estilo arquitetural.
Finalizando, pode-se observar que a idia principal deste texto servir o leitor e
motiv-lo a conhecer uma nova rea dentro da Cincia da Computao.
Adicionalmente, busca-se apresentar uma breve retrospectiva do campo de arquitetura
de software discutindo os problemas iniciais de organizao de sistemas de software
bem como discutindo os caminhos explorados at os dias atuais.
Referncias
Garlan, D. and Perry, D., Introduction to the Special Issue on Software Architecture,
IEEE Transactions on Software Engineering, April 1995, pp. 269-274.
Naur, P., Randell, B. and Buxton, J. (Eds.), Software Engineering: A Report on a
Conference Sponsored by NATO Science Committee, NATO, 1969.
Parnas, D. L., On the Criteria To Be Used in Decomposing Systems into Modules,
Communications of the ACM, Vol. 15, No. 12, Dec. 1972, pp. 1053-1058.
Shaw, M. Larger Scale Systems Require Higher-Level Abstractions, Proc. of the
International Workshop on Software Specification and Design, Pittsburgh, PA, May
1989, pp. 143-146.
Shaw, M. and Garlan, D. Software Architecture Perspectives on na Emerging
Discipline, Prentice Hall, Upper Saddle River, New Jersey, 1996.
Silva Filho, A. M., Arquitetura de Software, Editora Campus, 2002.