Сейчас активно перерабатываю большое кол-во материала по архитектуре.
И решил начать с основ, то откуда все берет свое начало - способы измерения сложности ПО.
В первой части, я попытался сделать выжимку статьи Yingxu Wang'а про Cognitive Complexity
Кто пропустил, крайне рекомендую
И сейчас я перечитываю эту статью и заметил очень интересный тезис, который я чувствовал, но даже не подозревал что это исследовали и даже доказали на практике.
В общем, ниже будет вопрос, ответьте на него про себя честно
Вопрос:
С чем вы испытываете большую сложность в понимании?
1️⃣ Большой класс (модуль) с несколькими вложенными циклами, делающий сложные мат вычисления, например преобразование координат
2️⃣ Маленький модуль с множеством подклассов, которые этот класс вызывает в зависимости от входных данных.
И наличие длинных цепочек взаимосвязанных операций внутри.
Договоримся что оба модуля являются реализацией одной и той же логики внутри.
Ответ:
Согласно выводам из когнитивной информатики (cognitive informatics): Людям проще дается большие циклы итераций, однако люди не очень хорошо справляются с функциональной сложностью (длинная цепочка связей, высокая абстракция объектов)
Цитата:
For instance, according to cognitive informatics (Wang, 2002b, 2003a, 2007b),
human beings may comprehend a large loop of iteration, which is the major issue of computational complexity, by looking at only the beginning and termination conditions, and one
or a few arbitrary internal loops on the basis of inductive inferences. However, humans are not
good at dealing with functional complexities such as a long chain of interrelated operations,
very abstract data objects, and their consistency maintenance.
TAXONOMY OF SOFTWARE COMPLEXITIES IN COMPUTING AND SOFTWARE ENGINEERING, p.4
Мне сложно сделать однозначные выводы из данного тезиса, кроме тех, что упомянуты или очевидны.
Можно просто принять сведению для расширения кругозора 😅
Кстати, в первую часть я не включил этот пункт, т.к. посчитал его достаточно очевидным:
🔸O(N) — вычислительная сложность (time complexity) не влияет на когнитивную сложность.
Аналогично для space complexity
Не много контекста:
Сейчас я сосредоточился на погружение в основы, чтобы найти и рассказать про всю причинно-следственную связь архитектурных и дизайн подходов, которые мы имеем на данный момент
Это лишь часть, база, от которой можно будет строить дальнейшие рассуждения и принимать решение на реальных проектах
Ставь 👍 если ты за такую движуху и контент!
#software_engineering@UniArchitect