Як навчати архітектурі ПЗ
Я не знаю наскільки відомо інженерам на форумі, але в Україні уже 4 роки як готують спеціалістів з програмного забезпечення. Я один із тих, хто бере безпосередню участь у цьому процесі і, попри активну протидію держави і ВУЗа, намагаюся давати студентам актуальні знання. Головна проблема — це вперте небажання співпрацювати індустрії з освітніми установами (яка тут сторона більше цього не бажає, важко сказати). І коли мова йде про викладання, приміром, об’єктно-орієнтованого програмування, то актуальність шукати не довго: взяв С# і погнав вчити студента на ньому писати програмки, інкапсулювати дані, робити поліморфні методи та розширяти класи. Нема сумнівів, що прийшовши на роботу ці навички знадобляться.
А от коли зайшла мова про викладання архітектури та проектування ПЗ, тут усе й полізло. В університетах ніхто реального практичного досвіду не має, стосунків з індустрією немає. Я уже другий рік намагаюся викладати дисципліну, яка називається «Архітектура та проектування ПЗ». Перший рік, мені здається, був вкрай невдалим. Зараз хочу покращити курс (покращення, схоже буде останнім, бо ВУЗ вимагає конспект лекцій з дисципліни, який зацементує його вміст на багато років).
Хочу закликати усіх небайдужих інженерів, яких цікавить завтрашній день і якість молоді, яка прийде під їх керівництво в майбутньому, мене в цьому покращенні курсу підтримати у наступних пунктах.
1. Висловіть свою думку стосовно такого набору та послідовності тем 20 лекцій:
• Вступ до архітектури та проектування програмного забезпечення (Introduction to software architecture and design).
• Основні принципи та поняття проектування програмного забезпечення (Basic software design concepts and principles).
• Проектування програмного забезпечення: стратегії, методи та процеси (Software design: strategies, methods and processes).
• Архітектурні стилі (Architectural styles).
• Архітектурні шаблони (Architectural patterns).
• Зєднувачі у програмногму забезпеченні (Software Connectors).
• Моделювання архітектури (Architecture modeling).
• Візуалізація моделей (Model visualization).
• Проектування нефункціональних властивостей (Design for software non-functional properties).
• Аналіз архітектури (Architecture analysis)
• Прикладні архітектури (Applied architectures).
• Реалізація архітектури (Architecture implementation).
• Технології зв’язувального програмного забезпечення (Middleware technologies).
• Архітектура керована моделлю (Model-driven architecture) [або Відновлення архітектури (Architecture recovery)].
• Розгортання та мобільність програмного забезпечення (Software deployment and mobility).
• Адаптування архітектур (Architectural adaptation).
• Метод об’єктно-орієнтованого проектування (Object-oriented design method).
• Породжувальні шаблони проектування (Creational design patterns).
• Структурні шаблони проектування (Structural design patterns).
• Шаблони проектування поведінки (Behavorial design patterns).
2. Допоможіть із розробкою та темами лабораторних робіт.
Ми усі, хто вчився на технічних спеціальностях пам’ятаємо лаби: приходиш, дають якийсь пристрій, і ти починаєш із ним гратися і записувати результати. Що, на вашу думку, повинен робити і з чим гратися студент, який вивчає архітектуру ПЗ? Минулого року я давав завдання типу: спроектуйте систему для обліку кадрів в UML. Ну от малюють вони собі ті діаграми як хочуть, в результаті приблизно знають UML, а для чого ніхто не розуміє. Мені здається навички малювати діаграми, це далеко не все і не найголовніше. Робити зворотною інженерію існуючих проектів? Дуже важко, довго і неефективно. Писати реалізації для тих UML діаграм, щоб зрозуміти що напроектували? Нереально важко й довго.
3. Можливо хто має владу і бажання запросити мене до себе у компанію на екскурсію, або тренінг, або дозволити побути декілька днів спостерігачем, або дозволити узяти інтерв’ю у архітекторів, аби я мав змогу глибше зрозуміти в яких саме знаннях сьогодні є і завтра буде потреба.
4. Можливо хто має бажання особисто поділитися своїми знання зі студентами, провести щось на кшталт лекції чи семінару, ласкаво просимо!
Олександр (alexander.nechay at livenau dot net)

48 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів