Итерация 3 — разработка диалогового окна
Шаг 1: Спецификация представления диалогового окна.
На этом шаге фиксируется представление заказчика об обязанностях диалогового окна. Положим, что оно имеет следующий вид:
1. Диалоговое окно накапливает посылаемые в него символы, отображая их по мере получения.
2. При получении символа конца сообщения (ENTER) полная строка текста принимается в функцию обратного вызова, связанную с диалоговым окном.
3. Функция обратного вызова реализует обслуживание, требуемое пользователю.
4. Функция обратного вызова обеспечивается прикладным программистом.
Шаг 2: Модификация диаграммы Use Case для WUI.
Очевидно, что дополнительное требование приводит к появлению дополнительного элемента Use Case, который находится в отношении «расширяет» с базовым г элементом Use Case Использование окон.
Диаграмма Use Case принимает вид, представленный на рис. 15.13.
Рис. 15.13.Модифицированная диаграмма Use Case для WUI
Шаг 3: Описание элемента Use Case Использование диалогового окна.
Действия начинаются с ввода пользователем переключающего символа, активизирующего данный тип окна. Символ воспринимается менеджером ввода. Далее пользователь вводит данные, которые по мере поступления отображаются в диалоговом окне. После нажатия пользователем символа окончания ввода (ENTER) данные передаются в функцию обратного вызова как параметр. Выполняется функция обратного вызова, результат выводится в простое окно результата.
Шаг 4: Диаграмма последовательности Использование диалогового окна.
Диаграмма последовательности для сценария Использование диалогового окна показана на рис. 15.14.
Рис. 15.14.Диаграмма последовательности Использование диалогового окна
Шаг 5: Создание класса.
Для реализации сценария Использование диалогового окна создается новый класс Dialog, который является наследником класса Window. Объекты класса Dialog образуют диалоговые окна.
Класс Dialog переопределяет следующие операции, унаследованные от класса Window:
q framework — формирование диалогового окна. Параметры операции: имя диалогового окна, координаты, ширина окна, заголовок окна и ссылка на функцию обратного вызова. Операция создает каркас окна, устанавливает для него функцию обратного вызова, делает окно видимым и регистрирует его в массиве управляемых окон;
q send_to — обрабатывает пользовательский ввод, посылаемый в диалоговое окно. Окно запоминает символы, вводимые пользователем, а после нажатия пользователем клавиши ENTER вызывает функцию обратного вызова, обрабатывающую эти данные.
Конечное представление иерархии классов WUI показано на рис. 15.15. Результаты оценки качества проекта (в конце третьей итерации) сведены в табл. 15.5. Динамика изменения значений для метрик класса показана в табл. 15.6.
Таблица 15.5.Оценки качества WUI после третьей итерации
Метрика | lnput_ Manager | Window Manager | Screen | Root Window | Window | Menu | Menu-title | Dialog | Среднее значение | |||||||
WMC | 0,12 | 0,42 | 0,11 | 0,98 | 0,33 | 0,27 | 0,23 | 0,31 | ||||||||
NOC | - | - | - | 0,5 | ||||||||||||
СВО | ||||||||||||||||
RFC | 9,1 | |||||||||||||||
LCOM | ||||||||||||||||
CS | 3/2 | 10/8 | 5/1 | 0/2 | 22/22 | 28/24 | 11/12 | 24/14 | 12,2/10,6 | |||||||
NOO | - | - | - | 0,9 | ||||||||||||
NOA | - | - | - | 3,5 | ||||||||||||
SI | - | - | - | 0,23 | 0,46 | 0,27 | 0,14 | |||||||||
OSAVG | 4,2 | 2,2 | 4,45 | 4,13 | 11,5 | 4,9 | ||||||||||
NPAVG | 1,3 | 2,18 | 4,63 | 1,67 | 1,8 | |||||||||||
Метрики, вычисляемые для системы | ||||||||||||||||
DIT | ||||||||||||||||
NC | ||||||||||||||||
NOM | ||||||||||||||||
LOC ![]() | ||||||||||||||||
Таблица 15.6.Средние значения метрик класса на разных итерациях
Метрика | Итерация 1 | Итерация 2 | Итерация 3 |
WMC | 0,3 | 0,32 | 0,31 |
NOC | 0,2 | 0,4 | 0,5 |
СВО | 1,8 | ||
RFC | 9,4 | 9,1 | |
LCOM | 1,6 | 1,1 | |
CS | 7,2/7 | 11,3/10,1 | 12,2/10,6 |
NOO | 0,7 | 0,9 | |
NOA | 3,6 | 3,5 | |
SI | 0,1 | 0,14 | |
OSAVG | 4,0 | 4,9 | |
NPAVG | 0,9 | 1,5 | 1,8 |
DIT | |||
NC | |||
NOM | |||
LOC ![]() |
Рис. 15.15.Конечная диаграмма классов WUI
Сравним средние значения метрик второй и третьей итераций:
1. Общая сложность WUI возросла (увеличились значения LOC , NOM и NC), однако повысилось качество классов (уменьшились средние значения WMC и RFC).
2. Увеличились возможности многократного использования классов (о чем свидетельствует рост среднего значения NOC и уменьшение среднего значения WMC).
3. Возросла средняя связность класса (уменьшилось среднее значение метрики LCOM).
4. Уменьшилось среднее значение сцепления класса (сохранилось среднее значение СВО и уменьшилось среднее значение RFC).
Вывод:качество проекта стало выше.
На последней итерации рассчитаны значения интегральных метрик Абреу, они представлены в табл. 15.7. Эти данные также характеризуют качество проекта и подтверждают наши выводы.
Таблица 15.7.Значения метрик Абреу для WUI
Метрика | Значение |
МНF | 0,49 |
AHF | 0,49 |
MIF | 0,49 |
AIF | 0,29 |
POF | 0,69 |
COF | 0,25 |
Метрические данные проекта помещают в метрический базис фирмы-разработчика, тем самым обеспечивается возможность их использования в последующих разработках.