---
title: 'Tasarım Dili'
source: 'https://academia.sh/tr/kurslar/tasarim-sistemleri/tasarim-dili'
course: 'Tasarım Sistemleri'
language: tr
updated: '2026-08-17T18:09:34+00:00'
license: 'CC BY-SA 4.0'
---

# Tasarım Dili

Tasarım ilkelerinin ayırt edicilik testiyle sınanması, ilke–karar matrisinden boşta ilke ve dayanaksız karar çıkarımı, ilke çatışmalarının okunması ve ses tonu sözleşmesinin denetlenmesi.

Önceki dört ders sistemin sayısal iskeletini kurdu: kapsam, gerekçe, envanter ve ölçek.
İskelet neyin kullanılabileceğini söylüyor, hangi seçeneğin doğru olduğunu söylemiyor. Aynı
aralık ölçeğiyle iki ayrı arayüz kurulabilir; biri yoğun ve sessiz, diğeri ferah ve
yönlendirici olur. İkisi de ölçeğe uyar.

**Tasarım dili (design language)**, ölçeklerin bıraktığı bu boşluğu dolduran karar
dayanaklarıdır: ilkeler, ses tonu ve marka ifadesi. Bu dersin sorusu, bu dayanakların
denetlenebilir olup olmadığıdır. Bir ilke ancak bir seçeneği reddedebiliyorsa ilkedir; bir
ses tonu ancak ihlali gösterilebiliyorsa sözleşmedir.

## İlke, Tersi Savunulabilen Cümledir

Bir tasarım ilkesinin işi karar verdirmektir. Karar verdirmenin ölçütü şudur: ilkenin tersi
de savunulabilir bir konum olmalıdır. "Kullanıcıyı önemseriz" bir ilke değildir, çünkü
tersini savunan kimse yoktur; hiçbir seçeneği elemez, dolayısıyla hiçbir tartışmayı kapatmaz.
"Kayıt önce, araç sonra" bir ilkedir, çünkü tersi — arayüzün önce kendi araçlarını göstermesi
— gerçekten savunulan bir konumdur.

Aynı ölçüt tutarlılık için de geçerlidir. Yinelenme ve Tutarlılık dersinde tutarlılığın
değeri gösterildi, ama tutarlılık bir tasarım **ilkesi** değildir; sistemin varlık koşuludur.
İlkeler sistemin içinde hangi seçeneğin alınacağını belirler.

İkinci ölçüt ilkenin kararlara değdiğinin gösterilmesidir. Aşağıdaki program iki denetimi
birden yapar: ilkeleri tersinin savunulabilirliğiyle sınar ve ilkelerle kararlar arasındaki
örtüşmeyi çıkarır. Üçüncü blokta ses tonu sözleşmesi denetlenir.

