Desen dili - Pattern language

Bir kalıp dili , her biri bir sorunu ve belirli bir uzmanlık alanında birçok şekilde kullanılabilen bir çözümün özünü tanımlayan organize ve tutarlı bir kalıplar dizisidir . Terim, mimar Christopher Alexander tarafından icat edildi ve 1977 tarihli kitabı A Pattern Language ile popüler hale geldi .

Bir kalıp dili, aynı zamanda, birbirine bağlı bir dizi kalıp aracılığıyla, belirli bir insan çabası alanına canlılık getiren şeyin daha derin bilgeliğini ifade etme girişimi olabilir. Canlılık, "adı olmayan nitelik" için bir yer tutucu terimdir: bir bütünlük, ruh ya da zarafet duygusu, ki bu farklı biçimlerde olsa da kesin ve deneysel olarak doğrulanabilir. Alexander, sıradan insanların çok büyük, karmaşık tasarım problemlerini başarılı bir şekilde çözmek için bu tasarım yaklaşımını kullanabileceğini iddia ediyor.

desen nedir?

Bir tasarımcı, bir ev, bilgisayar programı veya lamba gibi bir şey tasarladığında, sorunların nasıl çözüleceği konusunda birçok karar vermesi gerekir. Tek bir sorun, tipik yeri ( sözdizimi ) ve kullanımı ( dilbilgisi ), sözlüklerde görülen örnekler gibi, vahşi ortamda görülen en yaygın ve tanınan iyi çözümle belgelenir . Bu tür girişlerin her biri tek bir tasarım modelidir . Her kalıbın bir adı, açıklayıcı bir girişi ve bir sözlük girişi gibi bazı çapraz referansları vardır. Belgelenmiş bir kalıp, kalıbın bağlamlarında bu çözümün neden iyi olduğunu açıklamalıdır.

"Kapı" veya "ortaklık" gibi temel veya evrensel kalıplar , ister deneyimde bulunan ister pratikte bileşenler olarak kullanım için çok yönlü tasarım idealleridir; ister mimaride, ister mimaride, tekrarlayan bağlamlarda ve koşullarda kuvvetlerin bütünsel çözümleri olarak açıkça tanımlanır. tıp, yazılım geliştirme veya yönetişim, vb. İnsan ortamlarını karakterize eden doğal olarak oluşan tasarım kalıpları gibi kalıplar icat edilebilir veya bulunabilir ve incelenebilir.

Tüm diller gibi, bir kalıp dili de kelime dağarcığına , sözdizimine ve dilbilgisine sahiptir - ancak bir kalıp dili, iletişim dışındaki bazı karmaşık faaliyetler için geçerlidir. Tasarım için desen dillerinde parçalar şu şekilde parçalanır:

  • Dil tanımı - kelime dağarcığı - bir ilgi alanındaki problemlere yönelik adlandırılmış, tanımlanmış çözümlerin bir koleksiyonudur. Bunlara tasarım desenleri denir . Bu nedenle, örneğin, mimarinin dili, yerleşim yerleri, binalar, odalar, pencereler, mandallar vb.Gibi öğeleri açıklar.
  • Her çözüm , çözümün daha büyük, daha kapsamlı veya daha soyut bir tasarımda nereye uyduğunu gösteren bir açıklama olan sözdizimini içerir . Bu, çözümü otomatik olarak diğer gerekli çözümlerden oluşan bir ağa bağlar. Örneğin, odaların ışığı alma ve insanları içeri ve dışarı alma yolları vardır.
  • Çözüm , çözümün bir sorunu nasıl çözdüğünü veya bir fayda sağladığını açıklayan dilbilgisini içerir . Yani fayda gereksiz ise çözüm kullanılmaz. Belki de tasarımın bu kısmı paradan veya diğer kaynaklardan tasarruf etmek için boş bırakılabilir; İnsanların bir odaya girmek için beklemeleri gerekmiyorsa, basit bir kapı, bekleme odasının yerini alabilir.
  • Dil açıklamasında, gramer ve sözdizimi çapraz indeksinde (genellikle kalıp adlarının harfi harfine alfabetik dizini ile) diğer adlandırılmış çözümlere, böylece tasarımcı bir çözümden ilgili çözümlere, gerekli çözümlere kadar hızlı bir şekilde düşünebilir ve bunları mantıklı bir şekilde belgeleyebilir. Christopher Alexander'ın A Pattern Language adlı kitabında , desenler ayrı bir alfabetik indeksle boyuta göre azalan sıradadır.
  • Dilin dizinindeki ilişkiler ağı, tasarım süreci boyunca birçok yol sağlar.

