Інженерія програмного забезпечення

Спеціальність: Комп'ютерна інженерія
Код дисципліни: 6.123.00.O.031
Кількість кредитів: 5.00
Кафедра: Електронні обчислювальні машини
Лектор: асистент,к.ф.-м.н. Пуйда Дмитро Володимирович
Семестр: 5 семестр
Форма навчання: денна
Мета вивчення дисципліни: Предмет "Інженерія програмного забезпечення" має на меті: 1. Ознайомити студентів з популярними методологіями розробки програмного забезпечення (Scrum, Kanban, Waterfall). 2. Ознайомити студентів з сучасними стандартами написання коду програмного забезпечення. 3. Ознайомити студентів з популярними інструментами, які використовуються при розробці програмного забезпечення (системи контролю версій, системи статичного аналізу коду, системами генерування документації, тощо). 4. Ознайомити студентів з сучасними підходами до тестування програмного забезпечення.
Завдання: Загальні компетентності 1.Базові знання фундаментальних наук, в обсязі, необхідному для освоєння загально-професійних дисциплін. 2.Базові знання в галузі комп’ютерної інженерії (комп’ютерної логіки, теорії програмування, електротехніки) необхідні для освоєння професійно-орієнтованих дисциплін. 3.Здатність до аналізу та синтезу. 4.Здатність до застосування знань на практиці. 5.Здатність здійснювати пошук та аналізувати інформацію з різних джерел. 6.Мати дослідницькі навички. 7.Мати навички розроблення та управління проектами. 8.Здатність розв’язувати поставлені задачі та приймати відповідні рішення. 9.Здатність до письмової та усної комунікації українською мовою. 10.Знання іншої мови(мов). 11.Здатність працювати як індивідуально, так і в команді. 12.Здатність ефективно спілкуватися на професійному та соціальному рівнях. 13.Креативність, здатність до системного мислення. 14.Потенціал до подальшого навчання. 15.Відповідальність за якість виконуваної роботи. Фахові компетентності 1.Здатність застосовувати та інтегрувати знання і розуміння дисциплін інших інженерних галузей. 2.Здатність використовувати та впроваджувати нові технології, брати участь в модернізації та реконструкції комп’ютерних систем та мереж , зокрема з метою підвищення їх енергоефективності. 3.Здатність розуміти і враховувати соціальні, екологічні, етичні, економічні аспекти, що впливають на формування технічних рішень. 4.Здатність застосовувати професійно-профільовані знання й практичні навички для розв’язання типових задач спеціальності, а також експлуатації комп’ютерних систем та мереж. 5.Здатність використовувати знання й уміння для розрахунку, дослідження, вибору, впровадження, ремонту, та проектування комп’ютерних систем, мереж та їх компонентів. 6.Здатність ідентифікувати, класифікувати та описувати роботу комп’ютерних систем, мереж та їх компонентів шляхом використання аналітичних методів і методів моделювання. 7.Здатність досліджувати проблему та визначати обмеження, у тому числі технічні та обумовлені проблемами сталого розвитку, а також проблемами впливу на навколишнє середовище та безпеку життєдіяльності. 8.Здатність проектувати системи та їх компоненти з урахуванням усіх аспектів їх життєвого циклу та поставленої задачі, включаючи створення, налаштування, експлуатацію, технічне обслуговування та утилізацію; здатність аргументувати вибір методів розв’язування спеціалізованих задач, критично оцінювати отримані результати та захищати прийняті рішення.
Результати навчання: Здобувач освіти повинен бути здатним продемонструвати такі результати навчання: 1. Знати основні методології розробки програмного забезпечення. 2. Вміти користуватися поширеними системами контролю версій. 3. Знати основні вимоги до коду сучасного програмного забезпечення. 4. Вміти користуватися поширеними системами статичного аналізу коду. 5. Вміти документувати код програмного забезпечення за допомогою Doxygen. 6. Знати основні підходи до тестування програмного забезпечення.
Необхідні обов'язкові попередні та супутні навчальні дисципліни: Основи організації та функціонування комп’ютерів. Програмування.
Короткий зміст навчальної програми: Дисципліна „Інженерія програмного забезпечення” повинна надати систематизовані знання про концепції, методи та засоби створення сучасного програмного забезпечення, сприяти освоєнню основних технологій програмування, розвинути навики роботи із сучасними засобами проектування програмного забезпечення та надати можливість отримати практичні навички із застосування цих засобів.
Опис: Підходи до розробки програмного забезпечення та керування проектом. Системи контролю версій. Короткий огляд поширених мов програмування. Основні вимоги до коду програмного забезпечення. Документування коду програмного забезпечення. Об’єктно-орієнтоване та функційне програмування. Поняття Domain-Driven Design. Підходи до тестування програмного забезпечення. Профайлінг програмного забезпечення. Особливості розробки багатопоточного програмного забезпечення.
Методи та критерії оцінювання: Письмові звіти з лабораторних робіт, поточний контроль – 20%; підсумковий контроль - екзамен: письмово-усна форма (80 %).
Критерії оцінювання результатів навчання: 1. Розподіл балів при умові виконання навчального плану, виконання усіх контрольних робіт і календарного плану виконання лабораторних робіт, інакше за результатами проведення семестрового контролю студент вважається не атестованим. 2. Максимальна кількість балів для оцінки поточного контролю (ПК) знань за семестр – 20 балів. 3. Екзаменаційний контроль проводиться в письмово-усній формі. 4. Максимальна кількість балів для оцінки екзаменаційного контролю – 80 балів. 5. Іспит перед комісією студент складає також в письмово-усній формі з фіксацією запитань та оцінок відповідей в екзаменаційному листі. 6. До іспиту студенти допускаються при умові виконання навчального плану (в тому числі усіх лабораторних робіт).
Порядок та критерії виставляння балів та оцінок: 100–88 балів – («відмінно») виставляється за високий рівень знань (допускаються деякі неточності) навчального матеріалу компонента, що міститься в основних і додаткових рекомендованих літературних джерелах, вміння аналізувати явища, які вивчаються, у їхньому взаємозв’язку і роз витку, чітко, лаконічно, логічно, послідовно відповідати на поставлені запитання, вміння застосовувати теоретичні положення під час розв’язання практичних задач; 87–71 бал – («добре») виставляється за загалом правильне розуміння навчального матеріалу компонента, включаючи розрахунки , аргументовані відповіді на поставлені запитання, які, однак, містять певні (неістотні) недоліки, за вміння застосовувати теоретичні положення під час розв’язання практичних задач; 70 – 50 балів – («задовільно») виставляється за слабкі знання навчального матеріалу компонента, неточні або мало аргументовані відповіді, з порушенням послідовності викладення, за слабке застосування теоретичних положень під час розв’язання практичних задач; 49–26 балів – («не атестований» з можливістю повторного складання семестрового контролю) виставляється за незнання значної частини навчального матеріалу компонента, істотні помилки у відповідях на запитання, невміння застосувати теоретичні положення під час розв’язання практичних задач; 25–00 балів – («незадовільно» з обов’язковим повторним вивченням) виставляється за незнання значної частини навчального матеріалу компонента, істотні помилки у відповідях на запитання, невміння орієнтуватися під час розв’язання практичних задач, незнання основних фундаментальних положень.
Рекомендована література: 1. Eric Evans, Domain-Driven Design: Tackling Complexity in the Heart of Software, Addison-Wesley Professional, 2003, – 560 p. 2. Erich Gamma, Richard Helm, et al., Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley Professional, 1994, – 416 p. 3. Martin Fowler, Kent Beck, et al., Refactoring: Improving the Design of Existing Code, Addison-Wesley Professional, 1999, – 431 p. 4. Martin Fowler, Patterns of Enterprise Application Architecture, Addison-Wesley Professional, 2002, – 560 p. 5. Robert C. Martin, Clean Code: A Handbook of Agile Software Craftsmanship, Pearson, 2008, – 464 p. 6. Robert C. Martin, Clean Architecture: A Craftsman's Guide to Software Structure and Design, Pearson, 2017, – 432 p. 7. Robert C. Martin, Clean Agile: Back to Basics, Pearson, 2019, – 240 p. 8. Robert C. Martin, The Clean Coder: A Code of Conduct for Professional Programmers, Pearson, 2011, – 256 p. 9. Scott Chacon and Ben Straub, Pro Git, 2nd ed., Apress, 2014, – 440 p. 10. Steve McConnell, Code Complete: A Practical Handbook of Software Construction, Second Edition, Microsoft Press, 2004, – 960 p.
Уніфікований додаток: Національний університет «Львівська політехніка» забезпечує реалізацію права осіб з інвалідністю на здобуття вищої освіти. Інклюзивні освітні послуги надає Служба доступності до можливостей навчання «Без обмежень», метою діяльності якої є забезпечення постійного індивідуального супроводу навчального процесу студентів з інвалідністю та хронічними захворюваннями. Важливим інструментом імплементації інклюзивної освітньої політики в Університеті є Програма підвищення кваліфікації науково-педагогічних працівників та навчально-допоміжного персоналу у сфері соціальної інклюзії та інклюзивної освіти. Звертатися за адресою: вул. Карпінського, 2/4, І-й н.к., кімн. 112 E-mail: nolimits@lpnu.ua Websites: https://lpnu.ua/nolimits https://lpnu.ua/integration
Академічна доброчесність: Політика щодо академічної доброчесності учасників освітнього процесу формується на основі дотримання принципів академічної доброчесності з урахуванням норм «Положення про академічну доброчесність у Національному університеті «Львівська політехніка» (затверджене вченою радою університету від 20.06.2017 р., протокол № 35).