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

imagem

 

Arquitetura de Software

Ciclo de Vida da Gestão em Arquitetura de Software

Maximizando a geração de valor de projetos e produtos com arquiteturas de software

 

 

De que trata o artigo:

O artigo apresenta um ciclo de vida para a gestão das atividades de arquitetura de software em um projeto, de forma a gerar maior valor de negócios para um projeto, produto ou empresa.

 

Para que serve:

Conhecer e aplicar as atividades essenciais da arquitetura de software em um projeto, tais como: garantir o alinhamento técnico do projeto à organização, atender às restrições de custo, tempo e qualidade de um projeto, identificar e desenvolver requisitos arquiteturalmente significativos, antecipar e mitigar riscos técnicos, realizar a análise e desenho arquitetural, construir provas de conceito, gerar código executável, orientar e acompanhar o time técnico, validar a estabilidade da arquitetura executável e coletar lições aprendidas para o próximo ciclo de atividades arquiteturais.

 

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

No desenvolvimento de projetos de software não triviais, na montagem de novos produtos, na evolução de tecnologias de produtos, em manutenções evolutivas complexas e, sobretudo, em esforço de aumento de alinhamento das ações de TI com as áreas de negócio de uma organização.

 

 

A arquitetura de software é uma área recente dentro da engenharia de software, tendo seus primórdios na literatura no começo da década de 90.  Não obstante, ela tem obtido cada vez mais visibilidade nos projetos de TI no Brasil. É cada vez mais comum que empresas e projetos tenham pessoas ou times exercendo o papel do arquiteto de software e atividades em cronogramas relacionadas ao desenho de uma arquitetura de software. Mas o que é a arquitetura de software e quais são as atividades que devem ser realizadas pelo arquiteto de software? A arquitetura é uma atividade puramente técnica? Criar uma arquitetura de software é apenas modelar diagramas e implementar provas de conceito? A arquitetura de software produz realmente valor de negócio para um projeto? E como poderíamos organizar as atividades de arquitetura de software para gerar valor concreto para um projeto, produto ou organização?

Este artigo endereça estas e outras questões sobre as atividades de arquitetura de software e propõe um ciclo de vida para organização e ordenação temporal destas atividades em projetos de software de qualquer natureza, com o uso de qualquer tipo de processo de software.

À primeira vista, podemos imaginar que arquitetar um software é escolher que tecnologias um projeto irá adotar, como por exemplo, Java EE ou .NET. Esta visão míope, difundida por “arquitetos empilhadores de frameworks”, não pode estar mais longe da realidade. Em uma segunda análise, podemos imaginar que a arquitetura de software consiste de montarmos modelos em linguagens sofisticadas como UML2. Esta visão estrábica difundida por “arquitetos de papel” também está bem longe da verdade.

Coloquemos lentes de correção na visão de arquitetura de software, que foi inicialmente delineada no excelente livro Software Architecture: Perspectives on an Emerging Discipline, ainda em 1996. A arquitetura de software tem por objetivo fazer o melhor uso dos recursos técnicos de um projeto para garantir a maior eficiência possível aos objetivos do projeto, produto e mesmo à visão e missão de uma empresa.

Podemos identificar, nesta visão, atividades tais como:

·         garantir o alinhamento técnico do projeto às diretrizes e estratégias tecnológicas de uma área ou organização, bem como à sua cultura organizacional;

·         atender as restrições gerenciais de um projeto tais como custo, prazo e competências técnicas da equipe;

·         identificar e detalhar requisitos significativos para a arquitetura de software;

·         antecipar e mitigar os riscos técnicos de um projeto;

·         realizar a análise e desenho técnico da arquitetura através de técnicas de modelagem arquitetural;

·         construir provas de conceito e gerar código executável para os principais pontos de risco do projeto;

·         orientar e acompanhar o time técnico para garantir a aderência do código construído às diretrizes arquiteturais do projeto;

·         validar a estabilidade e objetivos da arquitetura do produto;

·         coletar lições aprendidas e promover um novo ciclo de melhorias.

 

Em verdade, o ciclo de vida da arquitetura de software deve ser compreendido através de um processo mais amplo que aspectos puramente técnicos, que denominamos aqui como a gestão da arquitetura de software.

Arquiteturas de software são sempre desenvolvidas dentro de um contexto de negócios como, por exemplo, a criação ou evolução de um produto, a automação de processos de negócio ou a integração entre sistemas de fornecedores distintos. Assim como a arquitetura de software realiza tecnicamente objetivos organizacionais, ela deve prover feedback do mundo real conforme mostrado na Figura 1.

 

imagem

Figura 1. Influências sobre a gestão da arquitetura de software

Ciclo de Vida da Gestão da Arquitetura de Software

O ciclo de vida de um projeto organiza as fases do início ao fim das atividades, conforme mostrado na Figura 2. Tipicamente as transições entre fases são caracterizadas por algum tipo de entrega e sua respectiva revisão. Para cada fase, o ciclo de vida do projeto permite definir trabalho realizado, entregas, envolvidos e critérios de aprovação e controle [1].

 

imagem

Figura 2. Fases típicas de um projeto

 

No caso de projetos de desenvolvimento de software, o ciclo de vida do projeto geralmente respeita um processo de desenvolvimento de software como o IBM Rational Unified Process (RUP). Mais adiante, abordaremos a relação dos processos de desenvolvimento com a gestão da arquitetura de software.

Apresentaremos o ciclo de vida da gestão da arquitetura de software alinhado ao ciclo de vida do projeto. Situaremos as principais atividades desempenhadas pelo time de arquitetura durante toda a execução do projeto de desenvolvimento de software. Entretanto, lembramos que a arquitetura de software pode abranger o escopo de um produto, isto é, além do ciclo do projeto conforme mostrado no quadro “Ciclo de vida do produto versus ciclo de vida do projeto”.

 

Ciclo de vida do produto versus ciclo de vida do projeto

...

Quer ler esse conteúdo completo? Tenha acesso completo