Uygulama mimarinizi modelleme
Yazılım sisteminizin veya uygulamanızın kullanıcılarınızın gereksinimlerini karşıladığından emin olmak için, yazılım sisteminizin veya uygulamanızın genel yapısını ve davranışını açıklamanızın bir parçası olarak Visual Studio'da modeller oluşturabilirsiniz. Modelleri kullanarak, tasarım boyunca kullanılan desenleri de açıklayabilirsiniz. Bu modeller mevcut mimariyi anlamanıza, değişiklikleri tartışmanıza ve amaçlarınızı net bir şekilde iletmenize yardımcı olur.
Hangi Visual Studio sürümlerinin bu özelliği desteklediğini görmek için bkz . Mimari ve modelleme araçları için sürüm desteği.
Modelin amacı, doğal dil açıklamalarında ortaya çıkan belirsizlikleri azaltmak ve sizin ve iş arkadaşlarınızın tasarımı görselleştirmenize ve alternatif tasarımları tartışmanıza yardımcı olmaktır. Model diğer belgeler veya tartışmalarla birlikte kullanılmalıdır. Tek başına, bir model mimarinin tam belirtimini temsil etmez.
Not
Bu konu başlığı boyunca "sistem", geliştirmekte olduğunuz yazılım anlamına gelir. Çok sayıda yazılım ve donanım bileşeninden oluşan büyük bir koleksiyon ya da tek bir uygulama ya da bir uygulamanın parçası olabilir.
Bir sistemin mimarisi iki alana ayrılabilir:
Üst Düzey Tasarım. Bu, ana bileşenleri ve her gereksinimi yerine getirmek için birbirleriyle nasıl etkileşime geçtiğini açıklar. Sistem büyükse, her bileşenin daha küçük bileşenlerden nasıl oluştuğunu gösteren kendi üst düzey tasarımı olabilir.
Bileşenlerin tasarımlarında kullanılan Tasarım Desenleri ve kuralları. Desen, programlama hedefine ulaşmak için belirli bir yaklaşımı açıklar. Ekibiniz, tasarım genelinde aynı desenleri kullanarak değişiklik yapma ve yeni yazılım geliştirme maliyetlerini düşürebilir.
Üst Düzey Tasarım
Üst düzey tasarım, sisteminizin ana bileşenlerini ve tasarımın hedeflerine ulaşmak için birbirleriyle nasıl etkileşime geçtiklerini açıklar. Aşağıdaki listede yer alan etkinlikler, belirli bir sırada olması gerekmese de, üst düzey tasarımın geliştirilmesinde yer alır.
Mevcut kodu güncelleştiriyorsanız, ana bileşenleri açıklayarak başlayabilirsiniz. Kullanıcı gereksinimlerinde yapılan değişiklikleri anladığınızdan emin olun ve ardından bileşenler arasında etkileşimler ekleyin veya değiştirin. Yeni bir sistem geliştiriyorsanız, kullanıcıların ihtiyaçlarının ana özelliklerini anlayarak başlayın. Ardından, ana kullanım örnekleri için etkileşim dizilerini inceleyebilir ve ardından dizileri bir bileşen tasarımında birleştirebilirsiniz.
Her durumda, farklı etkinlikleri paralel olarak geliştirmek ve erken aşamada kod ve test geliştirmek yararlı olur. Bir diğerini başlatmadan önce bu yönlerden birini tamamlamaya çalışmaktan kaçının. Genellikle, siz kodu yazarken ve test ederken hem gereksinimler hem de sistemi tasarlamanın en iyi yolunu anlamanız değişir. Bu nedenle, gereksinimlerin ve tasarımınızın ana özelliklerini anlayıp kodlayarak başlamalısınız. Projenin sonraki yinelemelerinde ayrıntıları doldurun.
Gereksinimleri Anlama. Herhangi bir tasarımın başlangıç noktası, kullanıcıların ihtiyaçlarını net bir şekilde anlamaktır.
Mimari Desenler. Sistemin temel teknolojileri ve mimari öğeleri hakkında yaptığınız seçimler.
Bileşenlerin ve Arabirimlerin Veri Modeli. Bileşenler arasında geçirilen ve bileşenlerin içinde depolanan bilgileri açıklamak için sınıf diyagramları çizebilirsiniz.
Gereksinimleri Anlama
Eksiksiz bir uygulamanın üst düzey tasarımı, en etkili şekilde bir gereksinim modeli veya kullanıcıların ihtiyaçlarının diğer açıklamaları ile birlikte geliştirilmiştir. Gereksinimler modelleri hakkında daha fazla bilgi için bkz . Model kullanıcı gereksinimleri.
Geliştirmekte olduğunuz sistem daha büyük bir sistemdeki bir bileşense, programlı arabirimlerde gereksinimlerinizin bir bölümü veya tümü somutlaştırılabilir.
Gereksinimler modeli şu temel bilgileri sağlar:
Sağlanan arabirimler. Sağlanan arabirimde, ister insan kullanıcılar ister diğer yazılım bileşenleri olsun, sistemin veya bileşenin kullanıcılarına sağlaması gereken hizmetler veya işlemler listelenir.
Gerekli arabirimler. Gerekli bir arabirim, sistemin veya bileşenin kullanabileceği hizmetleri veya işlemleri listeler. Bazı durumlarda, tüm bu hizmetleri kendi sisteminizin bir parçası olarak tasarlayabileceksiniz. Diğer durumlarda, özellikle de birçok yapılandırmada diğer bileşenlerle birleştirilebilen bir bileşen tasarlarsanız, gerekli arabirim dış konular tarafından ayarlanır.
Hizmet kalitesi gereksinimleri. Sistemin karşılaması gereken performans, güvenlik, sağlamlık ve diğer hedefler ve kısıtlamalar.
Gereksinimler modeli, ister kişi ister diğer yazılım bileşenleri olsun, sisteminizin kullanıcıları açısından yazılır. Sisteminizin iç çalışmalarıyla ilgili hiçbir şey bilmiyorlar. Buna karşılık, mimari modeldeki amacınız iç çalışmaları açıklamak ve kullanıcıların ihtiyaçlarını nasıl karşıladıklarını göstermektir.
Gereksinimleri ve mimari modelleri ayrı tutmak, gereksinimleri kullanıcılarla tartışmayı kolaylaştırdığından yararlıdır. Ayrıca tasarımı yeniden düzenlemenize ve gereksinimleri değiştirmeden tutarken alternatif mimarileri göz önünde bulundurmanıza da yardımcı olur.
Gereksinimlere veya mimari modele koymanız gereken ayrıntı miktarı, projenin ölçeğine ve ekibin boyutuna ve dağılımına bağlıdır. Kısa bir projedeki küçük bir ekip, iş kavramlarının ve bazı tasarım desenlerinin sınıf diyagramını çizmekten başka bir şey olmayabilir; birden fazla bölgeye dağıtılmış büyük bir projenin önemli ölçüde daha fazla ayrıntıya ihtiyacı olacaktır.
Mimari Desenleri
Geliştirmenin ilk aşamalarında tasarımın bağlı olduğu başlıca teknolojileri ve öğeleri seçmeniz gerekir. Bu seçimlerin yapılması gereken alanlar şunlardır:
Veritabanı ve dosya sistemi arasındaki seçim ve ağa bağlı bir uygulama ile web istemcisi arasında seçim gibi temel teknoloji seçenekleri.
Windows Workflow Foundation veya ADO.NET Entity Framework arasında seçim gibi çerçeve seçenekleri.
Kurumsal hizmet veri yolu veya noktadan noktaya kanal gibi tümleştirme yöntemi seçenekleri.
Bu seçimler genellikle ölçek ve esneklik gibi hizmet gereksinimlerinin kalitesine göre belirlenir ve ayrıntılı gereksinimler bilinmeden önce yapılabilir. Büyük bir sistemde, donanım ve yazılım yapılandırması güçlü bir şekilde birbiriyle ilişkilidir.
Yaptığınız seçimler, mimari modeli kullanma ve yorumlama şeklinizi etkiler. Örneğin, veritabanı kullanan bir sistemde, sınıf diyagramındaki ilişkilendirmeler veritabanındaki ilişkileri veya yabancı anahtarları temsil edebilirken, XML dosyalarını temel alan bir sistemde ilişkilendirmeler XPath kullanan çapraz başvuruları gösterebilir. Dağıtılmış bir sistemde, bir sıralı diyagramdaki iletiler bir kablodaki iletileri temsil edebilir; bağımsız bir uygulamada işlev çağrılarını temsil edebilir.
Tasarım Desenleri
Tasarım deseni, özellikle sistemin farklı bölümlerinde özyinelenen yazılımın belirli bir yönünün nasıl tasarlandığını gösteren bir ana hattır. Proje genelinde tekdüzen bir yaklaşım benimseyerek tasarım maliyetini azaltabilir, kullanıcı arabiriminde tutarlılık sağlayabilir ve kodu anlama ve değiştirme maliyetini azaltabilirsiniz.
Gözlemci gibi bazı genel tasarım desenleri iyi bilinir ve yaygın olarak uygulanabilir. Ayrıca, yalnızca projeniz için geçerli olan desenler vardır. Örneğin, bir web satış sisteminde kodda müşterinin siparişinde değişiklik yapılan birkaç işlem olacaktır. Siparişin durumunun her aşamada doğru bir şekilde görüntülendiğinden emin olmak için tüm bu işlemlerin veritabanını güncelleştirmek için belirli bir protokolü izlemesi gerekir.
Yazılım mimarisinin çalışmasının bir parçası, tasarım genelinde hangi desenlerin benimsenmesi gerektiğini belirlemektir. Proje ilerledikçe mevcut desenlerde yeni desenler ve geliştirmeler bulunacağından bu genellikle devam eden bir görevdir. Geliştirme planını düzenlemek, ana tasarım desenlerinizin her birini erken aşamada kullanmanıza yardımcı olur.
Çoğu tasarım deseni, çerçeve kodunda kısmen somutlaştırılabilir. Desenin bir bölümü, geliştiricinin veritabanının doğru şekilde işlenmesini sağlayan veritabanı erişim katmanı gibi belirli sınıfları veya bileşenleri kullanmasını zorunlu tutarak azaltılabilir.
Tasarım deseni belgede açıklanmıştır ve genellikle şu bölümleri içerir:
Adı.
Geçerli olduğu bağlamın açıklaması. Bir geliştiricinin bu deseni uygulamayı göz önünde bulundurması için hangi ölçütler kullanılmalıdır?
Çözdüğü sorunun kısa açıklaması.
Ana bölümlerin ve ilişkilerinin modeli. Bunlar, aralarında ilişkilendirmeler ve bağımlılıklar bulunan sınıflar veya bileşenler ve arabirimler olabilir. Öğeler genellikle iki kategoriye ayrılır:
Adlandırma kuralları.
Desenin sorunu nasıl çözdüğüne ilişkin açıklama.
Geliştiricilerin benimseyebileceği varyasyonların açıklaması.