Category: Desenvolvimento

Explorador de Heap: Um Poderoso Depurador de Heap Glibc

2025-02-06
Explorador de Heap: Um Poderoso Depurador de Heap Glibc

O `explore_heap` é um depurador de heap glibc carregado via `LD_PRELOAD` que permite a inspeção e manipulação interativas da memória heap de um programa. Ao carregar `libheap_explorer.so` e interromper o programa com um sinal SIGINT (Ctrl+C), os usuários entram em um REPL para alocar, liberar blocos e imprimir listas de blocos livres, tcache, fastbin e bin, auxiliando na depuração de problemas relacionados à memória. Atualmente testado no glibc 2.41+ do Arch Linux, a adaptação para outras versões modernas do glibc requer o ajuste de constantes.

Mantenedores do Kernel Linux Resistem ao Rust: Uma Guerra de Linguagens de Programação

2025-02-06
Mantenedores do Kernel Linux Resistem ao Rust: Uma Guerra de Linguagens de Programação

A integração do Rust no kernel Linux está se mostrando difícil. Vários mantenedores do kernel se opõem fortemente ao uso do Rust, citando o aumento da complexidade e do risco associados a múltiplas linguagens. Discussões recentes sobre o uso da API DMA por um driver Rust reacenderam o conflito. O mantenedor Christoph Hellwig rejeitou explicitamente o código Rust, argumentando que manter projetos multilínguas é doloroso e que os desenvolvedores Rust devem lidar sozinhos com a interface com o código C. Embora o projeto Rust for Linux vise simplificar a integração por meio de uma camada de abstração, Hellwig sustenta que isso aumenta a sobrecarga de manutenção. Essa controvérsia destaca posições divergentes na comunidade Linux sobre escolhas de linguagens de programação e os desafios de integrar novas tecnologias em sistemas grandes existentes. O resultado final ainda está por ser visto, mas terá um impacto profundo na direção futura do Linux.

Desenvolvimento

Reestruturação Criptográfica do Go 1.24: Alcançando Conformidade com o FIPS 140-3

2025-02-06

O Go 1.24 reformulou significativamente seus pacotes de criptografia para atingir a conformidade com o FIPS 140-3. Este é um grande passo em frente, com uma implementação em Go puro (e assembly Go) de um módulo criptográfico validado pelo FIPS 140-3, eliminando a dependência de cgo ou chamadas de sistema. O Microsoft Go 1.24 também foi atualizado, adicionando suporte de pré-visualização para macOS e suporte aprimorado para Azure Linux, mas mantém o uso de bibliotecas do sistema para criptografia, divergindo da abordagem oficial do Go. Novas variáveis de ambiente como GODEBUG=fips140=on e GOFIPS140=latest controlam o modo FIPS; o tempo de execução o ativa automaticamente em sistemas compatíveis com FIPS (Azure Linux, Windows).

Desenvolvimento

API de Captura de Tela de Site Sem Servidor: A Força por Trás do Abbey AI

2025-02-06
API de Captura de Tela de Site Sem Servidor: A Força por Trás do Abbey AI

Gordon Kamer desenvolveu uma robusta API de raspagem da web para suportar o Abbey, uma plataforma de IA. Esta API roda localmente, recebendo uma URL como entrada e retornando dados do site e capturas de tela. Impulsionada pelo Playwright e Docker, executa JavaScript, inclui recursos de segurança como limites de memória e isolamento de processos, e retorna uma resposta multipart com dados JSON, conteúdo da página e até 5 capturas de tela. O acesso é controlado por meio de chaves de API, com alocação de memória personalizável e parâmetros de captura de tela.

Desenvolvimento raspagem web

Serviço como Substituto de Software (SaaSS): Outra Ameaça à Sua Liberdade de Computação

2025-02-06

Este artigo explora o conceito de "Serviço como Substituto de Software (SaaSS)", que se refere ao uso de um serviço de terceiros como substituto para executar seu próprio programa. Richard Stallman argumenta que o SaaSS priva os usuários do controle sobre seus cálculos, pois o processo é entregue a servidores controlados por outros. Isso é semelhante ao software proprietário, ambos apresentando riscos de segurança, como vazamento de dados e portas traseiras. O autor apela aos usuários para rejeitarem o SaaSS e optarem por usar software livre e programas executados em computadores que controlam para manter sua liberdade de computação.

