Програмна інженерія

Глобальні процеси інформатизації суспільства безумовно повинні були вплинути на викладання в університетах наук, пов’язаних з інформаційними технологіями, які втілились в розробці міжнародних рекомендацій під егідою професіональних асоціацій ACM (Association for Computing Machinery) і IEEE Computing Society.

Узагальнена область з комп’ютерних знань - комп’ютінг (computing) поділена на п’ять основних дисциплін: інформатика (computer science), програмна інженерія (software engineering), проектування апаратних платформ (hardware engineering), інформаційні системи (information systems) та інформаційні технології (information technology). Не зважаючи на таке формальне розділення, всі п’ять напрямків – споріднені науки. Вони тісно пов’язані між собою. Всі вони в більшій чи меншій ступені вивчають основи інформатики, програмування і технічні засоби, безумовно, з різним поглибленням в залежності від спеціалізації. В останній час найбільш змінилися підходи до викладання програмного забезпечення. Тепер ця дисципліна називається не програмуванням, а програмною інженерією, з дійсно інженерними підходами до створення програмних продуктів.

Програмна інженерія намагається інтегрувати принципи математики і інформатики з інженерними підходами, розробленими для виготовлення матеріальних продуктів[3]. Основні характеристики інженерного підходу такі:

- інженери в своїй діяльності завжди ретельно оцінюють альтернативи в пошуку оптимальних рішень, порівнюючи можливі витрати і прибутки;

- інженери завжди намагаються працювати з використанням кількісних характеристик і при необхідності дають приблизні рішення на основі досвіду та емпіричних даних;

- інженери придають особливе значення використанню дисциплінованого процесу при реалізації проекту і розуміють важливість ефективної організації командної роботи;

- інженери відповідають за весь життєвий цикл виробу, починаючи з дослідження, розробки, проектування, виробництва, тестування, впровадження і закінчуючи супроводом в експлуатації;

- інженери придають велике значення вибору і використанню інструментальних засобів;

- інженери-програмісти повинні мати освіту і досвід роботи в предметній області.

Програмна інженерія грунтється на цілій низці дисциплін, що ввійшли в рекомендації міжнародних асоціацій як проект SE 2004 (Software Engineering 2004). Теоретичні і концептуальні основи викладання програмної інженерії лежать, перш за все, в різних областях інформатики, але для одержання повноцінної освіти студентам необхідно бути знайомим з рядом концепцій з інших областей, таких як математика, інженерія, управління проектами і одна або декілька конкретних предметних областей. Всі студенти, вивчаючі програмну інженерію, повинні вміти інтегрувати теорію і практику, розуміти важливість абстракцій і моделювання, бути здібними розбиратися в нових для себе предметних галузях, не пов’язаних безпосередньо з комп’ютінгом, а також розуміти важливість висококваліфікованого проектування. При цьому стрімка еволюція програмної інженерії потребує постійного оновлення навчальних планів. Навчальні плани повинні співпадати з вимогами до рівня освіти фахівців програмістів в різних країнах, що є передумовою визнання наших дипломів в зовнішньому світі. В основу навчальних планів повинні бути закладені такі фахові дисципліни, як віща математика, основи комп’ютінга і інженерії, мови програмування, технологія проектування і верифікації програмного забезпечення, якість і управління програмними проектами. Обов’язковою складовою навчальної програми повинна стати професійна практика.