wavebvg » 11.07.2014 11:43:14
Ну дракон это в первую очередь минимализация ошибок (путем визульного представления, которое требует серьезной формализации - писать на нем бизнес не будет).
Тут всё куда проще и уменьшение ошибок возможно, но это не самоцель. Просто если рассмотреть программу как процесс написания со всеми зависимостями, что-то вот такое...
Написание программы:
1. Программа пишется, чтобы имелась (базовая абстракция, базовый интерфейс, базовый use case).
2. Добавляется функционал (приобретенные абстракции на стадии Х).
3. Обновляется интефейс программы (обновление интерфейса на стадии Х).
4. Появляются новые задачи для программы (приобретенный use case на стадии Х).
5. Усложняются имеющиеся задачи (обновление use case на стадии Х).
6. Имеющиеся задачи решаются по другому (приобретенные абстракции на стадии Х)
7. Добавляются новые элементы интерфейса (новый интерфейс на стадии Х)
Программист:
1. Пишет код, согласно своим (базовым принципам) написания кода, допускает (базовые ошибки) и исправляет их
2. В дальнейшем он применяет различные (базовые идеи как недопустить ошибки) и корректирует свои принципы, получая (обновленные принципы на стадии Х)
3. При наличии стадий >2, мы получаем, что у него в одной программе пристутствуют принципы различных версий. Видя это, программист применяет (базовый рефакторинг)
В дальнейшем все меняется и принципы рефаторинга и принципы написания кода, и способы недопущения ошибок
Задачи программы:
...
Область применения:
...
Аппаратные средства:
...
Из всего этого можно сделать любые выводы, но...
Если рассмотреть "переписывание с нуля" - то это не самый лучший подход, потому что:
1. Переписывание большого объёма функционала (текущих абстракций) приведет к большому числу новых ошибок, которые спокойно пройдут через все приобретенный принципы и устроят очередную головомойку по исправлению ошибок.
2. Если не формализовать существующий use case, то при обновлении многие вещи будут сделаны по другому, т.е. мы не получим новый use case, когда нам и старый тоже нужен.
3. Если не провести формализацию интерфейса... Мы получим одну кнопку "сделать хорошо", а потом добавим ещё одну "вернуть как было"...
И это только основные взаимосвязи двух первых рассмотреных ситуаций, которые и так видны сразу же.
В общем, если проект имеет большое одной функции, то для смены методологии программирования потребуется, либо очень долго рисовать схемки, либо "приковать себя к скале" и терпеть как недовольные пользователи...