Теоретические основания исследования кода и шаблонов как объектов экспертизы сайта 📚
Экспертиза сайта представляет собой прикладную исследовательскую деятельность, направленную на установление свойств, состояний и связей веб-ресурса, значимых для решения конкретной задачи. В рамках настоящей статьи рассматривается тот аспект экспертизы сайта, который связан с исследованием кода и шаблонов. Именно код и шаблоны образуют материальную основу функционирования сайта: код определяет логику обработки запросов, правила формирования ответов, порядок взаимодействия с хранилищами данных, а шаблоны задают форму представления результата. Поэтому теоретическое осмысление кода и шаблонов как объектов экспертизы сайта требует прежде всего уточнения базовых понятий и выявления их специфики.
Под кодом сайта в настоящей работе понимается совокупность текстовых инструкций, записанных на языках программирования и разметки, которые интерпретируются или исполняются вычислительной средой и определяют поведение веб-ресурса. Код включает серверную и клиентскую составляющие. Серверный код отвечает за обработку входных данных, аутентификацию, авторизацию, доступ к базе данных, формирование структур данных и подготовку ответа. Клиентский код обеспечивает интерактивность интерфейса, реакцию на действия пользователя, динамическое изменение содержимого страницы, обмен данными с сервером без полной перезагрузки.
Между серверной и клиентской частями существует устойчивая функциональная связь: серверный код формирует начальное состояние представления, клиентский код это состояние изменяет, а серверный код обрабатывает результаты таких изменений. Для экспертизы сайта существенно, что обе части доступны наблюдению в разной степени: клиентский код передаётся в браузер и может быть исследован непосредственно, серверный код, как правило, скрыт и изучается по косвенным признакам — по поведению ресурса, по структуре ответов, по характерным заголовкам, по сообщениям об ошибках, по артефактам сборки.
Под шаблонами понимаются формализованные заготовки представления, содержащие неизменяемую часть разметки и специальные вставки, которые замещаются данными во время формирования итогового документа. Шаблон отделяет структуру представления от содержания, что позволяет многократно использовать одну и ту же форму для разных наборов данных.
Шаблоны могут быть серверными, когда подстановка выполняется до отправки документа клиенту, и клиентскими, когда итоговый документ достраивается уже в браузере. Шаблоны могут быть простыми, состоящими из одной заготовки, и составными, включающими другие шаблоны, наследование, блоки, макросы, условные и циклические конструкции. Шаблоны тесно связаны с кодом: код определяет, какие данные будут подставлены и по какому правилу, шаблон определяет, в какую форму эти данные будут облечены.
Объект экспертизы сайта в рассматриваемом аспекте обладает рядом свойств, значимых для исследования.
- Свойство текстовой фиксированности: код и шаблоны существуют в виде текста, доступного прочтению, сопоставлению, измерению и преобразованию.
- Свойство иерархической организации: код и шаблоны образуют уровни — от отдельных инструкций до модулей, от фрагментов разметки до целостных макетов.
- Свойство множественной интерпретации: один и тот же код может быть прочитан с точки зрения синтаксиса, семантики, стиля, производительности, безопасности, сопровождаемости, и каждая интерпретация даёт собственный результат.
- Свойство динамического проявления: статический текст кода порождает динамическое поведение, которое не всегда выводится из текста непосредственно и требует проверки.
- Свойство связанности: изменение одного фрагмента кода или шаблона может повлечь изменения в других фрагментах, и экспертиза сайта должна учитывать такие зависимости.
Методологическую основу исследования кода и шаблонов образуют несколько групп методов. К первой группе относятся методы статического анализа, при которых исследуется текст без его исполнения: лексический и синтаксический разбор, построение дерева разбора, анализ потока управления и потока данных, поиск совпадений по образцам, измерение метрик.
Ко второй группе относятся методы динамического анализа, при которых исследуется поведение кода при его исполнении: наблюдение за запросами и ответами, трассировка, профилирование, регистрация событий, сравнение поведения при различных входных данных. К третьей группе относятся методы сопоставительного анализа, при которых код и шаблоны сравниваются между собой, с эталонными образцами, с предыдущими состояниями ресурса. К четвёртой группе относятся методы формализации результатов, позволяющие представить выводы в проверяемой и воспроизводимой форме.
Центральным понятием теоретической части является понятие экспертного признака. Экспертный признак — это наблюдаемая характеристика кода или шаблона, которая в рамках поставленной задачи имеет доказательственное или оценочное значение. Признаки делятся на синтаксические, семантические, структурные, стилевые, поведенческие и метрические. Синтаксические признаки указывают на особенности записи инструкций. Семантические признаки указывают на смысл выполняемых действий.
Структурные признаки описывают организацию кода и шаблонов в модули и блоки. Стилевые признаки отражают устойчивые приёмы оформления. Поведенческие признаки проявляются при исполнении. Метрические признаки выражаются числами: длина, вложенность, число ветвлений, число обращений, плотность комментариев, связность. Совокупность признаков образует признаковое поле, в пределах которого строится экспертное заключение.
📌 Таким образом, теоретические основания исследования кода и шаблонов включают определение кода, определение шаблонов, описание их соотношения, перечень свойств объекта, группы методов и понятие экспертного признака. Такая экспертиза, рассматриваемая в этом аспекте, предстаёт как упорядоченная деятельность по выявлению, измерению, сопоставлению и истолкованию признаков кода и шаблонов. Дальнейшее изложение последовательно раскрывает архитектуру кода, природу шаблонизации, методы и средства исследования, признаки и индикаторы, оценку целостности и связанности, а также документирование результатов.
Архитектура кода сайта: структура, семантика и служебные компоненты 💻
Архитектура кода сайта представляет собой способ организации программных текстов в устойчивую систему, обеспечивающую выполнение функций ресурса. Для экспертизы сайта архитектурный уровень анализа является исходным, поскольку именно на этом уровне выявляются крупные структурные единицы, их назначение и связи между ними. Архитектура кода не сводится к перечню файлов; она включает принципы разделения ответственности, правила взаимодействия компонентов, порядок загрузки и исполнения, а также механизмы расширения и настройки.
Основными структурными единицами архитектуры кода являются модуль, компонент, слой и точка входа. Модуль — это наименьшая автономная единица организации кода, обладающая собственным именем, областью видимости и интерфейсом. Компонент — это совокупность модулей, объединённых общей функцией. Слой — это совокупность компонентов, выполняющих однотипную роль в обработке запроса. Точка входа — это элемент, с которого начинается исполнение при поступлении запроса.
Типовая архитектура веб-ресурса включает слой представления, слой прикладной логики, слой доступа к данным и слой инфраструктуры. Слой представления отвечает за формирование ответа, слой прикладной логики — за правила обработки, слой доступа к данным — за взаимодействие с хранилищем, слой инфраструктуры — за вспомогательные службы: конфигурирование, регистрацию событий, кэширование, маршрутизацию.
Семантика кода раскрывается через назначение его элементов. Переменные хранят значения, функции и методы выполняют действия, классы и структуры описывают типы, интерфейсы задают контракты, исключения сигнализируют об отклонениях, события уведомляют о наступлении условий. Семантический анализ в рамках экспертизы сайта направлен на установление того, соответствует ли фактическое назначение элементов их предполагаемому назначению, нет ли элементов, не используемых ни в одной ветви исполнения, нет ли элементов, выполняющих несколько разнородных функций одновременно, нет ли скрытых побочных эффектов. Семантическая ясность кода оценивается по тому, насколько однозначно по тексту может быть восстановлено его поведение.
Служебные компоненты кода образуют инфраструктурную основу и включают конфигурационные файлы, файлы маршрутизации, файлы инициализации, файлы миграций, файлы локализации, файлы описания зависимостей, файлы сборки. Конфигурационные файлы задают параметры среды: адреса, порты, учётные данные, режимы работы. Файлы маршрутизации ставят в соответствие внешним адресам внутренние обработчики. Файлы инициализации выполняют подготовительные действия при запуске.
Файлы миграций описывают изменения структуры хранилища. Файлы локализации содержат переводы текстовых сообщений. Файлы описания зависимостей фиксируют перечень внешних библиотек и их версии. Файлы сборки определяют порядок объединения и преобразования исходных текстов. Для экспертизы сайта служебные компоненты важны потому, что они определяют условия, при которых основной код будет исполняться именно так, как наблюдается.
Отдельного внимания заслуживает организация кода по шаблону проектирования. Распространённые подходы включают разделение модели, представления и контроллера, разделение прикладного ядра и периферийных модулей, организацию через службы и репозитории, организацию через обработчики событий. Каждый подход накладывает отпечаток на структуру: в одном случае представление отделено от логики, в другом — логика сосредоточена в службах, в третьем — взаимодействие строится вокруг сообщений. Экспертиза сайта учитывает принятый подход, поскольку от него зависит, где следует искать признаки, значимые для поставленной задачи.
Маршрутизация заслуживает рассмотрения как связующее звено архитектуры. Маршрут определяет, какой обработчик будет вызван при обращении по определённому адресу с определённым методом. Совокупность маршрутов образует внешний контур ресурса и позволяет установить, какие точки входа доступны, какие методы допустимы, какие параметры ожидаются, какие правила преобразования адресов применяются. Анализ маршрутов даёт возможность соотнести наблюдаемое поведение сайта с внутренней структурой кода и выявить обработчики, не имеющие маршрутов, а также маршруты, не имеющие обработчиков.
Обработка запроса в архитектуре кода проходит несколько стадий. На первой стадии запрос принимается сервером и передаётся точке входа. На второй стадии выполняется предварительная обработка: разбор адреса, определение маршрута, проверка общих условий. На третьей стадии вызывается прикладной обработчик, который обращается к службам и хранилищу. На четвёртой стадии формируется результат, который передаётся в слой представления. На пятой стадии результат преобразуется в ответ и отправляется клиенту. Каждая стадия оставляет следы, доступные наблюдению: заголовки, коды состояния, структуру тела ответа, время выполнения, записи в журналах. Эти следы образуют эмпирическую базу для выводов о архитектуре.
Связанность элементов архитектуры оценивается по числу и характеру зависимостей. Сильная связанность означает, что изменение одного элемента требует изменений в других; слабая связанность означает, что элементы взаимодействуют через устойчивые интерфейсы и могут изменяться относительно независимо. Для экспертизы сайта показатель связанности важен потому, что он характеризует устойчивость ресурса к изменениям и предсказуемость его поведения. Сцепление и связность рассматриваются совместно: высокая связность внутри модуля при слабом сцеплении между модулями считается признаком упорядоченной архитектуры.
Служебные компоненты включают также механизмы обработки ошибок и регистрации событий. Механизмы обработки ошибок определяют, как ресурс реагирует на отклонения: прекращает ли выполнение, передаёт ли управление обработчику, возвращает ли обобщённое сообщение, раскрывает ли подробности. Механизмы регистрации событий фиксируют ход выполнения и позволяют восстановить последовательность действий. Для экспертизы сайта эти компоненты значимы потому, что они влияют на полноту и достоверность сведений, получаемых при исследовании.
📌 Таким образом, архитектура кода сайта раскрывается через структурные единицы, семантику элементов, служебные компоненты, маршрутизацию, стадии обработки запроса и показатели связанности. Экспертиза сайта на архитектурном уровне устанавливает состав компонентов, их назначение, порядок взаимодействия и условия исполнения. Полученные сведения служат основой для перехода к следующему уровню — исследованию шаблонов, которые определяют форму представления результатов работы кода.
Шаблонизация как предмет экспертного анализа: виды, уровни и механизмы 🧩
Шаблонизация представляет собой способ отделения формы представления от содержания. В контексте экспертизы сайта шаблонизация рассматривается как совокупность приёмов, механизмов и артефактов, обеспечивающих формирование итогового документа на основе заранее подготовленных заготовок и подставляемых данных. Шаблонизация пронизывает как серверную, так и клиентскую часть сайта, и её исследование требует различения видов, уровней и механизмов.
Виды шаблонизации различаются по месту выполнения подстановки. Серверная шаблонизация выполняется до отправки документа клиенту: сервер получает данные, применяет к ним шаблон и формирует готовый документ. Клиентская шаблонизация выполняется после отправки документа: браузер получает заготовку и данные, а итоговый документ достраивается средствами клиентского кода. Смешанная шаблонизация предполагает участие обеих сторон: часть документа формируется на сервере, часть — на клиенте. Различение видов важно потому, что оно определяет, в какой момент и в каком месте следует искать признаки шаблонизации при экспертизе сайта.
По степени сложности шаблоны делятся на простые и составные. Простой шаблон содержит неизменяемую разметку и вставки для данных. Составной шаблон включает другие шаблоны, наследует базовые заготовки, определяет блоки, допускающие переопределение, содержит макросы и повторно используемые фрагменты. Составные шаблоны образуют иерархию, в которой выделяются корневой шаблон, промежуточные шаблоны и конечные шаблоны. Иерархия шаблонов соотносится с иерархией разделов сайта: корневой шаблон задаёт общую рамку, промежуточные — рамку разделов, конечные — рамку отдельных страниц. Для экспертизы сайта иерархия шаблонов важна потому, что она позволяет установить, какие элементы представления являются общими, а какие — частными, и где именно происходит подстановка конкретных данных.
Уровни шаблонизации различаются по масштабу охвата.
- Первый уровень — уровень документа: шаблон определяет структуру целой страницы.
- Второй уровень — уровень фрагмента: шаблон определяет структуру отдельного блока, например списка, формы, карточки, меню.
- Третий уровень — уровень элемента: шаблон определяет структуру отдельного элемента, например строки таблицы, пункта списка, поля ввода.
- Четвёртый уровень — уровень атрибута: шаблон определяет значение отдельного атрибута или его наличие.
Различение уровней позволяет при экспертизе сайта точно указывать, к какому масштабу относится выявленный признак.
Механизмы шаблонизации включают подстановку, наследование, включение, переопределение, повторение, условие, вычисление и экранирование. Подстановка заменяет вставку значением. Наследование позволяет производному шаблону использовать структуру базового шаблона и изменять отдельные блоки. Включение вставляет содержимое одного шаблона в другой. Переопределение заменяет блок базового шаблона блоком производного. Повторение формирует множество однотипных фрагментов по набору данных. Условие включает или исключает фрагмент в зависимости от значения. Вычисление формирует значение на основе выражения. Экранирование преобразует специальные символы, чтобы они не воспринимались как разметка или инструкции. Каждый механизм оставляет характерные следы, по которым он может быть опознан при исследовании.
Синтаксис шаблонов образует систему маркеров, отличающих неизменяемую часть от вставок. Маркеры могут быть парными, когда открывающий и закрывающий элементы обрамляют фрагмент, и одиночными, когда вставка не имеет парного элемента. Маркеры могут различаться по назначению: одни обозначают подстановку значения, другие — начало и конец блока, третьи — комментарий, четвёртые — директиву. Понимание синтаксиса шаблонов необходимо для экспертизы сайта, поскольку позволяет отличать содержательные вставки от служебных и правильно определять границы блоков.
Данные, подставляемые в шаблоны, различаются по происхождению и типу. По происхождению данные могут быть статическими, заданными непосредственно в коде, и динамическими, полученными из хранилища или от пользователя. По типу данные могут быть скалярными, списочными, ассоциативными, вложенными. Способ представления данных в шаблоне влияет на то, какие механизмы могут быть применены: для скалярных значений достаточно подстановки, для списочных требуется повторение, для ассоциативных — доступ по ключу, для вложенных — комбинация механизмов. При экспертизе сайта соответствие типа данных и применённого механизма является предметом проверки.
Отдельного рассмотрения требует соотношение шаблонов и разметки. Шаблон формирует разметку, но не тождествен ей: одна и та же разметка может быть получена разными шаблонами, и один и тот же шаблон при разных данных может дать разную разметку. Поэтому при экспертизе сайта различают статическую разметку, присутствующую в шаблоне, и динамическую разметку, возникающую при подстановке. Это различение существенно для оценки воспроизводимости и предсказуемости результата.
Композиция шаблонов подчиняется правилам, определяющим порядок применения механизмов. Обычно сначала выполняется разбор шаблона, затем — обработка наследования и включений, затем — вычисление выражений, затем — подстановка значений, затем — экранирование, затем — сборка итогового документа. Нарушение порядка приводит к тому, что результат отличается от ожидаемого: например, значение, подставленное до экранирования, может быть воспринято как разметка. При экспертизе сайта восстановление порядка применения механизмов позволяет объяснить наблюдаемые особенности итогового документа.
Шаблоны обладают свойством повторного использования, которое проявляется в том, что один шаблон применяется многократно к разным данным. Это свойство лежит в основе единообразия представления и одновременно создаёт риск тиражирования ошибки: дефект в шаблоне проявляется на всех страницах, где этот шаблон применён. При экспертизе сайта оценка области применения шаблона позволяет определить масштаб влияния выявленного признака.
📌 Таким образом, шаблонизация раскрывается через виды, уровни, механизмы, синтаксис, данные, соотношение с разметкой, правила композиции и свойство повторного использования. Экспертиза сайта в этой части устанавливает, какие шаблоны применены, на каких уровнях, с помощью каких механизмов, с какими данными и с каким результатом. Полученные сведения вместе со сведениями об архитектуре кода образуют основу для применения методов и инструментальных средств, рассматриваемых в следующей части.
Методы и инструментальные средства исследования кода и шаблонов 🔬
Методы исследования кода и шаблонов образуют упорядоченную совокупность приёмов, позволяющих получать, преобразовывать и истолковывать сведения об объекте. Инструментальные средства представляют собой программные и аппаратные приспособления, обеспечивающие применение методов. Для экспертизы сайта существенно, что выбор метода определяется поставленной задачей, а выбор средства — доступностью объекта и требуемой точностью результата.
Статические методы направлены на исследование текста без его исполнения. Лексический анализ разбивает текст на минимальные значимые единицы и позволяет установить состав использованных элементов. Синтаксический анализ устанавливает отношения между единицами и строит дерево разбора, отражающее структуру выражений и инструкций. Семантический анализ устанавливает смысловые связи: какие имена связаны с какими значениями, какие функции вызываются, какие данные передаются.
Анализ потока управления строит граф переходов между инструкциями и позволяет выявить ветвления, циклы, недостижимые участки. Анализ потока данных прослеживает перемещение значений от места возникновения до места использования. Поиск по образцам находит фрагменты, соответствующие заданному шаблону поиска. Измерение метрик даёт числовые характеристики: длину, вложенность, число ветвлений, число обращений, плотность комментариев, связность, сцепление.
Динамические методы направлены на исследование поведения кода при его исполнении. Наблюдение за запросами и ответами фиксирует, какие данные поступают на вход и какие результаты возвращаются. Трассировка регистрирует последовательность вызовов и позволяет восстановить путь исполнения. Профилирование измеряет распределение времени и ресурсов между участками кода. Регистрация событий фиксирует наступление значимых условий. Сравнение поведения при различных входных данных позволяет установить зависимость результата от входа и выявить условия, при которых поведение отклоняется от ожидаемого. Динамические методы дополняют статические: то, что не выводится из текста, устанавливается при исполнении, и наоборот.
Сопоставительные методы направлены на сравнение объекта с другими объектами или с его предыдущими состояниями. Сравнение с эталоном позволяет установить соответствие или отклонение. Сравнение версий позволяет выявить изменения между состояниями ресурса. Сравнение фрагментов позволяет установить сходство и различие между участками кода и шаблонов. Сравнение с типовыми решениями позволяет отнести объект к известной категории. Для экспертизы сайта сопоставительные методы значимы потому, что многие выводы формулируются именно в терминах соответствия, сходства и различия.
Методы формализации результатов обеспечивают проверяемость и воспроизводимость выводов. К ним относятся протоколирование хода исследования, фиксация исходных данных и промежуточных результатов, построение таблиц соответствия, составление схем и графов, описание последовательности действий, позволяющее повторить исследование. Формализация не является самоцелью; она служит тому, чтобы вывод мог быть проверен независимо.
Инструментальные средства статического анализа включают текстовые редакторы с развитыми средствами поиска и навигации, средства разбора и построения деревьев, средства поиска по образцам, средства измерения метрик, средства визуализации структуры. Текстовые редакторы обеспечивают просмотр и сопоставление фрагментов. Средства разбора преобразуют текст в структурированное представление. Средства поиска по образцам позволяют находить фрагменты, удовлетворяющие сложным условиям. Средства измерения метрик вычисляют числовые характеристики. Средства визуализации представляют структуру в наглядной форме.
Инструментальные средства динамического анализа включают средства наблюдения за сетевым обменом, средства просмотра и изменения документов на стороне клиента, средства трассировки, средства профилирования, средства регистрации событий. Средства наблюдения за сетевым обменом фиксируют запросы и ответы, заголовки и тела сообщений. Средства просмотра и изменения документов позволяют исследовать итоговую разметку, стили и клиентский код. Средства трассировки регистрируют последовательность вызовов. Средства профилирования измеряют распределение ресурсов. Средства регистрации событий фиксируют наступление условий.
Инструментальные средства сопоставительного анализа включают средства сравнения текстов, средства сравнения версий, средства сравнения документов, средства выявления сходства. Средства сравнения текстов показывают различия между фрагментами. Средства сравнения версий показывают изменения между состояниями. Средства сравнения документов показывают различия в итоговой разметке. Средства выявления сходства позволяют обнаружить повторяющиеся участки.
Применение методов и средств подчиняется определённой последовательности. На первом шаге формулируется задача и определяются признаки, подлежащие установлению. На втором шаге выбираются методы, позволяющие установить эти признаки. На третьем шаге подбираются средства, реализующие выбранные методы. На четвёртом шаге выполняется сбор сведений. На пятом шаге сведения обрабатываются и приводятся к форме, удобной для истолкования. На шестом шаге формулируются промежуточные выводы. На седьмом шаге проверяется устойчивость выводов путём повторного применения методов или применения дополнительных методов.
Ограничения методов и средств должны учитываться при экспертизе сайта. Статические методы не позволяют установить поведение, зависящее от внешних условий. Динамические методы не позволяют установить участки, не затронутые при наблюдении. Сопоставительные методы зависят от выбора эталона. Формализация не устраняет неопределённости, а лишь делает её явной. Инструментальные средства могут вносить искажения: средства просмотра могут изменять документ, средства трассировки могут замедлять исполнение, средства измерения могут влиять на измеряемое. Осознание ограничений позволяет правильно истолковывать результаты.
Сочетание методов повышает достоверность выводов. Статический анализ указывает, где следует искать; динамический анализ подтверждает или опровергает найденное; сопоставительный анализ помещает результат в контекст; формализация делает результат проверяемым. При экспертизе сайта такое сочетание образует основу для формирования признакового поля и последующей оценки целостности и связанности кода и шаблонов.
📌 Таким образом, методы и инструментальные средства исследования кода и шаблонов образуют систему, включающую статические, динамические, сопоставительные методы и методы формализации, а также соответствующие им средства. Экспертиза сайта в этой части предстаёт как последовательное применение выбранных методов и средств для установления признаков, значимых для поставленной задачи. Следующая часть посвящена описанию самих признаков и индикаторов, выявляемых в коде и шаблонах.
Признаки и индикаторы в коде и шаблонах, значимые для экспертизы сайта 🔎
Признаки и индикаторы образуют содержательное ядро исследования кода и шаблонов. Признак представляет собой характеристику объекта, устанавливаемую при исследовании. Индикатор представляет собой наблюдаемое проявление признака, доступное фиксации. Различение признака и индикатора существенно: признак отвечает на вопрос «что устанавливается», индикатор — на вопрос «как это устанавливается». Для экспертизы сайта система признаков и индикаторов должна быть упорядоченной, полной в пределах поставленной задачи и воспроизводимой.
Всё это напрямую связано с таким направлением, как экспертиза сайта.
Синтаксические признаки характеризуют запись инструкций и разметки. К ним относятся: состав использованных языковых конструкций, порядок следования элементов, наличие и вид разделителей, способ записи выражений, способ объявления имён, способ оформления строк и чисел, наличие и вид комментариев. Синтаксические индикаторы доступны непосредственному наблюдению в тексте: например, наличие определённой конструкции обнаруживается поиском по образцу, порядок следования — сопоставлением позиций, способ записи — сравнением с эталоном. Синтаксические признаки важны потому, что они позволяют установить единообразие или разнородность записи, а также выявить фрагменты, отклоняющиеся от принятого стиля.
Семантические признаки характеризуют смысл выполняемых действий. К ним относятся: назначение модулей и функций, соответствие имени и назначения, наличие неиспользуемых элементов, наличие элементов с несколькими назначениями, наличие скрытых побочных эффектов, соответствие фактического поведения предполагаемому. Семантические индикаторы устанавливаются путём сопоставления текста и поведения: например, неиспользуемый элемент обнаруживается отсутствием обращений, скрытый побочный эффект — изменением состояния, не отражённым в имени. Семантические признаки значимы потому, что они характеризуют ясность и предсказуемость кода.
Структурные признаки характеризуют организацию кода и шаблонов. К ним относятся: число уровней вложенности, число и размер модулей, распределение элементов по модулям, наличие иерархии шаблонов, наличие повторно используемых фрагментов, наличие дублирующих фрагментов, соотношение общего и частного. Структурные индикаторы устанавливаются измерением и сопоставлением: например, вложенность измеряется подсчётом уровней, дублирование — сравнением фрагментов, иерархия — построением графа включений. Структурные признаки значимы потому, что они характеризуют упорядоченность и сопровождаемость объекта.
Стилевые признаки характеризуют устойчивые приёмы оформления. К ним относятся: единообразие отступов, единообразие именования, единообразие порядка элементов, единообразие способов обработки ошибок, единообразие способов комментирования. Стилевые индикаторы устанавливаются сравнением фрагментов между собой: например, единообразие именования обнаруживается применением одного правила к разным именам, единообразие отступов — совпадением величины отступа. Стилевые признаки значимы потому, что они характеризуют дисциплину разработки и облегчают выявление аномалий.
Поведенческие признаки характеризуют проявление кода при исполнении. К ним относятся: последовательность обращений, распределение времени выполнения, распределение потребления ресурсов, реакция на различные входные данные, реакция на отклонения, устойчивость при повторных обращениях. Поведенческие индикаторы устанавливаются наблюдением: например, последовательность обращений фиксируется трассировкой, распределение времени — профилированием, реакция на входные данные — сравнением результатов. Поведенческие признаки значимы потому, что они характеризуют фактическое функционирование объекта.
Метрические признаки характеризуют объект численно. К ним относятся: длина текста, число строк, число инструкций, число ветвлений, число циклов, число обращений, число комментариев, плотность комментариев, средняя длина имени, максимальная вложенность, число связей между модулями. Метрические индикаторы устанавливаются измерением и выражаются числами. Метрические признаки значимы потому, что они позволяют сравнивать объекты между собой и с эталонами, а также выявлять отклонения от типовых значений.
Признаки шаблонов образуют отдельную группу. К ним относятся: вид шаблонизации, уровень шаблона, применённые механизмы, состав вставок, состав блоков, наличие наследования, наличие переопределений, состав подставляемых данных, способ экранирования, порядок применения механизмов. Индикаторы признаков шаблонов устанавливаются по маркерам, по структуре блоков, по следам подстановки в итоговом документе. Признаки шаблонов значимы потому, что они характеризуют форму представления и её связь с данными.
Соотношение признаков кода и признаков шаблонов является предметом отдельного рассмотрения. Код определяет, какие данные будут подставлены; шаблон определяет, в какую форму они будут облечены. Поэтому признаки кода и признаки шаблонов рассматриваются совместно: например, признак «соответствие типа данных и механизма подстановки» относится одновременно к обеим группам. Совместное рассмотрение позволяет выявить рассогласования, при которых код передаёт данные, не предусмотренные шаблоном, или шаблон ожидает данные, не передаваемые кодом.
Индикаторы обладают свойством наблюдаемости, которое может быть полным или частичным. Полная наблюдаемость означает, что индикатор доступен непосредственному восприятию в тексте или в поведении. Частичная наблюдаемость означает, что индикатор доступен лишь косвенно, через следствия. При экспертизе сайта различение полной и частичной наблюдаемости важно потому, что оно определяет степень уверенности в выводе: вывод, опирающийся на полностью наблюдаемый индикатор, является более устойчивым, чем вывод, опирающийся на косвенные признаки.
Оценка целостности, связанности и воспроизводимости кода и шаблонов 📊
Оценка целостности, связанности и воспроизводимости образует самостоятельный этап исследования кода и шаблонов. Целостность характеризует полноту и согласованность объекта, связанность — характер зависимостей между его элементами, воспроизводимость — способность объекта давать один и тот же результат при одних и тех же условиях. В совокупности эти три характеристики позволяют судить о том, насколько код и шаблоны образуют устойчивую систему, пригодную для функционирования и для исследования. Для экспертизы сайта оценка указанных характеристик имеет значение потому, что она связывает отдельные признаки, выявленные ранее, в общую картину состояния объекта.
Целостность кода оценивается по нескольким основаниям. Первое основание — полнота состава: все ли элементы, необходимые для исполнения, присутствуют. Признаками неполноты служат обращения к несуществующим модулям, вызовы неопределённых функций, ссылки на отсутствующие файлы, использование необъявленных имён. Второе основание — согласованность состава: соответствуют ли элементы друг другу по назначению, по интерфейсам, по типам данных.
Признаками рассогласования служат несоответствие числа аргументов при вызове и при объявлении, несоответствие типов, несоответствие ожидаемых и фактических структур данных. Третье основание — замкнутость контуров: все ли маршруты ведут к обработчикам, все ли обработчики доступны по маршрутам, все ли объявленные элементы используются, все ли используемые элементы объявлены. Признаками незамкнутости служат маршруты без обработчиков, обработчики без маршрутов, объявления без использований, использования без объявлений.
Целостность шаблонов оценивается по сходным основаниям с учётом специфики шаблонизации. Первое основание — полнота состава блоков: все ли блоки, требуемые базовым шаблоном, определены в производных шаблонах. Признаком неполноты служит отсутствие определения блока при его переопределении. Второе основание — согласованность вставок и данных: соответствуют ли вставки шаблона данным, передаваемым кодом. Признаком рассогласования служит обращение к несуществующему элементу данных или отсутствие вставки для передаваемого элемента. Третье основание — замкнутость иерархии: все ли включаемые шаблоны существуют, все ли наследуемые шаблоны определены, нет ли циклов во включениях и наследованиях. Признаком незамкнутости служит ссылка на несуществующий шаблон или циклическая зависимость.
Связанность кода оценивается по числу, направлению и характеру зависимостей между модулями. Зависимость может быть прямой и косвенной, односторонней и двусторонней, явной и неявной. Прямая зависимость возникает при непосредственном обращении одного модуля к другому. Косвенная зависимость возникает через промежуточные элементы. Односторонняя зависимость означает, что изменение одного модуля влияет на другой, но не наоборот. Двусторонняя зависимость означает взаимное влияние. Явная зависимость выражена в тексте через объявления и обращения. Неявная зависимость выражена через общие состояния, общие хранилища, общие настройки. Для экспертизы сайта важно, что неявные зависимости труднее обнаруживаются и чаще становятся источником непредвиденных эффектов.
Показателями связанности служат сцепление и связность. Сцепление характеризует силу зависимостей между модулями: слабое сцепление предпочтительно, поскольку оно позволяет изменять модули относительно независимо. Связность характеризует внутреннюю согласованность модуля: высокая связность предпочтительна, поскольку она означает, что модуль решает одну задачу. Оценка сцепления и связности проводится по совокупности признаков: по числу обращений между модулями, по числу общих данных, по числу передаваемых параметров, по разнородности выполняемых функций. Результатом оценки является отнесение объекта к одной из категорий: слабое сцепление и высокая связность, слабое сцепление и низкая связность, сильное сцепление и высокая связность, сильное сцепление и низкая связность.
Связанность шаблонов оценивается по зависимостям между шаблонами и по зависимостям между шаблонами и кодом. Зависимости между шаблонами возникают при наследовании, включении и переопределении. Зависимости между шаблонами и кодом возникают при передаче данных и при формировании результата. Показателями связанности шаблонов служат глубина иерархии, ширина иерархии, число переопределяемых блоков, число включаемых шаблонов, число вставок. Глубокая иерархия увеличивает повторное использование, но затрудняет прослеживание происхождения фрагмента. Широкая иерархия увеличивает разнообразие форм, но затрудняет поддержание единообразия. Для экспертизы сайта оценка связанности шаблонов позволяет установить, насколько изменение одного шаблона отражается на других шаблонах и на итоговых документах.
Воспроизводимость кода оценивается по способности давать один и тот же результат при одних и тех же входных данных и условиях. Условиями воспроизводимости являются детерминированность, независимость от внешних изменчивых факторов, устойчивость к порядку обращений, устойчивость к повторным запускам. Признаками невоспроизводимости служат зависимость результата от времени, от случайных величин, от состояния внешних служб, от порядка обращений, от накопленного состояния. Для экспертизы сайта оценка воспроизводимости важна потому, что она определяет, может ли результат исследования быть повторён и проверен.
Воспроизводимость шаблонов оценивается по способности формировать один и тот же документ при одних и тех же данных. Условиями воспроизводимости шаблонов являются определённость порядка применения механизмов, отсутствие зависимости от изменчивых внешних данных, устойчивость к порядку обхода наборов данных. Признаками невоспроизводимости служат зависимость итогового документа от порядка применения механизмов, от времени формирования, от состояния кэша, от порядка следования элементов в наборе. Оценка воспроизводимости шаблонов тесно связана с оценкой воспроизводимости кода, поскольку шаблон получает данные от кода и сам по себе не определяет их состав.
Соотношение целостности, связанности и воспроизводимости образует систему, в которой характеристики влияют друг на друга. Нарушение целостности, как правило, влечёт нарушение воспроизводимости: при отсутствии необходимого элемента результат зависит от того, будет ли этот элемент доступен в момент исполнения. Сильная связанность, как правило, снижает воспроизводимость: изменение одного элемента отражается на других, и результат становится зависимым от порядка изменений. Низкая воспроизводимость, в свою очередь, затрудняет оценку целостности: при разных результатах трудно установить, какой из них соответствует полному составу. Поэтому оценка трёх характеристик проводится совместно, а не изолированно.
Последовательность оценки включает несколько шагов. На первом шаге устанавливается состав элементов кода и шаблонов. На втором шаге выявляются связи между элементами. На третьем шаге проверяется полнота и согласованность состава. На четвёртом шаге измеряются показатели сцепления и связности. На пятом шаге проверяется воспроизводимость путём повторного применения операций при одних и тех же условиях. На шестом шаге сопоставляются результаты и формулируется общая оценка. Каждый шаг опирается на признаки и индикаторы, рассмотренные ранее, и использует методы и средства, описанные в предыдущих частях.
Результатом оценки является заключение о состоянии целостности, связанности и воспроизводимости кода и шаблонов. Заключение содержит перечень установленных нарушений, перечень выявленных зависимостей, перечень условий, при которых воспроизводимость сохраняется или нарушается. Экспертиза сайта в этой части предстаёт как деятельность по сведению разрозненных признаков в общую характеристику состояния объекта. Полученное заключение служит основой для документирования результатов, которому посвящена следующая часть.
Документирование и оформление результатов исследования кода и шаблонов 📄
Документирование результатов исследования завершает исследовательский цикл и обеспечивает возможность проверки выводов независимо от исследователя. Для экспертизы сайта документирование имеет особое значение потому, что объект исследования — код и шаблоны — обладает свойством изменчивости: без надлежащей фиксации состояния объекта выводы теряют привязку к материалу. Оформление результатов подчиняется требованиям полноты, точности, однозначности и воспроизводимости.
Полнота документирования означает, что в документе отражены все сведения, необходимые для понимания и проверки вывода. К таким сведениям относятся: описание объекта, описание условий исследования, описание применённых методов и средств, перечень установленных признаков и индикаторов, описание выявленных связей, оценка целостности и воспроизводимости, формулировка вывода. Отсутствие любого из этих элементов затрудняет проверку. Полнота не означает избыточности: в документ включаются сведения, значимые для вывода, и не включаются сведения, не влияющие на него.
Точность документирования означает, что сведения представлены в форме, допускающей однозначное истолкование. Точность достигается указанием места и времени исследования, указанием версии объекта, указанием использованных средств и их параметров, приведением фрагментов текста и результатов измерений в неизменном виде. Точность исключает приблизительные формулировки там, где возможны точные, и обобщённые описания там, где возможны конкретные.
Однозначность документирования означает, что термины и обозначения используются единообразно. Для экспертизы сайта это требование существенно потому, что в рассматриваемой области сосуществуют разные традиции именования: один и тот же элемент может называться по-разному, и одно и то же название может обозначать разные элементы. Поэтому в документе вводится рабочий словарь, в котором устанавливается соответствие между терминами и обозначаемыми ими элементами.
Воспроизводимость документирования означает, что по документу может быть повторено исследование. Для этого в документе фиксируются исходные данные, последовательность действий, условия применения методов и средств, критерии отнесения признаков к категориям. Воспроизводимость не требует, чтобы повторное исследование дало буквально тот же текст; она требует, чтобы повторное исследование при тех же условиях привело к тем же выводам.
Структура документа определяется задачей исследования. Типовая структура включает разделы: описание объекта, условия исследования, применённые методы и средства, установленные признаки и индикаторы, выявленные связи, оценка целостности, связанности и воспроизводимости, выводы. Разделы располагаются в последовательности, отражающей ход исследования: от описания объекта к формулировке вывода. Каждый раздел содержит сведения, относящиеся к его предмету, и не дублирует сведения других разделов.
Описание объекта включает сведения, позволяющие идентифицировать исследованный материал: состав кода и шаблонов, их расположение, объём, версию, дату получения. Описание условий исследования включает сведения о среде, в которой проводилось исследование: о средствах, о режимах, об ограничениях. Описание применённых методов и средств включает перечень методов, перечень средств и указание на то, какие признаки устанавливались каждым методом.
Раздел установленных признаков включает перечень признаков с указанием индикаторов, по которым они установлены, и мест, где индикаторы наблюдались. Раздел выявленных связей включает описание зависимостей между элементами. Раздел оценки включает результаты оценки целостности, связанности и воспроизводимости. Раздел выводов включает формулировки, отвечающие на поставленные вопросы.
Формы представления сведений различаются по характеру материала. Текстовые формы применяются для описания и истолкования. Табличные формы применяются для сопоставления и для представления измерений. Схемные формы применяются для представления структуры и связей. Перечневые формы применяются для перечисления однородных элементов. Приведение фрагментов кода и шаблонов применяется для подтверждения выводов. Выбор формы определяется характером сведений:
- то, что имеет количественную природу, представляется в табличной форме;
- то, что имеет структурную природу, — в схемной;
- то, что имеет описательную природу, — в текстовой.
Приведение фрагментов кода и шаблонов подчиняется правилам. Фрагмент приводится в том виде, в каком он наблюдался, с указанием места, откуда он взят. Если фрагмент сокращён, сокращение обозначается явно. Если фрагмент преобразован для наглядности, преобразование описывается. Если фрагмент содержит элементы, не относящиеся к выводу, они могут быть опущены с указанием на опущение. Приведение фрагментов служит подтверждению вывода и не заменяет его формулировку.
Формулировка вывода подчиняется требованиям определённости и обоснованности. Определённость означает, что вывод сформулирован в терминах, допускающих проверку. Обоснованность означает, что вывод опирается на приведённые сведения. Вывод не должен содержать утверждений, не подтверждённых материалом, и не должен содержать оценок, выходящих за пределы поставленной задачи. Если установленные сведения не позволяют сделать определённый вывод, это отражается в формулировке.
Оформление результатов включает также указание на ограничения исследования. Ограничения могут быть связаны с неполнотой доступа к объекту, с ограниченностью применённых методов, с условиями наблюдения. Указание на ограничения не ослабляет вывод, а делает его более точным: оно показывает, в каких пределах вывод сохраняет силу.
Документирование и оформление результатов образуют заключительный этап исследования кода и шаблонов. Экспертиза сайта в этой части предстаёт как деятельность по приведению полученных сведений к форме, обеспечивающей их проверку и использование. Документ, составленный по изложенным правилам, позволяет восстановить ход исследования, проверить его результаты и применить их для решения поставленной задачи.
Заключение ✅
Проведённое исследование кода и шаблонов как аспекта экспертизы сайта позволяет сформулировать ряд итоговых положений. Код и шаблоны образуют материальную основу функционирования веб-ресурса: код определяет логику обработки, шаблоны определяют форму представления. Их совместное исследование составляет предмет экспертизы сайта в том аспекте, которому посвящена настоящая статья.
Теоретические основания исследования включают определение кода, определение шаблонов, описание их соотношения, перечень свойств объекта, группы методов и понятие экспертного признака. Код обладает свойствами текстовой фиксированности, иерархической организации, множественной интерпретации, динамического проявления и связанности. Шаблоны обладают свойствами отделения формы от содержания, повторного использования, иерархической организации и зависимости от данных. Совокупность этих свойств определяет подход к исследованию.
Архитектура кода раскрывается через структурные единицы, семантику элементов, служебные компоненты, маршрутизацию, стадии обработки запроса и показатели связанности. Архитектурный уровень анализа позволяет установить состав компонентов, их назначение, порядок взаимодействия и условия исполнения. Полученные сведения служат основой для перехода к исследованию шаблонов.
Шаблонизация раскрывается через виды, уровни, механизмы, синтаксис, данные, соотношение с разметкой, правила композиции и свойство повторного использования. Различение серверной, клиентской и смешанной шаблонизации, различение уровней документа, фрагмента, элемента и атрибута, различение механизмов подстановки, наследования, включения, переопределения, повторения, условия, вычисления и экранирования позволяют точно описывать наблюдаемые явления.
Методы и инструментальные средства исследования включают статические, динамические, сопоставительные методы и методы формализации, а также соответствующие им средства. Сочетание методов повышает достоверность выводов:
- статический анализ указывает, где следует искать;
- динамический анализ подтверждает или опровергает найденное;
- сопоставительный анализ помещает результат в контекст;
- формализация делает результат проверяемым.
Признаки и индикаторы образуют содержательное ядро исследования. Синтаксические, семантические, структурные, стилевые, поведенческие и метрические признаки кода, а также признаки шаблонов, связанные с видом, уровнем, механизмами, вставками, блоками, наследованием, данными и экранированием, образуют признаковое поле. Различение признака и индикатора, различение полной и частичной наблюдаемости позволяют правильно оценивать степень уверенности в выводе.
Оценка целостности, связанности и воспроизводимости связывает отдельные признаки в общую характеристику состояния объекта. Целостность оценивается по полноте состава, согласованности состава и замкнутости контуров. Связанность оценивается по числу, направлению и характеру зависимостей, по показателям сцепления и связности. Воспроизводимость оценивается по детерминированности, независимости от внешних изменчивых факторов, устойчивости к порядку обращений и повторным запускам. Три характеристики рассматриваются совместно, поскольку они влияют друг на друга.
Документирование и оформление результатов завершает исследовательский цикл. Полнота, точность, однозначность и воспроизводимость документирования обеспечивают возможность проверки выводов независимо от исследователя. Структура документа отражает ход исследования: от описания объекта к формулировке вывода. Приведение фрагментов кода и шаблонов служит подтверждению вывода. Указание на ограничения делает вывод более точным.
Экспертиза сайта, рассматриваемая в аспекте исследования кода и шаблонов, предстаёт как упорядоченная деятельность, включающая теоретическое осмысление объекта, анализ архитектуры кода, анализ шаблонизации, применение методов и средств, установление признаков и индикаторов, оценку целостности, связанности и воспроизводимости, документирование результатов. Каждый этап опирается на предыдущий и подготавливает последующий. Совокупность этапов образует целостную процедуру, применимую к решению задач, связанных с установлением свойств, состояний и связей кода и шаблонов веб-ресурса.







Задавайте любые вопросы
[dwqa-submit-question-form]