Desenvolvimento liberdade de computação

Explorador de Páginas SQLite: Uma interface gráfica para espiar seus bancos de dados

2025-02-06
Explorador de Páginas SQLite: Uma interface gráfica para espiar seus bancos de dados

Um pequeno aplicativo GUI, construído com redbean, permite que você explore seus bancos de dados SQLite página por página, exatamente como o SQLite os vê. É um único executável de 6,5 MB que roda nativamente no Windows, Linux, macOS e muito mais, oferecendo insights sobre como os índices são armazenados, a compactação de dados e as estruturas de árvore B. Embora possam existir avisos de vírus devido ao uso de um executável políglota, o projeto é confiável e oferece uma perspectiva única para desenvolvedores. É um projeto divertido que pode ser lento com bancos de dados maiores.

Desenvolvimento

Migrando um Servidor de Jogo Massivo de Scala 2.13 para Scala 3: Uma Odisseia de um Ano

2025-02-06
Migrando um Servidor de Jogo Massivo de Scala 2.13 para Scala 3: Uma Odisseia de um Ano

Este artigo detalha a jornada do autor na migração de um servidor de jogo para celular multijogador em produção, com quatro anos de idade, do Scala 2.13 para o Scala 3. Uma tentativa inicial falhou devido à remoção de recursos importantes no Scala 3 (anotações de macro, projeções de tipo) e as mudanças massivas de código necessárias. Um ano depois, uma migração bem-sucedida foi alcançada por meio de uma abordagem multifacetada: aplicando preventivamente a sintaxe do Scala 3 na base de código do Scala 2, utilizando as ferramentas de inspeção de código do IntelliJ, geradores de código-fonte personalizados do sbt para produzir lentes Monocle e soluções criativas para projeções de tipo. Os desafios encontrados incluíram conflitos de dependências e tempos de compilação lentos, resolvidos por meio da criação de um fork de uma biblioteca, otimização do código usando Tuple.Map do Scala 3 e outras técnicas. Apesar dos obstáculos, a migração destaca o poder e o valor das capacidades de metaprogramação do Scala 3.

Desenvolvimento Migração

Um compilador JIT e ambiente de execução Java em Common Lisp: OpenLDK

2025-02-06
Um compilador JIT e ambiente de execução Java em Common Lisp: OpenLDK

OpenLDK é um compilador Just-In-Time (JIT) e ambiente de execução para Java, implementado totalmente em Common Lisp. Ele preenche a lacuna entre Java e Common Lisp traduzindo incrementalmente o bytecode Java para Lisp, que então é compilado em código de máquina nativo. Essa abordagem única permite o mapeamento suave de classes Java para classes do Common Lisp Object System (CLOS), permitindo a integração fácil entre as bases de código Java e Common Lisp. Embora não seja projetado para alto desempenho, o OpenLDK oferece uma solução prática para integrar bibliotecas Java em um fluxo de trabalho Lisp. Atualmente, ele suporta principalmente Linux e SBCL, e está em desenvolvimento, com muitos recursos ainda a serem implementados, como suporte para arquivos de classe além do Java 8 e verificação de bytecode.

Desenvolvimento Compilador JIT

GitHub Copilot recebe atualização principal: modo agente e Copilot Edits GA

2025-02-06
GitHub Copilot recebe atualização principal: modo agente e Copilot Edits GA

O GitHub Copilot recebeu uma atualização significativa! O novo modo agente capacita o Copilot com maior autonomia, permitindo que ele itere no código, identifique e corrija erros e até mesmo infera e complete subtarefas não especificadas. O Copilot Edits agora está geralmente disponível, oferecendo edição de código em vários arquivos com um fluxo conversacional suave. Além disso, o GitHub mostrou o Project Padawan, um agente autônomo de engenheiro de software que irá lidar com problemas do GitHub, gerar e testar código automaticamente e até mesmo atribuir revisores. Essas atualizações visam liberar os desenvolvedores de tarefas rotineiras, permitindo que eles se concentrem em trabalhos mais criativos.

Desenvolvimento

Armadilhas de Refatoração: Quando Não Refatorar

2025-02-06
Armadilhas de Refatoração: Quando Não Refatorar

