Метрические особенности ООП систем
Описание файла
PDF-файл из архива "Метрические особенности ООП систем", который расположен в категории "". Всё это находится в предмете "проектирование программного обеспечения автоматизированных систем" из 9 семестр (1 семестр магистратуры), которые можно найти в файловом архиве НИУ «МЭИ» . Не смотря на прямую связь этого архива с НИУ «МЭИ» , его также можно найти и в других разделах. Архив можно найти в разделе "остальное", в предмете "проектирование по автоматизированных систем" в общих файлах.
Просмотр PDF-файла онлайн
Текст из PDF
Метрические особенности объектно-ориентированных программных системОбъектно-ориентированные метрики вводятся с целью: улучшить понимание качества продукта; оценить эффективность процесса конструирования; улучшить качество работы на этапе проектирования.Все эти цели важны, но для программного инженера главная цель — повышение качествапродукта. Возникает вопрос — как измерить качество объектно-ориентированной системы?Для любого инженерного продукта метрики должны ориентироваться на его уникальныехарактеристики.
С точки зрения метрик выделяют пять характеристик объектно-ориентированныхсистем: локализацию, инкапсуляцию, информационную закрытость, наследование и способыабстрагирования объектов. Эти характеристики оказывают максимальное влияние на объектноориентированные метрики.ЛокализацияЛокализация фиксирует способ группировки информации в программе.
В классическихметодах, где используется функциональная декомпозиция, информация локализуется вокругфункций. Функции в них реализуются как процедурные модули. В методах, управляемыхданными, информация группируется вокруг структур данных. В объектно-ориентированной средеинформация группируется внутри классов или объектов (инкапсуляцией как данных, так ипроцессов).Поскольку в классических методах основной механизм локализации — функция, программныеметрики ориентированы на внутреннюю структуру или сложность функций (длина модуля,связность, цикломатическая сложность) или на способ, которым функции связываются друг сдругом (сцепление модулей).Так как в объектно-ориентированной системе базовым элементом является класс, толокализация здесь основывается на объектах.
Поэтому метрики должны применяться к классу(объекту) как к комплексной сущности. Кроме того, между операциями (функциями) и классамимогут быть отношения не только «один-к-одному». Поэтому метрики, отображающие способывзаимодействия классов, должны быть приспособлены к отношениям «один-ко-многим», «многиеко-многим».ИнкапсуляцияВспомним, что инкапсуляция — упаковка (связывание) совокупности элементов. Дляклассических ПС примерами низкоуровневой инкапсуляции являются записи и массивы.Механизмом инкапсуляции среднего уровня являются подпрограммы (процедуры, функции).В объектно-ориентированных системах инкапсулируются обязанности класса, представляемыеего свойствами (а для агрегатов — и свойствами других классов), операциями и состояниями.Для метрик учет инкапсуляции приводит к смещению фокуса измерений с одного модуля нагруппу свойств и обрабатывающих модулей (операций).
Кроме того, инкапсуляция переводитизмерения на более высокий уровень абстракции (пример — метрика «количество операций накласс»). Напротив, классические метрики ориентированы на низкий уровень — количествобулевых условий (цикломатическая сложность) и количество строк программы.Информационная закрытостьИнформационная закрытость делает невидимыми операционные детали программногокомпонента. Другим компонентам доступна только необходимая информация.Качественные объектно-ориентированные системы поддерживают высокий уровеньинформационной закрытости.
Таким образом, метрики, измеряющие степень достигнутойзакрытости, тем самым отображают качество объектно-ориентированного проекта.НаследованиеНаследование — механизм, обеспечивающий тиражирование обязанностей одного класса вдругие классы. Наследование распространяется через все уровни иерархии классов. Стандартные1ПС не поддерживают эту характеристику.Поскольку наследование — основная характеристика объектно-ориентированных систем, наней фокусируются многие объектно-ориентированные метрики (количество детей — потомковкласса, количество родителей, высота класса в иерархии наследования).АбстракцияАбстракция — это механизм, который позволяет проектировщику выделять главное впрограммном компоненте (как свойства, так и операции) без учета второстепенных деталей.
Помере перемещения на более высокие уровни абстракции мы игнорируем все большее количестводеталей, обеспечивая все более общее представление понятия или элемента. По мере перемещенияна более низкие уровни абстракции мы вводим все большее количество деталей, обеспечиваяболее удачное представление понятия или элемента.Класс — это абстракция, которая может быть представлена на различных уровнях детализациии различными способами (например, как список операций, последовательность состояний,последовательности взаимодействий).
Поэтому объектно-ориентированные метрики должныпредставлять абстракции в терминах измерений класса. Примеры: количество экземпляров классав приложении, количество родовых классов на приложение, отношение количества родовых кколичеству неродовых классов.Эволюция мер связи для объектно-ориентированных программных системКлассической мерой сложности внутренних связей модуля является связность, а классическоймерой сложности внешних связей — сцепление. Рассмотрим развитие этих мер применительно кобъектно-ориентированным системам.Связность объектовВ классическом методе Л. Констентайна и Э. Йордана определены семь типов связности.1. Связность по совпадению. В модуле отсутствуют явно выраженные внутренние связи.2. Логическая связность.
Части модуля объединены по принципу функционального подобия.3. Временная связность. Части модуля не связаны, но необходимы в один и тот же периодработы системы.4. Процедурная связность. Части модуля связаны порядком выполняемых ими действий,реализующих некоторый сценарий поведения.5. Коммуникативная связность. Части модуля связаны по данным (работают с одной и тойже структурой данных).6. Информационная (последовательная) связность. Выходные данные одной частииспользуются как входные данные в другой части модуля.7. Функциональная связность.
Части модуля вместе реализуют одну функцию.Этот метод функционален по своей природе, поэтому наибольшей связностью здесь объявленафункциональная связность. Вместе с тем одним из принципиальных преимуществ объектноориентированного подхода является естественная связанность объектов.Максимально связанным является объект, в котором представляется единая сущность и вкоторый включены все операции над этой сущностью. Следовательно, восьмой тип связностиможно определить так:8. Объектная связность. Каждая операция обеспечивает функциональность, котораяпредусматривает, что все свойства объекта будут модифицироваться, отображаться ииспользоваться как базис для предоставления услуг.Высокая связность — желательная характеристика, так как она означает, что объектпредставляет единую часть в проблемной области, существует в едином пространстве.
Приизменении системы все действия над частью инкапсулируются в едином компоненте. Поэтому дляпроизводства изменения нет нужды модифицировать много компонентов.Если функциональность в объектно-ориентированной системе обеспечивается наследованиемот суперклассов, то связность объекта, который наследует свойства и операции, уменьшается. Вэтом случае нельзя рассматривать объект как отдельный модуль — должны учитываться все его2суперклассы.
Системные средства просмотра содействуют такому учету. Однако пониманиеэлемента, который наследует свойства от нескольких суперклассов, резко усложняется.Обсудим конкретные метрики для вычисления связности классов.Метрики связности по даннымЛ. Отт и Б. Мехра разработали модель секционирования класса [55]. Секционированиеосновывается на экземплярных переменных класса. Для каждого метода класса получают рядсекций, а затем производят объединение всех секций класса. Измерение связности основываетсяна количестве лексем данных (data tokens), которые появляются в нескольких секциях и«склеивают» секции в модуль.
Под лексемами данных здесь понимают определения констант ипеременных или ссылки на константы и переменные.Базовым понятием методики является секция данных. Она составляется для каждого выходногопараметра метода. Секция данных — это последовательность лексем данных в операторах,которые требуются для вычисления этого параметра.Еще одно базовое понятие методики — секционированная абстракция. Секционированнаяабстракция — это объединение всех секций данных метода.Введем главные определения.Секционированной абстракцией класса (Class Slice Abstraction) CSA(C) называют объединениесекций всех экземплярных переменных класса.
Полный набор секций составляют путем обработкивсех методов класса.Склеенными лексемами называют те лексемы данных, которые являются элементами более чемодной секции данных.Сильно склеенными лексемами называют те склеенные лексемы, которые являются элементамивсех секций данных.Сильная связность по данным (StrongData Cohesion) — это метрика, основанная на количествелексем данных, входящих во все секции данных для класса. Иначе говоря, сильная связность поданным учитывает количество сильно склеенных лексем в классе С, она вычисляется по формуле:SG (CSA (C ))SDC(C ) =,лексемы(C )где SG(CSA(C)) — объединение сильно склеенных лексем каждого из методов класса С,лексемы(С) — множество всех лексем данных класса С.Таким образом, класс без сильно склеенных лексем имеет нулевую сильную связность поданным.Слабая связность по данным (Weak Data Cohesion) — метрика, которая оценивает связность,базируясь на склеенных лексемах.