Bileşen Tabanlı Mimari
Bileşen tabanlı mimari, tasarımın yöntemleri, olayları ve özellikleri içeren iyi tanımlanmış iletişim arayüzlerini temsil eden bireysel işlevsel veya mantıksal bileşenlere ayrıştırılmasına odaklanır. Daha yüksek düzeyde bir soyutlama sağlar ve sorunu her biri bileşen bölümleriyle ilişkili alt problemlere böler.
Bileşen tabanlı mimarinin temel amacı, component reusability. Bir bileşen, bir yazılım öğesinin işlevselliğini ve davranışlarını yeniden kullanılabilir ve kendi kendine konuşlandırılabilen bir ikili birim halinde kapsüller. COM / DCOM, JavaBean, EJB, CORBA, .NET, web servisleri ve grid servisleri gibi birçok standart bileşen çerçevesi vardır. Bu teknolojiler, grafik JavaBean bileşenleri, MS ActiveX bileşenleri ve basitçe sürükle ve bırak işlemiyle yeniden kullanılabilen COM bileşenleri gibi yerel masaüstü GUI uygulama tasarımında yaygın olarak kullanılmaktadır.
Bileşen odaklı yazılım tasarımının, geleneksel nesne odaklı yaklaşımlara göre birçok avantajı vardır:
Mevcut bileşenleri yeniden kullanarak pazarda daha az zaman ve geliştirme maliyeti.
Mevcut bileşenlerin yeniden kullanımıyla artan güvenilirlik.
Bileşen nedir?
Bir bileşen modüler, taşınabilir, değiştirilebilir ve yeniden kullanılabilir bir dizi iyi tanımlanmış işlevselliktir ve uygulamasını kapsayarak daha üst düzey bir arayüz olarak dışa aktarır.
Bir bileşen, diğer bileşenlerle etkileşime girmesi, belirli işlevleri veya bir dizi işlevi sarmalaması amaçlanan bir yazılım nesnesidir. Açıkça tanımlanmış bir arayüze sahiptir ve bir mimari içindeki tüm bileşenlerde ortak olan önerilen davranışa uyar.
Bir yazılım bileşeni, yalnızca sözleşmeyle belirlenmiş bir arayüze ve açık bağlam bağımlılıklarına sahip bir bileşim birimi olarak tanımlanabilir. Diğer bir deyişle, bir yazılım bileşeni bağımsız olarak konuşlandırılabilir ve üçüncü şahısların oluşturmasına tabidir.
Bir Bileşenin Görünümleri
Bir bileşenin üç farklı görünümü olabilir - nesne yönelimli görünüm, geleneksel görünüm ve süreçle ilgili görünüm.
Object-oriented view
Bir bileşen, bir veya daha fazla işbirliği yapan sınıflar kümesi olarak görülür. Her problem alanı sınıfı (analiz) ve altyapı sınıfı (tasarım), uygulanması için geçerli olan tüm öznitelikleri ve işlemleri tanımlamak için açıklanır. Ayrıca, sınıfların iletişim kurmasını ve işbirliği yapmasını sağlayan arayüzlerin tanımlanmasını da içerir.
Conventional view
İşlem mantığını, işleme mantığını uygulamak için gerekli olan dahili veri yapılarını ve bileşenin çağrılmasını ve verinin ona iletilmesini sağlayan bir arabirimi entegre eden bir programın işlevsel öğesi veya modülü olarak görülür.
Process-related view
Bu görünümde, her bileşeni sıfırdan oluşturmak yerine, sistem bir kitaplıkta tutulan mevcut bileşenlerden inşa ediyor. Yazılım mimarisi formüle edilirken, bileşenler kütüphaneden seçilir ve mimariyi doldurmak için kullanılır.
Bir kullanıcı arabirimi (UI) bileşeni ızgaraları, kontroller olarak adlandırılan düğmeleri içerir ve yardımcı program bileşenleri, diğer bileşenlerde kullanılan işlevlerin belirli bir alt kümesini ortaya çıkarır.
Diğer yaygın bileşen türleri, kaynak yoğun olan, sık erişilmeyen ve tam zamanında (JIT) yaklaşımı kullanılarak etkinleştirilmesi gereken bileşenlerdir.
Kurumsal iş uygulamaları ve Enterprise JavaBean (EJB), .NET bileşenleri ve CORBA bileşenleri gibi internet web uygulamalarında dağıtılan birçok bileşen görünmezdir.
Bileşenlerin Özellikleri
Reusability- Bileşenler genellikle farklı uygulamalarda farklı durumlarda yeniden kullanılmak üzere tasarlanmıştır. Bununla birlikte, bazı bileşenler belirli bir görev için tasarlanabilir.
Replaceable - Bileşenler, diğer benzer bileşenlerle serbestçe ikame edilebilir.
Not context specific - Bileşenler, farklı ortamlarda ve bağlamlarda çalışmak üzere tasarlanmıştır.
Extensible - Bir bileşen, yeni davranış sağlamak için mevcut bileşenlerden genişletilebilir.
Encapsulated - AA bileşeni, arayanın işlevselliğini kullanmasına izin veren ve dahili işlemlerin ayrıntılarını veya herhangi bir dahili değişken veya durumu açığa çıkarmayan arayüzleri gösterir.
Independent - Bileşenler, diğer bileşenlere minimum bağımlılık sağlayacak şekilde tasarlanmıştır.
Bileşen Bazlı Tasarım İlkeleri
Bileşen düzeyinde bir tasarım, kaynak koduna çevrilebilen bazı ara temsiller (örneğin grafik, tablo veya metin tabanlı) kullanılarak temsil edilebilir. Veri yapılarının, arayüzlerin ve algoritmaların tasarımı, hataların ortaya çıkmasını önlememize yardımcı olmak için iyi belirlenmiş yönergelere uygun olmalıdır.
Yazılım sistemi yeniden kullanılabilir, birleşik ve kapsüllenmiş bileşen birimlerine ayrıştırılır.
Her bileşenin, gerekli bağlantı noktalarını ve sağlanan bağlantı noktalarını belirten kendi arabirimi vardır; her bileşen ayrıntılı uygulamasını gizler.
Bileşenin mevcut parçalarına dahili kod veya tasarım değişiklikleri yapmaya gerek kalmadan bir bileşen genişletilmelidir.
Soyutlamalara bağlı bileşen, harcanabilirlikte zorluğu artıran diğer somut bileşenlere bağlı değildir.
Bağlayıcılar, bileşenler arasındaki etkileşimi belirleyerek ve yöneterek bileşenleri bağladı. Etkileşim türü, bileşenlerin arayüzleri tarafından belirlenir.
Bileşenler etkileşimi, yöntem çağrıları, asenkron çağrılar, yayınlama, mesajla yönlendirilen etkileşimler, veri akışı iletişimleri ve diğer protokole özgü etkileşimler biçimini alabilir.
Bir sunucu sınıfı için, ana müşteri kategorilerine hizmet etmek için özel arayüzler oluşturulmalıdır. Arayüzde yalnızca belirli bir müşteri kategorisiyle ilgili olan işlemler belirtilmelidir.
Bir bileşen diğer bileşenlere uzanabilir ve yine de kendi uzantı noktalarını sunabilir. Eklenti tabanlı mimari kavramıdır. Bu, bir eklentinin başka bir eklenti API sunmasına izin verir.
Bileşen Düzeyinde Tasarım Yönergeleri
Mimari modelin bir parçası olarak belirtilen bileşenler için bir adlandırma kuralları oluşturur ve ardından bileşen seviyesi modelinin bir parçası olarak iyileştirir veya detaylandırır.
Mimari bileşen adlarını problem alanından alır ve mimari modeli gören tüm paydaşlar için anlam ifade etmelerini sağlar.
Diğer varlıklara herhangi bir ilişkili bağımlılık olmadan bağımsız olarak var olabilen iş süreci varlıklarını çıkarır.
Bu bağımsız varlıkları yeni bileşenler olarak tanır ve keşfeder.
Uygulamaya özel anlamlarını yansıtan altyapı bileşeni adlarını kullanır.
Soldan sağa tüm bağımlılıkları ve üstten (temel sınıf) alta (türetilmiş sınıflar) kalıtımı modeller.
Herhangi bir bileşen bağımlılığını, doğrudan bileşenden bileşene bağımlılık olarak temsil etmek yerine arabirimler olarak modelleyin.
Bileşen Düzeyinde Tasarım Yapmak
Analiz modeli ve mimari modelde tanımlanan problem alanına karşılık gelen tüm tasarım sınıflarını tanır.
Altyapı alanına karşılık gelen tüm tasarım sınıflarını tanır.
Yeniden kullanılabilir bileşenler olarak edinilmeyen tüm tasarım sınıflarını açıklar ve mesaj ayrıntılarını belirtir.
Her bileşen için uygun arabirimleri tanımlar ve öznitelikleri detaylandırır ve bunları uygulamak için gereken veri türlerini ve veri yapılarını tanımlar.
Sözde kod veya UML etkinlik diyagramları aracılığıyla her işlemdeki işlem akışını ayrıntılı olarak açıklar.
Kalıcı veri kaynaklarını (veritabanları ve dosyalar) açıklar ve bunları yönetmek için gereken sınıfları tanımlar.
Bir sınıf veya bileşen için davranışsal temsiller geliştirir ve detaylandırır. Bu, analiz modeli için oluşturulan UML durum diyagramlarını detaylandırarak ve tasarım sınıfıyla ilgili tüm kullanım durumlarını inceleyerek yapılabilir.
Ek uygulama ayrıntısı sağlamak için dağıtım şemalarını detaylandırır.
Sınıf örneklerini kullanarak ve belirli donanım ve işletim sistemi ortamını belirleyerek bir sistemdeki anahtar paketlerin veya bileşen sınıflarının konumunu gösterir.
Nihai karar, yerleşik tasarım ilkeleri ve yönergeleri kullanılarak alınabilir. Deneyimli tasarımcılar, nihai tasarım modeline karar vermeden önce alternatif tasarım çözümlerinin tamamını (veya çoğunu) dikkate alır.
Avantajlar
Ease of deployment - Yeni uyumlu sürümler çıktıkça, diğer bileşenlere veya bir bütün olarak sisteme herhangi bir etki yapmadan mevcut sürümleri değiştirmek daha kolaydır.
Reduced cost - Üçüncü taraf bileşenlerin kullanılması, geliştirme ve bakım maliyetlerini yaymanıza olanak tanır.
Ease of development - Bileşenler, tanımlanmış işlevsellik sağlamak için iyi bilinen arayüzler uygular ve sistemin diğer bölümlerini etkilemeden geliştirmeye izin verir.
Reusable - Yeniden kullanılabilir bileşenlerin kullanımı, geliştirme ve bakım maliyetini çeşitli uygulamalara veya sistemlere yaymak için kullanılabilecekleri anlamına gelir.
Modification of technical complexity - Bir bileşen, bir bileşen kapsayıcısı ve hizmetlerini kullanarak karmaşıklığı değiştirir.
Reliability - Her bir bileşenin güvenilirliği, yeniden kullanım yoluyla tüm sistemin güvenilirliğini artırdığından, genel sistem güvenilirliği artar.
System maintenance and evolution - Sistemin geri kalanını etkilemeden uygulamayı değiştirmek ve güncellemek kolaydır.
Independent- Bileşenlerin bağımsızlığı ve esnek bağlanabilirliği. Paralel olarak farklı gruplara göre bileşenlerin bağımsız gelişimi. Yazılım geliştirme ve gelecekteki yazılım geliştirme için verimlilik.