Як навчати архітектурі ПЗ

Я не знаю наскільки відомо інженерам на форумі, але в Україні уже 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)

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Я предложил бы сначала сформулировать, какие именно знания хочется донести до студентов в рамках этого курса. Ну там к примеру: дать обзор всего вообще по верхам(начиная от железной архитектуры микропроцессоров и компутерной, и заканчивая архитектурой систем для машин лернинга). Или же выбрать пару-тройку направлений(там к примеру суровый ентерпрайз, геймдев и все такое) и рассказать о типичных решениях в этих областях.
Далее, о документировании. Это одна отдельная большая тема, и тут я бы предложил поиграть в ролевые игры :) - раздать типичные роли типичного пресейла, и провести народ по полному кругу, с последующей защитой предложенных решений. Вот тогда и всплывет «а зачем эти диаграммы рисовать».
По поводу конкретных топиков и лабораторок, я бы предложил не изобретать велосипед. А просто сформулировав для себя, о чем же курс, пойти на сайты крупных вузов и онлайн курсов и там поискать похожие. Детальных материалов в свободном доступе может и не быть, но агенда наверняка найдется.

Архітектуру ПЗ розбиваємо на: архітектуру взаємодії із зовнішніми компонентами, архітектуру захисту ПЗ, архітектуру бази даних (сховища даних), архітектуру транспорту даних, архітектуру самого ПЗ, архітектуру розгортання ПЗ і.т.д

Скоріше за все, лише одиниці будуть створювати архітектури самі, більшість буде користуватися «архітектурними формами» створеними іншими, тому я бачу декілька проблем:
1. теоретичне навантаження. вони (студенти) все одне забудуть більшість красивих слів

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

