Это отдаленно связано с:
Следует ли мне сначала разработать приложение или модель (базу данных)?
Дизайн от базы данных сначала до пользовательского интерфейса или наоборот?
Но мой вопрос больше о моделировании и артефактах, а не о правильном способе проектирования. Я пытаюсь выяснить, какой вид артефакта дизайна лучше всего выражает связь между функциями (вариантами использования), экранами и элементами базы данных (в частности, таблицами и столбцами). UML очень ориентирован на код. Модели баз данных очень ориентированы на базы данных. И дизайн экрана ориентирован на пользовательский интерфейс!
Дело вот в чем ... моя команда работает над первой версией продукта. Мы использовали варианты использования, затем разработали дизайн экранов, и дизайн базы данных был несколько изолирован от этих двух. Критической областью для ошибок было отсутствие прослеживаемости между вариантами использования и сопровождающими их экранами и базой данных. В нашем продукте варианты использования и элементы базы данных в значительной степени совпадают. Многие варианты использования затрагивают более 75% инфраструктуры баз данных. Таким образом, у нас много разногласий по вопросам проектирования баз данных, и небольшое изменение базы данных может легко нарушить нижние уровни бизнес-логики.
В нашем следующем выпуске я хочу, чтобы разработчики и наш администратор баз данных имели действительно четкое представление о том, какие части базы данных затрагивает каждая функция. Подход к варианту использования / дизайну экрана сработал хорошо, поэтому мы его сохраняем ... трюк заключается в том, чтобы связать каждый вариант использования и экраны с моделью базы данных, так что отношения действительно очевидны и о них трудно забыть.
В небольших проектах (нас всего 10 человек, но часто я работал в командах из 3 или менее человек) я создавал свои собственные пользовательские диаграммы, чтобы показать эту часть дизайна. Что-то вроде слияния экрана, UML и таблицы базы данных, сделанное в Visio без ссылки на реальный код или SQL. Я не уверен, что это сработает для более крупной команды, так как для этого нужно постоянно обновлять руководство, и он не генерирует код автоматически, как это делает наш инструмент моделирования баз данных.
Какие-нибудь рекомендации? Есть ли для этого общепринятый механизм?
К вашему сведению - мы красивый водопад, и в ближайшее время это не изменится. И мы любим артефакты ... Сказать «перейти на Agile» - не лучшее решение для нашей группы.