Мне посчастливилось создать несколько баз данных средней сложности, все из которых используются в бизнесе, с различными интерфейсами, включая веб, Access и C #.
Обычно я садился и заранее разрабатывал схему базы данных. Это всегда имело для меня смысл. Однако не было ни одного случая, чтобы я не заканчивал тем, что вносил изменения, добавлял новые таблицы или жил с аспектами, которые беспокоили меня и были в основном слишком поздно, чтобы исправить.
Я не думаю, что лекарство - это сначала написать код. И я не думаю, что проблема заключается в «недостаточных требованиях к бизнесу» или, по крайней мере, не в том, что могло бы быть полностью решено. Пользователи не знают, что им нужно, и я не могу заставить их думать сложнее, быть умнее, лучше понимать или лучше отвечать на мои вопросы. Или они спорят, и мне приказывают сделать что-то определенным образом.
Системы, которые я создаю, обычно находятся в новых областях, в которые никто еще не заходил. У меня нет поддержки со стороны организации, ресурсов или инструментов для выполнения такой работы, которую команда разработчиков из лучших дизайнеров могла бы получить, как команда, которая в десять раз заплатила мне за создание вещей в два раза
Я ХОРОШО в том, что я делаю. Но только один из меня делает это в среде, которая "не занимается разработкой".
Все это говорит о том, что я лучше разбираюсь в бизнес-правилах. И я вижу своего рода третий вариант:
Перед разработкой базы данных и перед написанием любого кода нарисуйте грубые экраны, показывающие, как будет работать приложение. Они должны быть нарисованы от руки, чтобы никто не комментировал шрифт, размер или размеры - вам нужна только функция.
С помощью прозрачных пленок и кусочков бумаги вы можете менять местами, чтобы один человек был компьютером, двое - нетехническими экспертами в предметной области (двое так громко разговаривают) и один человек - помощник, который делает заметки и рисует. из пользователей об их мыслительных процессах и путанице. Пользователи «щелкают» и перетаскивают и пишут в ящиках, «компьютер» обновляет экран, и каждый может испытать дизайн. Вы узнаете вещи, которые вы не могли бы узнать иначе, пока не вошли бы в процесс разработки.
Возможно, я противоречу себе - может быть, это лучшее определение требований. Но идея в том, чтобы спроектировать приложение в первую очередь, без написания кода. Я начал делать это в небольшом масштабе, и это работает! Несмотря на проблемы в моей среде, это помогает мне с самого начала лучше проектировать базу данных. Я узнал, что столбец должен переместиться в новую родительскую таблицу, потому что есть несколько типов. Я узнал, что рабочий список должен иметь постоянные заказы, которые не приходят из интегрированной системы заказов. Я учу все виды вещей!
На мой взгляд, это огромная победа.