Bir cümlelik özet
Gereksinim listesi, projenin tam olarak ne yapması gerektiğini net, ölçülebilir maddelerle yazdığımız ve "olmazsa olmaz" ile "iyi olur" isteklerini birbirinden ayırdığımız bir plandır.
Neden önemli?
Bir önceki derste bir konu seçip araştırma yapmıştık. Şimdi elimizde bir fikir var. Fakat "otomatik gece lambası yapacağım" cümlesi bir plan değildir. Lamba ne zaman yanacak? Ne kadar parlak olacak? Pille mi çalışacak?
Bu soruların cevabını en baştan yazmazsak, proje ortasında sürekli fikir değiştiririz. Bir gün "sesle açılsın" deriz, ertesi gün "hayır düğmeyle açılsın" deriz. Böyle bir proje asla bitmez.
Gereksinim listesi bu karmaşayı önler. Projeye başlamadan önce hedefi maddeler halinde yazdığımızda, hem ne yapacağımızı biliriz hem de proje bittiğinde başarıp başarmadığımızı kontrol edebiliriz. Mühendisler ve yazılımcılar da gerçek işlerine tam olarak böyle başlar.
Kısa tanım: Gereksinim, projenin karşılaması gereken tek ve net bir isteğe verilen addır.
Gereksinim nedir ve nasıl yazılır?
Bir gereksinim, projenin sahip olması gereken bir özelliği anlatan kısa bir cümledir. İyi bir gereksinim tek bir şeyden bahseder ve kontrol edilebilir.
Ölçülebilir olmalı
En sık yapılan hata, gereksinimi belirsiz yazmaktır. "Lamba parlak olmalı" cümlesi ölçülemez. Ne kadar parlak? Kime göre parlak?
Bunun yerine sayı ve birim kullanırız:
- Belirsiz: "Lamba karanlıkta yanmalı."
- Ölçülebilir: "Ortam ışığı belirli bir eşiğin altına indiğinde lamba 2 saniye içinde yanmalı."
Ölçülebilir bir gereksinimi, proje bittiğinde bir metreyle, bir kronometreyle veya basit bir testle doğrulayabiliriz.
Tek bir şeyden bahsetmeli
Bir gereksinim birden çok istek içermemelidir. "Lamba karanlıkta yansın ve sabah kendini şarj etsin" aslında iki ayrı gereksinimdir. Bunları ayrı satırlara yazarsak, birini test ederken diğerini karıştırmayız.
İki günlük hayat örneği
Gereksinim düşüncesi sadece robotik projelerine ait değildir. Günlük hayatta da farkında olmadan kullanırız.
Örnek 1 — Doğum günü pastası. Anneannenden pasta isterken "güzel bir pasta olsun" dersen, sonuç sürpriz olur. Ama "çikolatalı olsun, üstünde 12 mum olsun, fındık olmasın" dersen bu üç net gereksinimdir. Fındık olmaması belki bir alerji yüzünden "olmazsa olmaz"dır; çikolatalı olması ise "iyi olur"dur.
Örnek 2 — Okul sunumu. Öğretmen "5 dakikalık bir sunum hazırlayın, en az 3 kaynak kullanın, kapak sayfası olsun" dediğinde sana bir gereksinim listesi vermiştir. Süre ve kaynak sayısı ölçülebilir maddelerdir. Bu maddeleri karşılarsan görevi tamamlamış olursun.
Olmazsa olmaz mı, iyi olur mu?
Her gereksinim aynı öneme sahip değildir. Bazıları olmadan proje işe yaramaz; bazıları ise sadece projeyi daha güzel yapar. Bu yüzden gereksinimleri iki gruba ayırırız.
Olmazsa olmaz (must)
Bu maddeler projenin temelidir. Biri bile eksikse proje amacını yerine getirmez. Gece lambamız için "karanlıkta otomatik yanma" olmazsa olmazdır. Yanmayan bir gece lambası, gece lambası değildir.
İyi olur (should)
Bu maddeler projeyi geliştirir ama olmazsa da proje çalışır. "Lambanın rengini değiştirebilme" güzel bir özelliktir, fakat olmadan da lamba görevini yapar. Zamanımız kalırsa bunlara döneriz.
Bu ayrımın en büyük faydası şudur: Proje sırasında zamanın azaldığında önce "olmazsa olmaz" maddeleri bitirirsin. "İyi olur" maddeleri sona kalır. Böylece elinde her zaman çalışan bir proje olur.
Bazı ekipler üçüncü bir grup daha kullanır: olmayacak (won't). Bunlar bilerek yapmayacağımız şeylerdir. Örneğin "lamba internete bağlanmayacak" demek, projenin sınırını çizer ve bizi gereksiz işlerden korur.
Gereksinim listesi tablosu
Gereksinimleri düz yazıyla değil, bir tabloda tutmak en pratik yöntemdir. Aşağıda otomatik gece lambası projesi için örnek bir tablo var. Her satırın bir numarası, bir açıklaması, bir önceliği ve bir kabul ölçütü vardır.
| No | Gereksinim | Öncelik | Kabul ölçütü (nasıl test ederiz?) |
|---|---|---|---|
| G1 | Ortam kararınca lamba otomatik yanmalı | Olmazsa olmaz | Odayı karartınca lamba 2 saniye içinde yanıyor |
| G2 | Ortam aydınlanınca lamba sönmeli | Olmazsa olmaz | Işığı açınca lamba 2 saniye içinde sönüyor |
| G3 | Pille çalışmalı, prize gerek olmamalı | Olmazsa olmaz | Priz takılı değilken en az 4 saat çalışıyor |
| G4 | Elle açma/kapama düğmesi olmalı | İyi olur | Düğmeye basınca lamba durumu değişiyor |
| G5 | Parlaklık ayarlanabilmeli | İyi olur | En az 2 farklı parlaklık seviyesi seçilebiliyor |
| G6 | İnternete bağlanmayacak | Olmayacak | Projede kablosuz modül bulunmuyor |
Bu tablonun güzelliği şudur: Proje bittiğinde tabloyu tek tek okur, her kabul ölçütünü test eder ve "tamam" ya da "eksik" diye işaretlersin. Böylece projenin gerçekten hazır olup olmadığını tahminle değil, kontrolle bilirsin.
Mini uygulama
Kendi seçtiğin küçük bir proje için gereksinim listesi yaz. Fikrin yoksa şunlardan birini seç:
- Çizgi izleyen robot
- Otomatik bitki sulama sistemi
- Basit bir alarm/hatırlatıcı
- Scratch'te bir yakalama oyunu
Adımlar:
- Projenin amacını tek cümleyle yaz.
- En az 4 "olmazsa olmaz" gereksinim düşün.
- En az 2 "iyi olur" gereksinim ekle.
- 1 tane "olmayacak" maddesi yaz (sınırı çiz).
- Hepsini aşağıdaki gibi bir tabloya yerleştir ve her satıra bir kabul ölçütü ekle.
| No | Gereksinim | Öncelik | Kabul ölçütü |
|----|------------|---------|--------------|
| G1 | | | |
| G2 | | | |
Her gereksinimi yazdıktan sonra kendine sor: "Bu maddeyi bir testle doğrulayabilir miyim?" Cevap hayırsa, gereksinimi daha ölçülebilir hale getir.
Uygulama laboratuvarı: Gereksinim Listesi
Gereksinim Listesi konusunu kalıcı hâle getirmenin en iyi yolu, kavramı küçük ve ölçülebilir bir göreve dönüştürmektir. Bu çalışmada Gereksinim nedir ve nasıl yazılır? ile Tek bir şeyden bahsetmeli arasındaki ilişkiyi kullanarak sorun tanımı, gereksinim listesi, prototip, test kaydı ve kısa sunum hazırlayacaksın. Amaç yalnız sonucun çalışması değil; hangi kararı neden verdiğini, neyi test ettiğini ve hangi durumda tasarımı değiştireceğini açıklayabilmektir.
Görev senaryosu
Şu senaryoyu ele al: spor antrenmanında ölçülebilir bir ihtiyacı prototipe dönüştürme. Dersin ana hedefi “Projenin ne yapması gerektiğini net, öncelikli ve ölçülebilir maddelerle yazmayı öğren” olduğuna göre önce problemi tek cümleyle tanımla. Ardından sistemin alacağı girdiyi, uygulayacağı işlemi ve üreteceği çıktıyı ayrı ayrı yaz. Bilmediğin bir ayrıntı varsa onu varsayım olarak işaretle; varsayımı gerçek bilgi gibi kullanma.
- Planla: Başlangıç durumunu, beklenen sonucu ve kullanacağın kavramları yaz.
- En küçük sürümü kur: Yalnız temel davranışı çalıştır; süsleme ve ek özellikleri sonraya bırak.
- Üç test hazırla: Normal bir durum, sınırda bir durum ve hatalı ya da beklenmeyen bir durum seç.
- Sonucu kaydet: Beklenen ile gerçekleşeni yan yana yaz; fark varsa olası nedeni belirt.
- Tek değişiklik yap: Aynı anda birçok şeyi değiştirmek yerine bir kararı düzeltip testi yeniden çalıştır.
Başarı ölçütleri
- Sorun ve kullanıcı tek cümlede tanımlı mı?
- Gereksinimler ölçülebilir mi?
- Prototip en riskli varsayımı gerçekten deniyor mu?
- Test sonucu tarih ve koşulla kaydedildi mi?
- Sunumda çalışmayan noktalar da dürüstçe açıklanıyor mu?
“Gereksinim Listesi” çalışmasını bitirdiğinde ürünü bir arkadaşına yalnız bölüm başlıklarıyla anlat. Arkadaşın spor antrenmanında ölçülebilir bir ihtiyacı prototipe dönüştürme senaryosundaki adımları ve karar nedenlerini takip edebiliyorsa anlatım yeterince açıktır. Anlaşılmayan noktayı daha fazla terim ekleyerek değil, Gereksinim nedir ve nasıl yazılır? ve Tek bir şeyden bahsetmeli ilişkisini daha küçük adımlara bölerek düzelt.
Sık yapılan hatalar
Belirsiz gereksinim yazmak
"Hızlı olmalı", "güzel görünmeli", "kullanışlı olsun" gibi cümleler test edilemez. Bunları sayıya çevir: "3 saniyeden kısa sürede tepki vermeli."
Her şeyi olmazsa olmaz saymak
Yeni başlayanlar her isteği "olmazsa olmaz" olarak işaretler. O zaman öncelik ayrımı anlamını kaybeder. Kendine dürüstçe sor: "Bu özellik olmadan proje amacını yine de yerine getirir mi?" Cevap evetse, o madde "iyi olur"dur.
Bir maddeye birden çok istek sıkıştırmak
"Karanlıkta yansın, pille çalışsın ve renk değiştirsin" tek satırda üç gereksinimdir. Ayır ki her birini ayrı test edebilesin.
Kabul ölçütünü unutmak
Test edilemeyen gereksinim, bittiğini kanıtlayamadığın bir sözdür. Her maddeye "bunu nasıl kontrol ederim?" sorusunun cevabını ekle.
Güvenlik notu
Gereksinim listesine güvenlik maddelerini de yazmayı unutma; bunlar çoğu zaman "olmazsa olmaz"dır. Pil, motor veya lamba içeren projelerde şu tür gereksinimler eklenebilir: "Devre şebeke elektriğine bağlanmayacak", "Sıcak yüzey açıkta kalmayacak", "Bağlantılar bir yetişkinle birlikte kontrol edilecek". Güvenliği en baştan bir gereksinim olarak yazarsan, proje sonunda unutmazsın.
Ders özeti
- Gereksinim listesi, projenin ne yapması gerektiğini net ve ölçülebilir maddelerle yazar.
- İyi bir gereksinim tek bir şeyden bahseder ve bir testle doğrulanabilir.
- "Olmazsa olmaz" maddeler projenin temelidir; "iyi olur" maddeler onu geliştirir.
- "Olmayacak" maddeleri yazmak projenin sınırını çizer ve gereksiz işi önler.
- Her gereksinime bir kabul ölçütü eklemek, projenin gerçekten bitip bitmediğini kontrolle gösterir.
Kontrol soruları
- "Lamba parlak olmalı" neden iyi bir gereksinim değildir?
- Bir gereksinimin "ölçülebilir" olması ne demektir?
- "Olmazsa olmaz" ile "iyi olur" arasındaki fark nedir?
- "Olmayacak" maddesi bir projeye ne kazandırır?
- Kabul ölçütü neden her gereksinimin yanına yazılmalıdır?
Cevaplar
- Çünkü "parlak" ölçülemez ve kişiden kişiye değişir. Kaç lümen, kaç saniyede yanacağı gibi bir ölçüt olmadan proje bittiğinde doğrulanamaz.
- Bir gereksinimin sayı, birim, süre veya net bir eşikle ifade edilmesi ve proje sonunda bir testle "karşılandı/karşılanmadı" diye kontrol edilebilmesidir.
- "Olmazsa olmaz" maddeler olmadan proje amacını yerine getiremez; "iyi olur" maddeler projeyi geliştirir ama olmadan da proje çalışır.
- Projenin sınırını çizer, bilerek yapmayacağımız şeyleri belirtir ve bizi gereksiz, zaman kaybettiren işlerden korur.
- Çünkü kabul ölçütü olmadan bir gereksinimin gerçekleşip gerçekleşmediğini kanıtlayamayız; test edilebilir bir ölçüt, projenin bittiğini tahminle değil kontrolle gösterir.
Kaynak ve doğrulama notu
“Gereksinim Listesi” dersi için doğrulama odağı Gereksinim nedir ve nasıl yazılır? ile Tek bir şeyden bahsetmeli arasındaki ilişkinin örnekler üzerinde tutarlı çalışmasıdır. Proje sayfalarında sonuç iddiası ancak gerçek prototip, test kaydı veya gözlemle desteklendiğinde kullanılmalıdır. Maliyet, süre ve başarı oranı gibi sayılar tahminse açıkça “tahmin” olarak işaretlenmelidir.
Sonraki ders
Çözüm Alternatifleri: Aynı gereksinimleri karşılamanın birden çok yolunu düşünüp aralarından en uygununu nasıl seçeceğimizi öğreniyoruz.