Bu tasarım çalışmasını basitleştirir, çünkü tasarımcılar süreci anladıkları problemin herhangi bir kısmından başlatabilir ve bilinmeyen kısımlara doğru çalışabilirler. Aynı zamanda desen dili birçok projede iyi çalıştıysa, tasarım problemini ilk başta tam olarak anlamayan bir tasarımcının bile tasarım sürecini tamamlayacağına ve sonucun kullanılabilir olacağına inanmak için sebep vardır. Örneğin, içeri giren kayakçılar kar dökmeli ve ekipman depolamalıdır. Dağınık kar ve önyükleme temizleyicileri dışarıda kalmalıdır. Ekipmanın bakıma ihtiyacı vardır, bu nedenle raflar içeride olmalıdır.

Birçok kalıp bir dil oluşturur

Tıpkı kelimeler olmalıdır gramer ve semantik bir konuşma yapmak üzere birbirlerine ilişkilerini dil kullanışlı, tasarım desenleri pozisyon ve bir desen dili oluşturmak için yarar sırayla birbiriyle ilişkili olmalıdır. Christopher Alexander'ın çalışması, tasarımcının bir sorunu olduğu (belki de ticari bir görev olduğu), bir çözüm seçtiği ve daha sonra daha büyük çözümden kaynaklanan yeni, daha küçük sorunları keşfettiği bir ayrıştırma sürecini tanımlar. Bazen, daha küçük problemlerin çözümü yoktur ve farklı bir daha büyük çözüm seçilmelidir. Sonunda kalan tüm tasarım problemleri, inşaatçılar tarafından doğaçlama ile çözülecek kadar küçük veya rutindir ve "tasarım" yapılır.

Gerçek organizasyon yapısı ( hiyerarşik , yinelemeli vb.) probleme bağlı olarak tasarımcının takdirine bırakılmıştır. Bu, tasarımcının bir tasarımı küçük bir parçadan başlayarak keşfetmesini açıkça sağlar. Bu olduğunda, bir tasarımcının sorunun aslında daha büyük bir çözümün parçası olduğunu fark etmesi yaygındır. Bu noktada tasarım neredeyse her zaman daha iyi bir tasarım haline gelir.

Dilde, bu nedenle, her örüntü, diğer kalıplarla ve bir bütün olarak dille ilişkisini göstermelidir. Bu, tasarımcıya dili kullanan çözülmesi gereken ilgili sorunlar hakkında büyük bir rehberlik sağlar.

Dışarıdan bir uzmanın bir kalıp dili uygulamasına sahip olmanın en zor yanı, aslında çözülmesi gereken sorunların güvenilir ve eksiksiz bir listesini elde etmektir. Tabii ki, sorunlara en aşina olan kişiler, bir tasarıma ihtiyaç duyan kişilerdir. Bu nedenle Alexander, ilgili ve yetkilendirilmiş kullanıcılar tarafından yerinde doğaçlamayı, çok uygulanabilir büyük ölçekli başlangıç ​​çözümleri oluşturmanın, bir tasarımın faydasını en üst düzeye çıkarmanın ve tasarım yeniden çalışmasını en aza indirmenin güçlü bir yolu olarak ünlü bir şekilde savundu. Aslında, Alexander'ın mimarlık için bir kalıp dili projesi üstlenmesine neden olan şey, mimarlığın kullanıcılarını güçlendirme arzusuydu.

Bir bağlamda tasarım problemleri

