Информация об изменениях

Сообщение Re[12]: [Опрос, холивар?]: Что такое архитектура? от 08.04.2015 0:48

Изменено 08.04.2015 13:08 Gaperton

Здравствуйте, ZevS, Вы писали:

G>>Кстати, в нашем случае

ZS>>> Архитектура — выкокоуровневая структура, дизайн — процесс специфицирования структуры ну или сама спецификация.
G>>это даже не интересно.

ZS>Ровно тоже самое написано в стандарте IEEE 1471 и заменившем его ISO/IEC 42010, и моему пониманию такое определение ближе, чем, скажем, определение Фаулера — "architecture is the set of design decisions that must be made early in a project". Про википедию, это был легкий троллинг))


Начнем с того, что разных определений одной и той же штуки может быть много. Например, в математическом анализе есть множество способов, как ввести действительные числа. Разные определения могут быть эквивалентны, и тогда никакое из них не ближе. Это в математике.

А когда мы говорим о сложных и непонятных штуках, встречающихся в реальной жизни, например — о физике, разные определения одного и того же могут быть не просто не эквивалентны, но противоречить друг другу. Опираясь, при этом, на разные аспекты одного и того же явления. Взять например, свет. В физике, он может определяться как поток частиц, или как волна.

Какое определение верное? Оба неверны. Ни одно из этих двух определений света не описывает свет исчерпывающим образом. И они оба верны, так как в совокупности описывают одно и то же явление.

Теперь об "архитектуре". Проблема с этим, с позволения сказать, термином, в том, что его все употребляют, но никто толком не знает, что это такое. Определений невероятное количество. Их десятки. Многие из них верны. Но большинство бесполезно. Особенно те, которые присутствуют в комитетских стандартах. "Комитетские" определения сложных и противоречивых вещей (как и википедия) особенно плохи из-за тенденции группы людей при обсуждении фиксироваться на common knowledge, в то время, как в таких случаях самое интересное как правило лежит за его границами.

Взять определение Фаулера. "architecture is the set of design decisions that must be made early in a project" — это, да? Оно верно, но бесполезно чуть менее, чем полностью. Потому, что нас интересует осмысленный ответ на вопрос, какие решения должны быть приняты осознанно, и рано. Нам надо уметь их как-то отличать от тех других. Фаулер, между нами, вообще весь такой.

Классическое определение, про "структуры", характерно тем, что оно понятно исключительно интуитивно. И больше никак. А как до дела доходит, оно также бесполезно, потому, что а-приори этот высокий или низкий уровень структуры на практике не различим. Какие-либо внятные критерии его различия отсутствует. Масштаб — относителен, и критерием быть не может, это пустышка, а не определение, так же, как и у фаулера. Ничего полезного для действия из этого определения не выводится.

Перечисленное выше приводит к тому, что слово "архитектура" на деле техническим термином не является, ничего определенного и понятного для собеседников не значит, и его полезнее попросту запретить к употреблению.

Более внятный термин, чтобы описать явление и проблемы, о которых смутно бредят люди, произнося слово "архитектура" — это Common Design Principles. Вот есть Design. А есть — его Common Principles.

Наиболее практически полезное определение — про правила. У него, конечно, есть недостатки. Ну, например, его автор не Фаулер. И оно не написано в комитетском стандарте. Зато оно проводит наиболее точную и понятную границу с дизайном, описывает все известные эффекты, как пример с юнит-тестами, приведенный товарищем выше (отличный пример, структурные определения его не описывают), и включает в себя социальные аспекты архитектуры. Потому, что правила выполняются людьми.

Это важно потому, что определение дает понимание, а понимание требуется для действия.

Но так как мы уже выяснили, что одного единственно верного определения для сложных явлений не бывает — каждый волен пользоваться своим любимым.
Здравствуйте, ZevS, Вы писали:

G>>Кстати, в нашем случае

ZS>>> Архитектура — выкокоуровневая структура, дизайн — процесс специфицирования структуры ну или сама спецификация.
G>>это даже не интересно.

ZS>Ровно тоже самое написано в стандарте IEEE 1471 и заменившем его ISO/IEC 42010, и моему пониманию такое определение ближе, чем, скажем, определение Фаулера — "architecture is the set of design decisions that must be made early in a project". Про википедию, это был легкий троллинг))


Начнем с того, что разных определений одной и той же штуки может быть много. Например, в математическом анализе есть множество способов, как ввести действительные числа. Разные определения могут быть эквивалентны, и тогда никакое из них не ближе. Это в математике.

А когда мы говорим о сложных и непонятных штуках, встречающихся в реальной жизни, например — о физике, разные определения одного и того же могут быть не просто не эквивалентны, но противоречить друг другу. Опираясь, при этом, на разные аспекты одного и того же явления. Взять например, свет. В физике, он может определяться как поток частиц, или как волна.

Какое определение верное? Оба неверны. Ни одно из этих двух определений света не описывает свет исчерпывающим образом. И они оба верны, так как в совокупности описывают одно и то же явление.

“Чем богаче подлежащий определению предмет, то есть чем больше различных сторон он предоставляет рассмотрению, тем более различными оказываются даваемые ему дефиниции. Так, например, существует масса дефиниций жизни, государства и т. д. Геометрии, напротив, легко давать дефиниции, так как ее предмет, пространство, очень абстрактен”.
Гегель


Но мы отвлеклись. Теперь об "архитектуре". Проблема с этим, с позволения сказать, термином, в том, что его все употребляют, но никто толком не знает, что это такое. Определений невероятное количество. Их десятки. Многие из них верны. Но большинство бесполезно. Особенно те, которые присутствуют в комитетских стандартах. "Комитетские" определения сложных и противоречивых вещей (как и википедия) особенно плохи из-за тенденции группы людей при обсуждении фиксироваться на common knowledge, в то время, как в таких случаях самое интересное как правило лежит за его границами.

Взять определение Фаулера. "architecture is the set of design decisions that must be made early in a project" — это, да? Оно верно, но бесполезно чуть менее, чем полностью. Потому, что нас интересует осмысленный ответ на вопрос, какие решения должны быть приняты осознанно, и рано. Нам надо уметь их как-то отличать от тех других. Фаулер, между нами, вообще весь такой.

Классическое определение, про "структуры", характерно тем, что оно понятно исключительно интуитивно. И больше никак. А как до дела доходит, оно также бесполезно, потому, что а-приори этот высокий или низкий уровень структуры на практике не различим. Какие-либо внятные критерии его различия отсутствует. Масштаб — относителен, и критерием быть не может, это пустышка, а не определение, так же, как и у фаулера. Ничего полезного для действия из этого определения не выводится.

Перечисленное выше приводит к тому, что слово "архитектура" на деле техническим термином не является, ничего определенного и понятного для собеседников не значит, и его полезнее попросту запретить к употреблению.

Более внятный термин, чтобы описать явление и проблемы, о которых смутно бредят люди, произнося слово "архитектура" — это Common Design Principles. Вот есть Design. А есть — его Common Principles.

Наиболее практически полезное определение — про правила. У него, конечно, есть недостатки. Ну, например, его автор не Фаулер. И оно не написано в комитетском стандарте. Зато оно проводит наиболее точную и понятную границу с дизайном, описывает все известные эффекты, как пример с юнит-тестами, приведенный товарищем выше (отличный пример, структурные определения его не описывают), и включает в себя социальные аспекты архитектуры. Потому, что правила выполняются людьми.

Это важно потому, что определение дает понимание, а понимание требуется для действия.

Но так как мы уже выяснили, что одного единственно верного определения для сложных явлений не бывает — каждый волен пользоваться своим любимым.