Yüksek Seviyeli ve Düşük Seviyeli Sistem Tasarımı
Yazılım Geliştirme özellikle de ürün geliştirme işleminin çeşitli aşamaları mevcuttur. Genel olarak bu ürünleri birer sistem olarak görmek mümkündür. Her sistem öncelikle tasarlanır.
Bir bilişim sisteminin hayata geçmesi, Yazılım Geliştirme Yaşam Döngüsü (SDLC) ile sağlanır. SDLC planlama, analiz, tasarım, uygulama geliştirme, dokümantasyon, test gibi aşamalardan oluşur.
Yazılım geliştirme tasarım döngüsü birçok süreçten geçer. Bunlardan en önemlileri Yüksek Seviyeli Tasarım (HLD) ve Düşük Seviyeli Tasarım’dır (LLD).
Sırasıyla bunları inceleyelim.
Yüksek Seviyeli Sistem Tasarımı (HLD) Nedir?
Yüksek Seviyeli Tasarım, genel sistem tasarımıdır. Uygulamanın genel mimarisini tanımlar. HLD sistem mimarisi, veri tabanı tasarımı, sistemler, hizmetler, platformlar ve modüller arasındaki ilişkinin kısa açıklamasını içerir. Makro düzey sistem tasarımı olarak da bilinir. Çözüm mimarı tarafından oluşturulur. İş ile müşteri gereksinimini üst düzey çözüme dönüştürür. Sistem tasarımına kapsamlı bir genel bakış sağlar. Yazılım geliştirmede gerekli tüm bileşenleri birleştiren bir taslaktır. HLD, bir iş planını bir yazılım ürününe veya hizmetine dönüştürür.
Yazılım geliştirmede HLD örnekleri arasında sistem mimarisi belgeleri, uygulama geliştirme akış şemaları yer alır.
Büyük yazılım projelerinin tasarım aşamasında gereklidir. HLD proje tamamlandıktan sonra paydaşların sistemin büyük resmini görmesini sağlar. Riskleri minimize faydayı maksimize eder.
Düşük Seviyeli Sistem Tasarımı (LLD) Nedir?
Düşük Seviyeli Tasarım, HLD sistem mimarisindeki çeşitli bileşenlerin, modüllerin ve adımların ayrı ayrı ele alınması, planlanması, kodlanması ve uygulanmasıdır. HLD’ deki her modülün, nasıl kodlanacağı, çalıştırılacağı, kalite açısından test edileceği ve diğer uygulamalara nasıl entegre edileceği gibi bilgilerin yer aldığı dokümandır. LLD, HLD bileşenlerinin eyleme geçirilebileceği planlar sunar. Yazılım geliştirmede LLD örnekleri arasında entegrasyonlar, güvenlik testleri, kullanıcı ara yüzü tasarımları gibi konular yer alır. Mikro düzey detaylı tasarım olarak da bilinir. Tasarımcılar ve geliştiriciler tarafından oluşturulur. HLD den sonra ikinci doküman olarak oluşturulur.
SDLC’nin ayrılmaz bir parçasıdır. Ürünün kalitesiyle yakından ilgilidir. Gerçek bir kaynak ihtiyacı tanımı yapar. Detaylı proje planı taslağına yakın bir teknik dokümandır. Proje ekibine iş gereksinimlerinin nasıl karşılanacağı konusunda netlik sağlar. Projenin uçtan uca tasarımının yapıldığı belgedir.
HLD ve LLD Arasındaki Farklar
No. | YÜKSEK SEVİYELİ TASARIM | DÜŞÜK SEVİYELİ TASARIM |
01. | Yüksek seviyeli tasarım, genel sistem tasarımıdır, yani genel sistem tasarımına atıfta bulunur. | Yüksek seviyeli tasarımı detaylandırır, bileşen düzeyinde tasarım sürecini ifade eder. |
02. | Yüksek seviyeli tasarımın kısaltması HLD. | Düşük Seviyeli Tasarımın kısaltması LLD. |
03. | Makro düzey sistem tasarımıdır. | Mikro düzey sistem tasarımıdır. |
04. | Uygulamanın genel mimarisidir. | Uygulamaya ait her bir modülün ayrıntılı bilgisi yer alır. |
05. | Uygulamanın kısa işlevselliğini ifade eder. | Uygulamaya ait modüllerin işlevselliğini ayrıntılı ifade eder. |
06. | Çözüm mimarı tarafından tasarlanır. | Tasarımcılar ve geliştiriciler tarafından oluşturulur. |
07. | Paydaşları, tasarım ekibi, inceleme ekibi ve müşterilerdir. | Paydaşları, tasarım ekibi, operasyon ekipleri ve uygulama ekipleridir. |
08. | İlk olarak HLD oluşturulur. | İkinci olarak HLD’ den sonra oluşturulur. |
09. | Başlangıç kriteri yazılım gereksinim dokümanıdır. | Başlangıç kriteri HLD dokümanıdır. |
10. | HLD müşteri gereksinimini çözüme dönüştürür. | HLD’ yi ayrıntılı çözüme dönüştürür. |
11. | HLD çıktı kriterleri, veri tabanı tasarımı, uygulama tasarımı ve gözden geçirme dokümanıdır. | LLD çıktı kriterleri, uygulama tanımı ve test planlarıdır. |
Yazılım Tasarım Belgelerini Anlamak
Yazılım tasarım dokümanını, teknik gereksinimleri ve diğer uygulamalara ek olarak bir yazılım ürünü veya hizmeti geliştirmenin yapısal, işlevsel ve mantıksal yönlerini ana hatlarıyla belirtir. Tasarım ister makro düzeyde ister mikro düzeyde olsun, programcılar ve diğer paydaşlar yazılım geliştirme sürecinin kapsamını ve çeşitli adımlarını bilmeli ve anlamalıdır.