Birkaç yıl önce kendim de dahil olmak üzere birçok BT insanı için ideal yazılım geliştirme süreci, bir kod satırı yazılmadan önce çok sayıda UML diyagramı içeren ayrıntılı tasarım belgelerinin oluşturulmasını içerecektir. (Bu şelale modelinin bir tanımına benziyor, ancak iterasyonların daha küçük olması dışında çevik ile aynı.)
Son iki ya da üç yıl boyunca fikrimi tamamen değiştirdim. Yine de ilişkili test vakalarıyla ilgili ayrıntılı bir gereksinim belirtiminin kesinlikle gerekli olduğunu düşünüyorum. Büyük projeler için, kodlamaya başlamadan önce genel mimarinin bir taslağını da isterim. Ancak geri kalan her şey mümkün olduğunca kod içinde yapılmalıdır. İdeal durumda, kodun kendisi dışında hiçbir yazılım tasarımı açıklaması olmamalıdır.
Bu sonuca nasıl geldim? İşte bazı argümanlar:
geri bildirim
Belge yazma veya diyagram oluşturma araçları çok az geri bildirim sağlar. Evet, UML diyagramlarında bazı tutarlılık kontrolleri yapan modelleme araçları vardır, ancak bunlar sınırlıdır ve çok fazla ek yük ile birlikte gelir.
Geri bildirim olmadan hataları tanımak ve düzeltmek zordur.
Kod yazar yazmaz çok sayıda geri bildirim alırsınız, örneğin:
- Derleyiciden hatalar ve uyarılar
- Statik kod analizi sonuçları
- Birim testleri
Hatalar hızlı bir şekilde tanınabilir ve düzeltilebilir.
Tutarlılık
Kodun belgelerinizle tutarlı olduğundan emin olmak için tekrar tekrar kontrol etmeniz gerekir. Sık değişiklikler varsa, kod ve belgeleri senkronize tutmak zordur.
üstlenmeden
Metin açıklamalarını veya diyagramlarını yeniden düzenleme genellikle zor ve hataya açıkken, kodu yeniden düzenlemek için güçlü araçlar ve teknikler vardır.
Bu çalışmanın yapılabilmesi için bir ön koşul vardır: Kodun okunması ve anlaşılması yeterince kolay olmalıdır. Bu muhtemelen Assembler, Basic veya Fortran ile gerçekleştirilemez, ancak modern diller (ve kütüphaneler) çok daha etkileyici.
Dolayısıyla, argümanlarım geçerliyse, daha az veya daha fazla hafif yazılım tasarım spesifikasyonu ve dokümantasyonu yönünde bir eğilim olmalıdır. Bu eğilim için ampirik kanıt var mı?