Програмні платформи інфокомунікацій
Спеціальність: Телекомунікації та радіотехніка
Код дисципліни: 6.172.00.M.072
Кількість кредитів: 6.00
Кафедра: Телекомунікації
Лектор: д.т.н., доц. Демидов І.В.
Семестр: 7 семестр
Форма навчання: денна
Результати навчання: В результаті вивчення дисципліни, фахівець повинен знати:
• особливості об’єктно-орієнтованого та функціонального програмування телекомунікаційних системних платформ (інфокомунікаційних систем);
• основні підходи до створення розподіленої сервісної архітектури;
• принципи Load Balancing - розпаралелювання навантаження, що зазнає оброблення інфокомунікаційною сервісною архітектурою;
• основи розроблення, налагодження та підтримки ефективних інфокомунікаційних програмних рішень на основі застосування мов паралельного програмування у складних розподілених інфокомунікаційних системних платформах;
• мови і алгоритми програмування; операційні систем та мережні технології; комп’ютерні методи збору, оброблення, аналізу, передавання та зберігання інформації; методи і засоби розподілених систем та паралельних обчислень;
• методи та засоби інформаційних технологій; технології та інструменти розроблення інформаційних систем у різних галузях економіки;
• математичні методи, комп’ютерні моделі, мови моделювання та програмні інструменти для виконання практичних завдань з даної спеціальності;
• інформаційні технології для розв’язування завдань класифікації, розроблення, розгортання та експлуатації різноманітних інформаційних систем і їх складових.
Підготовлений фахівець повинен вміти:
• обирати найбільш ефективну програмну платформу для реалізації необхідного інфокомунікаційного рішення за критеріями ефективності/надійності;
• застосовувати навички паралельного програмування розподілених інфокомунікаційних платформ (Erlang);
• створювати розподілені клієнт-серверні рішення інфокомунікаційного призначення;
• інтегрувати неоднорідні технології системного програмування в єдиній інфокомунікаційній програмній платформі із застосуванням СУБД;
• формулювати нові задачі та ідеї в області інтелектуальних інформаційних технологій, вибирати належні напрями і відповідні методи для їхнього розв’язання;
• застосовувати методи та засоби сучасних інформаційних технологій для проектування, розроблення та розгортання прикладних інформаційних систем в різних галузях;
• застосовувати методи та засоби сучасних інформаційних технологій для моделювання, проектування та розроблення комунікаційних систем, Web-орієнтованих систем, смарт систем, сенсорних систем, вбудованих систем, мікро- /нано- систем та їх аналогів;
• розгортати, адмініструвати та супроводжувати інформаційні системи на основі мережних технологій та вміння розробляти технічну документацію;
• розробляти функціональні середовища з застосуванням відкритих систем, інтерфейсів прикладного програмування, прикладних програм і додатків з властивостями: розширюваності, масштабованості, інтероперабельності, інтегрованості та надійності.
Необхідні обов'язкові попередні та супутні навчальні дисципліни: Попередні навчальні дисципліни:
Інформатика (за професійним спрямуванням);
Об’єктно-орієнтоване програмування.
Супутні і наступні навчальні дисципліни:
Операційні системи.
Короткий зміст навчальної програми: Системне програмування в контексті технологій програмування інфокомунікаційних систем і платформ — це вид програмування, який полягає у розробленні програм, які взаємодіють із системним програмним забезпеченням (операційною системою, мережною платформою, а особливо – із розгорнутою на них програмною платформою), або апаратним забезпеченням сервісної мережної системи. В цілому, даний курс присвячений технологічним проблемам розробки великомасштабних програмних систем і методів розв'язання цих проблем. У ньому розповідається про сучасні способи організації розробки таких систем на основі компонентних технологій на прикладі Web-додатків з використанням технологій Java і .NET, а також дається уведення в ці технології. Слухачі отримають уявлення про методи розроблення складного програмного забезпечення, про використання сучасних підходів до промислової розробки програм і про способи побудови якісних і гнучких програм в умовах жорстких обмежень на проекти розробки. Читачі також познайомляться з елементами технологій створення розподілених додатків на програмних платформах J2EE і .NET. Головною відмінністю системного програмування розподілених ІК-платформ, у порівнянні з прикладним програмуванням, є те, що прикладне програмне забезпечення призначене для кінцевих користувачів (наприклад, текстові процесори, графічні редактори), тоді як результатом системного програмування є програми, які обслуговують апаратне забезпечення масштабованих мережних платформ або операційну систему (наприклад, клієнт-серверні інтерфейси). Слід зазначити, що «звичайні» прикладні програми можуть використовувати у своїй роботі фрагменти коду, характерні для системних програм, і навпаки; тому чіткої межі між прикладним та системним програмуванням немає. Сучасні розподілені інфокомунікаційні мережі — це набір незалежних комп'ютерів із програмним забезпеченням на основі деяких програмних платформ, які представляється їх користувачам єдиною об'єднаною системою. У цьому визначенні обумовлюються два моменти. Перший відноситься до апаратури: всі машини автономні, але об’єднані деякою наскрізною мережею – мережною (інфокомунікаційнною) платформою. Другий стосується програмного забезпечення: користувачі думають, що мають справу з єдиною системою (сервісною мережною системою на основі деякої програмної платформи або їх сукупності).
Кожну окрему парадигму системного програмування характеризує наявність у ній методів програмування та зв'язок із моделлю життєвого циклу програмного забезечення. Спільним для різних парадигм і технології програмування є загальні принципи проектування програмного продукту – програмної інженерії. Можна вибирати ту або іншу парадигму програмування з позицій зручності застосування для завдань та розроблення конкретного програмного продукту в галузі розподілених інформаційно-комунікаційних систем та мереж.
Сучасна функціональна парадигма (відсутність присвоювання) дозволяє типовому представнику мов системного програмування в інфокомунікаціях - Erlang уникнути таких традиційних для імперативних мов проблем розподілених додатків, як необхідності синхронізації, небезпеки виникнення тупиків і перегонів, складності розв’язання задач асинхронного обміну повідомленнями, розпаралелювання обчислень, створення зручних низькорівневих конструкцій (на кшталт декодування IP пакету) тощо. Однією з сильних сторін мови Erlang є поєднання багатопоточності і розподіленого програмування. Можливо надсилати повідомлення в процес на локальній чи на віддаленій віртуальній машині, використовуючи однакову семантику («незалежність від місцезнаходження», або location transparency). Крім того, створення процесів і їх зв’язування/моніторинг працює бездоганно між усіма вузлами. Це дозволяє уникнути труднощів при побудові розподіленого і відмовостійкого застосування.
Erlang, як основа лабораторного практикуму цього курсу, обраний невипадково: на відміну від багатьох академічних мов – це жива індустріальна мова, додатки на якій працюють в найскладніших комерційних системах. І хоча на поточний момент сфера застосування Erlang обмежена в основному інфокомунікаційними продуктами і системами реального часу, на офіційному сайті проекту про нього йдеться, як про універсальну мову програмування, придатну для вирішення різних прикладних задач.
Методи та критерії оцінювання: Під час навчання студенти виконують лабораторний практикум, що містить десятки різноманітних практично-орієнтованих завдань, розв’язання яких вимагає вагомої теоретичної підготовки відповідно до цієї програми. Оцінювання результатів виконання лабораторних робіт передбачене в якості основної форми поточного контролю. Передбачене також бліц-тестування на лекційних та лабораторних заняттях. Оцінювання результатів виконання індивідуального науково-дослідного завдання шляхом їх захисту дозволяє мотивувати студентів з метою більш якісного навчання та отримання додаткових балів. Семестровий екзаменаційний контроль проводиться в письмовій формі на основі розробленого комплекту екзаменаційних білетів, який затверджується на відповідному засіданні кафедри.
Рекомендована література: 1. Лабораторний практикум. Методичні вказівки до лабораторних робіт № 1-12 з курсу “ Системне програмування інфокомунікацій ” для студентів спеціальності 8.05090301 “Інформаційні мережі зв’язку”. - Львів, 2015. - 85 с.
2. Томпсон С., Чезарини Ф. Программирование в Erlang / Пер. с англ. Холомьёва А. О. - М.: ДМК Пресс, 2012. - 488 с.: ил. (Серия "Функциональное программирование").
3. Armstrong J. Programming Erlang. Software for a Concurrent World. Dallas, TX: The Pragmatic Bookshelf, 2007. – 519 pp.: illustrated.
4. Фримен А. Pro .NET 4 Parallel Programming in C#. М.: Apress, 2010. – 328 c.: ил.
5. Neward T. Server-Based Java Programming. Grinwich: Manning, 2013. – 556 pp.
6. В.В. Кулямин. Технологии программирования. Компонентный подход. М.: Бином, 2014. – 464 с.
7. И. Соммервилл. Инженерия программного обеспечения. М.: Вильямс, 2002.
8. Г. Буч. Объектно-ориентированный анализ и проектирование с примерами приложений на C++. Второе издание. М.: Бином, СПб.: Невский диалект, 2000.
9. У. Ройс. Управление проектами по созданию программного обеспечения. М.: Лори, 2002.
10. А. Якобсон, Г. Буч, Дж. Рамбо. Унифицированный процесс разработки программного обеспечения. СПб.: Питер, 2002.
11. К. Бек. Экстремальное программирование. СПб.: Питер, 2002.