Програмні платформи інфокомунікацій

Спеціальність: Телекомунікації та радіотехніка
Код дисципліни: 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.