Главная страница

Методические указания по выполнению лабораторных работ по дисциплине Методы разработки программного обеспечения


Скачать 301.5 Kb.
НазваниеМетодические указания по выполнению лабораторных работ по дисциплине Методы разработки программного обеспечения
Дата31.12.2022
Размер301.5 Kb.
Формат файлаdoc
Имя файлаvolkov_mrpo.doc
ТипЛабораторная работа
#869954
страница3 из 4
1   2   3   4

Метрики стилистики и понятности программ



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

Наиболее простой метрикой стилистики и понятности является оценка уровня комментированности программы F:

F = Nком/Nстр,

где Nком - количество комментариев в программе;

Nстр – количество строк или операторов исходного текста.

Таким образом, метрика F отражает насыщенность программы комментариями.

Исходя из практического опыта принято считать, что F0.1, т.е. на каждые десять строк программы должен приходиться минимум один комментарий. Как показывают исследования, комментарии распределяются по тексту программы неравномерно: в начале программы их избыток, а в середине или в конце – недостаток. Это объясняется тем, что в начале программы, как правило, расположены операторы описания идентификаторов, требующие более “плотного” комментирования. Кроме того, в начале программы также расположены “шапки”, содержащие общие сведения об исполнителе, характере, функциональном назначении программы и т.п. Такая насыщенность компенсирует недостаток комментариев в теле программы, и поэтому приведенная формула недостаточно точно отражает комментированность функциональной части текста программы.

Более удачен вариант, когда вся программа разбивается на n равных сегментов и для каждого из них определяется Fi:

Fi=sign(Nком/Nстр–0.1), при этом

Уровень комментированности программы считается нормальным, если выполняется условие: F=n. В противном случае какой либо фрагмент программы дополняется комментариями до нормального уровня.

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


МЕТРИКИ ХОЛСТЕДА



Для измерения теоретической длины программы М.Холстед вводит аппроксимирующую формулу:



где h1 - словарь операторов; h2 - словарь операторов программы.
Вводя эту оценку, Холстед исходит из основных концепций теории информации, по аналогии с которыми частота использования операторов и операндов в программе пропорциональна двоичному логарифму количества их типов. Таким образом, приведенное выражение представляет собой идеализированную аппроксимацию N=N1+N2, т.е. справедливо для потенциально корректных программ, свободных от избыточности или несовершенства (стилистических ошибок). Несовершенствами можно считать следующие ситуации:

а) последующая операция уничтожает результаты предыдущих без их использования;

б) присутствуют тождественные выражения, решающие совершенно одинаковые задачи;

в) одной и той же переменной назначаются различные имена и т.п.

Подобные ситуации приводят к изменению N без изменения h.

М.Холстед утверждает, что для стилистически корректных программ отклонение в оценке теоретической длины от реальной N не превышает 10%.

При автоматизации измерения h1, h2, N1 и N2 определить N нетрудно. Тем не менее оценка представляет интерес и с другой точки зрения.

используется как эталонное значение длины программы со словарем h. Длина корректно составленной программы N, т.е. программы, свободной от избыточности и имеющей словарь h, не должна отклоняться от теоретической длины программы более чем на 10%. Таким образом, измеряя h1, h2, N1 и N2 и сопоставляя значения N и для некоторой программы, при более чем 10%-ном отклонении можно говорить о наличии в программе стилистических ошибок, т.е. несовершенств.

Другой характеристикой, принадлежащей к метрикам корректности программ, по М.Холстеду, является уровень качества программирования L(уровень программы).



где V и V* определяются


Исходным для введения этой характеристики является предположение о том, что при снижении стилистического качества программирования уменьшается содержательная нагрузка и каждый компонент программы и, как следствие, расширяется объем реализации исходного алгоритма. Учитывая это, можно оценить качество программирования на основании степени расширения текста относительно потенциального объема V*. Очевидно, для идеальной программы L=1, а для реальной - всегда L<1.

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



Специалисты считают более корректным при оценке программ использовать характеристику L.

Располагая характеристикой , Холстед вводит характеристику I, которую рассматривает как интеллектуальное содержание конкретного алгоритма, инвариантное по отношению к используемым языкам реализации:



Термин интеллектуальность не совсем удачен, точнее сказать что речь идет о характеристике информативности программы.

Введение характеристики I позволяет определить основные умственные затраты на создание программы. Процесс создания программы условно можно представить как ряд операций: 1) осмысление предложения известного алгоритма; 2) запись предложения алгоритма в терминах используемого языка программирования, т.е. поиск в словаре языка соответствующей инструкции, ее смысловое наполнение и запись.

Используя эту формализацию в методике Холстеда, можно сказать, что написание программы по заранее известному алгоритму есть -кратная выборка операторов и операндов из словаря программы h1, причем число сравнений (по аналогии с алгоритмами сортировки) составляет log2h.

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

.

Таким образом, характеризует число требуемых элементарных решений при написании программы.

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

.

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

Преобразуя формулу



с учетом и получим

.

Такое представление , а соответственно и , так как , наглядно иллюстрирует целесообразность разбиения программ на отдельные модули, поскольку интеллектуальные затраты оказываются пропорциональными квадрату объема программы, который всегда больше суммы квадратов объемов отдельных модулей.

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

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

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

,

где - длина документа в предыдущий момент времени; - добавляемая часть документа; - исключаемая часть документа.

Далее вводится , представляющая собой отклонение текущей длины документа от конечного значения



Затем рассчитывается интеграл по модулю этого отклонения на интервале от до , представленный в виде суммы

.

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

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


1   2   3   4


написать администратору сайта