тому, особисто мої думки:
1. почніть з чогось дуже простого, але вивчіть його вдало. наприклад, MVC. нажаль, я постійно бачу що мало хто розуміє MVC навіть з великими зарплатнями
під вдало я розумію створити модель (нехай у юмл, хоча і просто текста з описом модулів (класів) і методів достатньо та структури бази, а потім еволюціонувати цю модель на виклики часу (отут доречі юмл не дуже вдалий був (у ті часи як я його вивчав), бо у тексті легше описати differences).
Тобто практичні заняття:
1.1. створення моделі по MVC, ну наприклад, по обліку кадрів — views — головна, прийом, список найнятих — результат текст або юмл класів та бази даних з деталізацієй до методів
1.2. «прості задачі» — додати звільнення, декрет — результат — diff та нова модель

1.3. виклики часу: — у нас тепер корпорація, із декількох фірм. і людина може бути у декількох «фірмах». або hr-відділ вже має свою базу і треба імпортувати нових людей з неї, та інше.

2. вивчення «великої» архітектури, наприклад ядро лінукс або firefox — саме те (можна ще якийсь фреймворк узяти хоч дотнет, хоч якийсь php-шний).
спочатку вивчаємо архітектуру, а на практичних:
2.1. підготувати відповідь чому цей кусок архітектури саме так виконано.

2.2. «вносимо» віртуальні зміни — нова відеокарта, нова мова верстки (html5:) тощо

3. створення API. взяти щось, що немає однозначного вирішення, наприклад відеокарту\монітор (з набором якихось простих функцій), або GPS або іще щось, і нехай пишуть набір функцій для api., а потім знову — еволюція

Дякую за суттєві поради. Правда сучасним студентам страшнувато 2-ге давати. Сьогодні розповідаю про брокер патерн із POSA 1, і думаю, дай спитаю що вони думають таке розподілені компоненти? Здавалося б з назви можна було здогадатися, але ж ні, переважна більшість не знайшла, що відповісти...

ну 2-ге, здається, трошки інша опера, ні? ви ж про прикладні архітектури ніби ведете мову. ядро лінукс — до чого тут це?

> > переважна більшість не знайшла, що відповісти...
це загальна біда. я задавав і простіші запитання, і просто жахався німій тиші... чи бояться, чи ще незрозуміло що..., а як дійсно мозок не вмикається? страшно.

Спасибо, что подняли этот вопрос.

Коль уж шаблоны проектирования есть в теме, то перед ними хорошо бы по рефакторингу Фаулера пройтись. Про паттерны читал еще будучи junior. Все понятно написано. Запомнил и забыл. А вот когда через рефаткоринг сам изобрел существующий шаблон, от тогда понятно стало зачем его придумали.

Пару книг, которые при случае советую junior специалистам:
Р. Мартин. Быстрая разработка программного обеспечения
Кент Бек. Экстремальное программирование — разработка через тестирование
Мартин Фаулер. Рефакторинг
Стив Макконнелл. Совершенный код, 2-е издание
Гамма, Хелм Приемы объектно-ориентированного проектирования. Паттерны проектирования

Джошуа Кериевски. Рефакторинг с использованием шаблонов

Из книг, которые рекомендовали мне умные люди:

Фаулер. Архитектура корпоративных программных приложений

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

Щодо шаблонів, нам (НТУУ «КПІ» ФІОТ АУТС) викладали їх цілий семестр. зрозуміли що воно таке — одиниці. аналогічно с RUP і UML, хоча далі UML був потрібен ще в одному курсі який взагалі не стосується програмування.

Коментар порушує правила спільноти і видалений модераторами.

Коментар порушує правила спільноти і видалений модераторами.

Не знаю что подрузумевает каждое из наименование лекций, но думаю стоит обратить внимание на такие темы.

Design Patterns(GOF, Enterpise). Мне к примеру нравится эта схема 2.bp.blogspot.com/...gn Patterns.jpg

Методологии разработки (RUP, SCRUM, TDD)

Антипаттерны в проектировнии

Практичесские занятия будь то лабораторные или курсовые обязательно должны включать в себе какие то ограничения в проектировании (ограничение в бюджете, платформе, целевой аудитории) К примеру разработать решение для диспетчерской такси так чтобы ей могли пользоваться таксисты и диспетчеры.

А в мене є великі сумніви щодо доцільності викладання архітектури студентам. Який в них бекграунд в програмуванні? Лабораторні роботи? А той самий С-шарп та ООП вони хоч освоїли? А потримали в руках хоч один проект, хоч б на пару людиномісяців роботи, та бажанно такий в якому приймали б у часть декілько чоловік? Якщо ні то ваша архітектура буде для них виключно теоретичною дисципліною без будь-якого звязку з реальністю.

Вищенаведенне це лише моя думка. Базується на власному досвіді вивчення архітектури ПЗ.

ЗІ: «... в Україні уже 4 роки як готують спеціалістів з програмного забезпечення... »

Це ви я так розумію про себе? А до вас їх певно ніхто і не готував?...

Коментар порушує правила спільноти і видалений модераторами.

Коментар порушує правила спільноти і видалений модераторами.

Коментар порушує правила спільноти і видалений модераторами.

Согласен. Для связи с реальностью нужен хороший багаж знаний в различных технологиях и языках програмирования. Такой курс будет полезен чтобы систематизировать в голове то что хаотично собирается по-крупицам.

Я так понял что курс будет будет вестись для старшекурсников. Верно? Обзорно по технологиями и языкам они должны были пройтись. А вот как у вас дела обстоят с практикой? Когда я учился, у нас с этим было весьма печально и поэтому на четвёртом курсе пошёл работать разработчиком. Мне повезло и я попал в контору, где мог учиться на «живых проектах» и где были очень грамотные спецы, которым меня учили. И несмотря на то, что на учёбе это сказывалась негативно, я занимался именно тем чем мне нравилось. Я занимаюсь этим и по сей день.

Если у вас нет практики, то толку от этого будет немного, даже несмотря на то насколько хорошо вы будете излагать свой курс. Может быть в таком случае вам стоит обратить внимание в сторону open source, где можно привлечь студентов

Я з Вами повністю згоден і сам сумніваюся в доцільності. Усе виходить настільки абстрактним і затеоретизованим, що я й вирішив почати цю тему, щоб зрозуміти, як все ж таки дати студентам якийсь hands on experience.

Стосовно готування спеціалістів, то це я не тільки про себе, а й про виші по усій Україні, що ведуть підготовку за бакалавратом «Програмна інженерія» 6.050103

> > як все ж таки дати студентам якийсь hands on experience
Рецепт і простий і складний: Практика Практика і ще раз Практика. При тому ні в якому разі не в архітектурі, а в першу чергу в програмуванні.

Нижче Denys Nikolayenko згадує опенсорс проекти. Ще кажуть є така штука як Google summer of code. Ще можна звернутись в компанії, але не за сакральними знаннями архітектури, а с проханням допомогти організувати навчльні проекти для студентів.

Без достатньої практики в програмуванні, говорити про архітектурні стилі, патерни, леери UML і т. п. — просто марнувати час.

А як знати, достатня практика чи ні? Архітектура в кінці третього курсу, до того купа предметів: основи програмування, об’єктно-орієнтоване програмування, вступ до інженерії ПЗ, конструювання ПЗ, документування, моделювання, кілька практик і т. д. Зрештою 1 пара на тиждень лабораторних робіт з архітектури ПЗ не дозволить ні опенсорс проект робити, ні взагалі кодувати. Тобто змоделювати архітектуру і реалізувати її не реально. А стосовно таких звернень до компаній — це цікава ідея, дякую!

Эдине що приходить мені в голову — ви взнаєте це по результату. Якщо людина поварилась в кухні справжньго проекту — їй зрощуміло нащо потрібна архітектура і які її проблеми вона взагалі вирішує. Якщо ні — результат буде як ви описали вище.

На око можу сказати що студент має прийняти участь в хоча би одному проекті з 3−4 учасниками що триватиме протягом двох місяців на фул тайм (40 годни на день). Після цього можливо і буде сенс йому слухати курс по архітектурі.

Вибачте за банальності але досвід вимірюється не кількістю «прослуханих» курсів, а кількістю і маштабом вирішених власноручно задач (кількістю написанних сточок коду якщо бажаєте). І здобути той досвід треба не підчас лабораторних з архітектури, а до них. Тому і кажу, що і просто і складно. Складно тому що успішність Вашого курсу на 90% залежить не від Вас, а від того що було до Вас. Рецепту як пофіксати брак досвіду і вади в системі освіти протягом 8−10 лабораторних робіт в мене нажаль нема.

Я не розумію вашого аргументу. Ви (як і більшість) плутаєте практичний професійний досвід і теоретичні знання вкупі з невелкими практичними навичками. Людина, яка навчається в університеті, повинна оволодіти об’ємом знань, достатнім для вибраної кваліфікації і бажано в максимально зрозумілій формі. Підкріпляти теорію достатньою практикою потрібно, але вимагати від випускника практичного досвіду роботи — нонсенс нашого життя. З ваших слів, так студентам в КНУБі потрібно всі 6 років навчання безперервно працювати в бригадах на будівництві і всі до одного стануть суперовими архітекторами.

в книге Макконела очень понравились упоминания об ошибках которые автор допускал в молодости... я считаю, что такие рассказы намного полезнее всяких success stories, особенно если разъяснять на каком этапе была допущена ошибка, и как ее следовало избежать, либо исправлять если она уже допущена...

Лабораторные работы можно организовать по принципу постоянного улучшения кода, то есть дается 1 сложное задание, и пишется как попало, в каждой следующей работе нужно анализировать недостатки предыдущей и улучшать, либо переписывать... как нельзя к стати тут подойдут и юнит тесты...

мы так учили С++ и ООП, первая лаба на С, 7 на шаблонах С++, задание одно и то же, но решение менялось в зависимости от познаний в С++...

І все ж такі теми більше підходять для курсів ООП, конструювання, супроводження, еволюції ПЗ. Мова ж іде про архітектуру ПЗ, здається це не одне й теж, що код на С++

я о принципе... сначала сделать как нибудь, а в конце концов хорошо...

> 2. Допоможіть із розробкою та темами лабораторних робіт.

IMHO:

* модифікація існуючого ПЗ; нехай за допомогою debugger-а та звичайного пошуку розберуться у великому проекті та виконають якусь просту модифікацію, але так, щоб побачили, що локальна зміна може викликати проблеми в зовсім інших (віддалених) частинах ПЗ; потім показати їм ефективність юніт-тестування на даному прикладі;

* дати спробувати змінити ПЗ, де поточна архітектура не дає легкої можливості додати функціональність, а викликає значні витрати часу; потім показати яка архітектура дозволила б зробити зміни швидко;

* показати приклад ПЗ, в якому архітектура легко робить проблему з безпекою (або приватністю) даних реальністю, при подальших модифікаціях іншими, поверхнево ознайомленими з архітектурою даного ПЗ, членами команди;

* практика документування архітектури ПЗ; результат має бути локанічним та зрозумілий іншим;

* командна розробка архітектури (мова йде про вміння працювати з великими проектами, тут часто працює не одна людина — потрібно знаходити спільну мову та ефективно співпрацювати, спільно аналізувати);

* дати завдання на швидкість проектування архітектури, на пошук золотої середини (буває, що архітектори намагаються створити ідеальне/всеохоплююче рішення, що не завжди доцільно); можна зробити гру на декілька команд і показати чиє рішення є більш оптимальним і чому;

“Игорь Ковальчук
> 2. Допоможіть із розробкою та темами лабораторних робіт.
IMHO: ....” ого! непросто такое донести с массы.
это здОрово, но для среднего студента забагато.
т.е., да- к этому надо стремиться, но по-моему ВУЗ не должен стремиться делать человека сформировавшимся профессионалом; это — личное дело каждого.

Учитель показывает Дорогу.

Забавно, що в Україні є крім мене ще люди, які цікавляться роботами в цеху Michele Lanza. Я показую інколи такі картинки студентам у контексті боротьби з невідчутністю ПЗ. До речі, якщо Вам цікава візуалізація ПЗ, погляньте роботи цього пана (www.win.tue.nl/~dholten/) Поділіться, як на Вашу думку, такі візуалізації можуть допомогти студентам у здобутті умінь та навичок проектування архітектури ПЗ?

Студенти мають працювати з доступним, _зрозумілим_ матеріалом. Щось подібне до user-friendly (student-friendly).
Щоб не перелякалися )

