Compartilhamento de conhecimento sobre a estrutura e o design de aplicações open source
(aosabook.org)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
Obrigado.