Навчання програмній інженерії

На першому році навчання студенти вивчають програмування, структури даних, пристрій комп'ютерів і т.д. В цих курсах викладачі, як правило, чітко структурують роботу і ставлять цілком зрозумілі завдання, кожна з яких часто має лише одну правильну відповідь. В курсі програмної інженерії студенти раптово виявляються переобтяженими безліччю нових тим. Зрозуміло, можна спробувати ненав'язливо освітити деякі принципи програмної інженерії в інших ввідних курсах, але це не так-то просто.

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

І останнє по рахунку, але не по важливості: студенти ще не усвідомлюють всієї користі розробки вимог. Кілька років тому при рішенні конкретної задачі я попросив студентів насамперед сформулювати вимоги. Один з них незадоволено заперечив: «Як я можу написати, що робить система, якщо я її поки не запрограмував?»

Проблема не обмежується розробкою вимог. Аналогічні складнощі виникають при знайомстві з проектуванням, тестуванням, управлінням конфігурацією, контролем над якістю і т.д. Супровід ввідних курсів по цих темах прикладами з реального життя вимагає дуже багато чого від студентів і викладачів. Додатково студенти недостатньо зрілі для того, щоб оцінити важливість багато тим програмній інженерії. Деякі завдання цілком очевидні: звертайте увагу на документацію, контролюйте конфігурацію, ретельно все перевіряйте і т.д. Проте студенти не відчувають повною мірою складність таких проблем, як організація робочої групи і калькуляція витрат. Професійні програмісти пізнають все це на практиці.

Максимальне спрощення. У своєму підручнику по програмній інженерії я використовую аналогію з навчанням плаванню. На початку XX століття амстердамські школярі зазвичай вчилися плавати на шкільному ігровому майданчику, лежачи на дерев'яних лавках і відпрацьовує правильні рухи. Моєму батьку, що виріс в селі, плавання далося набагато важче — дід обв'язав його мотузком навколо поясу, кинув в річку і крикнув: «Пливи!» Сьогодні уроки плавання починаються м'яко, в дитячому басейні, з мамою і безліччю плавальних пристосувань. Поступова кількість поплавців зменшується, а басейн стає глибшим.

Я відношуся до студентів, як до дітей на ігровому майданчику. Зазвичай я концентрую увагу максимум на декількох проблемах в спеціально підібраному середовищі. Я розкриваю всі необхідні теми курсу (попутно розповідаючи улюблені анекдоти) — при тому, що учбовий проект охоплює лише декілька ключових проблем. З додатковими труднощами реального життя студенти зіткнуться в подальші роки в інших курсах. Відзначу: деколи позитивна оцінка мого початкового курсу програмної інженерії формується у студентів лише через декілька років після його закінчення.

Проектування — одна з ключових проблем програмної інженерії, до якої викладачі можуть підійти організовано. Воно ж є головною перешкодою для більшості студентів.


Если шеф не прав - значит, либо он не шеф, либо ты не работник.

Програмна інженерія - www.programming.com.ua

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