Tasarım kalıplarının önemli bir yönü, iyi bir sistemi kötü bir sistemden (bir ev, bir bilgisayar programı veya günlük kullanım nesnesi olabilir) farklı kılan temel fikirleri belirlemek ve belgelemek ve geleceğin tasarımına yardımcı olmaktır. sistemleri. Bir modelde ifade edilen fikir, kendi bağlamında çok farklı sistemlerde uygulanabilecek kadar genel, ancak yine de yapıcı rehberlik sağlayacak kadar spesifik olmalıdır.

Bir örüntüde ele alınan sorunların ve çözümlerin geçerli olduğu durumlara bağlamı denir. Her modelin önemli bir kısmı bu bağlamı tanımlamaktır. Örnekler, kalıbın çok farklı durumlara nasıl uygulanacağını daha fazla gösterebilir.

Örneğin, Alexander'ın "BEKLENECEK BİR YER" kalıbı, bir ameliyathanedeki bekleme odaları gibi otobüs duraklarını da ele alırken, yine de yardımcı ve yapıcı çözümler önerir. "Gang-of-Four" kitabı Tasarımı Kalıpları Gama ve ark. programlama dilinden ve programın uygulama alanından bağımsız çözümler önerir.

Yine de, bir modelde tanımlanan problemler ve çözümler, bir tarafta soyutlama ve genellik seviyelerine, diğer tarafta özgüllüklerine göre değişebilir. Sonuçta bu, yazarın tercihlerine bağlıdır. Bununla birlikte, çok soyut bir model bile genellikle doğası gereği kesinlikle somut ve özel örnekler içerir.

Kalıplar, gerçek dünyada ne kadar kanıtlandıklarına göre de değişebilir. Alexander, her kalıba, gerçek dünyadaki örneklerde ne kadar iyi kanıtlandıklarını gösteren sıfır, bir veya iki yıldızla bir derecelendirme verir. Genel olarak, tüm kalıpların en azından bazı mevcut gerçek dünya örneklerine ihtiyaç duyduğu iddia edilir. Bununla birlikte, henüz uygulanmamış fikirleri kalıp benzeri bir formatta belgelemek düşünülebilir.

İskender'in kitabındaki desenler de ölçek seviyelerine göre değişir - bazıları bir kasaba veya mahallenin nasıl inşa edileceğini açıklarken, diğerleri tek tek binalar ve odaların içi ile ilgilenir. Alexander, düşük ölçekli eserleri büyük ölçekli dünyanın yapıcı unsurları olarak görüyor, böylece hiyerarşik bir ağa bağlanabilirler .

Kuvvetlerin dengelenmesi

Bir model, çözmesi gereken sorunları, bu sorunların ortaya çıktığı bağlam veya durumu ve önerilen çözümlerin önerilebileceği koşulları karakterize etmelidir.

Çoğunlukla bu sorunlar, farklı çıkarların veya "güçlerin" çatışmasından kaynaklanır. Daha sonra güçleri dengelemeye ve sonunda bir karar vermeye yardımcı olacak bir diyalog olarak bir kalıp ortaya çıkıyor.

Örneğin, kablosuz bir telefonu düşündüren bir model olabilir. Güçler, iletişim kurma ihtiyacı ve aynı anda başka şeyler yapma ihtiyacı (yemek pişirme, kitap rafını inceleme) olacaktır. Çok özel bir model sadece "KABLOSUZ TELEFON" olacaktır. Daha genel modeller "KABLOSUZ CİHAZ" veya "İKİNCİL AKTİVİTE" olabilir ve bu, ikincil bir faaliyetin (telefonda konuşmak veya kot pantolonunuzun ceplerini incelemek gibi) diğer aktiviteleri etkilememesi gerektiğini gösterir.

Bağlamında oldukça belirsiz olsa da, "İKİNCİL AKTİVİTE" modelindeki kuvvetler "KABLOSUZ TELEFON" da olanlara çok benzer. Böylece, rekabet eden güçler, bir desende ifade edilen bir tasarım konseptinin özünün bir parçası olarak görülebilir.

Kalıplar kendi gerekçelerini içerir

Genellikle bir kalıp, verilen bazı değerlere atıfta bulunan bir mantık içerir. Christopher Alexander için, bir mimari yapı ile temasa geçecek insanları düşünmek en önemli şey. Temel değerlerinden biri, bu insanları daha canlı hissettirmektir. "İsimsiz kalite" den (QWAN) bahsediyor.

