Bunu doğru bir şekilde açıklamak için kısa bir tarih dersine ihtiyacımız var. Yazılım mühendisliğinin ilk günlerinde, sık kullanılan bir benzetme bir ev inşa etmekti. Bir mimar ve yapı mühendisi planları bir müşteriyle tartışır ve bir tasarım ortaya çıkarır. İnşaatçılar daha sonra gerçek evi inşa etmek için bu tasarımı takip ederler. Yazı kodu, gerçek evi inşa etmekle eşdeğer olarak görülüyordu. Bu nedenle, bu yapı gerçekleşmeden önce ön tasarım için algılanan bir ihtiyaç vardı. UML bunlardan biri olan çeşitli grafiksel tasarım araçları oluşturuldu.
Başlangıçta UML ile ilgili fikir, bir sistemin UML ile tamamen tasarlanması ve daha sonra bu tasarımı koda dönüştürmesi için kodlayıcılara teslim etmesi fikriydi. Gerçekte, bu işe yaramaz ve programcıların "tasarımcılar" yerine "uygulayıcılar" olarak görülmesine, projelerin geç kalmasına, tasarımların tamamlanması beklendikten sonra sürekli değişmek zorunda kalmasına neden olur.
Nedeni basit. Kodlama tasarımdır . Ev benzetmesi ile kod, mimarın çizimleri. Derleyici, bu tasarımları alan ve onlardan bir program oluşturan oluşturucudur. Bu gerçekleşme daha sonra çevik tekniklere, TDD vb. Doğmasına yol açtı: bu kod tasarımının kalitesini artırmaya yardımcı olan araçlar.
Bir mimarın, ekibinin ve ekibinin genel tasarımı görselleştirmesine yardımcı olmak için ön eskizler üretebilmesi gibi, bir geliştirici gerekli tasarımı görselleştirmeye yardımcı olmak için UML'yi veya diğer araçları kullanabilir. Bu eskizlerin körü körüne takip edilmemesi gibi UML'nin de körü körüne takip edilmemesi gerekir. Kod tasarımı çevik yinelemelerden ve TDD kullanarak gelişmelidir. Aynı şekilde, bir mimar gibi ve ekibinin çizimleri görselleştirmesine yardımcı olmak için evin bir modelini oluşturabilir, böylece UML kod yapısını görselleştirmek için kullanılabilir.
Bob Amca'nın dediği gibi, UML'yi doğrulayamazsınız, sadece kodu doğrulayabilirsiniz. Bu nedenle kod ana tasarım dokümanlarıdır ve eğer kullanılırsa UML sadece ikincil dokümantasyondur.