Главная В избранное Версия для печати

Меню:

... На русском

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

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

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

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

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

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

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

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

  • Проектування не має чіткої вираженості. Неможливо чітко відокремити процес проектування від попередньої і подальшій стадій, оскільки всі вони перекриваються і впливають один на одного.
  • Не існує правила зупинки. Немає критерію, який дозволяє зрозуміти, що ми досягли рішення.
  • Рішення не бувають вірними або невірними. Проектування пов'язане з пошуком компромісів між потенційно конфліктуючою суттю. Проектувальники повинні знайти скоріше декілька прийнятних рішень, чим одне якнайкраще.
Формалізація   • Аспекти   • Анонси   • Реєстрацїя   • RSS   • Контакти  
Необходимые документы на виза в Великобританию от edukation.com.ua.
2008 © Програмна інженерія