Здравствуйте, LaptevVV, Вы писали:
LVV>Один мой студент-выпускник-аспирант недавно сформулировал. LVV>Архитектура исследовательских проектов редко бывает удачной с первого раза. LVV>Обычно приходится по мере развития проекта пересматривать. LVV>Вопрос: когда, в какой момент? LVV>Он это сформулировал так: в тот момент, когда ручки потянулись скопипастить кусок кода — ибо он почти решает возникшую проблему и его просто надо немного допилить. LVV>А у народа с этим как дело обстоит?
Копипаста на исследовательском этапе — это даже гут. Чем "тоньше" архитектура, чем меньше зависимостей, тем удобнее развивать отдельно взятую сущность/область/тему в проекте. Идеально — её нет вообще (архитектуры), бо практически все алгоритмы можно разрабатывать и анализировать вообще без каких-либо архитектур.
Архитектуру лучше громоздить когда участники модели и правила их взаимодействия оформятся естественным образом по мере накопления разработчиками понимания принципов работы собственного детища.
В этом смысле архитектура часто может начинаться от "хелперов", которые обычно могут пережить мильон "переделок архитектуры" без заметного изменения самих "хелперов", бо везде полезны.
Собсно, вся "архитектура" из хелперов может и состоять, тогда "архитектура" будет представлять из себя некий АПИ для соединения "хелперов" м/у собой. Например, в случае языка С++ — архитектура может представлять из себя вербальный набор требований, как набор требований к произвольным итераторам для алгоритмов STL.