Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Метрические особенности объектно-ориентированных программных систем



 

Объектно-ориентированные метрики вводятся с целью:

q улучшить понимание качества продукта;

q оценить эффективность процесса конструирования;

q улучшить качество работы на этапе проектирования.

 

 

выделяют пять характеристик объектно-ориентированных систем:

- локализацию,

- инкапсуляцию,

- информационную закрытость,

- наследование и

- способы абстрагирования объектов.

Эти характеристики оказывают максимальное влияние на объектно-ориентированные метрики.

Локализация

 

Локализация фиксирует способ группировки информации в программе.

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

В объектно-ориентированной среде информация группируется внутри классов или объектов (инкапсуляцией как данных, так и процессов).

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

Так как в объектно-ориентированной системе базовым элементом является класс, то локализация здесь основывается на объектах.

Метрики, отображающие способы взаимодействия классов, должны быть приспособлены к отношениям «один-к-одному». «один-ко-многим», «многие-ко-многим».

Инкапсуляция

 

Инкапсуляция — упаковка (связывание) совокупности элементов.

В объектно-ориентированных системах инкапсулируются обязанности класса, представляемые его свойствами (а для агрегатов — и свойствами других классов), операциями и состояниями.

Инкапсуляция переводит измерения на более высокий уровень абстракции (пример — метрика «количество операций на класс»).

Информационная закрытость

Информационная закрытость делает невидимыми операционные детали программного компонента. Другим компонентам доступна только необходимая информация.

Метрики, измеряющие степень достигнутой закрытости, отображают качество объектно-ориентированного проекта.

Наследование

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

Объектно-ориентированные метрики (количество детей — потомков класса, количество родителей, высота класса в иерархии наследования).

Абстракция

Абстракция — это механизм, который позволяет проектировщику выделять главное в программном компоненте (как свойства, так и операции) без учета второстепенных деталей.

объектно-ориентированные метрики должны представлять абстракции в терминах измерений класса.

Примеры: количество экземпляров класса в приложении, количество родовых классов на приложение, отношение количества родовых к количеству неродовых классов.

Эволюция мер связи для объектно-ориентированных программных систем

 

классической мерой сложности внутренних связей модуля является связность , а классической мерой сложности внешних связей — сцепление.

Рассмотрим развитие этих мер применительно к объектно-ориентированным системам.

Связность объектов

 

В классическом методе Л. Констентайна и Э. Йордана определены семь типов связности.

1. Связность по совпадению. В модуле отсутствуют явно выраженные внутренние связи.

2. Логическая связность. Части модуля объединены по принципу функционального подобия.

3. Временная связность. Части модуля не связаны, но необходимы в один и тот же период работы системы.

4. Процедурная связность. Части модуля связаны порядком выполняемых ими действий, реализующих некоторый сценарий поведения.

5. Коммуникативная связность. Части модуля связаны по данным (работают с одной и той же структурой данных).

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

7. Функциональная связность. Части модуля вместе реализуют одну функцию. (обладает наибольшей связностью)

8. Объектная связность. Каждая операция обеспечивает функциональность, которая предусматривает, что все свойства объекта будут модифицироваться, отображаться и использоваться как базис для предоставления услуг

.

Высокая связность — желательная характеристика, так как она означает, что объект представляет единую часть в проблемной области, существует в едином пространстве.

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

Метрики для вычисления связности классов.

Метрики связности по данным

 

Л. Отт и Б. Мехра разработали модель секционирования класса.

Секционирование основывается на экземплярных переменных класса.

Для каждого метода класса получают ряд секций, а затем производят объединение всех секций класса.

Измерение связности основывается на количестве лексем данных (data tokens), которые появляются в нескольких секциях и «склеивают» секции в модуль.

Под лексемами данных здесь понимают определения констант и переменных или ссылки на константы и переменные.

Базовым понятием методики является секция данных. Она составляется для каждого выходного параметра метода.

Секция данных — это последовательность лексем данных в операторах, которые требуются для вычисления этого параметра.

Например, на рис. 3.1 представлен программный текст метода SumAndProduct. Все лексемы, входящие в секцию переменной SumN, выделены рамками. Сама секция для SumN записывается как следующая последовательность лексем:

