O termo Arquitetura de Software foi criado a muito tempo, surgiu ao final da década de 60 por Edsger Dijkstra, mas ficou realmente conhecido na década de 90. Existem varias formas de explicar o que é Arquitetura.
Vamos dar uma olhada em algumas destas definições:
IBM:
Uma arquitetura é o conjunto de decisões significativas sobre a organização de um sistema de software, a seleção de elementos estruturais e suas interfaces, juntamente com o comportamento especificado nas colaborações entre estes elementos, a composição destes elementos em subsistemas progressivamente maiores e o estilo arquitetural que guia esta organização. (The Rational Unified Process: An Introduction).
Microsoft:
Arquitetura de Software é o processo de definição de uma solução estruturada que atende a todos os requisitos técnicos e operacionais e ao mesmo tempo aperfeiçoa atributos de qualidade padronizados como desempenho, segurança e gerenciamento. Arquitetura envolve uma série de decisões baseadas em uma vasta gama de fatores e cada uma destas decisões pode provocar um impacto considerável no sucesso ou fracasso da aplicação. (Microsoft Application Architecture Guide, 2ª edição).
IEEE:
Arquitetura é a organização fundamental de um sistema materializada em seus componentes, na relação entre eles e com o ambiente e nos princípios que guiam seu projeto e evolução. (ISO/IEC 42010:2007 Systems and software engineering – Recommended practice for architectural description of softwareintensive systems [IEE00])
Os principais objetivos da Arquitetura são:
- Reduzir os riscos para o negócio.
- Reduzir os riscos no desenvolvimento e manutenção.
- Alinhamento das expectativas entre os envolvidos.
- Garantir soluções flexíveis e de qualidade.
- Agregar valor ao negócio.
- Apoio na tomada de decisões
Qual o papel do Arquiteto:
- Definição , criação e manutenção da documentação da arquitetura com o intuito de direcionar o desenvolvimento e manutenção da solução.
- Definição da estrategia a ser adotada bem como os estilos de arquiteturas a serem adotadas.
- Garantir que os padrões e definições serão utilizados ao longo do projeto.
- Envolvimento durante todo o ciclo do projeto.
- Garantir o entendimento da arquitetura perante os envolvidos.
- Apoio técnico e de negócio aos desenvolvedores.
- Ser um mentor para todos da equipe.
Como deu para perceber a Arquitetura de software é um ponto chave para o sucesso de um projeto de software.