6 poin oleh baeba 1 jam lalu | 1 komentar | Bagikan ke WhatsApp

Ringkasan

  • Topik utama

    • Memperkenalkan buku dan materi terkait yang menjelaskan langsung struktur internal dan keputusan desain aplikasi open source oleh para pengembangnya.
  • Poin utama

    • Berbeda dengan arsitek, pengembang perangkat lunak secara historis memiliki sedikit kesempatan untuk mempelajari secara sistematis struktur program besar yang penting.
    • Akibatnya, muncul masalah berupa pengulangan kesalahan serupa alih-alih memanfaatkan contoh sukses yang sudah ada.
    • Buku-buku ini merangkum struktur, komponen, cara interaksi, dan pelajaran yang diperoleh selama proses pengembangan dari proyek-proyek open source utama.
    • Pengembang pemula dapat mempelajari cara berpikir pengembang berpengalaman, sementara pengembang tingkat menengah dan senior dapat merujuk pada contoh penyelesaian masalah desain yang kompleks.
    • Semua materi tersedia dengan lisensi Creative Commons Attribution 3.0, dan pendapatan dari penjualan buku disumbangkan kepada Amnesty International.
    • Kontribusi komunitas dimungkinkan, termasuk pelaporan kesalahan, penerjemahan, dan penulisan bab baru.

Pendahuluan

  • Keterbatasan struktural dalam pembelajaran desain perangkat lunak

    • Dalam proses pendidikan, arsitek mengamati banyak bangunan dan mempelajari kritik dari para ahli.
    • Sebaliknya, pengembang perangkat lunak memiliki kesempatan terbatas untuk memahami program berskala besar secara mendalam.
    • Banyak pengembang membangun pengalaman terutama dari program yang mereka tulis sendiri.
    • Akibatnya, mereka lebih berisiko mengulangi kesalahan desain serupa daripada berkembang berdasarkan contoh desain unggul dari masa lalu.
  • Tujuan materi

    • Tujuannya adalah menyediakan struktur nyata aplikasi open source dalam bentuk yang dapat dianalisis.
    • Penulis proyek menjelaskan langsung struktur perangkat lunak dan latar belakang desainnya.
    • Materi ini membantu pengembang mempelajari cara berpikir desain dari pengembang lain.

Isi

Menjelaskan langsung struktur proyek open source

  • Objek analisis utama

    • Total empat buku membahas berbagai aplikasi open source dan topik terkait.
    • Setiap bab menjelaskan struktur dan pendekatan desain dari proyek atau topik teknis tertentu.
    • Para penulis terdiri dari pengembang proyek tersebut atau pakar terkait.
  • Pertanyaan inti dalam analisis

    • Apa saja komponen utama program.
    • Bagaimana setiap komponen saling berinteraksi.
    • Keputusan desain apa yang diambil selama proses pengembangan.
    • Pelajaran apa yang diperoleh saat membuat proyek tersebut.

AOSA Volume 1 membahas struktur aplikasi open source representatif

  • Isi utama

    • Membahas berbagai proyek seperti Asterisk, Audacity, Bash, Berkeley DB, CMake, Eclipse, Graphite, HDFS, LLVM, Mercurial, Selenium WebDriver, dan Sendmail.
    • Mencakup cakupan luas seperti perangkat lunak sistem, alat pengembangan, basis data, sistem file terdistribusi, alat kolaborasi, dan alat visualisasi.
  • Makna penting

    • Struktur internal proyek open source dapat dipahami dari sudut pandang pengembang nyata.
    • Masalah desain dan cara penyelesaian yang berulang di berbagai bidang teknologi dapat dibandingkan.

AOSA Volume 2 menyediakan cakupan teknologi yang lebih luas dan contoh desain

  • Isi utama

    • Membahas scalable web architecture, rekayasa rilis Firefox, FreeRTOS, GDB, GHC, Git, GPSD, MediaWiki, Moodle, nginx, Open MPI, Puppet, PyPy, SQLAlchemy, Twisted, ZeroMQ, dan lainnya.
    • Mencakup beragam topik seperti web, compiler, sistem operasi, sistem terdistribusi, runtime bahasa, framework, dan alat infrastruktur.
  • Makna penting

    • Menyediakan contoh tentang cara merancang dan mengoperasikan sistem perangkat lunak yang kompleks.
    • Berguna bagi pengembang tingkat menengah dan senior untuk meninjau contoh nyata keputusan desain.

POSA membahas masalah performa dalam aplikasi open source

  • Isi utama

    • Membahas high-performance networking di Chrome, perubahan dari SocialCalc ke EtherCalc, sistem build Ninja, optimasi parsing XML, MemShrink, performa jaringan mobile, pemrosesan big data dalam bioinformatika, dan lainnya.
  • Makna penting

    • Menunjukkan bahwa peningkatan performa perangkat lunak bukan sekadar optimasi kode, melainkan terkait dengan desain struktural, metode deployment, lingkungan jaringan, dan cara pemrosesan data.
    • Masalah performa dapat dianalisis dengan berfokus pada contoh nyata.

500 Lines or Less mengimplementasikan ide inti dengan sedikit kode

  • Isi utama

    • Membahas alat pemrograman visual, sistem continuous integration, sistem build dinamis, web crawler, basis data graf in-memory, framework web berbasis event, interpreter Python, OCR, spreadsheet web, analisis statis, template engine, server web sederhana, dan lainnya.
  • Makna penting

    • Menjelaskan prinsip desain inti dalam skala kode yang terbatas.
    • Disusun agar konsep sistem yang kompleks dapat dipelajari melalui implementasi kecil.

Lisensi dan cara berkontribusi jelas

  • Lisensi

    • Materi ini tersedia dengan lisensi Creative Commons Attribution 3.0 Unported.
    • Materi dapat digunakan selama memenuhi ketentuan atribusi.
  • Penggunaan pendapatan

    • Semua royalti dari penjualan buku disumbangkan kepada Amnesty International.
  • Cara berkontribusi

    • Kesalahan dapat dilaporkan.
    • Anda dapat berpartisipasi dalam penerjemahan ke bahasa atau format lain.
    • Anda dapat menulis bab yang menjelaskan arsitektur proyek open source baru.
    • Orang yang berminat pada penerjemahan baru atau penulisan bab dapat menghubungi pihak terkait proyek.

Kesimpulan

  • Rangkuman inti

    • Materi ini adalah kumpulan contoh untuk mempelajari secara sistematis struktur internal dan keputusan desain aplikasi open source.
    • Pengembang dapat memahami komposisi seluruh sistem dan alasan desainnya, bukan hanya potongan kode individual.
    • Bagi pengembang pemula, ini menjadi titik awal untuk mempelajari cara berpikir pengembang berpengalaman.
    • Bagi pengembang tingkat menengah dan senior, ini menjadi materi untuk membandingkan dan menganalisis contoh nyata penyelesaian masalah desain yang kompleks.
  • Nilai praktis

    • Materi ini bernilai sebagai referensi tidak hanya bagi pengembang yang menggunakan proyek open source, tetapi juga bagi pengembang yang merancang dan mengoperasikannya sendiri.
    • Membantu mengurangi kesalahan desain yang berulang dan mempelajari contoh desain yang telah teruji.
    • Menunjukkan bahwa berbagi pengetahuan berbasis komunitas dapat berkontribusi pada peningkatan kemampuan pengembangan perangkat lunak.

1 komentar

 
desmond2 1 jam lalu

Terima kasih