5 coisas que toda desenvolvedora de software precisa saber

Você sabe a diferença entre ser uma desenvolvedora de software e ser uma arquiteta de software? Não importa o quanto avançado está uma empresa tecnologicamente, sua equipe de desenvolvimento de software ainda não está a par de alguns dos conceitos básicos relacionados à arquitetura de software.

Por serem conceitos importantes, visto a natureza distribuída dos sistemas de software que estamos construindo e também a natureza distribuída das equipes que os desenvolvem, destacamos cinco coisas que toda(o) desenvolvedora de software precisa saber sobre arquitetura de software.

1 . Arquitetura de software não é apenas um desenho arquitetural

arquiteta de software

A arquitetura de software geralmente é associada a um grande desenho de arquitetura inicial e uma entrega em cascata, com todos os componentes necessários do projeto de software.

Porém, com o “Manifesto para desenvolvimento de software ágil” em 2001, começou a ser valorizada a agilidade na resposta às mudanças ao longo de um plano.

Leia mais: Conheça mulheres inspiradoras da área de TI

Com isso, algumas equipes de desenvolvimento deixaram de lado o desenho da arquitetura inicial. Se por um lado o desenho de arquitetura não reflete necessariamente a criação de um estado final perfeito, por outro lado, a falta dele pode deixar a equipe sem direção.

O desenho da arquitetura adiciona valor a uma equipe, ajudando-a a entender o que será construído.

O desenho de projeto de software envolve decisões de design. A arquitetura “representa as decisões significativas, onde o significado é medido pelo custo de mudança”, de forma que o design assegure que a equipe tenha entendido os trade-offs associados à essas “decisões importantes”.

Leia mais: Ebook Grátis! Removedor de Maquiagem Natural

Essas decisões são relacionadas a escolhas de tecnologia.

O processo de desenho da arquitetura inicial deve englobar as decisões significativas que influenciam o formato do software como um todo. A(o)s desenvolvedora(e)s precisam entender o que vão construir, como vão construir (em um alto nível) e se o que foi projetado tem chance de funcionar.

Leia mais: Aprenda MySQLi de forma prática e rápida

Para isso deve-se identificar e mitigar os riscos de maior prioridade.

Ou seja, o desenho inicial da arquitetura deve ser sobre otimizar as chances de sucesso do sistema.

2. Todo a equipe precisa considerar a arquitetura do software

Isso aplica-se a todas as equipes de desenvolvimento de software; desde equipes composta por apenas uma pessoa até equipes globalmente distribuídas.

Sem esse ponto de partida e direção, tudo pode virar um caos – bases de códigos inconsistentes e estruturadas de forma inadequada, difíceis de entender, de manter e que não atendam a requisitos de qualidade como desempenho, escalabilidade e segurança.

Leia mais: Mulheres na tecnologia: por um mundo mais igualitário

Ou seja, toda equipe precisa de liderança técnica.

3. Arquitetura de software envolve programação, treinamento e colaboração

A imagem que muitas pessoas têm de arquitetos de software é que eles apenas ditam as instruções para uma equipe de desenvolvimento.

No entanto, não precisa ser assim. Muitos arquitetos modernos optam por favorecer a codificação, coaching e o design colaborativo.

A maioria dos bons arquitetos de software são ótimos desenvolvedores que gostam de programar. Os arquitetos de software são como “construtores principais”, podendo codificar como parte da equipe. Fazer parte da equipe de desenvolvimento torna a função de arquitetura de software mais fácil porque você terá maior compreensão do software que está sendo desenvolvido.

A função de arquitetura de software não precisa ser realizada por apenas uma pessoa, o papel pode ser um esforço colaborativo entre várias pessoas.

4. Você não precisa usar UML

arquiteta de software

As visões tradicionais de arquitetura de software geralmente utilizam enormes artefatos UML (Unified Modeling Language), capturando cada detalhe. Porém, essa modelagem refere-se às práticas de “grandes desenhos iniciais” da era pré-ágil. Hoje está cada vez mais comum as equipes de desenvolvimento de software não utilizarem UML.

Leia mais: 10 mulheres fundamentais na história da tecnologia

Geralmente o conselho é “usar apenas caixas e linhas em um quadro branco” para comunicar idéias.  No entanto, estamos perdendo a capacidade de comunicar arquitetura de software de forma adequada.

O mais adequado seria usar uma abordagem de comunicação abstrata para arquitetura de software como o “modelo C4” – Contexto, Containers, Componentes e Código, no qual um conjunto de mapas hierárquicos e ajustáveis descrevem um sistema de software.

5. Arquitetura de software promove agilidade

arquiteta de software

Algumas pessoas ainda não entendem como “arquitetura” e “ágil” podem caminhar juntas. Uma boa arquitetura de sistema fornece agilidade, pois auxilia a entender e implementar as mudanças de requisitos, processos de negócios, etc.

Leia mais: Receitas Poderosas Para Hidratar, Nutrir e Recuperar Seu Cabelo

Uma boa arquitetura precisa de uma boa modularidade (código bem estruturado), alcançada pela decomposição apropriada e estratégica.

Um problema comum ocorre quando as equipes adotam o “design indiferente à arquitetura”,  na qual o estilo arquitetural não considerara os trade-offs. O processo de design e decomposição de software é fundamental, independentemente se a arquitetura é monolítica ou de microserviços.

Para ter agilidade e boa arquitetura, é preciso esforço consciente de design e os compromissos precisam ser considerados.

Leia mais: A importância da mulher na história da computação

Adaptado de: https://www.infoq.com/br/articles/architecture-five-things