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

Иерархическая оценка возможностей больших языковых моделей в области проектирования программного обеспечения, включая анализ связности, связанности и логики рассуждений.
Несмотря на растущую популярность больших языковых моделей (LLM) в разработке программного обеспечения, их способность к комплексному анализу архитектурных принципов остаётся недостаточно изученной. В работе ‘Hierarchical Evaluation of Software Design Capabilities of Large Language Models of Code’ проведена систематическая оценка понимания LLM таких ключевых концепций, как связность и зацепленность модулей. Полученные результаты показывают, что хотя модели демонстрируют базовые знания в идеальных условиях, их способность к автономному рассуждению в условиях реального мира, с шумами и без чётких инструкций, значительно снижается. Сможем ли мы разработать более надёжные и масштабируемые методы оценки и улучшения понимания программного кода, чтобы в полной мере раскрыть потенциал LLM в области разработки?
Вызовы современного проектирования программного обеспечения
Эффективная разработка программного обеспечения базируется на принципах высокой связности и слабой связанности, однако их практическая реализация представляет значительную сложность. Высокая связность подразумевает, что элементы внутри модуля тесно взаимосвязаны и направлены на выполнение единой, чётко определённой задачи. В то же время, слабая связанность обеспечивает минимальную зависимость между отдельными модулями, что облегчает внесение изменений и повторное использование кода. На практике, стремление к быстрому решению задач и недостаточный контроль качества часто приводят к ситуациям, когда модули становятся слишком сложными и взаимозависимыми, что существенно усложняет поддержку и развитие системы. Достижение оптимального баланса между этими двумя принципами — ключевая задача для разработчиков, стремящихся к созданию надёжного, масштабируемого и удобного в обслуживании программного обеспечения.
Традиционные подходы к оценке и улучшению архитектуры программного обеспечения зачастую оказываются непоследовательными и неэффективными. Ручные проверки и экспертные оценки, хоть и ценны, подвержены субъективности и не способны охватить всю сложность современных приложений. В результате, даже тщательно спроектированные системы постепенно накапливают технический долг — компромиссы в архитектуре, принятые ради быстрого решения текущих задач. Этот долг проявляется в виде трудностей с внесением изменений, увеличении времени на исправление ошибок и, в конечном итоге, снижении общей поддерживаемости программного обеспечения. Постоянное игнорирование необходимости рефакторинга и улучшения архитектуры приводит к тому, что стоимость поддержки системы экспоненциально возрастает, а способность адаптироваться к новым требованиям снижается.
Современные программные системы, характеризующиеся экспоненциальным ростом сложности, требуют принципиально новых подходов к оценке и оптимизации их архитектуры. Традиционные методы анализа, основанные на ручной проверке и экспертных оценках, становятся неэффективными при работе с огромными кодовыми базами и быстро меняющимися требованиями. Поэтому все больше внимания уделяется автоматизированным инструментам, способным выявлять проблемные места в дизайне, таким как избыточные зависимости или низкая связность модулей. Эти инструменты, использующие алгоритмы анализа кода и машинного обучения, позволяют не только обнаруживать потенциальные недостатки, но и предлагать конкретные решения для их устранения, тем самым снижая технический долг и повышая поддерживаемость и масштабируемость программного обеспечения. В результате, автоматизированная оценка и улучшение архитектуры становится ключевым фактором успеха в разработке сложных современных приложений.

