Esse artigo faz parte da revista Engenharia de Software 8 edição especial. Clique aqui para ler todos os artigos desta edição

img

 

Projeto

Desenvolvimento de Software Centrado em Arquitetura

 

De que se trata o artigo:

A importância de desenvolver uma arquitetura de software robusta e que funcione como base em reuso em larga escala, e suas visões arquiteturais para demonstrar a compreensão e a organização do software para os envolvidos do projeto.

 

Para que serve:

Fornecer um meio de tornar partes do software reutilizável, flexíveis a ponto de responder as mudanças do software rapidamente e encapsular as dependências do sistema. Também serve como forma de comunicação entre os envolvidos do projeto, sejam eles gerentes, desenvolvedores ou clientes.

 

Em que situação o tema é útil:

Útil para o desenvolvimento de software quando está se pensando em reuso, flexibilidade, escalabilidade e quando queremos comunicar como está a organização do software em termos de camadas, classes, componentes e etc.

 

Atualmente, o cenário de desenvolvimento de software tem se mostrado em uma tentativa fervorosa de aproximar a parte tecnológica da parte de negócio. Isto se deve à grande demanda dos sistemas estarem cada vez mais integrados e serem flexíveis às mudanças no negócio das empresas em geral. Cada vez mais ouvimos falar sobre sistemas construídos sob a ótica de disponibilizar serviços corporativos e controlar o processo de negócio. Estou falando de SOA (Arquitetura Orientada a Serviços) e BPM (Gerenciamento de Processo de Negócio). Estas duas siglas se tornaram obrigatórias no vocabulário de equipes de desenvolvimento, gerentes de projetos e analistas de áreas de negócio dos mais variados tipos de segmentos de mercado.

Com o uso de SOA e BPM, o desenvolvimento de software não só alcançou um novo nível como também teve que adotar novas estratégias para a construção do software. Dessa forma, foi possível obter o máximo de reaproveitamento de sistemas legados para serem integrados com os novos sistemas e de reuso de regras de negócios através dos componentes e serviços de negócios. Enfim, os sistemas estão ficando cada vez mais aderentes ao negócio e respondendo de forma mais rápida às mudanças exigidas pelo mercado.

Entretanto, para se alcançar um nível de desenvolvimento desse tipo, com reuso ao extremo e bastante flexibilidade, é preciso que a equipe de desenvolvimento crie uma arquitetura adequada que possa exatamente servir como pilar para o reuso e flexibilidade às mudanças, ou seja, o desenvolvimento deve ser centrado em arquitetura. Neste artigo apresentaremos as características do desenvolvimento de software centrado em arquitetura, como suas práticas, benefícios e visões arquiteturais de uma maneira ampla, sem aprofundar muito na parte técnica.

O que é Desenvolvimento Centrado em Arquitetura?

Um desenvolvimento de software centrado em arquitetura não diz respeito apenas ao código fonte da aplicação ou qual linguagem de programação será utilizada. Podemos dizer que a arquitetura é o “universo” em que o ciclo de vida do software vive, ou seja, em um desenvolvimento centrado em arquitetura teremos o código que é o artefato mais primário, a divisão entre as camadas arquiteturais, a divisão entre os componentes de negócio, regras de integração entre as camadas, componentes e entre os sistemas (novos e legados). É importante ter em mente que a arquitetura de um sistema não serve apenas para a codificação, mas também para o direcionamento de todo o desenvolvimento do software. Tanto que existem tipos de arquitetura e perfis de arquitetos diferenciados para cada foco e momento do projeto, como apresentado abaixo.

 

Arquitetura de Sistemas

Responsável pela parte tecnológica. É a representação de um sistema na qual existe um mapeamento de funcionalidades sobre componentes de software e hardware, um mapeamento sobre arquitetura de hardware e software, e interações humanas com esses componentes. Nesta arquitetura, o perfil Arquiteto de Sistemas além de conhecer profundamente a linguagem de programação, tem como foco a integração entre os frameworks que o sistema utiliza, sejam eles já existentes no mercado ou criado pela própria equipe de desenvolvimento, e a utilização de qualquer solução tecnológica, como por exemplo: EJB, JPA, JAAS, Struts, Spring, Corba e etc. ...

Quer ler esse conteúdo completo? Tenha acesso completo