IMHO архитектор создает, управляет построением и контролирует архитектуру разрабатываемой системы Собственно, это ключевой момент при выделению роли архитектора и определении необходимых навыков.
Это во-первых.
Во-вторых, источником информации для архитектора являются требования к системе, которые идут от аналитика (преобразовавшего требования заказчика в некий формализованный вид),
В-третьих, источником требований также являются возможности имеющегося материала - существующие в распоряжении архитектора компоненты. (хотя у нас обычна практика, когда таковых вообще не имеется, в связи с этим одна из задач архитектора обеспечить их наличие/разработку).
В-четвертых, архитектор не управляет в прямом смысле персоналом (разработчиками), он определяет (!) решение и отвечает за это. А разработчики реализуют (!) это решение. Поэтому прикинуть трудоемкость архитектор конечно может (из опыта), но фактическую оценку дает ответственный за разработку программист (опять же у нас так обычно построена работа). Так что не архитектор за это отвечает.
Важно: порядок формирования и обсуждения решения может быть любым, как сверху (как бы это ни было неприятно и неудобно для программирующей братии), так и снизу.
И не забываем, что архитектура системы нужна не сама для себя, а для реализации системы, УДОВЛЕТВОРЯЮЩЕЙ ПРИНЯТЫМ (утвержденным, согласованным) ТРЕБОВАНИЯМ!
А мне всегда казалось, что только Заказчик определяет, ""на высоком уровне, стратегически" определяет, что система будет уметь", и даже не Аналитик и МП, а тем более Архитектор.
Вопрос "кто определяет" в приведенной трактовке спорный, все перечисленные лица скорее участвуют в процессе разработки требований к системе (не забываем, что требования к системе бывают разные, а не только функциональные)
Я работал по классической схеме Заказчик->Аналитик->Архитектор->Разработчик->...
Причем, Архитектор был как явный, когда писались Архитектурные Решения, так и неявный, когда эту роль играл наиболее опытный Разработчик и он делал наиболее сложные куски.
Правильно, Архитектор (как и другие участники) - это РОЛЬ! Способы реализации этой роли могут быть весьма разнообразны. Аналогично и по другим приведенным примерам...
И, наконец, ответ на исходный вопрос: как лучше?
Лучше так, как работает как бы банально это не звучало. У нас бывают случаи, когда подобную роль играет человек, который и швец, и жнец, и на дуде игрец - и при этом у него всё получается, в таких случаях его можно не трогать. А если есть проблемы, т.е. человек не справляется - тогда надо раскидывать ролевые функции по другим участникам (к сожалению, они обычно воспринимают это дело в штыки).
P.S. Советую посмотреть на роль архитектора при строительстве зданий и т.п., что он делает и чего не делает. С программной индустрией очень схоже. Отличаются материалы и методы реализации :о)))