Este artigo explora as armadilhas da refatoração de código, destacando que nem todo código precisa de refatoração. O autor apresenta vários cenários em que a refatoração é inadequada, como tentar corrigir bugs ou adaptar-se a alterações de terceiros por meio de refatoração; introduzir abstração desnecessária levando à complexidade do código; abordar vários problemas de código simultaneamente; refatorar código não testado; e refatorar código imutável. O artigo enfatiza que a refatoração deve ser incremental, preservar o comportamento e envolver pequenas alterações reversíveis com cobertura de testes. Defende a pausa na refatoração quando o entendimento é deficiente ou surgem novos requisitos. Refatorar código frequentemente alterado e complexo produz os melhores resultados.

Desenvolvimento melhores práticas

Tubos Virtuais: Um Método Simples e Eficiente para Simular Água em Terreno

2025-02-06
Tubos Virtuais: Um Método Simples e Eficiente para Simular Água em Terreno

Este artigo apresenta um método simples e eficiente para simular o fluxo de água sobre terrenos em jogos – o método dos tubos virtuais. Baseado nas equações de água rasa e usando uma grade escalonada, este método trata o fluxo de água como colunas conectadas por tubos imaginários. O fluxo de água é acelerado com base nas diferenças de nível da água, e a escala de saída evita quantidades negativas de água. O autor detalha as três etapas: aceleração do fluxo, escala de saída e atualização da coluna de água, fornecendo exemplos de código. Este método é fácil de entender, computacionalmente eficiente e adequado para jogos que exigem modificação de terreno e simulação de água, como jogos de construção de cidades. Embora tenha limitações, como a falta de inércia e difusão de velocidade, é prático para a maioria dos cenários de jogos.

arXivLabs: Projetos Experimentais com Colaboradores da Comunidade

2025-02-06
arXivLabs: Projetos Experimentais com Colaboradores da Comunidade

arXivLabs é uma estrutura que permite a colaboradores desenvolverem e compartilharem novos recursos do arXiv diretamente em nosso site. Indivíduos e organizações que trabalham com o arXivLabs abraçaram e aceitaram nossos valores de abertura, comunidade, excelência e privacidade dos dados do usuário. O arXiv está comprometido com esses valores e trabalha apenas com parceiros que os respeitam. Tem uma ideia para um projeto que agregará valor à comunidade do arXiv? Saiba mais sobre o arXivLabs.

Desenvolvimento

Par: Uma Linguagem de Programação Concorrente Experimental com Playground Interativo

2025-02-06
Par: Uma Linguagem de Programação Concorrente Experimental com Playground Interativo

Par é uma linguagem de programação concorrente experimental que tenta trazer o poder expressivo da lógica linear para a prática. Ela possui propriedades únicas: os processos se comunicam por meio de canais, cada canal tem no máximo dois pontos finais e deadlocks são impossíveis. Todos os valores são canais, incluindo listas, funções e streams infinitas. Embora Par atualmente careça de alguns recursos, como tipos primitivos e não-determinismo, ela já expressa uma rica concorrência. Este artigo detalha a sintaxe, semântica e exemplos do Par, cobrindo canais, sinais, recursão e sintaxe de expressão. Um playground interativo permite que os usuários experimentem a concorrência do Par.

Desenvolvimento lógica linear

A API de Temporizador Multiplataforma Elusive: Uma Jornada Através das APIs do Sistema Operacional

2025-02-06

Este artigo explora os desafios das APIs de temporizador multiplataforma na programação C. O autor descobre que diferentes sistemas Unix (incluindo Linux, FreeBSD, NetBSD, etc.) lidam com temporizadores de maneiras muito diferentes. A função POSIX timer_create, baseada em sinais, apresenta vários problemas, como interoperabilidade ruim com outros primitivos do SO e interferência na máscara de sinal. O artigo examina os prós e contras de várias soluções, incluindo timerfd_create, kqueue, port_create e io_uring, concluindo que, para aplicativos multiplataforma, implementar temporizadores no espaço do usuário, como o libuv faz, é uma abordagem mais eficiente e confiável. O libuv usa uma estrutura de dados de heap mínimo para gerenciar temporizadores e usa chamadas de sistema como poll/epoll/kqueue para multiplexação.

Memfault está contratando: Engenheiro de SDK Android (US$ 100.000 - US$ 180.000)

2025-02-06
Memfault está contratando: Engenheiro de SDK Android (US$ 100.000 - US$ 180.000)