Daha genel olarak, iyi bir sistemin, onu kullanmak isteyenler tarafından, hatta daha da iyisi etkilediği tüm insanlar tarafından günlük yaşamın bir zenginleştirmesi olarak kabul edilmesi, memnuniyetle karşılanması ve mutlu bir şekilde benimsenmesi gerektiğini söyleyebiliriz. Örneğin, bir sokak kafesini tartışırken, Alexander bir konuğun olası arzularını tartışır, aynı zamanda sadece yürüyen insanlardan da bahseder.

Aynı düşünce, telefon ve araba gibi teknik cihazlara, bir proje üzerinde çalışan bir ekip gibi sosyal yapılara veya bir bilgisayar programının kullanıcı arayüzüne uygulanabilir. Örneğin, bir yazılım sisteminin nitelikleri, kullanıcıların zamanlarını sistemden zevk alarak mı yoksa sistemle mücadele ederek mi harcadıkları gözlemlenerek derecelendirilebilir.

İnsan hayatı üzerindeki etkilere odaklanarak, değişen teknolojiden bağımsız kalıpları belirleyebilir ve böylece "zamansız kaliteyi" bulabiliriz (Alexander).

Genel yapı ve düzen

Genellikle bir kalıp dilinin veya koleksiyonunun yazarı içerdiği tüm kalıplar için genel bir yapı seçer ve her birini bağlam, problem ifadesi, çözüm vb. gibi genel bölümlere ayırır.

Örneğin Christopher Alexander'ın kalıplarının her biri bir kısa ad, bir derecelendirme (en fazla iki '*' sembolü), hassaslaştırıcı bir resim, bağlam açıklaması, problem ifadesi, örnekler ve açıklamalar içeren daha uzun bir metin parçası, bir çözüm içerir. açıklama, eskiz ve diğer referanslar. Bu yapı ve düzen bazen "İskenderiye formu" olarak anılır.

Alexander, desenlerinin farklı bölümlerini işaretlemek için özel bir metin düzeni kullanır. Örneğin, sorun ifadesi ve çözüm ifadesi kalın yazı tipiyle yazdırılır, ikincisinin önünde her zaman "Bu nedenle:" anahtar sözcüğü bulunur. Bazı yazarlar bunun yerine, bir dereceye kadar fazlalık yaratan açık etiketler kullanırlar.

anlamlı isimler

Tasarım bir ekip tarafından yapıldığında, desen adları paylaşabilecekleri bir kelime dağarcığı oluşturacaktır. Bu, kalıp adlarının kolay hatırlanmasını ve oldukça açıklayıcı olmasını gerekli kılar. Alexander'ın çalışmalarından bazı örnekler, WINDOW PLACE (pencerelerin bir odada nereye gitmesi gerektiğini tanımlamaya yardımcı olur) ve A PLACE TO WAIT (örneğin, otobüs duraklarının ve hastane bekleme odalarının özelliklerini tanımlamaya yardımcı olur).

İlişkisel bir ağda toplama (kalıp dili)

Alexander tarafından tasarlanan bir model dili, bir modelden diğerine bağlantılar içerir, bu nedenle bir projede bir model uygulamaya çalışırken, bir tasarımcı kendi bağlamında yararlı olduğu düşünülen diğer kalıplara itilir.

Alexander'ın kitabında, bu tür bağlantılar "referanslar" bölümünde toplanır ve bağlantılı modelin "bağlam" bölümünde yankılanır - bu nedenle genel yapı yönlendirilmiş bir grafiktir . "Referanslarda" bağlantılı bir model, genellikle daha yüksek ölçekli sorunun bir parçası olarak önerilen daha düşük ölçekli bir sorunu ele alır. Örneğin, "KAMU DIŞ ODADA" deseninin "MERDİVEN KOLTUKLARI"na bir referansı vardır.