Большие языковые модели в оценке принципов разработки
Большие языковые модели (БЯМ) предоставляют перспективные возможности для автоматизированной оценки принципов разработки программного обеспечения. Используя методы обработки естественного языка и машинного обучения, БЯМ способны анализировать структуру и логику исходного кода, выявляя соответствие общепринятым принципам проектирования, таким как модульность, инкапсуляция и разделение ответственности. Автоматизация этого процесса позволяет существенно снизить трудозатраты на ручной анализ кода, особенно в крупных проектах, и повысить объективность оценки, минимизируя влияние субъективных факторов. Применение БЯМ в этой области опирается на предварительное обучение моделей на больших объемах кода и документации, что позволяет им понимать семантику программного обеспечения и выявлять потенциальные нарушения принципов проектирования.
Применение больших языковых моделей к кодовой базе позволяет автоматизированно выявлять потенциальные проблемы, связанные с когезией и связностью модулей. Анализ кода с использованием этих моделей способен определить участки, демонстрирующие низкую когезию — когда элементы внутри модуля слабо связаны друг с другом — и высокую связность — когда модули чрезмерно зависят от внешних компонентов. Результаты анализа предоставляют разработчикам информацию о необходимости рефакторинга, направленного на улучшение структуры кода и снижение сложности, что способствует повышению поддерживаемости и расширяемости программного обеспечения. Выявление подобных паттернов позволяет оперативно реагировать на архитектурные недостатки и предотвращать возникновение проблем в будущем.
Применение моделей обработки естественного языка позволяет выявлять так называемые “code smells” — признаки в коде, которые, хотя и не являются ошибками, могут указывать на потенциальные проблемы с поддерживаемостью в будущем. К таким признакам относятся, например, чрезмерно длинные методы, дублирование кода, большие классы и сложные условные конструкции. Проактивное обнаружение этих “code smells” на ранних стадиях разработки позволяет разработчикам вовремя рефакторить код, снижая технический долг и упрощая дальнейшую поддержку и модификацию программного обеспечения. Автоматизированный анализ на основе LLM позволяет охватить большие объемы кода, что затруднительно при ручном ревью, и предоставляет возможность стандартизировать процесс оценки качества кода.

Оценка производительности модели на целевых задачах
Для оценки способности модели DeepSeek-R1 к рассуждениям был разработан комплекс задач, включающий генерацию с подсказками и свободную генерацию, а также задачи на верификацию. Задачи генерации с подсказками направлены на получение конкретных ответов на основе предоставленного контекста, в то время как свободная генерация позволяет модели самостоятельно формировать ответы. Задачи верификации, в свою очередь, предназначены для оценки способности модели к проверке корректности и логичности утверждений или сгенерированного кода. Комбинация этих типов задач позволяет получить всестороннюю оценку возможностей модели в различных сценариях рассуждений и решения задач.
Набор задач был разработан для оценки способности модели понимать и применять принципы проектирования программного обеспечения, в частности, принципы связности (cohesion) и сцепления (coupling). Связность оценивает, насколько элементы внутри модуля связаны между собой для выполнения единой, чётко определенной цели. Степень сцепления, напротив, измеряет степень взаимозависимости между различными модулями или компонентами системы. Высокая связность и низкое сцепление являются признаками хорошо спроектированного программного обеспечения, поскольку они способствуют модульности, повторному использованию и упрощают поддержку и отладку кода. Задачи были сформулированы таким образом, чтобы проверить способность модели выявлять нарушения этих принципов в предложенном коде и обосновывать свои выводы.
Модель 7070B продемонстрировала высокие результаты в задачах верификации связности и связанности, достигнув показателей F1 в 0.825 и 0.899 соответственно. Эти результаты были получены в контролируемых условиях, что позволяет оценить потенциал модели при оптимальной работе. Анализ сгенерированных ‘Цепочек Мыслей’ (Chain-of-Thought Traces) предоставляет возможность изучить ход рассуждений модели, выявляя возможные предубеждения или ограничения в ее логике и принятии решений.

