Способи визначення використання шаблонів проектування у вихідному коді програм на основі деревовидних структур даних
Рефакторинг – процес зміни програмної системи, за якої не змінюється зовнішня поведінка коду але покращується його внутрішня структура. Діаграма класів — метод статичного представлення структури моделі. Особливості застосування шаблону проектування.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | украинский |
Дата добавления | 19.11.2020 |
Размер файла | 530,6 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Для перевірки створено декілька тестових випадків з наявністю або відсутністю ключових слів для успадкування або розширення певного класу іншим класом та інтерфейсом відповідно.
• відсутність ключових слів extends та implements. На вхід функції передається вершина абстрактного синтаксичного дерева, що відповідає правилу classDeclaration з відсутніми ключовими словами. На виході отримуємо список словників, з пустими списками яв якості значень, що відповідає відсутності зв'язку узагальнення або реалізації для цього класу з іншими класами.
• Наявне ключове слово extends. Тестова функцій викликається двічі: з поданням вершини абстрактного синтаксичного дерева, що відповідає правилам classDeclaration або interfaceDeclartion. Для обох випадків результат очікується однаковим - список словників з відповідними значеннями ідентифікаторами класів або інтерфейсів.
• Наявне ключове слово implements. За створеною граматикою, такий випадок можливий лише для інтерфейсів, тому на вхід і подається вершина абстрактного синтаксичного дерева, що відповідає правилу interfaceDeclartion. Очікуваний результат є аналогічним до попереднього випадку.
• Наявне ключові слова extends та implements. Такий випадок можливий лише для оголошення класу, тому на вхід подається вершина абстрактного синтаксичного дерева, що відповідає правилу classDeclaration. Очікуваний результат залежить від параметру, який передається до викликаної функції. Програміст явно вказує для якого ключового слова хоче отримати список ідентифікаторів.
Для типу зв'язку реалізації створено декілька тест-функцій. За граматикою мови Java даний зв'язок можливий лише для інтерфейсів, тому тестові випадки перевіряються лише для оголошення інтерфейсів. Вони створені для перевірки коректності роботи з відсутністю та наявністю ключового слова implements. Назва тестової функції - test-impl-match-decl.
* наявне слово implements. На вхід подається вершина абстрактного синтаксичного дерева, що відповідає правилу оголошення класу. На виході повинні отримати список словників, які представляють вершини майбутнього графа з ключем у вигляді структури даних з ім'ям вершини та її типом (інтерфейс), а значення - список вершин, які з'єднані з цією вершиною.
* Негативні дані: на вхід подається абстрактне синтаксичне дерево з відсутнім правилом classDecalartion. На виході повинні отримати список словників зі значеннями у вигляді пустих списків.
Для типу зв'язку залежності основною функцією для тестування є test- get-dependency-node. Вона перевіряє коректність роботи виявлення у вершинах абстрактного синтаксичного дерево, які відповідають правилам classDeclaration та interfaceDeclaration зв'язку залежності з іншими користувацькими типами даних. Для перевірки наявності зв'язку необхідно перевіряти усі оголошення локальних змінних в тілі методів, атрибутів та формальних параметрів, що зазначені в сигнатурах методів, тому для кожного випадку створено власний тест-кейс.
Для перевірки встановлення залежності через використання локальних змінних створено два тестових випадки:
* оголошення локальних змінних із користувацьким типом даних. На вхід подається вершина абстрактного синтаксичного дерева, що відповідає правилу methodDeclaration. Зв'язок залежності повинен з'явитися між класом, в якому оголошено метод з локальною змінною та класом або інтерфейсом, який використовує змінна. На виході отримано список вершин майбутнього графа, які структуру словника.
* Оголошення локальних змінних із вбудованим типом даних. На вхід подається аналогічна вершина абстрактного синтаксичного дерева, всередині якого присутні оголошення змінних лише з вбудованими типами даних. На виході отримано список словників, з пустими списками в якості значень словників.
Тест-кейси для тестування коректності виявлення зв'язків у сигнатурах методів та атрибутах класів мають аналогічні випадки: з використанням користувацьких типів даних та з оголошенням параметрів, які мають вбудовані типи даних.
Модуль пошуку відповідності між графами покритий тестами для того, щоб показати представлені можливості. Покрито тестами функції для розбиття дерева на яруси, пошуку відповідності між ярусами двох дерев, поєднання результатів побудови для ярусів. Також покрито тестами композицію вище перерахованих функцій, тобто створено інтеграційний тест для перевірки коректності роботи модуля в цілому.
Висновки
В результаті виконання даної роботи був запропонований модифікований спосіб повного перебору для рішення задачі розпізнавання ізоморфних графів, а також була реалізована система для розпізнавання використання породжувальних шаблонів проектування у вихідному коді мови програмування Java, що працює на основі цього способу. Задача виявлення шаблонів проектування у вихідному коді представлена процесом визначення ізоморфних дерев. Вхідні деревоподібні структури даних, між якими визначалась подібність у якості вершин мають класи або інтерфейси, що представлені у вихідному коді та шаблонах проектування, а у якості ребер використано зв'язки діаграми класів.
У вступі подано загальну характеристику роботи, зроблено оцінку сучасного стану проблеми, обґрунтовано актуальність напрямку досліджень, сформульовано мету і задачі досліджень, показано наукову новизну отриманих результатів і практичну цінність роботи.
У першому розділі розглянуто існуючі системи для визначення використання шаблонів проектування у програмах, їхні особливості, недоліки та переваги, розглянуто різні реалізації.
У другому розділі наведено особливості реалізації розробленої системи.
Література
1. “GoF”. Design Patterns: Elements of Reusable Object-Oriented Software [text] / The "Gang of Four": Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides -- Addison-Wesley, 1994 -- p. 164.
2. J.R. Ullmann, An Algorithm for Subgraph Isomorphism -- National Physical Laboratory, England, 1976/
3. Joshua Kerievsky. Refactoring to pattern / J. Kerievsky - Addison-Wesley, 2004 - 134 p.
4. Kumar Rajnish, Arbind Kumar Choudhary, Anand Mohan Agrawal. Inheritan cemetrics for object-oriented design -- International Journal of Computer Science & Information Technology (IJCSIT), Vol 2, No 6, 2010
5. Reverse Engineering of Design Patterns from Java Source Code // Nija Shi. Doctoral dissertation. University of California, Davis. August 2007.
6. Ron Shamir, Dekel Tsur Faster. Faster Subtree Isomorphism -- Theory of 80 Computing and Systems, 1997 -- Proceedings of the Fifth Israeli Symposium.
7. S. V. N. Vishwanathan. Kernel Methods: Fast Algorithms and Real Life Applications. -- Ph D thesis, Indian Institute of Science, Bangalore, India, November 2002.
8. Алан Шаллоуей, Джеймс Р. Тротт. Шаблоны проектирования. Новый подход к объектно-ориентированному анализу и проектированию -- Пер. с англ. Design Patterns Explained: A New Perspective on Object Oriented Design. -- Вильямс, 2002. -- 288 с.
9. ВлиссидесДж. Применение шаблонов проектирования. Дополнительные штрихи. - М.: Издательский дом "Вильямс", 2003. - 144с.
10. Г. Майерс. Искусство тестирования программ / Гленфорд Майерс, Том Баджетт, Кори Сандлер, 3-е издание -- М.: «Диалектика», 2012 -- 272 с.
11. Джошуа Кериевски Рефакторинг с использованием шаблонов (паттерновпроектирования) - М.: «Вильямс», 2006. - 400 с.
12. Зыков, А. А. Основы теории графов -- Наука, ГРФМЛ, 1987 -- 384 с.
13. КрэгЛарман Применение UML 2.0 и шаблонов проектирования. - М.: «Вильямс», 2006. - 736 с.
14. Леоненков Александр. Самоучитель UML -- БХВ-Петербург, 2007 -- 237 с.
15. Марк Гранд Шаблоны проектирования в JAVA. Каталог популярных шаблонов проектирования, проиллюстрированных при помощи UML - М.: «Новоезнание», 2004. - 560 с.
16. Мартин Фаулер. Шаблоны корпоративных приложений. - М.: «Вильямс», 2009. - 544 с.
17. Марченко О.І., Лиман Д.М. Модифікований спосіб повного перебору для визначення відповідності дерев. Комп'ютерно-інтегровані технології: освіта, наука, виробництво. - 2017. - № 28-29. - с.72-76.
18. Скотт В. Эмблер, Прамодкумар Дж. Садаладж Рефакторинг баз данных: эволюционное проектирование - М.: «Вильямс», 2007. - 368 с.
19. Скотт В. Эмблер. Рефакторинг баз данных: эволюционное проектирование / Скотт В. Эмблер, Прамодкумар Дж. Садаладж. -- «Вильямс», 2007. -- 368 с.
20. Фаулер М. Рефакторинг: улучшение существующего кода. -- Пер. з англ. -- Символ-Плюс, 2003. -- 432 с
21. Шаблон проектирования. [Электронный ресурс] - Режим доступа: http://ru.wikipedia.org/wiki.
22. Э. Гамма, Р. Хелм, Р. Джонсон, Дж. Влиссидес. Приемыо бъектно-ориентированного проектирования. Паттерны проектирования. - СПб: «Питер», 2007. - 366 с.
23. Юрий Карпов. Теория и технология программирования. Основы построения трансляторов -- ВНУ, 2005 -- 137 с.
Размещено на Allbest.ru
...Подобные документы
Бізнес процеси й елементи даних. Специфікація елементів даних. Діаграма класів проектування. Створення та використання об'єктів бази даних. Таблиці, обмеження цілісності, тригери, типові вибірки, представлення, індекси. Типові оператори модифікації даних.
курсовая работа [255,3 K], добавлен 01.06.2019Вивчення існуючих систем по виявленню плагіату. Алгоритм створення системи для виявлення плагіату, в базі якої будуть зберігатися всі лабораторні роботи студентів. Проектування програми: побудова uml-діаграм, видалення коментарів в коді, опис архітектури.
дипломная работа [4,1 M], добавлен 09.06.2012Розробка моделі системи "Автомобільного магазину". Вивчення основи мови моделювання UML. Створення її для визначення, візуалізації, проектування й документування програмних систем. Використання діаграм кооперацій, послідовності, станів та класів.
курсовая работа [257,8 K], добавлен 10.12.2014Аналіз відомих підходів до проектування баз даних. Ієрархічна, мережева та реляційна моделі представлення даних, їх особливості. Концептуальне проектування: приклад документів, побудова ER-діаграми, модель "сутність-зв'язок". Побудова фізичної моделі.
курсовая работа [541,5 K], добавлен 29.01.2013Аналіз відомих підходів до проектування баз даних. Моделі "сутність-зв'язок". Ієрархічна, мережева та реляційна моделі представлення даних. Організація обмежень посилальної цілісності. Нормалізація відносин. Властивості колонок таблиць фізичної моделі.
курсовая работа [417,6 K], добавлен 01.02.2013Аналіз предметної галузі, постановка задачі, проектування бази даних. UML-моделювання, побудова ER-діаграми, схеми реляційної бази даних у третій нормальній формі. Призначення і логічна структура. Опис фізичної моделі бази даних, програмної реалізації.
курсовая работа [3,5 M], добавлен 28.11.2011Характеристика функціональної структури предметної області програмного комплексу. Розробка архітектури програмної системи. Вибір типу архітектури й зразків проектування. Опис декомпозиції, залежностей та інтерфейсу. Детальне проектування модулів та даних.
курсовая работа [462,2 K], добавлен 19.12.2013Процес проектування даних, логічне моделювання і фізичне проектування. Діаграма "сутність-зв'язок" (Entity-Relationship). DDL-скрипт для створення бази даних. Логічна модель та опис, типи ключів. Фізична модель та спосіб розміщення даних на носіях.
контрольная работа [490,4 K], добавлен 25.04.2013Використання комп'ютерного моделювання. Особливості проектування моделі автоматичної системи управління технологічним процесом. Визначення кількості пропущених через відмову даних та часу знаходження системи в загальмованому стані. Опис алгоритму моделі.
контрольная работа [501,7 K], добавлен 13.01.2014Опис вхідних та вихідних повідомлень, процедури перетворення даних. Розробка інфологічної моделі, інформаційні об’єкти та їх характеристика. Автоматизація даталогічного проектування. Опис структур таблиць бази даних на фізичному рівні, реалізація запитів.
курсовая работа [2,5 M], добавлен 02.01.2014Структури даних як способи їх організації в комп'ютерах. Підтримка базових структури даних в програмуванні. Дерево як одна з найпоширеніших структур даних. Бінарні дерева на базі масиву. Створення списку - набору елементів, розташованих у певному порядку.
контрольная работа [614,7 K], добавлен 18.02.2011Проектування інформаційної системи; концептуальне (інфологічне) проектування, побудова ER-діаграми, нормалізація даних. Даталогічне проектування баз даних, фізичне проектування інформаційних систем. СУБД Access: об'єкти, створення таблиць, запитів, форм.
курсовая работа [13,9 M], добавлен 09.01.2010Створення діаграм: варіантів використання, взаємодії, класів, станів та компонентів. Генерування коду на основі створених діаграм за допомогою StarUML на об'єктно-орієнтовній мові програмування Java. Головне вікно програми "Цифровий диктофон", лістинг.
отчет по практике [1,9 M], добавлен 21.12.2015Етапи та принципи проектування інформаційно-технічної моделі системи, що сприяє активізації та ефективності керування структурного підрозділу вищого навчального закладу. Особливості використання методу поетапної деталізації, його зміст та значення.
статья [18,9 K], добавлен 18.05.2015Проектування інформаційної системи для супроводу баз даних. Моделі запиту даних співробітником автоінспекції та обробки запиту про машини та їх власників. База даних за допомогою SQL-сервер. Реалізація запитів, процедур, тригерів і представлення.
курсовая работа [1,7 M], добавлен 18.06.2012Опис та аналіз діаграм компонентів, послідовності, розгортання. Опис NoSQL бази даних. Архітектура програмної системи та обрані технології. Мова програмування Kotlin. Структури обміну даними. Патерн проектування MVP. Тестування мобільних пристроїв.
дипломная работа [8,6 M], добавлен 19.08.2016Автоматизовані інформаційні системи: поняття та внутрішня структура, розробка її інфологічної, даталогічної та програмувальної моделі. Застосування мови UML до проектування інформаційної системи. Етапи налагодження та тестування розробленої програми.
курсовая работа [1,4 M], добавлен 26.09.2015Проектування інтерфейсу користувача. Стилі взаємодії користувача з програмними системами. Стилі представлення інформації і доцільність графічного представлення даних. Правила проектування засобів підтримки користувача, вбудованих в програмне забезпечення.
доклад [1,2 M], добавлен 08.12.2008Характеристика "Турбо САП" - універсальної системи автоматизованого проектування керуючих програм для верстатів з ЧПК. Загальне призначення, програмне забезпечення, експлуатаційні можливості. Специфіка роботи з інтерактивною графічною оболонкою системи.
контрольная работа [12,0 K], добавлен 07.10.2009- Створення функціональної моделі системи у середовищі Microsoft Visio з використанням методології UML
Основні визначення та опис UML. Опис основних компонентів, використаних у Microsoft Visio. Створення діаграми класів в Microsoft Visio 2010. Використання побудованої моделі при модифікаціях системи. Структура системи, її класи, їх атрибути та оператори.
практическая работа [764,0 K], добавлен 07.05.2014