Я думаю, що діаграма класів завжди повинна використовуватися для документування коду. Я не думаю, що якщо подивитися на код безпосередньо, ви зможете побачити повну архітектуру. Я погоджуюся, що якщо ви писали код самі або працювали над ним тривалий час, то ви можете це зрозуміти, але щоразу виникає нова вимога щоразу, коли вам потрібно подивитися код і пошукати, куди додати цей новий код.
Що ми робимо в нашій компанії, це мати перегляд класових діаграм нашого проекту. Ми дійсно не витрачаємо час на моделювання, але лише використовуємо діаграму класів для візуалізації коду після зворотного проектування. Якщо змінити код, то існує механізм злиття, і діаграми мого класу завжди оновлюються.
Що фантастично - це можливість додавати коментарі та обмеження до діаграми на додаток до java doc. Ми ревертуємо проект, потім створюємо модель та остаточно витягуємо подання з моделі, що відображається у вигляді діаграм класу UML. Я не кодую на цьому етапі, але отримую синій друк із архітектури коду і працюю над ним, щоб створити або розширити мою поточну архітектуру. Якщо мені це подобається, тоді я натискаю кнопку, і мій існуючий код зливається з моїми діаграмами. Я маю на увазі злиття і, звичайно, не повне генерування коду. Пишеться лише дельта між існуючим кодом та моїми діаграмами, а не повний код кожного разу.
Я навчаюсь багато років, маю ступінь магістра і все ще дію коду, але я не хочу просто писати java і хотів би трохи більше використовувати свій мозок. Погляди UML дають мені те, що мені потрібно для того, щоб подумати про свою архітектуру, спілкуватися з іншими членами команди та створювати кращу архітектуру, не використовуючи розробку Model Driven, а лише дельту між існуючим вручну написаним кодом та графічно створювати діаграми класів. Я створюю свою архітектуру на рівні коду, потім повертаю її назад і дивлюся на модель. Я створюю представлення і намагаюся вдосконалити свою архітектуру безпосередньо в коді, потім знову повернути назад і побачити, що робиться і т.д. ... Це постійна ітерація без генерації коду, що керується моделлю, але жива синхронізація або злиття між кодом і UML. Мені подобається, що код керує UML і, звичайно, не навпаки.