Книга: Технологии программирования
8.3. СРАВНИТЕЛЬНЫЙ АНАЛИЗ ТЕХНОЛОГИЙ СТРУКТУРНОГО И ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ
8.3. СРАВНИТЕЛЬНЫЙ АНАЛИЗ ТЕХНОЛОГИЙ СТРУКТУРНОГО И ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ
Для проведения сравнительного анализа технологий структурного и объектно-ориентированного программирования разработана специальная методика, основанная на таких объективных принципах, как арифметический подсчет элементов текста программы, анализе алгоритмов программ. Арифметический подсчет выполнялся ручным счетом и был дополнен статистическими данными, выдаваемыми компиляторами и текстовыми редакторами. Итоговые таблицы и их визуализация осуществлялась при помощи программы Excel. Таблицы включают информацию по отдельным файлам и расчет итоговой информации по всей программе.
Информация по отдельным файлам представлена:
1) именем файла;
2) общим количеством строк файла (показывается текстовым редактором);
3) количеством строк операторов описаний данных во всем файле;
4) общим количеством комментариев в файле (выявляется контекстным поиском признака комментария в тексте файла);
5) количеством строк отдельных комментариев в файле;
6) количеством пустых строк в файле (выявляется визуальным анализом текста файла);
7) количеством подпрограмм в файле (является контекстным поиском заголовков procedure и function в тексте файла);
8) количеством операторов описания подпрограмм в файле;
9) количеством строк кода, рассчитанных по формуле: количество строк кода = 2) — 3) — 5) — 6) — 8).
Количество операторов описания подпрограмм в файле выявляется по принципу подсчета всех срок, например, в следующем примере выявлено четыре строки:
function CellString (Col, Row: Word; var Color: Word;
Formatting; Boolean): String;
Begin
End; {CellStrung}
Для проведения объективного сравнительного анализа потребовался выбор функционально похожих программ:
— Mcalc — рассмотренная ранее в гл. 2 и 7 демонстрационная программа, реализованная по технологии структурного программирования;
— Tcalc — демонстрационная программа, реализованная по технологий объектно-ориентированного программирования — функционально полный аналог программы Mcalc.
Результаты арифметического анализа текста программы MCalc, разработанной по технологии структурного программирования, представлены в табл. 8.1.
Таблица 8.1
Результаты анализа текста программы MCalc
Имя файла | Всего строк | Количество описательных операторов | Комментарии | Пустых строк | Количество процедур | Количество описательных операторов процедур | Код | |
Всего | Строк | |||||||
Mcalc | 143 | 8 | 11 | 7 | 5 | 2 | 6 | 117 |
Mcdisply | 357 | 54 | 47 | 15 | 49 | 18 | 64 | 175 |
Mcinput | 240 | 33 | 18 | 8 | 19 | 7 | 25 | 155 |
Mclib | 503 | 68 | 47 | 20 | 46 | 21 | 73 | 296 |
Mcommand | 873 | 88 | 63 | 19 | 54 | 24 | 86 | 626 |
Mcparser | 579 | 51 | 33 | 21 | 16 | 12 | 36 | 455 |
Mcutil | 413 | 62 | 46 | 16 | 45 | 18 | 75 | 215 |
mcvars | 124 | 96 | 9 | 5 | 19 | 0 | 0 | 0 |
Итого: | 3232 | 460 | 274 | 111 | 253 | 102 | 365 | 2043 |
15,4% | 3,7% | 12,3% | 68,6% |
Анализ демонстрационный программы TCalc "Borland Inc."
Программа TCalc 1993 (Turbo Pascal 6.0) состоит из следующих файлов:
tcalc.pas — файл основной программы;
tcell.pas — файл работы с клетками;
tcellsp.pas — файл дополнений работы с клетками (изменение значений);
tchash.pas — файл дополнений работы с клетками (значения в клетках);
tcinput.pas — файл подпрограмм ввода данных с клавиатуры;
tclstr.pas — файл подпрограмм работы со строками;
tcmenu.pas — файл подпрограмм, обслуживающих систему меню;
tcparser.pas — файл интерпретатора арифметических выражений формул клеток;
tcrun.pas — файл инициализации и запуска основных объектов;
tcscreen.pas — файл подпрограмм работы с дисплеем;
tcsheet.pas — файл подпрограмм, обслуживающих действия, выбранных посредством меню;
tcutil.pas — файл вспомогательных подпрограмм;
mcmvsmem.asm — ассемблерный файл подпрограмм запоминания в оперативной памяти информации экрана, а также восстановления ранее сохраненной информации экрана.
Все файлы закодированы с соблюдением стандартов оформления.
Хотя фирма "Borland Inc." занимается разработкой компиляторов, файл mcparser.pas также является заимствованным из UNIX YACC utility и лишь частично модифицирован. Остальные файлы являются оригинальными.
Ассемблерный файл mcmvsmem.asm является искусственно добавленным. Цель его добавления — демонстрация возможности использования ассемблерных вставок. Результаты арифметического анализа текста программы представлены в табл. 8.2.
Таблица 8.2
Результаты анализа текста программы TCalc
Имя файла | Всего строк | Количество описательных операторов | Комментарии | Пустых строк | Количество процедур | Количество описательных операторов процедур | Код | |
Всего | Строк | |||||||
Tcalc | 21 | 2 | 9 | 3 | 5 | 1 | 3 | 8 |
Tcell | 1962 | 490 | 206 | 20 | 153 | 46 | 152 | 1147 |
Tcellsp | 228 | 39 | 24 | 5 | 18 | 6 | 25 | 141 |
Tchash | 262 | 50 | 47 | 23 | 23 | 14 | 43 | 123 |
Tcinput | 334 | 63 | 39 | 15 | 22 | 9 | 32 | 202 |
Tclstr | 243 | 45 | 120 | 20 | 12 | 15 | 52 | 114 |
Tcmenu | 234 | 48 | 40 | 20 | 21 | 22 | 66 | 79 |
Tcparser | 677 | 73 | 29 | 5 | 17 | 9 | 64 | 518 |
Tcrun | 1367 | 146 | 128 | 59 | 57 | 47 | 163 | 942 |
Tcscreen | 523 | 215 | 92 | 37 | 16 | 8 | 96 | 159 |
Tcsheet | 1722 | 240 | 170 | 40 | 44 | 32 | 101 | 1297 |
Tcutil | 379 | 114 | 55 | 38 | 70 | 29 | 115 | 42 |
Итого: | 7952 | 1525 | 959 | 285 | 458 | 238 | 912 | 4772 |
20,3% | 3,8% | 12,2% | 63,7% |
В табл. 8.3 и на рис. 8.3 отображены результаты сравнительного анализа технологий структурного и объектно-ориентированного программирования.
Таблица 8.3
Результаты сравнительного анализа технологий структурного и объектно-ориентированного программирования
Имя программы | Всего строк | Количество описательных операторов | Комментарии | Пустых строк | Количество процедур | Количество операторов процедур | Код | |
Всего | Строк | |||||||
MCalc | 3232 | 460 | 274 | 111 | 253 | 102 | 365 | 2043 |
15,4% | 3,7% | 12,3% | 68,6% | |||||
TCalc | 7952 | 1525 | 959 | 285 | 458 | 238 | 912 | 4772 |
20,3% | 3,8% | 12,2% | 63,7% |
Сравнительный анализ технологий структурного и объектно-ориентированного программирования установил, что для этих технологий наблюдается практически полное совпадение:
• процентного состава описательных операторов;
• процентного состава количества комментариев;
• процентного состава описательных операторов процедур;
• процентного состава операторов кода программы.
Рис. 8.3. Результаты сравнительного анализа технологий структурного и объектно-ориентированного программирования
При проведении разработки по технологии объектно-ориентированного программирования по сравнению с технологией структурного программирования объем кода увеличился в 2,34 раза с учетом только кода, выполняющего одни и те же функции (для этого был исключен код функций, аналогичных функциям работы с clipboard Windows). Общее число строк увеличилось в 2,46 раза. Во столько и даже более раз увеличилась трудоемкость разработки.
Собственно функционально полезный код программ Mcalc и Tcalc — одинаковый и составляет порядка 1500 строк.
Почти 2,3–3,5 кратное увеличение трудоемкости разработки объясняется платой за организацию самостоятельности поведения объектов и их завершенную функциональность для повторного использования.
- 8.1. ИСТОРИЯ СОЗДАНИЯ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ
- 8.2. ВВЕДЕНИЕ В ОБЪЕКТНО-ОРИЕНТИРОВАННЫЙ ПОДХОД К РАЗРАБОТКЕ ПРОГРАММ
- 8.3. СРАВНИТЕЛЬНЫЙ АНАЛИЗ ТЕХНОЛОГИЙ СТРУКТУРНОГО И ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ
- 8.4. ОСНОВНЫЕ ПОНЯТИЯ ОБЪЕКТНО-ОРИЕНТИРОВАННОЙ ТЕХНОЛОГИИ
- 8.5. ОСНОВНЫЕ ПОНЯТИЯ, ИСПОЛЬЗУЕМЫЕ В ОБЪЕКТНО-ОРИЕНТИРОВАННЫХ ЯЗЫКАХ
- 8.6. ЭТАПЫ И МОДЕЛИ ОБЪЕКТНО-ОРИЕНТИРОВАННОЙ ТЕХНОЛОГИИ
- 8.7. КАКИМИ БЫВАЮТ ОБЪЕКТЫ ПО УСТРОЙСТВУ
- 8.8. ПРОЕКТНАЯ ПРОЦЕДУРА ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОЕКТИРОВАНИЯ ПО Б. СТРАУСТРУПУ
- 8.9. ТЕХНОЛОГИЯ ПРОЕКТИРОВАНИЯ НА ОСНОВЕ ОБЯЗАННОСТЕЙ
- 8.10. ПРИМЕР РЕТРОСПЕКТИВНОЙ РАЗРАБОТКИ ИЕРАРХИИ КЛАССОВ БИБЛИОТЕКИ ВИЗУАЛЬНЫХ КОМПОНЕНТ DELPHI И C++ BUILDER
- 8.11. АЛЬТЕРНАТИВНЫЙ ПРОЕКТ ГРАФИЧЕСКОГО ИНТЕРФЕЙСА
- 8.12. ПРОЕКТ АСУ ПРЕДПРИЯТИЯ
- 8.13. ОБЗОР ОСОБЕННОСТЕЙ ПРОЕКТОВ ПРИКЛАДНЫХ СИСТЕМ
- 8.14. ГИБРИДНЫЕ ТЕХНОЛОГИИ ПРОЕКТИРОВАНИЯ
- 8.2. Языки программирования Виды программирований
- 1.1. Введение в объектно-ориентированное программирование
- 2.5. Разработка технического задания на проведение детального анализа рынка при работе над инновационным проектом. Основ...
- 9.1. Проблема синтаксического анализа
- 2.12.2. Анализ усилительных каскадов в области малых времен
- Язык программирования Python
- Глава 5. Разработка и анализ бизнес-планов в системе Project Expert
- 4.4.3.3. План-фактный анализ продаж
- Кросс-категориальный анализ
- Приложение Глава 33. ABC-анализ
- Анализ CIL-кода
- Анализ роста продаж в связи с промоакциями