EMACSWAY_LOG Telegram 1183
emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
Теперь обратимся к автору Evolutionary Architecture: 💬 Going back to our biological metaphor, evolutionary is about the process of having a system that is fit for purpose and can survive the everchanging environment in which it operates. Systems may have…
Вся эта сложность нужна потому, что

💬 We can also think about the systemwide fitness function as a collection of fitness functions with each function corresponding to one or more dimensions of the architecture. Using a systemwide fitness function aids our understanding of necessary tradeoffs when individual elements of the fitness function conflict with each other.

As is common with multifunction optimization problems, we might find it impossible to optimize all values simultaneously, forcing us to make choices. For example, in the case of architectural fitness functions, issues like performance might conflict with security due to the cost of encryption. This is a classic example of the bane of architects everywhere — the tradeoff.

И снова здесь говорится о сути эволюционной архитектуры - не просто удовлетворить текущий набор тестовых кейсов, а оптимизировать значения свойств системы.

Возвращаемся к статье https://www.thoughtworks.com/en-gb/insights/articles/fitness-function-driven-development

Затрудняюсь ответить, что больше от этой статьи, пользы или вреда. Статья уволит в сторону от ключевой идеи fitness function. Авторы воспринимают TDD как способ тестирования, в то время как TDD является способом проектирования. И уж TDD точно никогда не предназначался для повышения "test coverage".

А между тем, хотя авторы и не раскрыли темы, но аналогия с TDD сама по себе очень удачна, правда, по другой причине - один из мощнейших механизмов TDD является триангуляция, т.е. когда из двух частных вариантов реализации выводится один обобщенный вариант. Иными словами, изменяемость внешних условий (тестовых кейсов) вызывает изменение структурной комбинации предыдущей версии реализации таким образом, чтобы унаследовались свойства, удовлетворяющие предыдущим условиям, но изменились те, которые не удовлетворяли новым условиям. Происходит эволюция решения, с присутствием признаков наследования и адаптации. Выживает решение, которое более приспособлено.

Несмотря на то, что статья правильно цитирует назначение fitness function:

💬 Fitness functions describe how close an architecture is to achieving an architectural aim.

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

💬 As a result, every new service or piece of software is developed in a way that passes the fitness functions and supports the architectural qualities we value.

А здесь и того хуже - измеряется технический долг, что свидетельствует о деградации решения (а значит, эволюция не работает), и непонятно зачем за уши притянуто качество кода:

💬 First, fitness function-driven development objectively measures technical debt and drives code quality.

Снова речь идет не о селекции архитектурных решений, а о достаточности прохождения тестовых кейсов:

💬 teams are quickly notified of the changes, able to react quickly, and have objective tests to validate conformance.

💬 With architecture goals expressed as code, conformance tests can be incorporated in build pipelines to monitor alignment with the architectural “-ilities” that are most critical.

Сравним это с утверждением автора оригинала:

💬 to allow architects to compare and evaluate architectural characteristics against one another.

Чувствуете разницу между "пройти набор тестовых кейсов" и "сравнить и эволюционировать", т.е. "лучше соответствовать" окружающим условиям? А для этого архитектор должен осуществить роль хищника, сокращающего количество возможных вариантов решения на основании степени их соответствия условиям. Решение, не соответствующее условиям, истреблять не нужно - им занимаются уже падальщики. Оно и так уже не выжило. Суть эволюции в том, чтобы обеспечить выживаемость.

Статья является очередным примером, демонстрирующим почему важно работать с первоисточниками.

Продолжение...
🔥3👍2



tgoop.com/emacsway_log/1183
Create:
Last Update:

Вся эта сложность нужна потому, что

💬 We can also think about the systemwide fitness function as a collection of fitness functions with each function corresponding to one or more dimensions of the architecture. Using a systemwide fitness function aids our understanding of necessary tradeoffs when individual elements of the fitness function conflict with each other.

As is common with multifunction optimization problems, we might find it impossible to optimize all values simultaneously, forcing us to make choices. For example, in the case of architectural fitness functions, issues like performance might conflict with security due to the cost of encryption. This is a classic example of the bane of architects everywhere — the tradeoff.

И снова здесь говорится о сути эволюционной архитектуры - не просто удовлетворить текущий набор тестовых кейсов, а оптимизировать значения свойств системы.

Возвращаемся к статье https://www.thoughtworks.com/en-gb/insights/articles/fitness-function-driven-development

Затрудняюсь ответить, что больше от этой статьи, пользы или вреда. Статья уволит в сторону от ключевой идеи fitness function. Авторы воспринимают TDD как способ тестирования, в то время как TDD является способом проектирования. И уж TDD точно никогда не предназначался для повышения "test coverage".

А между тем, хотя авторы и не раскрыли темы, но аналогия с TDD сама по себе очень удачна, правда, по другой причине - один из мощнейших механизмов TDD является триангуляция, т.е. когда из двух частных вариантов реализации выводится один обобщенный вариант. Иными словами, изменяемость внешних условий (тестовых кейсов) вызывает изменение структурной комбинации предыдущей версии реализации таким образом, чтобы унаследовались свойства, удовлетворяющие предыдущим условиям, но изменились те, которые не удовлетворяли новым условиям. Происходит эволюция решения, с присутствием признаков наследования и адаптации. Выживает решение, которое более приспособлено.

Несмотря на то, что статья правильно цитирует назначение fitness function:

💬 Fitness functions describe how close an architecture is to achieving an architectural aim.

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

💬 As a result, every new service or piece of software is developed in a way that passes the fitness functions and supports the architectural qualities we value.

А здесь и того хуже - измеряется технический долг, что свидетельствует о деградации решения (а значит, эволюция не работает), и непонятно зачем за уши притянуто качество кода:

💬 First, fitness function-driven development objectively measures technical debt and drives code quality.

Снова речь идет не о селекции архитектурных решений, а о достаточности прохождения тестовых кейсов:

💬 teams are quickly notified of the changes, able to react quickly, and have objective tests to validate conformance.

💬 With architecture goals expressed as code, conformance tests can be incorporated in build pipelines to monitor alignment with the architectural “-ilities” that are most critical.

Сравним это с утверждением автора оригинала:

💬 to allow architects to compare and evaluate architectural characteristics against one another.

Чувствуете разницу между "пройти набор тестовых кейсов" и "сравнить и эволюционировать", т.е. "лучше соответствовать" окружающим условиям? А для этого архитектор должен осуществить роль хищника, сокращающего количество возможных вариантов решения на основании степени их соответствия условиям. Решение, не соответствующее условиям, истреблять не нужно - им занимаются уже падальщики. Оно и так уже не выжило. Суть эволюции в том, чтобы обеспечить выживаемость.

Статья является очередным примером, демонстрирующим почему важно работать с первоисточниками.

Продолжение...

BY emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.




Share with your friend now:
tgoop.com/emacsway_log/1183

View MORE
Open in Telegram


Telegram News

Date: |

bank east asia october 20 kowloon How to create a business channel on Telegram? (Tutorial) When choosing the right name for your Telegram channel, use the language of your target audience. The name must sum up the essence of your channel in 1-3 words. If you’re planning to expand your Telegram audience, it makes sense to incorporate keywords into your name. Choose quality over quantity. Remember that one high-quality post is better than five short publications of questionable value. The optimal dimension of the avatar on Telegram is 512px by 512px, and it’s recommended to use PNG format to deliver an unpixelated avatar.
from us


Telegram emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
FROM American