A Memfault, uma plataforma de confiabilidade de IoT, está procurando um Engenheiro de SDK Android (AOSP). Você colaborará com líderes de SDK (Linux, MCU) e equipes multifuncionais para moldar o futuro do Android na Memfault. Espere uma pilha de tecnologia diversificada que abrange SDKs de microcontroladores, processamento de dados em larga escala no backend e gráficos personalizados complexos no frontend. A empresa incentiva a ampla contribuição em toda a sua tecnologia e oferece arranjos de trabalho flexíveis com reuniões de equipe regulares e eventos anuais fora do local.

Desenvolvimento SDK Android

AsciiDoc: Uma Alternativa Superior ao Markdown para Documentação

2025-02-06
AsciiDoc: Uma Alternativa Superior ao Markdown para Documentação

Cansado das limitações do Markdown? O AsciiDoc pode ser a alternativa estruturada e completa que você precisa. Ele se destaca no tratamento de tabelas, notas de rodapé e referências cruzadas, suporta composição de documentos e conteúdo condicional e possui um ecossistema unificado. Este guia usa um guia do usuário de aplicativo de amostra para demonstrar os recursos do AsciiDoc, incluindo metadados, títulos, formatação de texto, listas, tabelas, atributos e conteúdo condicional. Também apresenta o adoc Studio, um editor que simplifica a exportação e a gestão de documentos AsciiDoc, integrando-se perfeitamente com o Git para fluxos de trabalho Docs-as-Code. Combinando AsciiDoc com Git e adoc Studio, a documentação se torna mais eficiente e profissional.

Desenvolvimento

Biblioteca Go de Mapeamento Multi-Chave: go-multikeymap

2025-02-06
Biblioteca Go de Mapeamento Multi-Chave: go-multikeymap

go-multikeymap é uma biblioteca Go eficiente que implementa estruturas de dados de mapeamento com várias chaves. Ela oferece dois tipos: MultiKeyMap e BiKeyMap. O MultiKeyMap permite uma chave primária e várias chaves secundárias de string, enquanto o BiKeyMap exige que ambas as chaves sejam únicas. Ambos estão disponíveis em versões concorrentes e não concorrentes, com benchmarks mostrando tempos de acesso próximos a O(1). A biblioteca é fácil de usar, bem documentada e inclui resultados de benchmark para avaliação de desempenho.

De vídeos automatizados para quadrinhos em movimento: a jornada criativa de um programador

2025-02-06

Para otimizar a criação de conteúdo de vídeo para o projeto Web Origami, um programador experimentou a automação da geração de áudio e vídeo. Diante de desafios como scripts de macro tediosos e edição de vídeo trabalhosa, ele mudou para a criação de quadrinhos em movimento. Ele construiu um sistema usando HTML/CSS e animação JavaScript mínima, gerando áudio e vídeo a partir de um roteiro. Os recursos do Origami facilitaram os testes e atualizações. Essa abordagem permitiu que ele se concentrasse na narrativa, aumentando a eficiência e eliminando o incômodo das atualizações de vídeo.

Desenvolvimento Quadrinhos em Movimento

Alpine Linux precisa da sua ajuda após o encerramento do Equinix Metal

2025-02-06

A infraestrutura principal do Alpine Linux depende do Equinix Metal, que está sendo descontinuado. Isso afeta seus espelhos de download, integração contínua e ambiente de desenvolvimento. Para garantir a continuidade do serviço, o Alpine Linux está buscando ajuda da comunidade, incluindo espaço de colocation na Holanda, servidores bare-metal (para espelhos e CI) ou VMs e contribuições financeiras. Eles destacam a importância do financiamento sustentável e incentivam doações via Open Collective.

Desenvolvimento apoio da comunidade

Marksmith: Editor Markdown no estilo GitHub para Ruby on Rails

2025-02-06
Marksmith: Editor Markdown no estilo GitHub para Ruby on Rails

Cansado de editores Markdown desajeitados? O Marksmith oferece uma experiência limpa e no estilo GitHub para desenvolvedores Ruby on Rails. Esta gem possui integração com ActiveStorage, um painel de visualização, barra de ferramentas e continuação de lista — todos os recursos de que você precisa para escrever Markdown sem problemas. Ele até se integra ao Avo para facilitar o gerenciamento da biblioteca de mídia. Confira!

Desenvolvimento Editor Markdown