```js
// dil.mjs — tasarim ilkelerinin ayirt ediciligi, ilke-karar ortusmesi ve ses tonu denetimi

// 1) Ayirt edicilik: bir ilkenin tersi savunulabiliyorsa ilke bir karar verdirir.
// "tersi" alani, ilkenin karsitinin yazili halidir; savunulabilir alani insan degerlendirmesidir.
const ILKELER = [
  { ad: "kayit once", tersi: "arac once", savunulabilir: true },
  { ad: "sessiz arayuz", tersi: "yonlendiren arayuz", savunulabilir: true },
  { ad: "geri alinabilirlik", tersi: "onaya dayali koruma", savunulabilir: true },
  { ad: "yogun liste", tersi: "ferah liste", savunulabilir: true },
  { ad: "kullaniciyi onemseriz", tersi: "kullaniciyi onemsemeyiz", savunulabilir: false },
  { ad: "tutarli olmak", tersi: "tutarsiz olmak", savunulabilir: false },
  { ad: "erisilebilirlik pazarlik disi", tersi: "erisilebilirlik ozellige gore", savunulabilir: true },
];

console.log("ilke                           tersi                          ayirt edici mi");
for (const i of ILKELER) {
  console.log(`${i.ad.padEnd(30)} ${i.tersi.padEnd(30)} ${i.savunulabilir ? "evet" : "HAYIR"}`);
}
const ayirtEdici = ILKELER.filter((i) => i.savunulabilir);
console.log(`ayirt edici ilke sayisi: ${ayirtEdici.length} / ${ILKELER.length}`);

// 2) Ilke-karar matrisi. Her karar icin hangi ilkenin hangi yonde etki ettigi yazilir.
// yon: +1 karari destekler, -1 karsi cikar.
const KARARLAR = [
  { ad: "kayit basligi kapak gorselinden buyuk", etki: { "kayit once": 1, "yogun liste": 1 } },
  { ad: "sonuc listesi yogun dizilir", etki: { "yogun liste": 1, "sessiz arayuz": 1 } },
  { ad: "odunc alma tek tiklamayla, geri alinabilir", etki: { "geri alinabilirlik": 1, "sessiz arayuz": 1 } },
  { ad: "kayit silme onay ister", etki: { "geri alinabilirlik": -1, "sessiz arayuz": -1 } },
  { ad: "suzgec paneli her zaman acik", etki: { "yogun liste": -1, "kayit once": 1 } },
  { ad: "odak gostergesi her bilesende", etki: { "erisilebilirlik pazarlik disi": 1 } },
  { ad: "bos durumda oneri listesi gosterilir", etki: { "sessiz arayuz": -1 } },
  { ad: "kapak gorselleri kucuk kucuk resim olarak", etki: { "kayit once": 1, "yogun liste": 1 } },
  { ad: "ust menu sabit kalir", etki: {} },
  { ad: "sayfalama yerine surekli akis", etki: {} },
];

console.log("\nilke                           destekledigi  karsi ciktigi  toplam");
for (const i of ILKELER) {
  const arti = KARARLAR.filter((k) => k.etki[i.ad] === 1).length;
  const eksi = KARARLAR.filter((k) => k.etki[i.ad] === -1).length;
  console.log(
    `${i.ad.padEnd(30)} ${String(arti).padStart(12)} ${String(eksi).padStart(14)} ${String(arti + eksi).padStart(7)}`
  );
}

const bostaIlke = ILKELER.filter((i) => !KARARLAR.some((k) => i.ad in k.etki));
const dayanaksiz = KARARLAR.filter((k) => Object.keys(k.etki).length === 0);
const catisan = KARARLAR.filter((k) => {
  const y = Object.values(k.etki);
  return y.includes(1) && y.includes(-1);
});
const gerilim = KARARLAR.filter((k) => Object.values(k.etki).every((v) => v === -1) && Object.keys(k.etki).length > 0);

console.log(`\nbosta kalan ilke (hicbir karari belirlemedi): ${bostaIlke.map((i) => i.ad).join(", ") || "yok"}`);
console.log(`dayanaksiz karar (hicbir ilkeye baglanmadi): ${dayanaksiz.map((k) => k.ad).join(", ") || "yok"}`);
console.log(`ic catisma tasiyan karar: ${catisan.map((k) => k.ad).join(", ") || "yok"}`);
console.log(`ilkelere ragmen verilmis karar: ${gerilim.map((k) => k.ad).join(", ") || "yok"}`);

// 3) Ses tonu sozlesmesinin denetimi. Kurallar denetlenebilir olmak zorundadir.
const METINLER = [
  { yer: "arama bos sonuc", metin: "Aramaniz sonuc vermedi. Yazar adiyla ya da ISBN ile arayin." },
  { yer: "odunc basarili", metin: "Odunc alindi. Son teslim 12 Mart." },
  { yer: "odunc hatasi", metin: "Uzgunuz, maalesef bir hata olustu. Lutfen tekrar deneyin." },
  { yer: "gecikme uyarisi", metin: "Teslim tarihi gecti. Uzatmak icin uzat dugmesini kullanin." },
  { yer: "alan dogrulama", metin: "Gecersiz giris yaptiniz." },
  { yer: "silme onayi", metin: "Kayit silinecek. Bu islem geri alinamaz. Silmek icin onaylayin." },
  { yer: "raf bos durumu", metin: "Bu rafta kayit yok. Kayit eklemek icin rafi secip ekle dugmesini kullanin ve ardindan listeden bir eser secin." },
];

const YASAK = ["uzgunuz", "maalesef", "gecersiz", "yaptiniz", "lutfen"];
const EYLEM_FIILI = ["arayin", "kullanin", "onaylayin", "secin", "deneyin", "ekleyin"];
const EN_COK_KELIME = 14;

console.log("\nyer               kelime  yasak sozcuk             eylem  unlem  sonuc");
let ihlalli = 0;
for (const m of METINLER) {
  const kucuk = m.metin.toLowerCase();
  const kelime = m.metin.trim().split(/\s+/).length;
  const yasak = YASAK.filter((y) => kucuk.includes(y));
  const eylem = EYLEM_FIILI.some((f) => kucuk.includes(f));
  const unlem = m.metin.includes("!");
  const ihlaller = [];
  if (kelime > EN_COK_KELIME) ihlaller.push("uzun");
  if (yasak.length) ihlaller.push("yasak");
  if (!eylem) ihlaller.push("eylemsiz");
  if (unlem) ihlaller.push("unlem");
  if (ihlaller.length) ihlalli++;
  console.log(
    `${m.yer.padEnd(17)} ${String(kelime).padStart(6)}  ${(yasak.join(",") || "-").padEnd(23)} ` +
      `${(eylem ? "var" : "YOK").padEnd(6)} ${(unlem ? "var" : "-").padEnd(6)} ${ihlaller.join("+") || "gecti"}`
  );
}
console.log(`ihlal tasiyan metin: ${ihlalli} / ${METINLER.length}`);
```