N1 • SumN1 • I1 • SumN2 • O1 • I2 • 12 • N2 • SumN3 SumN4 • I3.

Рис. 3.1. Секция данных для переменной SumN

индекс в «12» указывает на второе вхождение лексемы «1» в текст метода. Аналогичным образом определяется секция для переменной ProdN:

N1 • ProdN1 • I1 • ProdN2 •11 • I2 • 12 • N2 • ProdN3 • ProdN4 • I4

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

Таблица 3.1. Профиль секций данных для метода SumAndProduct

SumN ProdN Оператор
    procedure SumAndProduct
(N iinteger;
Var SumN, ProdN iinteger)
    var
I: integer;
    begin
  SumN: =0
  ProdN: =1
for I: =1 to N do begin
  SumN: =SumN+l
  ProdN: =ProdN*l
    end
    end;

в столбце переменной для каждой секции указывается количество лексем из i-й строки метода, которые включаются в секцию.

 

Еще одно базовое понятие методики — секционированная абстракция. Секционированная абстракция это объединение всех секций данных метода. Например, секционированная абстракция метода SumAndProduct имеет вид

SA(SumAndProduct) = { N1 • SumN1 • I1 • SumN2 • O1 • I2 • 12 • N2 • SumN3 SumN4 • I3,

N1 • ProdN1 • I1 • ProdN2 •11 • I2 • 12 • N2 • ProdN3 • ProdN4 • I4}.

 

Введем главные определения.

Секционированной абстракцией класса (Class Slice Abstraction) CSA(C) называют объединение секций всех экземплярных переменных класса. Полный набор секций составляют путем обработки всех методов класса.

Склеенными лексемами называют те лексемы данных, которые являются элементами более чем одной секции данных.

Сильно склеенными лексемами называют те склеенные лексемы, которые являются элементами всех секций данных.

Сильная связность по данным ( StrongData Cohesion) это метрика, основанная на количестве лексем данных, входящих во все секции данных для класса.

Иначе говоря, сильная связность по данным учитывает количество сильно склеенных лексем в классе С, она вычисляется по формуле:

,

где

SG(CSA(C)) — объединение сильно склеенных лексем каждого из методов класса С,

лексемы(С) — множество всех лексем данных класса С.

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

Слабая связность по данным

(Weak Data Cohesion) метрика, которая оценивает связность, базируясь на склеенных лексемах.

Склеенные лексемы не требуют связывания всех секций данных, поэтому данная метрика определяет более слабый тип связности.

Слабая связность по данным вычисляется по формуле:

,

где G(CSA(C)) — объединение склеенных лексем каждого из методов класса.

Класс без склеенных лексем не имеет слабой связности по данным.

 

Наиболее точной метрикой связности между секциями данных является клейкость данных (Data Adhesiveness) .

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

.

 

Приведем пример. Применим метрики к классу, профиль секций которого показан в табл. 3.2.

Таблица 3.2. Профиль секций данных для класса Stack

array top size Класс Stack
1 1 1 class Stack {int *array, top, size;
  public:
  Stack(int s) {
2 2 size=s;
2 2 array=new int [size];
top=0; }
  int IsEmpty () {
return top==0};
  int Size (){
return size};
  intVtop(){
3 3 return array [top-1]; }
  void Push (int item) {
2 2 2 if (top= =size)
  printf (" Empty stack. \n" );
  else
3 3 3 array [top++]=item; }
  int Pop () {
if (IsEmpty ())
  printf (" Full stack. \n" );
  else
  --top; }
  };

в столбце переменной для каждой секции указывается количество лексем из i-й строки метода, которые включаются в секцию.

 

Очевидно, что CSA(Stack) включает три секции с 19 лексемами, имеет 5 сильно склеенных лексем и 12 склеенных лексем.

Расчеты по рассмотренным метрикам дают следующие значения:

SDC(CSA(Stack)) = 5/19 = 0, 26

WDC(CSA(Stack)) = 12/19 = 0, 63

DA(CSA(Stack)) =(7*2 + 5*3)/(19*3) = 0, 51


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-06-05; Просмотров: 1364; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.025 с.)
Главная | Случайная страница | Обратная связь