Lançamento Estável do OpenWrt 24.10: Mais de 1970 Dispositivos Suportados

2025-02-06

A comunidade OpenWrt orgulhosamente anuncia o lançamento estável do OpenWrt 24.10, uma atualização significativa em relação ao 23.05. Desenvolvido ao longo de um ano e incorporando mais de 5400 commits, ele possui suporte para mais de 1970 dispositivos, adicionando mais de 100 novos, incluindo o OpenWrt One. A atualização do OpenWrt 23.05 geralmente é suportada pelo utilitário sysupgrade, mas é altamente recomendado fazer um backup da configuração. No entanto, usuários de dispositivos específicos (como Linksys E8450, Xiaomi AX3200 e switches da série Zyxel GS1900) precisam seguir instruções especiais de atualização para evitar danos ao dispositivo.

Desenvolvimento

Vulnerability-Lookup: Plataforma Colaborativa de Gerenciamento de Vulnerabilidades

2025-02-06
Vulnerability-Lookup: Plataforma Colaborativa de Gerenciamento de Vulnerabilidades

O Vulnerability-Lookup é uma poderosa plataforma de código aberto para correlacionar rapidamente vulnerabilidades de várias fontes, simplificando o processo de divulgação coordenada de vulnerabilidades (CVD). Ele suporta a importação de diversas fontes, incluindo NIST NVD e CISA, e permite que os usuários adicionem observações de vulnerabilidades, comentários e criem pacotes. Sua API e biblioteca Python facilitam a integração com outras ferramentas, permitindo que os desenvolvedores criem facilmente suas próprias ferramentas de observação. O Vulnerability-Lookup é licenciado sob a GNU Affero GPL v3.0 e é desenvolvido pelo CIRCL, Alexandre Dulaunoy, Raphaël Vinot e Cédric Bonhomme.

Assembly 6502: Um Ponto de Partida Surpreendentemente Bom para Aprender Assembly?

2025-02-06
Assembly 6502: Um Ponto de Partida Surpreendentemente Bom para Aprender Assembly?

Escolher um ponto de partida para aprender linguagem assembly pode ser assustador. Este artigo argumenta que o processador 6502 é surpreendentemente adequado para iniciantes. Embora não seja amplamente usado em aplicações modernas, seu conjunto de instruções simples (apenas 56 instruções) e abundância de recursos de aprendizado o tornam ideal para compreender conceitos fundamentais de assembly. Sua história em computadores clássicos como o Apple II e o Commodore 64 fornece uma riqueza de emuladores e materiais de aprendizado. O autor recomenda Easy 6502 e Visual6502.org como excelentes recursos de aprendizado, comparando-o com as complexidades de arquiteturas como x86-64 e ARM, destacando ainda mais as vantagens do 6502 para iniciantes.

Desenvolvimento

Disputa de Marca Registrada JavaScript da Oracle: Uma Batalha Legal Prolongada

2025-02-06
Disputa de Marca Registrada JavaScript da Oracle: Uma Batalha Legal Prolongada

Um esforço comunitário liderado pelo CEO da Deno Land, Ryan Dahl, está desafiando a propriedade da marca registrada "JavaScript" pela Oracle, gerando controvérsia. A Oracle é acusada de apresentar materiais falsos em seu pedido de renovação de marca registrada e de tentar atrasar os procedimentos legais. O cerne da disputa reside em saber se JavaScript se tornou um termo genérico e se a Oracle abandonou a marca registrada. A Oracle argumenta que possui motivos legítimos e apresenta provas adicionais. Essa batalha legal reflete a proteção rigorosa de marcas registradas por gigantes de tecnologia e os esforços da comunidade de código aberto para garantir o uso justo.

Desenvolvimento disputa de marca registrada

Cliente Discord não oficial para Windows 2000 e superior

2025-02-06
Cliente Discord não oficial para Windows 2000 e superior

Discord Messenger é um cliente Discord não oficial surpreendentemente compatível com Windows 2000 e versões posteriores. Este projeto de código aberto, licenciado sob MIT, é uma versão beta e apresenta o risco de violar os Termos de Serviço do Discord. Embora possua recursos essenciais como mensagens, manipulação de anexos e suporte a emojis, sua compilação exige habilidades técnicas. O projeto suporta compilações MinGW e Visual Studio e requer a compilação ou aquisição de uma biblioteca OpenSSL.

Desenvolvimento

