Çoğu, tanıdığım tüm BT insanları değilse, kodlamadan önce UML veya diğer diyagram türleriyle yazılım modellemenin yararlı olduğuna inanıyorlar. (Sorum özellikle UML ile ilgili değil, yazılım tasarımının herhangi bir grafik veya metinsel açıklaması olabilir.)
Bundan pek emin değilim. Temel nedeni: Kod yalan söylemez. Derleyici veya yorumlayıcı tarafından kontrol edilir. Umarım otomatik testlere sahiptir ve statik kod analizini geçmesi gerekir. Bir modül başka bir modülle doğru şekilde arabirim oluşturmazsa, hata mesajı aldığınız için genellikle kodda açıkça görülür.
Tüm bunlar diyagramlar ve diğer belgelerle yapılamaz. Evet, UML'yi kontrol eden araçlar var, ancak şimdiye kadar gördüğüm her şey çok sınırlı. Bu nedenle, bu belgeler eksik, tutarsız veya basit yanlış olma eğilimindedir.
Diyagramların kendileri tutarlı olsa bile, kodun gerçekte bunları uyguladığından emin olamazsınız. Evet, kod üreteçleri vardır, ancak hiçbir zaman kodu üretmezler.
Bazen, kodlamanın kaçınılmaz olarak, büyük resmi elde eden mimarların, tasarımcıların veya diğer iyi ücretli insanların uğraşmaması gereken anlaşılmaz bir karışıklık olması gerektiği varsayımından kaynaklanan modelleme saplantısı gibi hissediyorum. Aksi takdirde çok pahalı olurdu. Bu nedenle, tüm tasarım kararları koddan uzaklaştırılmalıdır. Kodun kendisi, onu yazabilen (ve belki de okuyabilen) ancak başka bir şeyle uğraşmak zorunda olmayan uzmanlara (kod maymunları) bırakılmalıdır. Montajcı tek seçenek olduğunda bu muhtemelen mantıklıydı, ancak modern diller çok yüksek bir soyutlama düzeyinde kod yazmanıza izin veriyor. Bu yüzden artık modelleme ihtiyacını gerçekten görmüyorum.
Yazılım sistemlerini modellemek için hangi argümanları kaçırıyorum?
Bu arada, diyagramların yazılım tasarımının belirli yönlerini belgelemek ve iletmek için harika bir yol olduğuna inanıyorum, ancak bu, yazılım tasarımını bunlara dayandırmamız gerektiği anlamına gelmez .
Açıklama:
Soru belirsiz olarak askıya alındı. Bu yüzden biraz açıklama yapmama izin verin:
Yazılımı yazılım tasarımı ile ilgili gerçeğin ana kaynağı olarak modelleyen (kodsuz) belgeleri kullanmanın mantıklı olup olmadığını soruyorum. Kodun önemli bir kısmı bu belgelerden otomatik olarak oluşturulduğu durumda yok. Durum böyleyse, belgelerin kendilerini model olarak değil kaynak kod olarak kabul ederdim.
Bu prosedürün dezavantajlarını, neden bu kadar çok insanın (deneyimlerime göre) yazılım tasarımı yapmanın tercih edilen yolu olarak düşündüğünü merak etmemi sağladım.