```
ilke                           tersi                          ayirt edici mi
kayit once                     arac once                      evet
sessiz arayuz                  yonlendiren arayuz             evet
geri alinabilirlik             onaya dayali koruma            evet
yogun liste                    ferah liste                    evet
kullaniciyi onemseriz          kullaniciyi onemsemeyiz        HAYIR
tutarli olmak                  tutarsiz olmak                 HAYIR
erisilebilirlik pazarlik disi  erisilebilirlik ozellige gore  evet
ayirt edici ilke sayisi: 5 / 7

ilke                           destekledigi  karsi ciktigi  toplam
kayit once                                3              0       3
sessiz arayuz                             2              2       4
geri alinabilirlik                        1              1       2
yogun liste                               3              1       4
kullaniciyi onemseriz                     0              0       0
tutarli olmak                             0              0       0
erisilebilirlik pazarlik disi             1              0       1

bosta kalan ilke (hicbir karari belirlemedi): kullaniciyi onemseriz, tutarli olmak
dayanaksiz karar (hicbir ilkeye baglanmadi): ust menu sabit kalir, sayfalama yerine surekli akis
ic catisma tasiyan karar: suzgec paneli her zaman acik
ilkelere ragmen verilmis karar: kayit silme onay ister, bos durumda oneri listesi gosterilir

yer               kelime  yasak sozcuk             eylem  unlem  sonuc
arama bos sonuc       10  -                       var    -      gecti
odunc basarili         6  -                       YOK    -      eylemsiz
odunc hatasi           8  uzgunuz,maalesef,lutfen var    -      yasak
gecikme uyarisi        8  -                       var    -      gecti
alan dogrulama         3  gecersiz,yaptiniz       YOK    -      yasak+eylemsiz
silme onayi            9  -                       var    -      gecti
raf bos durumu        18  -                       var    -      uzun
ihlal tasiyan metin: 4 / 7
```

## İki Denetim, Dört Bulgu

İlk tablo yedi aday ilkeden ikisini eliyor. "Kullanıcıyı önemseriz" ve "tutarlı olmak"
tersleri savunulamadığı için ayırt edici değil. İkinci tablo aynı iki ilkeyi ikinci kez
eliyor: hiçbir kararı desteklemiyor ve hiçbirine karşı çıkmıyorlar, toplam etkileri sıfır.
İki bağımsız ölçütün aynı iki ilkeyi işaretlemesi rastlantı değildir; tersi savunulamayan bir
cümle zaten hiçbir seçeneği eleyemez.