Але й зрозуміли, що справжня розробка — це серйозна річ, командна робота.

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

Важко працювати з сухим кодом роками. Думаю, що за візуалізацією майбутнє, просто вона має бути доступною і по ціні і зручною; навіть сьогодні такі речі як Sparx Enterprise Architect дуже приємно тримати в руках.

вот это

«Можливо хто має владу і бажання запросити мене до себе у компанію на екскурсію, або тренінг, або дозволити побути декілька днів спостерігачем, або дозволити узяти інтерв’ю у архітекторів, аби я мав змогу глибше зрозуміти в яких саме знаннях сьогодні є і завтра буде потреба. » — очень правильно.

знания сами не придут, за ними надо ходить, собирать, нагибаться.

академические знания чахнут в отрыве от практики и применения.

Первая лекция должна быть о г0внокоде, а все остальные — о том как его избегать, и зачем это нужно...

Антон, ви мене потішили! Уявив собі як я починаю лекцію і кажу типу: «Так, дітки, сьогодні почнемо вивчати архітектуру ПЗ, і перше заняття у нас присвячено лайн0кодові. Отже лайн0код — це....». :-)) А якщо серйозно, я вважаю цей самий код важливою темою (хоч це у академічних колах дещо по іншому називають), цілу дисертацію про нього написав і захистив, однак ключове слово тут — код. Код — це реалізація архітектури. Його наші студенти вивчають на такій дисципліні як «Конструювання ПЗ».

Коментар порушує правила спільноти і видалений модераторами.

Антон сформулировал свою мысль кратко и просто.
Знать как_нельзя тоже надо.
термин лайн0код можно не использовать, ВУЗ все-таки))

угу. распознавать проблему может быть полезнее, чем знать об инструментах её решения. Зная о проблеме, инструмент можно и нагуглить. Не зная о проблеме — человек сам себе выкопает медвежью яму, натыкает там кольев, смажет говном, разбежится и прыгнет туда.

Идея хорошая,

А на сколько расчитан этот курс ?

40 академічних годин лекцій (20 пар)
40 академічних годин лабораторних робіт (20 пар)

+ 100 годин самостійної роботи

читаємо курс 1 семестр (20 тижнів). (це у Національному авіаційному університеті)

Мне кажется что курс будет весьма обзорным. Но, несмотря на это, чтобы подробнее и понятнее осветить вопросы архитектуры я считаю вам не стоит рассматривать низкоуровневое проектирование. Это также позволит избежать двойного трактавания “проектрирования” (проектирование архитектуры или отдельных составляющих). Темы о патернах и принципах проектирования на низком уровне логичнее рассматривать в рамках отдельного курса по ООП.
А именно:
• Метод об’єктно-орієнтованого проектування (Object-oriented design method).
• Породжувальні шаблони проектування (Creational design patterns).
• Структурні шаблони проектування (Structural design patterns).
• Шаблони проектування поведінки (Behavorial design patterns).

