
- •1. Основи програмної інженерії.
- •1.1. Програмна інженерія в історичному аспекті.
- •1.2. Програмна інженерія як дисципліна.
- •1.3. Swebok: Керівництво до зводу знань з програмної інженерії.
- •1.4. Структура і зміст swebok.
- •1.4.1. Інженерія вимог
- •1.4.2. Проектування програмного забезпечення
- •1.4.3. Конструювання програмного забезпечення
- •1.4.4. Тестування програмного забезпечення
- •1.4.5. Супровід програмного забезпечення
- •1.4.6. Керування конфігурацією
- •1.4.7. Керування інженерією програмного забезпечення
- •1.4.8. Процес інженерії
- •1.4.9. Методи і інструменти інженерії
- •1.4.10. Якість програмного забезпечення
- •Контрольні питання і завдання
- •2. Характеристика життєвого циклу стандарта iso/iec 12207.
- •Контрольні питання і завдання
- •3. Формування прикладних моделей життєвого циклу
- •Контрольні питання і завдання
- •4. Вимоги до програмних систем.
- •4.1. Загальні підходи до визначення вимог
- •Контрольні питання і завдання
- •5. Методи програмування.
- •5.1. Прикладне (систематичне) програмування
- •5.1.1 Структурне програмування
- •5.1.2. Об'єкт но-орієнтоване програмування
- •5.1.4. Компонентне програмування
- •5.1.5. Аспектно-орієнтоване програмування
- •5.1.6. Генерувальне (порождувальне) програмування
- •5.1.7. Сервісно-орієнтоване програмування
- •5.1.8. Агенте програмування
- •5.2. Теоретичне програмування
- •5.3. Контрольні питання і завдання
- •6. Оптимізація програм
- •6.1 Основні поняття.
- •6.2. Призначення і цілі оптимізації
- •6.3. Проміжна мова
- •6.4. Елементи топології програми
- •6.4.1. Блок (лінійна ділянка)
- •6.4.2. Сильно зв'язана область
- •6.5. Способи оптимізації
- •6.5.1. Розвантаження ділянок повторюваності
- •6.5.2. Скорочення глибини операції
- •6.5.3. Спрощення дій
- •6.5.3.1. Видалення індуктивних змінних і виразів
- •6.5.3.2. Заміна складних операцій на більш прості
- •6.5.3.3 Виключення надлишкових виразів
- •6.5.3.4 Інші перетворення
- •6.5.4. Реалізація дій
- •6.5.5. Підстановка (згортання)
- •6.5.6. Чищення програми
- •6.5.6.1. Усунення ідентичних операторів
- •6.5.6.2. Заміна змінних в операторах умовного переходу і усунення невикористовуваних визначень.
- •6.5.6.3. Усунення марних операторів і змінних
- •6.5.7. Економія пам'яті
- •6.5.8. Скорочення програми
- •6.5.9. Вставка псевдоблоку
- •7. Навчально-методичні рекомендації до вивчення дисцілини «Основи програмної інженерії.»
- •7.1. Анотація навчальної дісциплини. Галузь знань – 0501 «Інформатика та обчислювальна техника» Напрям підготовки - 6.050103 «Програмна інженерія»
- •7.2. Необхідність та задачі навчальної дісциплини. Ії місце в учбовому процесі.
- •7.3. Тематичний план курсу.
- •7.4. Тематичний план лекцій.
- •7.5. Тематичний план лабораторних робіт.
- •7.6. Тематичний план практичних робіт.
- •7.7. Тематичний план самостійної роботи студентів.
- •7.8. Питання для підсумкового контролю.
- •7.9. Структура залікового кредиту навчальної дисципліни
- •7.3. Структура модулів дисципліни
- •7.10. Система критеріїв оцінювання знань відповідно до кожного модуля дисципліни
- •Література
- •Список літератури до розділу 2
- •Додаток 1. Термінологічний словник
- •Додаток 2. Перелік стандартів програмної інженерії
7. Навчально-методичні рекомендації до вивчення дисцілини «Основи програмної інженерії.»
7.1. Анотація навчальної дісциплини. Галузь знань – 0501 «Інформатика та обчислювальна техника» Напрям підготовки - 6.050103 «Програмна інженерія»
Обсяг курсу 180 год., у тому числі: лекцій 70 год., лабораторних занять 52 год., практичних робіт 18 год, самостійної роботи 40 год, залік 3 сем., іспит 4 сем.
Програмна Інженерія (Software Engineer ing) - наука побудови комп'ютерних програмних систем (ПС), що містить у собі теоретичні концепції, методи і засоби програмування, технологію програмування, системи та інструменти їхньої підтримки, сучасні стандарти, зокрема, процеси життєвого циклу (ЖЦ), вимірювання, оцінювання якості розробки ПС. Головне призначення програмної інженерії - побудова ПС, починаючи з аналізу предметної області (ПрО) і закінчуючи виготовленням вихідного коду для виконання на комп'ютері. Фундаментальну основу побудови ПС становлять: теорія алгоритмів, математична логіка, теорія обчислень, теорія керування й ін.
Колективне розроблення великих проектів ПС обумовило розвиток інженерних, технологічних методів і засобів регламентованого проектування ПС із урахуванням організаційних процесів ЖЦ: інженерія вимог, керування ризиком і якістю, планування і регулювання ресурсів, оцінювання процесів ЖЦ та показників якості, вартості і строків виготовлення програмного продукту.
Ціль даної дисципліни - представити методи і засоби програмної інженерії в структурованому і систематизованому вигляді для теоретичного й практичного навчання процесам проектування, тестування і оцінювання якості програмних систем. У дисципліні відображено зміст програмної інженерії з урахуванням базового ядра знань SWEBOK (http://www.swebok.org) та програми навчання Computing Curricula - 2001, 2004, що застосовується на факультетах інформатики в міжнародних навчальних закладах понад 20 років. Навчання програмній інженерії є запорукою успішного освоєння накопичених міжнародною спільнотою знань з інженерії побудови програмних продуктів.
Студенти повинні отримати теоретичні й інженерні знання з процесів розроблення програмних систем, практики подання програм для їхнього опрацювання у середовищі сучасних інструментальних систем провідних фірм: Microsoft, IBM, Rational тощо. Крім того, вони повинні навчитись методам верифікації, валідації та тестування програм, метричного аналізу, виміру, оцінки показників якості та продуктивності продукту, а також перенесення його на іньши платформи.
7.2. Необхідність та задачі навчальної дісциплини. Ії місце в учбовому процесі.
Дисципліна «Основи програмної інженерії» входить до «Обов’язкового переліку навчальних дисциплін і практик» циклу професійно-орієнтованої та практичної підготовки згідно Освітньо-професійної програми підготовки бакалавра за фаховим спрямуванням 6.050103 «Програмна інженерія»
Згідно додатку Б до пункту 6 Освітньо-професійної програми підготовки бакалавра за фаховим спрямуванням 6.050103 «Програмна інженерія» дисципліна включає наступні блоки:
3.01 |
Основи програмної інженерії |
Інженерні основи програмного забезпечення |
1.ПФ.Е.03.01.01 |
Основи моделювання |
1.ПФ.Е.02.02.01 |
||
Технології розробки ПЗ |
1.ПФ.Е.03.01.02 |
||
Основи інженерії вимог до ПЗ |
1.ПФ.Е.02.01.02 |
||
Письмова комунікація |
4.ПФ.С.02.01.02 |
Система змістових модулів дисципліни, щодо складових узагальнених структур діяльності, згідно додатку А до пункту 5 Освітньо-професійної програми підготовки бакалавра за фаховим спрямуванням 6.050103 «Програмна інженерія», наступна:
Зміст уміння, що забезпечується |
Шифр уміння |
Назва змістового модуля |
Шифр змістового модуля |
Здійснювати аналіз вимог, розробляти специфікацію програмних вимог, виконувати їхню верифікацію та атестацію |
1.ПФ.Е.02.01 |
Типи вимог, функціональні, не функціональні, атрибути якості |
1.ПФ.Е.02.01.01 |
Основи інженерії вимог до ПЗ |
1.ПФ.Е.02.01.02 |
||
Узгодження вимог і управління ризиками |
1.ПФ.Е.02.01.03 |
||
Моделювати різні аспекти системи, для якої створюється ПЗ |
1.ПФ.Е.02.02 |
Основи моделювання |
1.ПФ.Е.02.02.01 |
Типи моделей |
1.ПФ.Е.02.02.02 |
||
Основні концепції уніфікованої мови моделювання UML |
1.ПФ.Е.02.02.03 |
||
Проектувати компоненти архітектурного рішення |
1.ПФ.Е.03.01 |
Інженерні основи програмного забезпечення |
1.ПФ.Е.03.01.01 |
Технології розробки ПЗ |
1.ПФ.Е.03.01.02 |
||
Структура та архітектура ПЗ |
1.ПФ.Е.03.01.03 |
||
Стратегії і методи проектування ПЗ |
1.ПФ.Е.03.01.04 |
||
Аналіз якості та оцінка програмного дизайну |
1.ПФ.Е.03.01.05 |
||
Нотації та засоби підтримки проектування |
1.ПФ.Е.03.01.06 |
||
Створювати чітку, стислу та точну технічну документацію у відповідності до діючих стандартів |
4.ПФ.С.02.01 |
Рецензувати письмову технічну документацію з метою виявлення різного роду проблем |
4.ПФ.С.02.01.01 |
Письмова комунікація |
4.ПФ.С.02.01.02 |
У дисципліні відображено зміст програмної інженерії з урахуванням базового ядра знань SWEBOK (http://www.swebok.org) та програми навчання Computing Curricula
Мета: представити методи і засоби програмної інженерії в структурованому і систематизованому вигляді для теоретичного й практичного навчання процесам проектування, тестування і оцінювання якості програмних систем.
Завдання: Студенти повинні отримати теоретичні й інженерні знання з процесів розроблення програмних систем, практики подання програм для їхнього опрацювання у середовищі сучасних інструментальних систем провідних фірм: Microsoft, IBM, Rational тощо. Крім того, вони повинні навчитись методам верифікації, валідації та тестування програм, метричного аналізу, виміру, оцінки показників якості та продуктивності продукту, а також перенесення його на іньши платформи.
Зміст дисципліни розкривається в темах:
1. Дисципліни програмної інженерії і області ядра знань -SWEBOK. Визначення програмної інженерії та її дисциплін, зміст та основні складові цих дисциплін, загальний зміст областей ядра знань-SWEBOK.
2. Стандарт і моделі життєвого циклу. Характеристики базових моделей ЖЦ, що використовуються на практиці. Основні положення стандарту 1SO/IEC 12207 і підходи до формування на його основі робочих моделей ЖЦ.
3. Аналіз та визначення вимог до програмних систем. Загальні підходи, методи аналізу предметної області та формування вимог до ПС.
4. Методи об'єктного аналізу і моделювання. Огляд методів об'єктного аналізу, побудови моделей предметних областей та проектування архітектури системи.
5. Прикладні і теоретичні методи програмування. Аналіз прикладних, теоретичних і формальних методів програмування, а також огляд їхніх засобів щодо подання та розробки ПС.
6. Методи доведення, верифікації і тестування програм. Визначення формального апарату специфікації, доведення, верифікації і тестування програм. Класифікація помилок, що виявляються при перевірці правильності програм. Інженерію тестування різних програмних об'єктів.
7. Інтерфейс, взаємодія, еволюція програм та даних. Методи інтеграції, проблеми взаємодії різномовних програм і даних у сучасних середовищах, а також методи еволюційної зміни компонентів і систем, характеристика стандарту ISO/IEC 11404-96 з опису даних, незалежних мов програмування.
8. Інженерія виробництва програмних продуктів. Базові характеристики інженерії виробництва компонентів, предметної області готових компонентів та лінії виробництва програмних продуктів, особливості сучасних середовищ для колективного виробництва ПС.
9. Моделі якості та надійності програмних систем. Моделі якості, метрики і методи виміру показників якості ПС. Класифікація математичних моделей надійності та підходи до оцінки надійності програмного продукту за деякими моделями.
10. Методи керування програмним проектом. Аналіз менеджменту програмних проектів, опис інженерних методів планування, керування роботами, ризиками та конфігурацією проекту, оцінки вартості та строків.
У результаті вивчання даної дисципліни студенти повинні:
знати базові поняття комп’ютерних дисциплін, основні етапи розвитку програмної інженерії , принципи програмної інженерії, моделі життєвого циклу програмного забезпечення;
уміти застосовувати базові поняття програмної інженерії та інших дисциплін комп’ютингу у процесах життєвого циклу програмного забезпечення.
Дисціплина підтримується курсами Основи програмування, Об’єктно-орієнтоване програмування.
Форма контролю.
В процесі викладання дисципліни проводяться лекції, лабораторні та практичні заняття в лекційних та комп’ютерних класах, виконання самостійної роботи студента. При цьому використовуються наступні методи оцінювання навчальної роботи студента: поточне тестування та опитування, захист лабораторних робіт, оцінювання виконання СРС, підсумковий іспит. Підсумковий бал за 100-бальною шкалою з дисципліни визначається як середньозважена величина, в залежності від питомої ваги кожної складової залікового кредиту.
Співвідношення оцінок за національною шкалою (чотирибальною), шкалою ECTS (семибальною) та шкалою навчального закладу (стобальною) наступне:
За національною шкалою |
За шкалою навчального закладу |
Шкалою ECTS |
|
Відмінно |
90-100 |
90-100 |
А |
Добре
|
75-89 |
85-89 |
В |
75-84 |
С |
||
Задовільно
|
60-74 |
67-74 |
D |
60-66 |
E |
||
Незадовільно ( з можливістю повторного складання) |
35-59 |
35-59 |
FX |
Незадовільно ( з обов’язковим повторним курсом) |
1-34 |
1-34 |
F |