1 Загальні вимоги
Під час виконання курсової роботи необхідно спроєктувати й реалізувати прикладну програму графічного інтерфейсу користувача, яка дозволяє розв'язати певну задачу обробки даних. Програма повинна бути створена за допомогою універсальної об'єктно-орієнтованої мови програмування. Необхідно реалізувати введення даних з XML-файлу, редагування та збереження даних в іншому XML-файлі, а також генерацію звіту про результати роботи програми у вигляді HTML- або PDF-файлу.
Примітка. замість файлів XML можна використовувати файли JSON.
Програма повинна бути реалізована як застосунок графічного інтерфейсу користувача (GUI-застосунок). Повинна бути здійснена графічна інтерпретація розв'язання задачі.
Створенню GUI-застосунку повинна передувати розробка консольного застосунку, в якому здійснюється демонстрація всіх реалізованих функцій окрім графічної інтерпретації.
Реалізація програми повинна здійснюватись з використанням об'єктно-орієнтованих технологій. Обов'язковим є застосування поліморфізму. Для підвищення надійності програми треба використовувати механізм обробки винятків. Для перевірки роботи класів, які відповідають за зберігання та обробку даних, слід реалізувати окремий консольний застосунок. Під час проєктування класів слід дотримуватись принципів об'єктно-орієнтованого проєктування та застосувати патерни проєктування.
Виконання обох програм (GUI-застосунку та консольного застосунку) повинне базуватися на використанні спільної бібліотеки класів.
Керівник курсової роботи видає завдання, проводить консультації, здійснює контроль за виконанням календарного плану, приймає рішення про допущення студента до демонстрації програмного продукту і захисту курсової роботи.
2 Порядок виконання курсової роботи
2.1 Вивчення поставленої задачі та дослідження програмних технологій, необхідних для її розв'язання
Основна задача цього етапу – отримання та аналіз завдання на курсову роботу, вивчення математичних методів розв'язання задачі. Крім того, для подальшого проєктування необхідно опанувати засоби Уніфікованої мови моделювання (UML).
Примітка: для кращого розуміння математичних методів доцільно створити невеличкі консольні застосунки, які здійснюють реалізацію окремих алгоритмів; цей код може бути використаний у подальшій розробці програмного забезпечення.
2.2 Визначення вимог до програмного забезпечення. Аналіз і проєктування
Відповідно до нотації UML, вимоги до програмного забезпечення відображаються на діаграмі варіантів використання. При цьому необхідно виділити основні варіанти, варіанти включені в них та ті, які їх розширяють.
На цьому етапі необхідно здійснити вивчення математичних методів розв'язання задачі.
Для виявлення основних сутностей предметної області необхідно розробити діаграму класів з концептуальної точки зору. Для з'ясування взаємодії об'єктів доцільно розробити діаграми послідовності для різних варіантів використання.
Проєктуються класи програмного забезпечення, визначається взаємодія об'єктів та алгоритми реалізації окремих операцій. Здійснюється розробка структури й складу пакетів (модулів), що забезпечують реалізацію програми. Структура класів та пакетів (модулів) повинна відповідати вимогам патерну проєктування Model-view-controller (MVC): слід створити такі незалежні частини, як модель (model, класи, які відповідають за обробку даних предметної області незалежно від засобів взаємодії з користувачем), зовнішній вигляд (view, засоби взаємодії з користувачем, які включають вікна і візуальні компоненти графічного інтерфейсу користувача) і контролер (controller, зазвичай окремий клас, який відповідає за взаємодію засобів графічного інтерфейсу користувача з класами моделі). Доцільно також застосувати інші патерни проєктування.
До початку реалізації програмного забезпечення необхідно визначити формат вихідних даних. Оскільки однією з вимог до програмного забезпечення є представлення вихідних даних в XML-форматі (або форматі JSON). Слід також спроєктувати набори даних для перевірки правильності роботи програми та підготувати їх у вигляді вихідних XML-файлів (JSON-файлів). Найпростіші варіанти слід перевірити вручну, а також вручну здійснити графічну інтерпретацію.
2.3 Реалізація та тестування розрахункової частини програмного забезпечення
Відповідно до раніше спроєктованої діаграми створюються класи, які забезпечують подання необхідних математичних функцій та математичних методів розв'язання задачі. Необхідно передбачити механізми незалежного тестування окремих класів.
Під час реалізації класів, які відповідають за розрахункову частину проєкту, може виникнути необхідність внесення змін до діаграм, які були спроєктовані раніше, зокрема діаграми класів.
Реалізація розрахункової частини програмного забезпечення завершується створенням консольного застосунку для перевірки працездатності всіх функцій, які можна виконати без графічних засобів. Слід продемонструвати роботу програми на різних наборах вихідних даних, які передбачають як загальну поведінку, так і специфічні випадки.
Робота консольного застосунку, окрім реалізації безпосередньої обробки даних, включає читання даних з XML-документа (JSON-файлу) та запис в XML-документ (JSON-файл), а також генерацію звіту в HTML або PDF форматі.
2.4 Реалізація застосунку графічного інтерфейсу користувача
На цьому етапі здійснюється проєктування графічного інтерфейсу користувача. Для проєктування графічного інтерфейсу доцільно використати програмні засоби візуального проєктування. Головне вікно програми повинно містити головне меню, таблиці та окремі рядки для введення та редагування даних, кнопки для виконання найбільш важливих функцій, а також елементи відображення результатів.
В окремій частині головного вікна (або в окремому вікні) здійснюється реалізація графічної інтерпретації розв'язання задачі.
Налагодження модулів, що реалізують інтерфейс користувача, може здійснюватись автономно. У місцях звернення до алгоритмів обробки даних тимчасово можуть бути розміщені так звані "заглушки" (stubs).
Цей етап завершується збиранням усіх модулів у єдиний проєкт для його подальшого тестування.
Примітка: для реалізації GUI-застосунку мовою C# використання бібліотеки Windows.Forms є небажаним; слід віддати перевагу більш сучасним засобам, таким як WPF.
2.5 Тестування
Тестування програми як єдиного цілого полягає в підборі кількох (не менш шести) варіантів наборів вихідних даних, що відбивають загальний і часткові випадки розв'язання задачі, різні варіанти розмірності, різні діапазони чисел (або інших даних). Варіанти тестування ще до початку реалізації готуються в окремих файлах.
Негативні результати тестування обумовлюють повторне виконання одного чи кількох етапів розробки.
2.6 Підготовка пояснювальної записки та презентації
На цьому етапі здійснюється підготовка пояснювальної записки та презентації. Для підготовки презентації можна застосувати засоби Microsoft Office PowerPoint або OpenOffice.org Impress. Можна також створити послідовність HTML-сторінок. Презентація повинна відображати такі аспекти роботи:
- тема роботи, виконавець;
- постановка задачі;
- діаграми UML (варіантів використання, класів тощо);
- екранні форми:
- дані, на яких здійснювалося тестування;
- висновки.
Загалом 6-8 слайдів.
3 Порядок захисту курсової роботи
Не менш ніж за тиждень до остаточного захисту роботи студент демонструє керівникові розроблений програмнмй продукт. Керівник оцінює якість програми, рівень відповідності поставленому завданню та ступінь самостійності виконання роботи. У випадку одержання позитивних результатів студент розпочинає оформлення пояснювальної записки. У випадку одержання незадовільної оцінки призначається додатковий час демонстрації програмного продукту перед розширеною комісією.
До остаточного захисту курсової роботи студент надає:
- пояснювальну записку до курсової роботи;
- презентацію роботи;
- розроблене програмне забезпечення.
Під час захисту курсової роботи студент повинен доповісти постановку задачі, основні етапи проєктування програмного забезпечення та основні результати, отримані в ході роботи над проєктом, продемонструвати роботу програмного продукту та результати його тестування. Доповідь не повинна тривати понад 5 хвилин. У відповідях на запитання студент повинен продемонструвати знання основ інформатики, програмування і проєктування програмного забезпечення, зокрема об'єктно-орієнтованого програмування, математичних методів і інструментальних засобів, які були використані під час виконання курсової роботи. Незалежно від ступеня використання в проєкті, студент повинен продемонструвати знання теоретичного матеріалу у відповіді на контрольні запитання.
У випадку одержання незадовільної оцінки курсова робота повинна бути повторно захищена, або цілком виконана заново, залежно від рішення керівника.
У випадку захисту курсової роботи після завершення семестру і при відсутності документованих поважних причин відставання підсумкова оцінка виставляється зі зниженням.