да, и неплохо внести игровой момент, чтоб разбудить творчество.

пусть кота спроектируют, например)

Так, гра це дуже добре, однак кіт уже спроектований, і студенти добре знають як (уроки біології). Тому тут буде лише вправа в описі готового проекту, тобто творити не доведеться.

так и не надо изобретать кота.
надо описать его инструментами дизайна.

вдогонку: это не мои советы, а моё понимание вопроса.

не исключено, что я ошибаюсь.

книг очень много. трудно советовать как лучше.
имхо, надо избегать таких моментов:
момент_1- слишком много материала.
ООП и паттерны созданы для того, чтобы УПРОСТИТЬ дизайн.
чтоб воспринимать дизайн образно, схематично.
В его понимании(восприятии) восходить от абстрактного к конкретному (а не наоборот)
Вам придется пропустить материал (массу знаний и примеров кода) через себя и сформулировать базовые_понятия коротко, четко и образно.
момент_2 — терминологическая каша
базовые_понятия не давать 3-мя языками (рус-укр-англ).
терминология (сущности, глаголы. Entity, Relationship, Use ...) только английская .

русско-английская IT гвара — страшная вещь, прилипнет — не отделаешься.

бажаю уcпiху

Дякую за поради. Дозвольте трішечки уточнити Вашу думку. Частина студентів навчається англійською мовою, тут з термінологією питань немає (хоча й англійських термінів страшенна сила). Але інша частина студентів навчається українською. Ви пропонуєте вживати фрази типу «Між цими двома ентіті ми встановлюємо релейшеншіп юзес» на лекціях та підручниках?

Трішечки не погоджусь, що шаблони спрощують саме проект чи то конструкцію ПЗ, мені завжди здавалося, що вони спрощують пошук проектних рішень певних проектних завдань та комунікацію між інженерами. Чи Ви радите давати шаблони чи не давати? Чи давати тільки певну підмножину?

“Трішечки не погоджусь, що шаблони спрощують саме проект чи то конструкцію ПЗ” вот и напрасно, паттерны именно для того, чтоб облегчить понимание дизайна.
Creational — отделяют процесс создания классов от их использования, уменьшая сложность и coupling.
Structural — скрывают сложность системы, делают архитектуру приложения более универсальной.
Behavioral — их можно назвать “сценарии”, (Стратагемы / стратегемы)
www.nbuv.gov.ua/...it/01rzhstr.htm
так, вважаю, що
“Між цими двома Entiy ми встановлюємо Relationship ” краще, нiж суржик.
Але не можу нав’язувати свiй погляд.
Парням же потом работать на мировой фабрике IT, а не только во Львове.
извиняюсь за пафос.

вот поэтому выпускники и не находят места по специальности, ибо инфу и так не упомнить, не успеть за всем, а тут еще каша в терминологии.
например, я в шоке от перевода термина “Activity == Операция” в доке по Андроиду.
потому русскую доку обычно читают когда больше нету другой.
то же относится и к украинской техн документации.

Чи Ви радите давати шаблони чи не давати? Design Patterns?
думаю что ДА.
Fowler “Patterns of Enterprise Application Architecture” 2002
GoF
И неплохо-б упрощать, делать все доходчиво. Это непросто.
Базовых паттернов по GoF немного, каждый как картинка. Важно только “сфотать” красиво, чтоб в памяти осталось.