Количественная оценка согласованности оценки дизайна
Для количественной оценки согласованности кластеризации методов, выделенных языковой моделью, был использован Индекс Рэнда скорректированный (Adjusted Rand Index). Этот показатель позволяет определить степень сходства между различными кластерами, выявляя, насколько близко результаты работы модели соответствуют друг другу. По сути, он измеряет вероятность того, что два случайно выбранных элемента из одного и того же кластера действительно принадлежат к этому кластеру, а не к другому. Более высокие значения Индекса Рэнда указывают на более сильное согласие в кластеризации, что свидетельствует о стабильности и надежности оценки дизайна, проводимой языковой моделью. Использование этого метрического показателя позволяет перейти от субъективных оценок к объективному, численному выражению согласованности, что необходимо для точного анализа и сравнения различных подходов к оценке архитектурных решений.
Для непосредственной оценки связности, ключевого принципа проектирования, использовалась метрика YALCOM. Данный показатель позволяет количественно измерить, насколько элементы системы логически связаны между собой, отражая, насколько хорошо модель понимает необходимость поддержания целостности и непротиворечивости дизайна. Использование YALCOM предоставляет эталон для оценки способности языковой модели выявлять и учитывать связность при анализе архитектуры программного обеспечения, что критически важно для обеспечения качества и поддерживаемости кода. Оценка связности с помощью YALCOM позволяет выявить потенциальные проблемы в дизайне, когда отдельные компоненты не связаны логически, что может привести к сложным ошибкам и затруднить дальнейшую разработку.
В ходе тестирования модели 7070B наблюдалось снижение эффективности в более сложных задачах. В частности, при генерации открытых ответов, связанных с концепцией «связности», модель продемонстрировала F1-оценку в 0.61, что на 32% ниже, чем при проверке уже существующих решений. Индекс Рэнда, используемый для оценки согласованности, составил 0.43 при анализе связности в задачах генерации. Кроме того, модель смогла проанализировать приблизительно 61% классов, что указывает на определенные ограничения в условиях повышенной сложности. Комбинирование этих метрик позволяет оценить надежность и последовательность способностей языковой модели к оценке дизайна, выявляя области, требующие дальнейшего улучшения.

Исследование демонстрирует, что большие языковые модели, несмотря на теоретическое понимание принципов связности и сплоченности, часто испытывают трудности с их практическим применением в сложных сценариях. Этот феномен напоминает о важности не только знания, но и способности к его адаптации и применению в конкретных условиях. Как однажды заметил Джон Маккарти: «Искусственный интеллект — это не создание машин, которые думают как люди, а создание машин, которые думают». Подобно тому, как модели нуждаются в четких инструкциях для оценки качества кода, так и интеллект требует постоянной проверки и коррекции, чтобы избежать ошибок, возникающих из-за неполного понимания контекста или недостаточной способности к логическому выводу. Задержка в исправлении этих ошибок, в свою очередь, является неизбежной платой за амбициозность и стремление к созданию сложных систем.
Куда же дальше?
Исследование, представленное в данной работе, демонстрирует, что большие языковые модели обладают определенным набором знаний о принципах проектирования программного обеспечения, таких как связность и зацепленность. Однако, способность применять эти принципы автономно, без внешнего руководства, представляется хрупкой. Можно сказать, что модели демонстрируют скорее память о правилах, нежели истинное понимание их сути. Стабильность, наблюдаемая в контролируемых условиях, зачастую оказывается лишь отсрочкой неизбежного провала при столкновении с реальной сложностью.
Вопрос не в том, чтобы исправить ошибки в алгоритмах, ведь система стареет не из-за ошибок, а из-за неизбежности времени. Более продуктивным представляется поиск путей интеграции этих моделей с другими системами, способными обеспечить контекст и контроль. Необходимо сместить акцент с автономного проектирования на ассистивные функции, где модель выступает в роли эксперта, а не архитектора.
В конечном счете, истинный прогресс потребует не просто улучшения алгоритмов, а переосмысления самой парадигмы разработки программного обеспечения. Возможно, будущее за системами, которые не стремятся к идеальному коду, а адаптируются к меняющимся требованиям и неизбежной энтропии. Ведь любая система, даже самая совершенная, обречена на старение, и важно лишь, насколько достойно она это сделает.
Оригинал статьи: https://arxiv.org/pdf/2511.20933.pdf
Связаться с автором: https://www.linkedin.com/in/avetisyan/
Смотрите также:
- LLM: математика — предел возможностей.
- Кандинский 5.0: Искусство генерации изображений и видео
- Волны под контролем: Ускорение моделирования материалов с дефектами
- Квантовые симуляторы: Преодолевая ограничения памяти
- Искусственный интеллект и рефакторинг кода: что пока умеют AI-агенты?
- Квантовая симуляция без издержек: новый подход к динамике открытых систем
- Квантовое моделирование затухающих волн: новый подход к точности и эффективности
- Архитектура фермента: от генерации каркаса к адресной каталитической эффективности.
- Белки в коде: от структуры к динамике
- Квантовая активность: моделирование диссипации в активных системах
2025-11-29 19:12