7 pontos por baeba 2 시간 전 | 1 comentários | Compartilhar no WhatsApp

Visão geral resumida

  • Tema central

    • Apresenta livros e materiais relacionados em que desenvolvedores explicam diretamente a estrutura interna e as decisões de design de aplicações open source.
  • Pontos principais

    • Diferentemente de arquitetos, desenvolvedores de software historicamente têm poucas oportunidades de estudar de forma sistemática a estrutura de grandes programas importantes.
    • Isso leva ao problema de repetir erros semelhantes, em vez de aproveitar casos de sucesso existentes.
    • Esses livros organizam a estrutura, os componentes, as formas de interação e as lições aprendidas no processo de desenvolvimento de grandes projetos open source.
    • Desenvolvedores iniciantes podem aprender a forma de pensar de desenvolvedores experientes, enquanto desenvolvedores intermediários e avançados podem consultar exemplos de solução para problemas complexos de design.
    • Todos os materiais são disponibilizados sob a licença Creative Commons Attribution 3.0, e a receita com a venda dos livros é doada à Amnesty International.
    • É possível contribuir com a comunidade reportando erros, traduzindo ou escrevendo novos capítulos.

Introdução

  • Limitações estruturais no aprendizado de design de software

    • Arquitetos, durante sua formação, observam inúmeras construções e estudam críticas de especialistas em conjunto.
    • Já desenvolvedores de software têm oportunidades limitadas de compreender profundamente programas de grande porte.
    • Muitos desenvolvedores acumulam experiência principalmente com programas que eles mesmos escreveram.
    • Como resultado, em vez de evoluir a partir de bons exemplos de design do passado, há uma probabilidade maior de repetir erros de design semelhantes.
  • Objetivo dos materiais

    • O objetivo é disponibilizar a estrutura real de aplicações open source em uma forma que possa ser analisada.
    • Os próprios autores dos projetos explicam a estrutura do software e o contexto das decisões de design.
    • Ajuda desenvolvedores a aprender a forma de pensar de outros desenvolvedores sobre design.

Conteúdo principal

Explicando diretamente a estrutura de projetos open source

  • Principais objetos de análise

    • Ao todo, quatro livros tratam de diversas aplicações open source e temas relacionados.
    • Cada capítulo explica a estrutura e a abordagem de design de um projeto ou tema técnico específico.
    • Os autores são desenvolvedores dos respectivos projetos ou especialistas relacionados.
  • Perguntas centrais da análise

    • Quais são os principais componentes do programa.
    • Como cada componente interage.
    • Quais decisões de design foram tomadas durante o desenvolvimento.
    • Que lições foram aprendidas ao criar o projeto.

AOSA Volume 1 aborda a estrutura de aplicações open source representativas

  • Principais conteúdos

    • Aborda diversos projetos, como Asterisk, Audacity, Bash, Berkeley DB, CMake, Eclipse, Graphite, HDFS, LLVM, Mercurial, Selenium WebDriver e Sendmail.
    • Inclui uma ampla variedade de áreas, como software de sistema, ferramentas de desenvolvimento, bancos de dados, sistemas de arquivos distribuídos, ferramentas de colaboração e ferramentas de visualização.
  • Importância

    • Permite entender a estrutura interna de projetos open source do ponto de vista de desenvolvedores reais.
    • Permite comparar problemas de design e formas de solução que aparecem repetidamente em diferentes áreas técnicas.

AOSA Volume 2 oferece áreas técnicas ampliadas e casos de design

  • Principais conteúdos

    • Aborda arquitetura web escalável, engenharia de releases do Firefox, FreeRTOS, GDB, GHC, Git, GPSD, MediaWiki, Moodle, nginx, Open MPI, Puppet, PyPy, SQLAlchemy, Twisted, ZeroMQ, entre outros.
    • Inclui diversos temas, como web, compiladores, sistemas operacionais, sistemas distribuídos, runtimes de linguagem, frameworks e ferramentas de infraestrutura.
  • Importância

    • Fornece exemplos de como projetar e operar sistemas de software complexos.
    • É útil para desenvolvedores intermediários e avançados examinarem casos reais de decisões de design.

POSA aborda problemas de desempenho em aplicações open source

  • Principais conteúdos

    • Aborda redes de alto desempenho no Chrome, a transição do SocialCalc para o EtherCalc, o sistema de build Ninja, otimização de parsing de XML, MemShrink, desempenho de redes móveis e processamento de big data em bioinformática.
  • Importância

    • Mostra que a melhoria de desempenho de software não é apenas otimização de código, mas está conectada ao design estrutural, à forma de distribuição, ao ambiente de rede e à forma de processamento de dados.
    • Permite analisar problemas de desempenho com foco em casos reais.

500 Lines or Less implementa ideias centrais com pouco código

  • Principais conteúdos

    • Aborda ferramentas de programação visual, sistemas de integração contínua, sistemas de build dinâmico, crawlers web, bancos de dados de grafos em memória, frameworks web orientados a eventos, interpretadores Python, OCR, planilhas web, análise estática, engines de template e servidores web simples.
  • Importância

    • Explica princípios centrais de design dentro de um tamanho de código limitado.
    • É organizado para permitir o aprendizado de conceitos de sistemas complexos por meio de pequenas implementações.

A licença e as formas de contribuição são claras

  • Licença

    • Esses materiais são disponibilizados sob a licença Creative Commons Attribution 3.0 Unported.
    • É possível usar os materiais desde que as condições de atribuição sejam atendidas.
  • Uso da receita

    • Todos os royalties gerados pela venda dos livros são doados à Amnesty International.
  • Formas de contribuição

    • É possível reportar erros.
    • É possível participar de traduções para outros idiomas ou formatos.
    • É possível escrever capítulos que expliquem a arquitetura de novos projetos open source.
    • Pessoas interessadas em novas traduções ou em escrever capítulos podem entrar em contato com os responsáveis pelo projeto.

Conclusão

  • Resumo central

    • Estes materiais são uma coletânea de casos que permite aprender de forma sistemática a estrutura interna e as decisões de design de aplicações open source.
    • Desenvolvedores podem entender não apenas trechos isolados de código, mas a composição do sistema como um todo e as razões de design por trás dela.
    • Para desenvolvedores iniciantes, servem como ponto de partida para aprender a forma de pensar de desenvolvedores experientes.
    • Para desenvolvedores intermediários e avançados, servem como material para comparar e analisar casos reais em que problemas complexos de design foram resolvidos.
  • Valor prático

    • Têm valor de referência não só para desenvolvedores que usam projetos open source, mas também para aqueles que os projetam e operam diretamente.
    • Ajudam a reduzir erros de design recorrentes e a aprender com exemplos de design já validados.
    • Mostram que o compartilhamento de conhecimento baseado na comunidade pode contribuir para melhorar a capacidade de desenvolvimento de software.

1 comentários

 
desmond2 2 시간 전

Obrigado.