Основи інженерії програмного забезпечення
Анотація курсу
Дисципліна присвячена вивченню загальної проблемної області інженерії програмного забезпечення. Здобувачі вивчать історію становлення інженерії програмного забезпечення як інженерної галузі, місце та роль програмування в розвитку суспільства, економіки, цивілізації, познайомляться з основними задачами, які вирішує інженерія програмного забезпечення, та викликами, які стоять перед фахівцями в цій галузі: проблеми проєктування програмного забезпечення, формування команд з розробки програмного забезпечення, проблеми організації життєвого циклу програмного забезпечення. Окрема увага приділяється проблемі професійної підготовки майбутніх інженерів програмістів, розглядаються освітні стандарти, спільне та відмінності між іншими спеціальностями галузі Інформаційні технології, розглядається освітній стандарт та навчальний план, роль кожної дисципліни у формуванні майбутнього фахівця
Мета:
Формування загального розуміння задач інженерії програмного забезпечення, усвідомлення всього комплексу компетентностей, які мають бути сформовані у інженера-програміста.
Основні завдання:
Розгляд етапів розвитку програмування як сфери людської діяльності, та інженерії програмного забезпечення як нового виду інженерії. Визначення проблемних питань, що виникали та виникають при проєктуванні, конструюванні та супроводженні програмних продуктів. Огляд компетентностей, що мають бути сформовані у інженерів-програмістів, та демонстрація способу їх формування на прикладі навчального плану зі спеціальності 121 Інженерія програмного забезпечення.
Що ви будете знати:
• основні етапи становлення інженерії програмного забезпечення;
• основні задачі, що стоять перед інженерами-програмістами;
• основні вимоги, що висувають споживачі програмних продуктів;
• основні труднощі, з якими стикаються інженери-програмісти при проєктуванні, конструюванні та супроводжені програмних продуктів;
• основні компетентності, що мають бути сформовані у майбутніх інженерів програмістів;
• способи та етапи формування компетентностей майбутніх інженерів-програмістів.
Що ви будете вміти:
• орієнтуватись в проблематиці інженерії програмного забезпечення;
• самостійно розвивати знання та вміння, необхідні для формування майбутнього інженера-програміста.
Тематичний план курсу
Тема 1. Програмування. Витоки.
Програмування як основний вид діяльності інженера-програміста. Що таке програмування: ремесло, наука чи мистецтво? Докомп’ютерне становлення програмування. Розвиток теорії алгоритмізації та автоматизації обчислень. Поява комп’ютерних наук як передумова появи інженерії програмного забезпечення.
Тема 2. Розвиток технологій програмування
Комп’ютерний бум 40-50-х років. Розвиток технологій програмування. Перші мови програмування. Формування поняття мова високого рівня. Поява операційних систем. Поняття абстрактної машини. Криза програмного забезпечення.
Тема 3. Становлення інженерії програмного забезпечення
Перші заяви про необхідність інженерного підходу до розробки програмного забезпечення. Конференція Software Engineering (1968 р.) як відповідь на кризу програмного забезпечення. Виокремлення вимог до нової галузі інженерії, опис її задач та основних проблемних доменів. Подальший розвиток інженерії програмного забезпечення. Погляд у майбутнє: тенденції розвитку інженерії програмного забезпечення на найближчі 10 років.
Тема 4. Проблеми створення та організації життєвого циклу програмного продукту
Проєктування програмного забезпечення як основний вид діяльності інженера-програміста. Рані підходи до проєктування. Трудності проєктування: проблеми визначення вимог, прогнозування термінів та вартості розробки. Проблеми організації життєвого циклу програмного продукту. Основні етапи життєвого циклу. Модель Ройса. Спіральна модель розробки програмного продукту. Agile-методи як домінуючий підхід до проєктування та розробки програмного забезпечення.
Тема 5. Розробка програмного забезпечення як командна робота
Проблеми організації ефективних команд програмістів. Чому кількість не переходить в якість. Підхід до організації команди програмістів як «операційної бригади». Масштабування «хірургічного» підходу для великих проєктів.
Тема 6. Професійна підготовка фахівців з інженерії програмного забезпечення
Визначення потреб в кваліфікованих інженерах-програмістах та визначення вимог до їх компетентностей на ранніх етапах. Сучасна сфера ІТ та місце інженерії програмного забезпечення в ній. Структура проблемного простору інженерії програмного забезпечення згідно Computing Curricula. Software Engineering Body of Knowledge.
Тема 7. Навчальний план зі спеціальності 121 – Інженерія програмного забезпечення
Стандарт вищої освіти зі спеціальності 121 Інженерія програмного забезпечення. Освітня програма «Інженерія програмного забезпечення» Криворізького національного університету. Навчальний план зі спеціальності. Взаємозв’язки між дисциплінами. Охоплення необхідних компетентностей. Варіативна частина навчального плану. Формування soft skills у майбутніх інженерів-програмістів.
Тема 8. Я – майбутній інженер програміст Визначення індивідуальних потреб професійного розвитку. Необхідність неперервного навчання та саморозвитку. Основні типи ІТ-компаній та можливості кар’єрного росту в них. Дискусійна панель: відповіді викладача на питання студентів.
Загальна інформація
Форма навчання | Кількість кредитів ECTS | Загальна кількість академічних годин | Лекційні | Лабораторні | Самостійна робота | Форма контролю |
---|---|---|---|---|---|---|
Денна | 3 | 90 | 16 | – | 72 | Залік |
Заочна | 3 | 90 | 8 | – | 104 | Залік |
Компетентності | Результати навчання |
---|---|
СК05 Здатність дотримуватися специфікацій, стандартів, правил і рекомендацій в професійній галузі при реалізації процесів життєвого циклу. СК08 Здатність застосовувати фундаментальні і міждисциплінарні знання для успішного розв’язання завдань інженерії програмного забезпечення. СК10 Здатність накопичувати, обробляти та систематизувати професійні знання щодо створення і супроводження програмного забезпечення та визнання важливості навчання протягом всього життя. СК11 Здатність реалізовувати фази та ітерації життєвого циклу програмних систем та інформаційних технологій на основі відповідних моделей і підходів розробки програмного забезпечення. | ПР02 Знати кодекс професійної етики, розуміти соціальну значимість та культурні аспекти інженерії програмного забезпечення і дотримуватись їх в професійній діяльності. ПР03 Знати основні процеси, фази та ітерації життєвого циклу програмного забезпечення. |