**Boşta kalan ilke** listeye alınmaz. Bir ilkeler belgesinde her satırın bir bedeli vardır:
okunma zamanı, ezberlenme yükü ve yeni gelen birinin onu ciddiye alarak boşuna uygulamaya
çalışması. Etkisiz bir ilke belgeyi seyreltir ve etkili olanların da ciddiyetini düşürür.

**Dayanaksız karar** ters yöndeki bulgudur: üst menünün sabit kalması ve sayfalama yerine
sürekli akış kullanılması hiçbir ilkeye bağlanamıyor. Bu, kararların yanlış olduğu anlamına
gelmez; dayanaklarının yazılı olmadığı anlamına gelir. İki olasılık vardır. Ya kararlar
gerçekten dayanaksızdır ve ilk itirazda düşer, ya da ilkeler listesi eksiktir ve yazılmamış
bir ilke bu kararları belirlemektedir. İkinci durumda eksik ilke bulunup yazılır; denetimin
en verimli çıktısı budur.

## Çatışma Bir Kusur Değildir

Üçüncü bulgu, süzgeç panelinin her zaman açık durmasıdır. Bu karar bir ilkeyi destekliyor
(kayıt önce: süzgeçler kayda ulaşmayı hızlandırır) ve bir ilkeye karşı çıkıyor (yoğun liste:
panel liste alanını daraltır).

Böyle bir çatışma sistemin kusuru değil, ilkelerin çalıştığının kanıtıdır. Çatışmayan
ilkeler kümesi genellikle birbirinden bağımsız cümlelerdir ve gerçek ödünleşimleri
adlandırmaz. Gerekli olan, çatışmayı kaldırmak değil **öncelik sırasını** yazmaktır: hangi
ilke hangisine üstün gelir. Katalog kurumunda erişilebilirlik pazarlık dışıdır, sonra kayıt
önce gelir, yoğunluk en sonda kalır. Bu sıra yazıldığında süzgeç paneli kararı tartışmasız
hâle gelir.

Dördüncü bulgu ayrı bir kategoridir: kayıt silmenin onay istemesi ve boş durumda öneri
listesi gösterilmesi kararları yalnızca ilkelere **karşı** duruyor. Bu, kararların
gerekçesinin ilkeler dışında bir yerden geldiğini gösterir — silme onayı bir veri kaybı
riskinden, öneri listesi bir kullanılabilirlik bulgusundan gelir. Bunlar meşru gerekçelerdir,
ancak ilkeler belgesinde görünmedikleri için kayda geçirilmeleri gerekir. Aksi hâlde ilkeleri
uygulayan biri bu kararları "sisteme aykırı" bulup kaldırır.

## Ses Tonu Sözleşmeye Çevrilir

Son tablo tasarım dilinin ikinci parçasını ele alıyor. **Ses tonu (tone of voice)** çoğu
belgede sıfatlarla anlatılır — açık, saygılı, yardımsever — ve bu sıfatlar hiçbir metni
reddedemez. Sözleşmeye çevrilmesi, sıfatların denetlenebilir kurallara indirgenmesi demektir:
en fazla kaç kelime, hangi sözcükler kullanılmaz, her ileti bir eylem önerir mi, ünlem
kullanılır mı.

Yedi metinden dördü ihlal taşıyor. "Ödünç hatası" iletisi üç yasak sözcük içeriyor: özür ve
rica kalıpları bilgi taşımaz, iletiyi uzatır ve hatanın kullanıcıdan kaynaklandığı izlenimini
azaltmak yerine belirsizleştirir. "Alan doğrulama" iletisi hem yasaklı sözcük taşıyor hem de
ne yapılacağını söylemiyor: üç kelimede iki ihlal. "Raf boş durumu" metni on sekiz kelimeyle
sınırı aşıyor.

Dördüncü ihlal ise kuralın kendisini sorgulatıyor. "Ödünç alındı. Son teslim 12 Mart."
iletisi eylem önermediği için işaretleniyor, ama bu ileti bir onaydır; kullanıcıdan bir şey
istemez. Kural burada yanlış pozitif üretiyor.