Меня коробит, когда переводят например Flyweight как Приспособленец (зачем?).
Лучше же для примера просто рассказать что такое Cursor (неважно где, в Джава, Оракле)

Хм... Дивлюся у вікі визначення суржика, і там пишуть, що суржик це мова, яка є сумішшю кількох мов і отже не може розглядатись як чиста (літературна). А потім Вашу фразу [«Між цими двома Entiy ми встановлюємо Relationship » краще, нiж суржик] і мені здається, що чисто з позицій логіки ви кажете, що суржик краще ніж суржик... Але це я так. Я на справді розумію вашу думку і погоджуюсь, що певна проблема є, але введення ще одного суржику (українсько-англійського) навряд чи вирішить проблему і навчальні програми із таким суржиком не підпишуть. Я взагалі за викладання англійською усіх спец. дисциплін, однак цього теж ніхто не підпише...

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

практически нереально не нарушить грани которые отделяют близкие понятия, и сложно сохранить взаимосвязи.

>> в Україні уже 4 роки як готують спеціалістів з програмного забезпечення

Можно отсюда по-подробнее, пожалуйста ?

Звісно. Не знаю, які саме Вас подробиці цікавлять, тому наведу текст зі сторінки моєї кафедри.

Бакалаврат Програмна інженерія 6.050103
Програмна інженерія" (software engineering, инженерия программного обеспечения) — це новий в Україні напрямок навчання, поява якого — потреба часу.
В бакалавраті «Програмна інженерія» готують фахівців з усіх аспектів створення, супроводження і використання програмного забезпечення будь яких комп’ютерів.
Студенти вивчають розробку програм в контексті різних технологій, виходячи з інженерних засад.

Мета інженерії програмного забезпечення — проектувати, створювати та супроводжувати велике програмне забезпечення (мільйони програмних команд) у заданий термін, не витративши зайвих грошей, досягаючи потрібної якості. Для цього студенти навчаються структурному і об’єктно-орієнтованому аналізу та проектуванню, тестування, веріфікуванню, супроводженню оцінки вартості програмного забезпечення і його адмініструванню. Інженерія програмного убезпечення — це багатомільярдна з точку зору інвестицій галузь економіки будь —якої розвиненої держави. Тому студенти навчаються вирішувати у колективі завдання обґрунтування, планування, забезпечення економічної ефективності, якісної та своєчасної реалізації проектів.

Професійна кваліфікація випускника — фахівець з розробки та тестування програмного забезпечення.

Навчальний план бакалаврату «Програмна Інженерія» (csfnau.kiev.ua/...ngineering.XLS

Підготовку за цим напрямком ведуть усі провідні технічні ВУЗи України.

Коментар порушує правила спільноти і видалений модераторами.

Бакалаврат Програмна інженерія 6.050103
___________________________________
Там дается теория устаревшая лет на 20... никакой практической пользы курс не дает, разве что поверхностно.

ИМХО

Хотите научить чему то полезному давайте практику и ничего кроме практики, а для этого нужна привязка к конкретному языку или Java или C# или что то еще.

ИМХО

Може взагалі нічого не давати? Може просто видати диплом, та й по тому. Все одно у тренінг центрах навчать за місяць клепати код на С++ та С#. А більше й не потрібно нічого. А коли наші західні колеги з трохи ширшим кругозором навчаться цей самий код генерувати автоматично, то нашим колишнім студентам не залишиться нічого як піти торгувати помідорами.

> > навчаться цей самий код генерувати автоматично

не кажіть дурниць., а ще і викладач:)

Архітектуру ПЗ розбиваємо на: архітектуру взаємодії із зовнішніми компонентами, архітектуру захисту ПЗ, архітектуру бази даних (сховища даних), архітектуру транспорту даних, архітектуру самого ПЗ, архітектуру розгортання ПЗ і.т.д

Коментар порушує правила спільноти і видалений модераторами.

Коментар порушує правила спільноти і видалений модераторами.

Підписатись на коментарі