Aracılığıyla paylaş


Uygulamanızı Modellerden Oluşturma ve Yapılandırma

Bir modelden uygulamanızın parçalarını oluşturabilir veya yapılandırabilirsiniz. Model, UML ya da DSL'de olabilir.

Model gereksinimleri koda göre daha doğrudan bir şekilde temsil eder. Uygulama davranışını doğrudan modelden türeterek, kodu güncelleştirmeye kıyasla değişen şartlara çok daha hızlı ve daha güvenilir bir şekilde yanıt verebilirsiniz. Her ne kadar, türetmeyi kurmak için birkaç başlangıç çalışması gerekse de, gereksinimlerde değişiklik bekliyorsanız ya da ürünün birkaç çeşidini yapmayı planlıyorsanız bu yatırım geri döndürülür.

Uygulamanızın kodunu bir Modelde oluşturma

Kod oluşturmanın en kolay kolu metin şablonları kullanmaktır. Modeli tuttuğunuz aynı Visual Studio çözümünde kod oluşturabilirsiniz. Daha fazla bilgi için bkz:

Bu yöntemi artımlı olarak uygulamak kolaydır. Yalnızca belirli bir çalışma için işe yarayan bir uygulamayla başlayın ve modelden farklı hale getirmek istediğiniz birkaç parçasını seçin. Bu bölümlerin kaynak dosyalarını metin şablonu (.tt) dosyaları olabilecek şekilde yeniden adlandırın. Bu noktada, kaynak .cs dosyaları otomatik olarak şablon dosyalarından oluşturulacaktır ve dolayısıyla uygulama daha önce olduğu gibi çalışacaktır.

Sonra kodun bir bölümünü alabilir ve bunu, modeli okuyup kaynak dosyasının bu bölümünü oluşturan bir metin şablonu ifadesi ile değiştirebilirsiniz. Uygulamayı yeniden çalıştırabilmeniz ve onun eskisi gibi çalışması için modelin en az bir değeri, özgün kaynağı oluşturmalıdır. Farklı model değerlerini test ettikten sonra, kodun başka bir bölümüne şablon ifadeleri eklemeye geçebilirsiniz.

Bu artımlı yöntem, kod oluşturmanın genellikle düşük riskli bir yaklaşım olduğu anlamına gelir. Genellikle sonuçlanan uygulamalar neredeyse elle yazılmış bir sürüm kadar performans sergiler.

Ancak, varolan bir uygulama ile başlarsanız, model tarafından yönetilen farklı davranışları ayırmak için bir sürü yeniden düzenlemenin gerekli olduğunu bulabilirsiniz ve böylece bağımsız olarak değiştirilebilirler. Projenizin maliyetini tahmin ederken uygulamanın bu açısını da değerlendirmenizi öneririz.

Uygulamanızı bir Model üzerinden Yapılandırma

Uygulamanızın davranışını çalışma zamanında değiştirmek istiyorsanız, uygulama derlenmeden önce kaynak kodu oluşturan kod oluşturmayı kullanamazsınız. Bunun yerine, uygulamanızı, UML ya da DSL modeli okuması ve davranışını buna göre farklılık göstermesi için tasarlayabilirsiniz. Daha fazla bilgi için bkz:

Bu yöntem kademeli olarak da uygulanabilir, ancak başlangıçta daha çok iş vardır. Model okuyacak ve değerlerinin değişken parçaları için erişilebilir olmasına izin veren bir çerçeve ayarlayacak kodu yazmanız gerekir. Değişken bölümlerin genel yapılması, kod oluşturmaktan daha pahalıdır.

Genel bir uygulama, genellikle belirli karşıtlarından daha az şey gerçekleştirir. Performans önemliyse, proje planınız bu riskin bir değerlendirmesini içermelidir.

Türetilmiş bir Uygulama Geliştirme