Model açıklaması olmasa bile, bu bağlantılar anlamlı isimlerle birlikte bir mesaj taşırlar: Dışarıda insanların vakit geçirebilecekleri bir yer inşa ederken ("KAMU DIŞ MEKAN ODASI"), etrafını insanların oturabileceği merdivenlerle çevrelemeyi düşünün ("MERDİVEN KOLTUKLARI "). Bir ofis ("ÇALIŞMALAR VE OFİSLER") planlıyorsanız, çalışma alanlarını küçük gruplar halinde düzenlemeyi düşünün ("KÜÇÜK ÇALIŞMA GRUPLARI"). Alexander, ağdaki bağlantıların kalıpların kendisinden daha anlamlı kabul edilebileceğini savunuyor.

İskender'in kitabındaki bağlantılar açıkça hiyerarşik bir ağ ile sonuçlanıyor. Alexander, bir dilbilgisi hiyerarşisine bir paralellik çizer - bu onun bir kalıp dilinden bahsetmesi için bir argüman .

Bağlantıların ardındaki anlamsal mantık değişebilse de, bağlantı fikri genellikle kalıp yazarları arasında kabul edilir. Bununla birlikte, Gamma ve diğerleri gibi bazı yazarlar. içinde Design Patterns , desen bağlama sadece küçük faydalanmak - bu desenlerin kendi koleksiyonu için bu kadar mantıklı gelmedi muhtemelen çünkü. Böyle bir durumda bir kalıp dilinden ziyade bir kalıp kataloğundan söz ederdik .

Kullanım

Alexander, sistemini kullanan insanları kendi kalıplarıyla dilini genişletmeye teşvik etti. Bunu sağlamak için kitapları kesinlikle mimarlık veya inşaat mühendisliğine odaklanmaz; ayrıca kalıp dillerinin genel yöntemini de açıklar. A Pattern Language kitabının orijinal konsepti , daha sonra sayfaların kolayca eklenebilmesi için 3 halkalı bir cilt şeklinde yayınlanmasıydı; bu yayıncılıkta pratik olmadığını kanıtladı. Kalıp dili yaklaşımı, çeşitli alanlardaki uzmanlığı belgelemek için kullanılmıştır. Bazı örnekler şunlardır mimari desenler , bilgisayar bilimi desenler , etkileşim tasarım örüntüleri , pedagojik desenler , desen bahçe , sosyal eylem kalıpları ve grup kolaylaştırma kalıpları. Model dili yaklaşımı, önemli ortak sorunlar üzerinde birlikte çalışan çeşitli insanlar ve topluluklar için eylemleri koordine etmeye yardımcı olarak sivil zekayı teşvik etmenin bir yolu olarak da önerilmiştir . Alexander'ın kalıp dillerini kullanma ve yenilerini oluşturma konusundaki özellikleri etkili olmaya devam ediyor ve kitaplarına üslup için ilgisiz alanlardaki uzmanlar tarafından başvuruluyor.

UML veya akış çizelgesi sembolü koleksiyonu gibi gösterimlerin model dilleri olmadığına dikkat etmek önemlidir . Bir alfabe ile daha yakından karşılaştırılabilirler: sembolleri bir kalıp dilini belgelemek için kullanılabilir, ancak kendi başlarına bir dil değildirler. Baştan sona sadece tek bir doğru yol ile izlenecek bir tarif veya diğer sıralı adımlar dizisi de bir kalıp dili değildir. Bununla birlikte, yeni bir reçete tasarlama süreci, bir kalıp dilinin kullanılmasından faydalanabilir.

Bir modelin basit bir örneği

  • İsim : ChocolateChipRatio
  • Bağlam : Aileniz ve arkadaşlarınız için küçük partiler halinde çikolatalı kurabiye pişiriyorsunuz
  • Önce şu kalıpları düşünün : Şeker Oranı, UnOranı, Yumurta Oranı
  • Problem : Çikolata parçalarının kurabiye hamuruna optimum oranını belirleyin
  • Çözüm : Çoğu insanın çikolatayı, çikolata parçacıklı kurabiyenin en iyi parçası olarak gördüğünü gözlemleyin. Ayrıca, çok fazla çikolatanın, kurabiyenin bir arada kalmasını engelleyebileceğini ve çekiciliğini azaltabileceğini gözlemleyin. Küçük partiler halinde pişirdiğiniz için maliyet dikkate alınmaz. Bu nedenle, gerçekten sağlam bir kurabiyeyle sonuçlanan maksimum miktarda çikolata parçacığı kullanın.
  • Şunu düşünün : NutRatio veya CookingTime veya FreezingMethod