Construa sua própria língua: Um kit de construção de língua

2025-02-06

Este guia fornece um kit completo para criar línguas artificiais, perfeito para mundos de fantasia, civilizações alienígenas ou simplesmente como um hobby. O autor Mark Rosenfelder detalha métodos linguisticamente sólidos para construir línguas naturalistas, descrevendo etapas como decidir sobre sons, léxico, gramática, alfabeto e escrita cursiva. Ele usa sua própria língua Verdurian como exemplo, enfatizando a importância da ordem de construção para evitar inconsistências como as encontradas na língua Syldavian de Hergé. Recursos adicionais e versões impressas são fornecidos para aprendizado avançado.

SDK de Comunicação Peer-to-Peer WebRTC: @pulsebeam/peer em Pré-visualização para Desenvolvedores

2025-02-05
SDK de Comunicação Peer-to-Peer WebRTC: @pulsebeam/peer em Pré-visualização para Desenvolvedores

A PulseBeam lançou um novo SDK de comunicação peer-to-peer WebRTC, @pulsebeam/peer, atualmente em pré-visualização para desenvolvedores. Este SDK simplifica o desenvolvimento de aplicativos em tempo real, lidando com o estabelecimento de conexão, sinalização de transmissão de mídia e dados e fornecendo infraestrutura. Ele suporta transmissão de canais de áudio, vídeo e dados, reconexão automática e, opcionalmente, comunicação por meio de um servidor. A instalação é fácil via npm, deno ou yarn. Consulte a documentação oficial da PulseBeam para obter mais detalhes, incluindo chaves de API.

Desenvolvimento Comunicação em Tempo Real

Projeto mt32-pi encerrado devido a abuso online

2025-02-05
Projeto mt32-pi encerrado devido a abuso online

O projeto mt32-pi, um sintetizador MIDI baremetal para Raspberry Pi, foi descontinuado devido ao assédio online contínuo de seu desenvolvedor. O desenvolvedor citou uma campanha de abuso, incluindo ataques pessoais, roubo de código e designs de impressão 3D roubados, como razões para abandonar o projeto. Apesar do apoio da comunidade, as experiências negativas afetaram significativamente a saúde mental do desenvolvedor. O mt32-pi suportava vários modelos de Raspberry Pi e oferecia recursos como suporte I²S Hi-Fi DAC e MIDI de rede.

Desenvolvimento Sintetizador MIDI

Incidente de Segurança Okta: Explorando a Limitação de Comprimento do Bcrypt

2025-02-05
Incidente de Segurança Okta: Explorando a Limitação de Comprimento do Bcrypt

O incidente de segurança da Okta surgiu da forma como sua implementação do Bcrypt lidava com o comprimento da entrada. O limite de 72 caracteres do Bcrypt causou truncamento, permitindo a autenticação com apenas nomes de usuário parciais e chaves em cache. O artigo analisa as bibliotecas Bcrypt em Go, Java, JavaScript, Python e Rust, revelando que muitas delas não possuem validação do comprimento da entrada, criando riscos de segurança. O autor defende o aprimoramento do design da API, rejeitando explicitamente entradas inválidas para evitar tais vulnerabilidades.

Desenvolvimento design de API

Lei de Conway: A Arquitetura de Software Reflete a Estrutura Organizacional

2025-02-05
Lei de Conway: A Arquitetura de Software Reflete a Estrutura Organizacional

Há um consenso entre arquitetos de software sobre a importância da Lei de Conway: qualquer organização que projeta um sistema produzirá um projeto cuja estrutura é uma cópia da estrutura de comunicação da organização. Isso significa que a arquitetura de software frequentemente reflete a organização da equipe de desenvolvimento. Ignorar isso leva a conflitos entre a arquitetura do sistema e a estrutura organizacional, aumentando a complexidade do desenvolvimento. O artigo explora três estratégias para lidar com a Lei de Conway: ignorar, aceitar e a Manobra Inversa de Conway (ajustar a estrutura organizacional para guiar a arquitetura de software). O autor enfatiza que a evolução da arquitetura do sistema e da estrutura organizacional devem ser sincronizadas ao longo do desenvolvimento de software, e sugere o uso de métodos como Design Orientado a Domínio para auxiliar o design organizacional.

Desenvolvimento Lei de Conway
1 2 157 158 159 161 163 164 165 204 205