
- •1 Розробка плану проекту
- •1.1 Аналіз та постановка задачі
- •1.2 Обґрунтування вибору моделі життєвого циклу для реалізації проекту
- •1.2.1 Каскадна модель.
- •1.2.2 Ітераційна модель.
- •1.2.3 Спіральна модель.
- •1.3 Обґрунтування вибору мови програмування та case-засобів
- •1.4 Розробка графіка виконання робіт по проекту у контексті обраної моделі життєвого циклу
- •1.5 Аналіз ризиків проекту та управління ними
- •1.6 Системна специфікація вимог до розроблюваного проекту
- •1.6.1 Розробка користувальницьких (функційних) вимог
- •1.6.2 Нефункційні вимоги до програмного забезпечення
- •2 Вибір та аналіз існуючих алгоритмів побудови шляху на карті
- •2.1 Точні алгоритми
- •2.1.1 Пошук в ширину на незваженому графі.
- •2.1.2 Алгоритм Флойда-Уоршелла
- •2.1.3 Алгоритм Дейкстри
- •2.2 Евристичні алгоритми
- •2.2.1 Алгоритм a*
- •2.2.2 Алгоритм d* Lite
- •3 Розробка архітектури програмного забезпечення
- •3.1.1 Діаграма варіантів використання
- •3.1.2 Діаграма класів
- •3.1.3 Діаграма станів
- •3.1.4 Діаграма діяльності
- •3.2 Блок-схеми алгоритмічної частини програмного забезпечення
- •4 Кодування і тестування пз
- •4.1 Особливості реалізації програмного забезпечення
- •4.2 Допоміжні засоби для реалізації програмного забезпечення
- •4.3 Тестування пз
- •4.4 Представлення результатів тестування пз (у хронологічному порядку, які помилки були виявлені і виправлені)
- •4.5 Представлення результатів, що демонструють функціональність розробленого пз
- •4.6 Основні функції розробленого програмного забезпечення
- •5 Надійність програмного забезпечення
- •5.1 Поняття надійності програмного забезпечення
- •5.2 Класифікація моделей надійності програмного забезпечення
- •5.3 Розрахункова частина
- •6 Економічний розділ
- •6.1 Обґрунтування доцільності створення локальної мережі
- •6.2 Кошторис на розробку програмного продукту
- •6.2.1 Основна заробітна плата розробників (дослідників):
- •6.2.2 Амортизація обладнання, комп'ютерів та приміщень, які використовувались для розробки нового технічного рішення.
- •6.2.3 Оренда обладнання, устаткування, приміщень, які були використані в ході здійснення розробки нового технічного рішення.
- •6.2.4 Витрати на комплектуючі к, що були використані на розробку нового технічного рішення, розраховуються за формулою:
- •7.2 Забезпечення електробезпеки при експлуатації комп’ютерної техніки
- •7.3 Розрахунок загального штучного рівномірного освітлення приміщення люмінесцентними лампами методом коефіцієнта використання світлового потоку
- •Висновки
- •Перелік посилань
1.3 Обґрунтування вибору мови програмування та case-засобів
Для реалізації програмного забезпечення, що представлене в даній роботі, було використано середовище програмування Microsoft Visual Studio 2010 та мову програмування C++.
C++ - суворо типізована мова програмування загального призначення. Підтримує різні парадигми програмування: процедурну, узагальнену, функціональну, об'єктно-орієнтовану.
У порівнянні з його попередником - мовою C, - найбільшу увагу приділено підтримці об'єктно-орієнтованого та узагальненого програмування.
Назва «C++» походить від назви мови C, в якому унарний оператор ++ позначає інкремент змінної.
Являючись одною з найбільш популярних мов програмування, C++ широко використовується для розробки програмного забезпечення. Область його застосування включає створення операційних систем, різноманітних прикладних програм, драйверів пристроїв, додатків для вбудованих систем, високопродуктивних серверів, а також розважальних додатків (ігор).
Загальні принципи мови програмування C++ [4]:
отримати універсальну мову зі статичними типами даних, ефективністю і підтримкою мови C;
безпосередньо і всебічно підтримувати безліч стилів програмування, в тому числі процедурне програмування, абстракцію даних, об'єктно-орієнтоване програмування та узагальнене програмування;
надати програмісту свободу вибору, навіть якщо це дасть йому можливість вибирати неправильно;
максимально зберегти сумісність з C, тим самим роблячи можливим легкий перехід від програмування на C;
уникнути різночитань між C і C++: будь-яка конструкція, допустима в обох мовах, має у кожному з них позначати одне й те ж і приводити до однієї і тієї ж поведінки програми;
уникати особливостей, які залежать від платформи або не є універсальними;
ніякий мовний засіб не повинен призводити до зниження продуктивності програм, що не використовують його;
не вимагати занадто ускладненого середовища програмування.
В даний час, Microsoft Visual Studio є одним з найпотужніших середовищ розробки на мові програмування C++, що дозволяє легко працювати над написанням та відлагодженням програмного забезпечення на цій мові програмування.
Microsoft Visual Studio - лінійка продуктів компанії Майкрософт, що включає інтегроване середовище розробки програмного забезпечення і ряд інших інструментальних засобів. Дані продукти дозволяють розробляти як консольні додатки, так і додатки з графічним інтерфейсом, в тому числі з підтримкою технології Windows Forms, а також веб-сайти, веб-додатки, веб-служби.
Visual Studio включає в себе редактор вихідного коду з підтримкою технології IntelliSense [5] і можливістю найпростішого рефакторінгу коду. Вбудований зневаджувач може працювати як зневаджувач рівня вихідного коду, так і як зневаджувач машинного рівня. Решта вбудованих інструментів включають в себе редактор форм для спрощення створення графічного інтерфейсу додатку, веб-редактор, дизайнер класів і дизайнер схеми бази даних. Visual Studio дозволяє створювати і підключати сторонні додатки (плагіни) для розширення функціональності практично на кожному рівні, включаючи додавання підтримки систем контролю версій вихідного коду (як наприклад, Subversion і Visual SourceSafe), додавання нових наборів інструментів (наприклад, для редагування і візуального проектування коду на предметно-орієнтованих мовах програмування або інструментів для інших аспектів процесу розробки програмного забезпечення).
Основним засобом для тестування створеного програмного забезпечення в даному проекті являється Cppcheck - статичний аналізатор коду для мов програмування C і C++. Це універсальний інструмент, який перевіряє програмний код на відповідність стандарту мови програмування.
Cppcheck підтримує широкий спектр статичних перевірок, які не можуть бути проведені самим компілятором. Програма спрямована на проведення статичного аналізу, який перевіряє код з більш суворими, у порівняні з компілятором критеріями.
Основні перевірки коду, які проводяться даною програмою:
автоматична перевірка змінних;
перевірка на вихід за межі масиву;
перевірка класів (наприклад, невикористовуванні методи, відсутність ініціалізації атрибутів і дублювання пам'яті);
перевірка безпеки: використання розподілу пам'яті, перевірка використання деструкторів, тощо;
перевірка на витік пам'яті (наприклад, відсутність операторів delete для динамічно виділеної пам'яті);
перевірка на витік ресурсів (наприклад, через відсутність операторів закриття відкритого файлу);
перевірка на правильність використання функцій стандартної бібліотеки шаблонів;
перевірка на стилістичні помилки і помилки продуктивності.
Як і багато програми аналізу, існує безліч незвичайних ідіом програмування, які можуть бути прийнятні в окремих випадках коректними для досягнення поставленої цілі, тому кожну знайдену помилку необхідно обробляти та виносити рішення окремо.