Aşağıdaki genel kılavuzları yararlı bulacaksınız.

  • Ayrıntılı olarak başlayın, daha sonra genelleştirin. Uygulamanız için önce belirli bir sürüm yazın. Bu sürüm, bazı şartlarda işe yaramalıdır. Doğru çalıştığını düşündüğünüzde, bir kısmının modelden türemesini sağlayabilirsiniz. Türetilmiş parçaları yavaş yavaş artırın.

    Örneğin, bir model içinde tanımlanmış sayfaları temsil eden bir Web uygulaması tasarlamadan önce belirli Web sayfası kümelerine sahip bir Web sitesi tasarlayın.

  • Değişken görünüşlerini modelleyin. Bir dağıtım veya başka biri arasında değişen ya da zamanla gereksinimler değiştikçe değişen yönleri tanımlar. Bunlar bir modelden türetilmesi gereken özelliklerdir.

    Örneğin, Web sayfası kümeleri ve aralarındaki bağlantılar değişiyorsa ancak sayfaların stil ve formatı her zaman aynı ise, o halde model bağlantıları açıklamalıdır ancak sayfaların formatını açıklamasına gerek yoktur.

  • Sorunları ayırın. Değişken yönleri bağımsız alanlara ayrılabilir, her alan için ayrı model kullanın. ModelBus kullanarak, iki modeli de etkileyen işlemleri ve aralarındaki sınırlamaları tanımlayabilirsiniz.

    Örneğin, Web sayfaları arasında gezinti tanımlamak için bir model ve sayfaların düzenini tanımlamak için farklı bir model kullanın. Daha fazla bilgi için bkz. UML Modelleri Diğer Modeller ve Araçlarla ile Nasıl Tümleştirilir.

  • Çözümü değil, gereksinimi modelleyin. Kullanıcı gereksinimlerini açıklaması için DSL'nin tasarlanması veya UML'nin uyarlanması. Buna karşılık, gösterimi uygulamanın değişken yönlerine göre tasarlamayın.

    Örneğin, Web gezinti modeli Web sayfalarını ve aralarındaki köprüleri temsil etmelidir. Web gezinti modeli HTML parçalarını veya uygulamanızdaki sınıfları temsil etmemelidir.

  • Oluştur ya da yorumla? Belirli bir dağıtımın gereksinimleri nadiren değişecekse, program kodunu modelden oluşturun. Gereksinimler sık sık değişebilir veya birden fazla değişken ile aynı dağıtımda bir arada bulunabilirse, uygulamayı modeli okuyacak ve yorumlayacak şekilde yazın.

    Örneğin, Web sitesi modelinizi farklı ve arı ayrı yüklenmiş Web siteleri geliştirmek için kullanırsanız, site kodunu modelden oluşturmanız gerekir. Ancak modelinizi her gün değişen bir siteyi denetlemek için kullanıyorsanız, bu durumda modeli okuyan ve siteyi buna göre sunan bir Web sunucusu yazmak daha iyidir.

  • UML veya DSL? UML'yi genişletmek için stereotipleri kullanarak modelleme gösteriminizi oluşturmayı düşünün. Amaca uygun herhangi bir UML diyagramı yoksa bir DSL tanımlayın. Ancak UML'nin standart anlambilimini çiğnemekten kaçının.

    Örneğin, bir UML sınıf diyagramı bir kutuları ve oklar topluluğudur; bu bildirim ile teoride her şeyi tanımlayabilirsiniz. Ancak bir dizi türü açıkladığınız durumlar haricinde sınıf diyagramını kullanmanızı önermiyoruz. Örneğin, farklı Web sayfası türlerini tanımlamak üzere sınıf diyagramları uyarlayabilirsiniz.

Ayrıca bkz.

Kavramlar

Bir UML Modeli'nden Dosyalar Nasıl Oluşturulur

Program Kodundaki UML Modeli Nasıl Okunur

Nasıl yapılır: Program kod dosyasından Model Aç

T4 metin şablonları kullanarak tasarım zamanı kod oluşturma

Diğer Kaynaklar

Bir etki alanına özgü dil kodu oluşturma