Richards & Ford – Fundamentos da Arquitetura de Software (2024)
Usando a Rede Social
Onde um arquiteto consegue encontrar novas tecnologias e técnicas para colocar no anel avalie do radar? No livro de Andrew McAfee, Enterprise 2.0 (sem publicação no Brasil), ele faz uma observação interessante sobre redes sociais em geral. Ao pensar na rede de contatos de uma pessoa, existem três categorias, como mostrado na Figura 24-3.
Página 354
Figura 24-3. Círculos sociais das relações de uma pessoa Na Figura 24-3, as ligações fortes representam os familiares, os colegas de trabalho e outras pessoas em contato regular com a pessoa. Um teste decisivo para o quanto essas conexões são próximas: é possível dizer o que uma pessoa em suas ligações fortes pediu no almoço pelo menos um dia da semana passada. As ligações fracas são conhecidos casuais, parentes distantes e outras pessoas vistas apenas algumas vezes por ano. Antes das redes sociais, era difícil manter contato com esse círculo de pessoas. Por fim, as ligações possíveis representam as pessoas que você não conheceu ainda.
A observação mais interessante de McAfee sobre essas conexões foi que o próximo trabalho de alguém muito provavelmente virá mais de uma ligação fraca do que de uma forte. As pessoas com ligação forte sabem tudo dentro do grupo fortemente ligado; são pessoas que se veem o tempo todo. Já as ligações fracas dão conselhos de fora da experiência normal de alguém, inclusive novas ofertas de trabalho.
Usando as características das redes sociais, os arquitetos conseguem usar as redes para melhorar sua amplitude técnica. Usando profissionalmente uma rede social como o Twitter, os arquitetos devem encontrar técnicos cujo conselho eles respeitam e seguem. Isso permite que os arquitetos criem uma
Página 355
rede sobre tecnologias novas e interessantes para avaliar e acompanhar as mudanças rápidas no mundo da tecnologia.
Conselhos de Despedida
Como consigo ótimos designers? Os ótimos designers fazem design, claro.
— Fred Brooks Então como podemos conseguir ótimos arquitetos se eles têm apenas a oportunidade de fazer alguns poucos projetos em suas carreiras?
— Ted Neward A prática é o modo comprovado de desenvolver habilidades e ficar melhor em qualquer coisa na vida… inclusive na arquitetura. Encorajamos que os arquitetos novos e existentes continuem aprimorando suas habilidades para a amplitude individual da tecnologia, mas também para o ofício de planejar a arquitetura. Para tanto, verifique os katas da arquitetura. Modelada segundo os katas usados como exemplos aqui, encorajamos que os arquitetos usem isso para praticar e desenvolver habilidades na arquitetura.
Uma pergunta comum que sempre ouvimos sobre katas: há um guia de resposta em algum lugar? Infelizmente não existe tal gabarito. Para citar o autor, Neal:
Não existem respostas certas ou erradas na arquitetura, apenas tradeoffs.
Quando começamos a usar o exercício de katas da arquitetura durante as aulas de treinamento ao vivo, no começo mantivemos os desenhos que os alunos produziram com o objetivo de criar um repositório de respostas.
Mas desistimos logo, porque percebemos que tínhamos artefatos incompletos, ou seja, as equipes tinham capturado a topologia e explicado suas decisões na aula, mas não tiveram tempo de criar os registros de decisão da arquitetura. Embora o modo como elas implementaram suas soluções fosse interessante, o motivo era muito mais interessante porque ele contém os trade-offs considerados ao tomar a decisão. Manter apenas o motivo era apenas metade da história. Portanto, nossos últimos conselhos de despedida: sempre aprenda, sempre pratique e faça alguma arquitetura!
Página 356
Apêndice: Perguntas de Autoavaliação
APÊNDICE Perguntas de Autoavaliação Capítulo 1: Introdução
- 1. Quais são as quatro dimensões que definem a arquitetura de software?
- 2. Qual é a diferença entre uma decisão da arquitetura e um princípio de design de software?
- 3. Liste as oito expectativas essenciais de um arquiteto de software.
- 4. Qual é a Primeira Lei da Arquitetura de Software?
Capítulo 2: Pensamento Arquitetônico
- 1. Descreva a abordagem tradicional da arquitetura versus desenvolvimento e explique por que essa abordagem não funciona mais.
- 2. Liste os três níveis de conhecimento na pirâmide de conhecimento e dê um exemplo de cada.
- 3. Por que é mais importante para um arquiteto focar a amplitude técnica do que a profundidade técnica?
- 4. Quais são os modos de manter sua profundidade técnica e continuar trabalhando como arquiteto?
Capítulo 3: Modularidade
Página 357
- 1. O que se entende por conascência?
- 2. Qual é a diferença entre conascência estática e dinâmica?
- 3. O que significa conascência de tipo? É uma conascência estática ou dinâmica?
- 4. Qual é a forma mais forte de conascência?
- 5. Qual é a forma mais fraca de conascência?
- 6. Qual é preferível em uma base de código — conascência estática ou dinâmica?
Capítulo 4: Definição das Características da Arquitetura
- 1. Quais os três critérios que um atributo deve atender para ser considerado uma característica da arquitetura?
- 2. Qual é a diferença entre uma característica implícita e explícita?
Dê um exemplo de cada.
- 3. Dê um exemplo de característica operacional.
- 4. Dê um exemplo de característica estrutural.
- 5. Dê um exemplo de característica transversal.
- 6. Qual característica da arquitetura é mais importante de se ter — disponibilidade ou desempenho?
Capítulo 5: Identificando as Características da Arquitetura
- 1. Dê um bom motivo de por que é uma boa prática limitar o número de características (“atributos”) que uma arquitetura deve suportar.
- 2. Verdadeiro ou falso: a maioria das características da arquitetura vem dos requisitos de negócio e das histórias do usuário.
Página 358
3. Se um acionista da empresa declara que a entrada no mercado
(ou seja, obter novos recursos e correções de erros enviados para os usuários o mais rápido possível) é a preocupação comercial mais importante, a quais características a arquitetura precisaria dar suporte?
- 4. Qual é a diferença entre escalabilidade e elasticidade?
- 5. Você descobriu que sua empresa passará por várias aquisições maiores para aumentar bastante sua base de clientes. Com quais características da arquitetura você deve se preocupar?
Capítulo 6: Medindo e Controlando as Características da Arquitetura 1. Por que a complexidade ciclomática é uma métrica tão importante para analisar a arquitetura?
- 2. O que é função de aptidão da arquitetura? Como ela pode ser usada para analisar uma arquitetura?
- 3. Dê um exemplo de função de aptidão da arquitetura para medir a escalabilidade de uma arquitetura.
- 4. Qual é o critério mais importante de uma característica da arquitetura para permitir que arquitetos e desenvolvedores criem funções de aptidão?
Capítulo 7: Escopo das Características da Arquitetura
- 1. O que é quantum da arquitetura e por que ele é importante para a arquitetura?
- 2. Pressuponha um sistema consistindo em uma IU com quatro serviços implantados de forma independente, cada um com seu próprio banco de dados separado. Esse sistema teria um único quantum ou quatro? Por quê?
Página 359
3. Pressuponha um sistema com uma parte da administração gerenciando dados de referência estáticos (como o catálogo de produtos e informações do depósito) e uma parte voltada para o cliente gerenciando a colocação dos pedidos. Quantos quanta esse sistema deveria ter e por quê? Se você prevê vários quanta, o quantum admin e o quantum do cliente poderiam compartilhar um banco de dados? Em caso afirmativo, em qual quantum o banco de dados precisaria residir?
Capítulo 8: Pensamento Baseado em Componentes
1. Definimos o termo componente como um bloco de construção de uma aplicação, como algo que uma aplicação faz. Em geral, um componente consiste em um grupo de classes ou arquivos-fonte.
Como os componentes normalmente são manifestados dentro de uma aplicação ou um serviço?
- 2. Qual é a diferença entre particionamento técnico e particionamento do domínio? Dê um exemplo de cada.
- 3. Qual é a vantagem do particionamento do domínio?
- 4. Sob quais circunstâncias o particionamento técnico seria uma escolha melhor em relação ao particionamento do domínio?
- 5. O que é armadilha da entidade? Por que ela não é uma boa abordagem para a identificação do componente?
- 6. Quando podemos escolher a abordagem do fluxo de trabalho, e não a abordagem Ator/Ações, ao identificar os componentes essenciais?
Capítulo 9: Estilos de Arquitetura
- 1. Liste oito falácias da computação distribuída.
- 2. Cite três desafios que as arquiteturas distribuídas têm, mas as arquiteturas monolíticas não têm.
Página 360
- 3. O que é stamp coupling?
- 4. Quais são os modos de lidar com o stamp coupling?
Capítulo 10: Estilo de Arquitetura em Camadas
- 1. Qual é a diferença entre camada aberta e fechada?
- 2. Descreva o conceito das camadas de isolamento e quais os benefícios dele.
- 3. O que é o padrão sinkhole da arquitetura?
- 4. Quais são as principais características da arquitetura que orientariam o uso de uma arquitetura em camadas?
- 5. Por que a testabilidade não é bem suportada no estilo da arquitetura em camadas?
- 6. Por que a agilidade não é bem suportada no estilo da arquitetura em camadas?
Capítulo 11: Estilo de Arquitetura Pipeline
- 1. Os canais podem ser bidirecionais em uma arquitetura pipeline?
- 2. Cite quatro tipos de filtros e sua finalidade.
- 3. Um filtro pode enviar dados por vários canais?
- 4. O estilo de arquitetura pipeline é particionado tecnicamente ou por domínio?
- 5. De que modo a arquitetura pipeline dá suporte à modularidade?
- 6. Dê dois exemplos do estilo de arquitetura pipeline.
Capítulo 12: Estilo de Arquitetura Microkernel
1. Qual é o outro nome do estilo de arquitetura microkernel?
Página 361
- 2. Sob quais situações é bom que os componentes de plug-in sejam dependentes de outros?
- 3. Quais são as ferramentas e as estruturas que podem ser usadas para gerenciar os plug-ins?
- 4. O que você faria se tivesse um plug-in de terceiros que não está em conformidade com o contrato de plug-in padrão no sistema central?
- 5. Dê dois exemplos do estilo de arquitetura microkernel.
- 6. O estilo de arquitetura microkernel é tecnicamente particionado ou particionado por domínio?
- 7. Por que a arquitetura microkernel é sempre um quantum da arquitetura?
- 8. O que é isomorfismo do domínio/arquitetura?
Capítulo 13: Estilo de Arquitetura Baseada em Serviços
- 1. Quantos serviços existem em uma arquitetura típica baseada em serviços?
- 2. É preciso dividir um banco de dados na arquitetura baseada em serviços?
- 3. Sob quais circunstâncias você talvez queira dividir um banco de dados?
- 4. Qual técnica você pode usar para gerenciar as alterações no banco de dados dentro de uma arquitetura baseada em serviços?
- 5. Os serviços do domínio requerem um contêiner (como Docker) para rodar?
- 6. Quais características da arquitetura são bem suportadas pelo estilo de arquitetura baseado em serviço?
- 7. Por que a elasticidade não é bem suportada em uma arquitetura baseada em serviços?
Página 362
8. Como você pode aumentar o número de quanta em uma arquitetura baseada em serviços?
Capítulo 14: Estilo de Arquitetura Baseada em Eventos
- 1. Quais são as diferenças básicas entre as topologias do broker e do mediador?
- 2. Para ter um melhor controle do fluxo de trabalho, você usaria uma topologia do mediador ou do broker?
- 3. Em geral, a topologia do intermediário utiliza um modelo
“publicar e assinar” com tópicos ou um modelo de ponto a ponto com filas?
- 4. Cite duas vantagens básicas das comunicações assíncronas.
- 5. Dê um exemplo de requisição típica no modelo baseado em requisições.
- 6. Dê um exemplo de requisição típica em um modelo baseado em eventos.
- 7. Qual é a diferença entre iniciar um evento e processar um evento na arquitetura baseada em eventos?
- 8. Quais são as técnicas para impedir a perda de dados ao enviar e receber mensagens de uma fila?
- 9. Quais são as três características que orientam o uso da arquitetura baseada em eventos?
- 10. Quais são as características que não são bem suportadas na arquitetura baseada em eventos?
Capítulo 15: Estilo de Arquitetura Baseada em Espaço
- 1. De onde vem o nome da arquitetura baseada em espaço?
- 2. Qual é o aspecto básico da arquitetura baseada em espaço que a diferencia dos outros estilos de arquitetura?
Página 363
- 3. Cite os quatro componentes que compõem o middleware virtualizado em uma arquitetura baseada em espaço.
- 4. Qual é o papel da grade de mensageria?
- 5. Qual é o papel de uma gravação de dados na arquitetura baseada em espaço?
- 6. Sob quais condições um serviço precisaria acessar dados por meio da leitura de dados?
- 7. Um cache pequeno aumenta ou diminui as chances de uma colisão de dados?
- 8. Qual é a diferença entre um cache replicado e um distribuído?
Normalmente, qual é usado na arquitetura baseada em espaço?
- 9. Liste três características com mais suporte na arquitetura baseada em espaço.
- 10. Por que a taxa de testabilidade é tão baixa na arquitetura baseada em espaço?
Capítulo 16: Arquitetura Orientada a Serviços e Baseada em Orquestração 1. Qual é a principal motivação por trás de uma arquitetura orientada a serviços?
- 2. Quais são os quatro tipos básicos de serviço em uma arquitetura orientada a serviços?
- 3. Liste alguns fatores que levaram à queda da arquitetura orientada a serviços.
- 4. A arquitetura orientada a serviços é particionada tecnicamente ou por domínio?
- 5. Como a reutilização do domínio é abordada no SOA? Como a reutilização operacional é abordada?
Página 364
Capítulo 17: Arquitetura de Microsserviços
- 1. Por que o contexto delimitado é tão essencial para a arquitetura de microsserviços?
- 2. Quais são os três modos de determinar se você tem o nível certo de granularidade em um microsserviço?
- 3. Qual funcionalidade pode estar contida em um padrão sidecar?
- 4. Qual a diferença entre orquestração e coreografia? Qual suporta os microsserviços? Algum estilo de comunicação é mais fácil nos microsserviços?
- 5. O que é saga nos microsserviços?
- 6. Por que a agilidade, a testabilidade e a implementabilidade são bem suportadas nos microsserviços?
- 7. Quais são os dois motivos para o desempenho normalmente ser um problema nos microsserviços?
- 8. Os microsserviços são uma arquitetura particionada por domínio ou tecnicamente?
- 9. Descreva uma topologia em que um ecossistema de microsserviços pode ser apenas um quantum.
- 10. Como se lidou com a reutilização do domínio nos microsserviços?
Como se lidou com a reutilização operacional?
Capítulo 18: Escolhendo o Estilo de Arquitetura Certo
- 1. De que modo a arquitetura de dados (estrutura dos modelos de dados lógicos e físicos) influencia a escolha do estilo da arquitetura?
- 2. Como influencia sua escolha do estilo de arquitetura usado?
- 3. Descreva as etapas que um arquiteto usa para determinar o estilo da arquitetura, o particionamento dos dados e os estilos de comunicação.
Página 365
4. Qual fator leva um arquiteto a usar uma arquitetura distribuída?
Capítulo 19: Decisões da Arquitetura
- 1. O que é o antipadrão Cobertura dos Ativos?
- 2. Quais são as técnicas para evitar o antipadrão Arquitetura
Baseada em E-mail?
- 3. Quais são os cinco fatores que Michael Nygard define para identificar algo como significativo para a arquitetura?
- 4. Quais são as cinco seções básicas de um registro de decisão da arquitetura?
- 5. Em qual seção de um ADR você costuma adicionar a justificativa para uma decisão da arquitetura?
- 6. Pressupondo que você não precisa de uma seção Alternativas separada, em qual seção de um ADR você listaria as alternativas para a solução proposta?
- 7. Quais são os três critérios básicos nos quais você marcaria o status de um ADR como Proposto?
Capítulo 20: Analisando o Risco da Arquitetura
- 1. Quais são as duas dimensões da matriz de avaliação de risco?
- 2. Quais são os modos de mostrar a direção de certo risco em uma avaliação de risco? Você consegue pensar em outros modos de indicar se o risco está melhorando ou piorando?
- 3. Por que é necessário que o risk storming seja um exercício de colaboração?
- 4. Por que é necessário que a atividade de identificação no risk storming seja uma atividade individual, e não uma de colaboração?
Página 366
- 5. O que você faria se três participantes identificassem um risco como alto (6) para certa área da arquitetura, mas outro participante o identificasse apenas como médio (3)?
- 6. Qual classificação de risco (1-9) você atribuiria às tecnologias não comprovadas ou desconhecidas?
Capítulo 21: Diagramando e Apresentando a Arquitetura
- 1. O que é o apego irracional pelo artefato e por que ele é importante em relação a documentar e diagramar a arquitetura?
- 2. Os 4 Cs se referem a que na técnica de modelagem C4?
- 3. Ao diagramar a arquitetura, o que significam as linhas pontilhadas entre os componentes?
- 4. O que é o antipadrão bullet-riddled corpse? Como você pode evitar esse antipadrão ao criar apresentações?
- 5. Quais são os dois canais básicos de informação que o apresentador tem ao fazer uma apresentação?
Capítulo 22: Tornando as Equipes Eficientes
- 1. Quais são os três tipos de personalidades da arquitetura? Qual tipo de limite cada personalidade cria?
- 2. Quais são os cinco fatores que entram na determinação do nível de controle que você deve mostrar na equipe?
- 3. Quais são os três sinais de aviso que você pode ver ao determinar se sua equipe está ficando muito grande?
- 4. Liste três checklists básicas que seriam boas para uma equipe de desenvolvimento.
Página 367
Capítulo 23: Habilidades de Negociação e Liderança
- 1. Por que a negociação é tão importante para um arquiteto?
- 2. Cite algumas técnicas de negociação que podem ser empregadas quando um acionista da empresa insiste em cinco noves de disponibilidade, mas apenas três noves são realmente necessários.
- 3. O que você pode entender quando um acionista diz que
“Precisava disso para ontem”?
- 4. Por que é importante deixar por último uma discussão sobre tempo e custo em uma negociação?
- 5. O que é a regra “dividir e conquistar”? Como ela pode ser aplicada ao negociar as características da arquitetura com um acionista da empresa? Dê um exemplo.
- 6. Liste os 4 Cs da arquitetura.
- 7. Explique por que é importante que um arquiteto seja pragmático e visionário.
- 8. Quais são as técnicas para gerenciar e reduzir a quantidade de reuniões para as quais você é convidado?
Capítulo 24: Desenvolvendo uma Trajetória Profissional
- 1. O que é a regra dos 20 minutos, e quando é melhor aplicá-la?
- 2. O que são os quatro anéis no radar da tecnologia da
ThoughtWorks e o eles que significam? Como podem ser aplicados em seu radar?
3. Descreva a diferença entre profundidade e amplitude do conhecimento tal como aplicada aos arquitetos de software. Qual delas os arquitetos devem querer maximizar?
Página 368
Sobre os Autores Mark Richards é um arquiteto de software experiente envolvido em arquitetura, design, implementação de microsserviços e outras arquiteturas distribuídas. É fundador do DeveloperToArchitect.com, um site dedicado a ajudar os desenvolvedores na sua jornada de desenvolvedores para arquitetos de software.
Neal Ford é diretor, arquiteto de software e Meme Wrangler na ThoughtWorks, uma consultoria de TI global com foco no desenvolvimento e entrega de software de ponta a ponta. Antes de entrar para a ThoughtWorks, Neal também foi diretor de tecnologia no DSW Group, Ltd., uma firma nacional e reconhecida de treinamento e desenvolvimento.
Colofão O animal na capa do livro Fundamentos da Engenharia de Software é o anacã (Deroptyus accipitrinus), nativo da América do Sul, sendo conhecido por vários nomes, como loro cacique em espanhol ou anacã, papagaio-de-coleira e vanaquiá em português. Essa ave do Novo Mundo faz sua casa nas copas e nos buracos das árvores da floresta amazônica, onde se alimenta de frutas da embaúba, conhecida como “dedos de cobra”, além dos frutos duros de várias palmeiras.
Como único membro do gênero Deroptyus, o anacã é diferenciado por suas penas de um vermelho forte que cobre a nuca. Quando ele se sente animado ou ameaçado, essas penas se “separaram”, revelando o azul brilhante que se destaca em cada ponta. A cabeça tem uma coroa branca e olhos amarelos, com bochechas marrons riscadas com branco. O peito e a barriga do anacã são cobertos pelas mesmas penas vermelhas e azuis, contrastando com as penas verdes brilhantes em camadas das costas.
Página 369
Entre dezembro e janeiro, o anacã encontra seu parceiro de vida, então começam a colocar de 2 a 4 ovos por ano. Durante os 28 dias em que a fêmea encuba os ovos, o macho lhe dá cuidados e apoio.
Cerca de 10 semanas depois, o jovem está pronto para começar a crescer na natureza, iniciando sua vida de 40 anos na maior floresta tropical do mundo.
Embora o status de preservação atual do anacã seja designado como Pouco Preocupante, muitos animais nas capas desta série estão ameaçados; todos eles são importantes para o mundo.
A ilustração da capa é de Karen Montgomery, baseada na gravura em preto e branco no livro Royal Natural History (sem publicação no Brasil), de Lydekker.
JIM – Assistente
Jim IA: pode errar. Não digite dados pessoais. Suas mensagens são processadas por um serviço externo.
.gif)
Deixe um comentário