Sınıf diyagramının her zaman kodu belgelemek için kullanılması gerektiğini düşünüyorum. Doğrudan koda bakarsanız tüm mimariyi göreceğinizi sanmıyorum. Eğer kodu kendiniz yazdıysanız veya üzerinde uzun süre çalışıyorsanız, anlayabileceğinizi kabul ediyorum ancak her seferinde yeni bir talep ortaya çıktığında, koda bakmanız ve bu yeni kodu nereye ekleyeceğinizi aramanız gerekir.
Şirketimizde yaptığımız şey, sınıf diyagramlarının projemizin görüşlerine sahip olmasıdır. Gerçekten zaman modellemesi yapmıyoruz, ancak tersine bir mühendislikten sonra kodu görüntülemek için sadece sınıf şemasını kullanıyoruz. Kod değişirse bir birleştirme mekanizması vardır ve sınıf diyagramlarım her zaman güncellenir.
Harika olan şey, java doc'ya ek olarak şemaya yorum ve kısıtlamalar ekleyebilmektir. Projeyi tersine çevirir, daha sonra bir model oluşturur ve son olarak UML sınıf şemaları olarak gösterilen modelden görünümler çıkarırız. Bu aşamada kod yazmıyorum ama kod mimarisinden mavi bir baskı alıyorum ve mevcut mimarimi oluşturmak veya genişletmek için üzerinde çalışıyorum. Eğer hoşuma giderse, bir düğmeye basarım ve mevcut kodum şemalarım ile birleşiyor. Birleştirme ve kesinlikle tam kod oluşturma demek istemiyorum. Yalnızca mevcut kod ile diyagramlarım arasındaki delta yazılır, her seferinde tam kod değil.
Uzun yıllardır çalışıyorum, yüksek lisans derecesine sahibim ve hala kod okuyorum ama sadece bir java yazarı olmak istemiyorum ve beynimi biraz daha kullanmak istiyorum. UML görünümleri, mimarlığım hakkında düşünmek, diğer takım üyeleriyle iletişim kurmak ve Model Driven geliştirmeyi kullanmadan daha iyi bir mimari oluşturmak için sadece ihtiyacım olanı veriyor; ancak yalnızca el ile yazılmış kod ile grafiksel olarak sınıf diyagramları oluştur. Mimarlığımı kod düzeyinde yaratıyorum, sonra tersine çeviriyorum ve modele bakıyorum. Görünümler oluşturuyorum ve mimaridimi doğrudan kodda geliştirmeye çalışıyorum, sonra tekrar tersine dönüp ne yapıldığını vb. Görüyorum. Model odaklı kod oluşturmayan kalıcı bir yineleme, ancak canlı senkronizasyon veya kod ile UML arasında birleştirme. Sevdiğim şey, kodun UML'yi kullandığı ve kesinlikle bunun tersi değil.