Bu, ses tonu denetiminin genel sınırıdır. Kurallar metnin **türünü** bilmez. Düzeltme, kuralı
gevşetmek değil türe bağlamaktır: eylem önerisi zorunluluğu hata ve boş durum iletileri için
geçerlidir, onay iletileri için değildir. Denetim kuralları, uygulandıkları metin türüyle
birlikte tanımlanmadığında ya gereksiz uyarı üretir ya da gerçek ihlalleri kaçırır.

## Dilin Belirteçlerde Karşılığı

Tasarım dilinin son parçası marka ifadesidir ve burada sistemin sayısal katmanına bağlanır.
Bir ilkenin sistemde karşılığı olması, o ilkenin bir belirteç ailesini kısıtlaması demektir.

"Yoğun liste" ilkesi aralık ölçeğinin hangi adımlarının liste bağlamında kullanılacağını
kısıtlar. "Sessiz arayüz" renk sisteminin doygunluk seçimini ve vurgu rollerinin sayısını
kısıtlar. "Erişilebilirlik pazarlık dışı" kontrast eşiklerini bir tercih olmaktan çıkarır.

Bazı ilkelerin ise belirteç karşılığı yoktur: "geri alınabilirlik" bir sayı değil bir
davranış kuralıdır ve önceki derste tanımlanan kural katmanında yaşar. Bu ayrımın yapılması
gerekir, çünkü belirteç katmanına sığmayan bir ilkeyi belirteçle ifade etme çabası, anlamı
taşımayan belirteçler üretir.

Marka ifadesi bu iki kanalın toplamıdır: sayısal katmanda kısıtlanmış değerler, kural
katmanında yazılmış davranışlar. Kurumun sesi bunların ikisinden birden çıkar; tek başına
bir renk ya da tek başına bir cümle kalıbı marka üretmez.

## Özet

- Bir tasarım ilkesi ancak tersi savunulabilir bir konumsa ilkedir; tersi savunulamayan cümle
  hiçbir seçeneği eleyemez ve ilke–karar matrisinde sıfır etki gösterir. Boşta kalan ilke
  belgeden çıkarılır; dayanaksız karar ya gerekçesizdir ya da yazılmamış bir ilkeye işaret
  eder, ve ikinci durum denetimin en verimli çıktısıdır.
- İlke çatışması kusur değil, ilkelerin gerçek ödünleşimleri adlandırdığının kanıtıdır;
  çözüm çatışmayı kaldırmak değil öncelik sırasını yazmaktır.
- Yalnızca ilkelere karşı duran kararlar başka bir gerekçeden gelir ve o gerekçe kayda
  geçirilmezse sonradan sisteme aykırı sayılıp kaldırılır.
- Ses tonu, sıfatlardan denetlenebilir kurallara indirgendiğinde sözleşme olur: kelime
  sınırı, yasak sözcük listesi, eylem önerisi ve noktalama kuralı.
- Denetim kuralları metin türüne bağlanmadığında yanlış pozitif üretir; onay iletisinden eylem
  önerisi beklemek buna örnektir.
- Bir ilkenin sistemde karşılığı ya bir belirteç ailesini kısıtlamasıdır ya da kural
  katmanında yazılmasıdır; ikisine de sığmayan ilke uygulanamaz.

## Sonraki Adım

Sistemin kuruluş kararları burada tamamlanıyor: kapsam çizildi, gerekçe hesaplandı, envanter
çıkarıldı, ölçek stratejisi seçildi ve tasarım dili denetlenebilir hâle geldi. Bundan sonrası
bu kararların makinede yaşayan karşılığıdır. Ölçek adımlarının, renk rollerinin ve düzen
kararlarının adlandırılmış değerlere dönüşmesi gerekiyor; bu adların hangi katmanda durduğu,
birbirine nasıl başvurduğu ve hangi başvuruların yasak olduğu ayrı bir mimari sorudur.
Sonraki konu belirteçlerle başlar: ilk ders üç katmanı tanımlar, katmanlar arası başvuru
kurallarını koyar ve belirteç grafiğini döngü, boşta kalan belirteç ve katman ihlali için
çözümler.