Menşei

Bir mimar ve yazar olan Christopher Alexander , kalıp dili terimini icat etti. Binaların ve kasabaların tasarımı ve inşası ile ilgili ortak sorunlara ve bunların nasıl çözülmesi gerektiğine atıfta bulunmak için kullandı . Kitapta önerilen çözümler, şehirlerin ve kasabaların nasıl yapılandırılması gerektiğinden, bir odaya pencerelerin nereye yerleştirilmesi gerektiğine kadar uzanan önerileri içeriyor.

"Desen dili" yaklaşımının çerçevesi ve felsefesi ilk olarak 1970'lerin sonlarında California, Berkeley'deki Çevre Yapısı Merkezi'nden Christopher Alexander ve beş meslektaşı tarafından yazılan A Pattern Language kitabında popüler hale getirildi. İken bir Desen Dili birinci desen, "Bağımsız Bölgeleri" (en genel) son için, "Your Life dan şeyler" den 253 "desenleri" içerir, İskender'in kitabı Building The Zamansız Yolu motivasyon ve amacı hakkında daha derinlemesine girer işin. Aşağıdaki "kalıp" ve "kalıp dili" tanımları A Model Dili'nden alınmıştır :

"Bir kalıp , bir bina bağlamında yinelenen bir soruna kalıcı bir çözümün dikkatli bir açıklamasıdır ve bir binaya hayat veren konfigürasyonlardan birini açıklar. Her model, çevremizde tekrar tekrar ortaya çıkan bir sorunu tanımlar ve ardından açıklar. bu sorunun temel çözümü, öyle bir şekilde ki, çözümü asla aynı şekilde iki kez yapmadan milyonlarca kez kullanabilirsiniz."

Bir kalıp dili , birbirini çağıran bir kalıplar ağıdır. Kalıplar, tasarımla ilgili öngörüleri ve bilgileri hatırlamamıza yardımcı olur ve çözümler oluşturmak için birlikte kullanılabilir.

Uygulama alanları

Christopher Alexander'ın fikri, diğer disiplinlerde, genellikle A Pattern Language kitabında tasvir edildiği gibi , desenlerin mimariye orijinal uygulamasından çok daha fazla benimsenmiştir . 1990'lardan bu yana örnekler , yazılım mühendisliğinde yazılım tasarım modellerini ve daha genel olarak bilgisayar bilimindeki mimari modellerin yanı sıra etkileşim tasarım modellerini içerir . 1990'ların sonlarından beri, öğretimdeki iyi uygulamaları belgelemek için pedagojik modeller kullanılmıştır. En azından 2000'lerin ortalarından beri, model dili fikri sistem mimarisi tasarımına dahil edildi. Kitap özgürleştirici Sesler: Haberleşme Devrim için bir Desen Dili , sürdürülebilirlik, demokrasi ve pozitif sosyal değişimi teşvik etmek bilgi ve iletişim kullanmak için 136 kalıplarını içeren, hatta daha desenleri içeren bir web sitesi ile birlikte 2008 yılında yayınlandı. "Grup Çalışmaları: Toplantılara ve Diğer Buluşmalara Hayat Getirmek İçin Bir Model Dili" 2011 yılında yayınlandı. Kalıp dili fikri permakültür tasarımında da uygulandı .

Wiki'nin mucidi Ward Cunningham , Michael Mehaffy ile birlikte wikiler ve kalıp dilleri arasında derin ilişkiler olduğunu ve wikilerin "aslında kalıpların verimli bir şekilde paylaşılmasını ve değiştirilmesini kolaylaştırmak için araçlar olarak geliştirildiğini" savunan bir makale yazdı .

Ayrıca bakınız

Referanslar

daha fazla okuma

Dış bağlantılar

Genel olarak desenler hakkında

Çevrimiçi desen koleksiyonları