Özet Genel Bakış
-
Ana konu
- Açık kaynak uygulamaların iç yapısını ve tasarım kararlarını geliştiricilerin bizzat açıkladığı kitapları ve ilgili kaynakları tanıtır.
-
Temel noktalar
- Yazılım geliştiriciler, mimarların aksine, tarihsel açıdan önemli büyük programların yapısını sistemli biçimde öğrenme fırsatına daha az sahiptir.
- Bu nedenle mevcut başarı örneklerinden yararlanmak yerine benzer hataların tekrarlanması sorunu ortaya çıkar.
- Bu kitaplar, önemli açık kaynak projelerin yapısını, bileşenlerini, etkileşim biçimlerini ve geliştirme sürecinde edinilen dersleri derler.
- Yeni başlayan geliştiriciler deneyimli geliştiricilerin düşünme biçimini öğrenebilir; orta ve ileri düzey geliştiriciler ise karmaşık tasarım sorunlarının çözüm örneklerinden yararlanabilir.
- Tüm materyaller Creative Commons Attribution 3.0 lisansıyla sunulur; kitap satış gelirleri Amnesty International'a bağışlanır.
- Hata bildirme, çeviri ve yeni bölüm yazma gibi topluluk katkıları mümkündür.
Giriş
-
Yazılım tasarımı öğrenimindeki yapısal sınırlılık
- Mimarlar eğitim süreçlerinde çok sayıda yapıyı gözlemler ve uzman eleştirileriyle birlikte öğrenir.
- Buna karşılık yazılım geliştiricilerin büyük ölçekli programları derinlemesine anlama fırsatı sınırlıdır.
- Birçok geliştirici deneyimini ağırlıklı olarak kendi yazdığı programlar üzerinden biriktirir.
- Bunun sonucunda geçmişteki iyi tasarım örnekleri üzerine ilerlemek yerine benzer tasarım hatalarını tekrarlama olasılığı artar.
-
Kaynakların amacı
- Amaç, açık kaynak uygulamaların gerçek yapısını analiz edilebilir bir biçimde sunmaktır.
- Proje yazarları yazılım yapısını ve tasarım arka planını bizzat açıklar.
- Geliştiricilerin başka geliştiricilerin tasarım düşünme biçimini öğrenmesine yardımcı olur.
Ana Bölüm
Açık kaynak projelerin yapısını doğrudan açıklar
-
Başlıca analiz konuları
- Toplam dört kitap, çeşitli açık kaynak uygulamaları ve ilgili konuları ele alır.
- Her bölüm belirli bir projenin veya teknik konunun yapısını ve tasarım yaklaşımını açıklar.
- Yazarlar, ilgili projenin geliştiricilerinden veya konuyla ilgili uzmanlardan oluşur.
-
Analizin temel soruları
- Programın ana bileşenleri nelerdir?
- Her bileşen birbiriyle nasıl etkileşime girer?
- Geliştirme sürecinde hangi tasarım kararları alınmıştır?
- Projeyi geliştirirken hangi dersler çıkarılmıştır?
AOSA Volume 1, önde gelen açık kaynak uygulamaların yapısını ele alır
-
Başlıca içerik
- Asterisk, Audacity, Bash, Berkeley DB, CMake, Eclipse, Graphite, HDFS, LLVM, Mercurial, Selenium WebDriver, Sendmail gibi çeşitli projeleri ele alır.
- Sistem yazılımları, geliştirme araçları, veritabanları, dağıtık dosya sistemleri, işbirliği araçları ve görselleştirme araçları gibi geniş bir alanı kapsar.
-
Önemi
- Açık kaynak projelerin iç yapısını gerçek geliştiricilerin bakış açısından anlamayı sağlar.
- Farklı teknik alanlarda tekrarlayan tasarım sorunlarını ve çözüm yaklaşımlarını karşılaştırmaya olanak tanır.
AOSA Volume 2, genişletilmiş teknik alanlar ve tasarım örnekleri sunar
-
Başlıca içerik
- Ölçeklenebilir web mimarisi, Firefox sürüm mühendisliği, FreeRTOS, GDB, GHC, Git, GPSD, MediaWiki, Moodle, nginx, Open MPI, Puppet, PyPy, SQLAlchemy, Twisted, ZeroMQ gibi konuları ele alır.
- Web, derleyiciler, işletim sistemleri, dağıtık sistemler, dil çalışma zamanları, framework'ler ve altyapı araçları gibi çeşitli konular içerir.
-
Önemi
- Karmaşık yazılım sistemlerinin nasıl tasarlanıp işletildiğine dair örnekler sunar.
- Orta ve ileri düzey geliştiricilerin tasarım kararlarının gerçek örneklerini incelemesi için yararlıdır.
POSA, açık kaynak uygulamaların performans sorunlarını ele alır
-
Başlıca içerik
- Chrome'un yüksek performanslı ağ işlevleri, SocialCalc'tan EtherCalc'a geçiş, Ninja derleme sistemi, XML ayrıştırma optimizasyonu, MemShrink, mobil ağ performansı ve biyoinformatikte büyük veri işleme gibi konuları ele alır.
-
Önemi
- Yazılım performansını iyileştirmenin yalnızca kod optimizasyonu olmadığını; yapısal tasarım, dağıtım biçimi, ağ ortamı ve veri işleme yöntemiyle bağlantılı olduğunu gösterir.
- Performans sorunlarını gerçek örnekler odağında analiz etmeyi sağlar.
500 Lines or Less, temel fikirleri küçük kodlarla uygular
-
Başlıca içerik
- Görsel programlama araçları, sürekli entegrasyon sistemleri, dinamik derleme sistemleri, web crawler, bellek içi graph veritabanı, olay tabanlı web framework'ü, Python yorumlayıcısı, OCR, web spreadsheet, statik analiz, template engine ve basit web sunucusu gibi konuları ele alır.
-
Önemi
- Sınırlı kod boyutu içinde temel tasarım ilkelerini açıklar.
- Küçük uygulamalar aracılığıyla karmaşık sistem kavramlarının öğrenilmesini sağlayacak şekilde yapılandırılmıştır.
Lisans ve katkı yöntemi nettir
-
Lisans
- Bu materyaller Creative Commons Attribution 3.0 Unported lisansıyla sunulur.
- Atıf şartı yerine getirildiğinde materyallerden yararlanılabilir.
-
Gelir kullanımı
- Kitap satışlarından doğan tüm telif gelirleri Amnesty International'a bağışlanır.
-
Katkı yöntemleri
- Hata bildirimi yapılabilir.
- Başka dillere veya formatlara çeviri çalışmalarına katılınabilir.
- Yeni bir açık kaynak projenin mimarisini açıklayan bir bölüm yazılabilir.
- Yeni çeviri veya bölüm yazımıyla ilgilenenler proje yetkilileriyle iletişime geçebilir.
Sonuç
-
Temel özet
- Bu kaynaklar, açık kaynak uygulamaların iç yapısını ve tasarım kararlarını sistemli biçimde öğrenmeyi sağlayan bir örnekler koleksiyonudur.
- Geliştiriciler tek tek kod parçaları yerine tüm sistemin yapısını ve tasarım gerekçelerini anlayabilir.
- Yeni başlayan geliştiriciler için deneyimli geliştiricilerin düşünme biçimini öğrenmede bir başlangıç noktasıdır.
- Orta ve ileri düzey geliştiriciler için karmaşık tasarım sorunlarının çözüldüğü gerçek örnekleri karşılaştırıp analiz etmeye yönelik bir kaynaktır.
-
Pratik değeri
- Yalnızca açık kaynak projeleri kullanan geliştiriciler için değil, bunları bizzat tasarlayan ve işleten geliştiriciler için de referans değeri taşır.
- Tekrarlanan tasarım hatalarını azaltmaya ve kanıtlanmış tasarım örneklerini öğrenmeye yardımcı olur.
- Topluluk temelli bilgi paylaşımının yazılım geliştirme yetkinliğini artırmaya katkı sağlayabileceğini gösterir.
1 yorum
Teşekkürler