Базовая кафедра JetBrains будет поддерживать новую специализацию “Средства анализа и разработки программного обеспечения” для студентов 3-4 курса бакалаврской программы “Программная инженерия”. Планируется, что первый набор на специализацию состоится уже в 2021-2022 учебном году. Также преподаватели кафедры будут вести несколько факультативов: “Язык Kotlin”, “Неклассические логики” — и практические занятия по программированию для первокурсников.
Конец программной инженерии и последний методист
Это перевод статьи профессора Бертрана Мейера из блога Communications of the ACM.Статья относительно недавняя (по сравнению с предыдущим переводом).
Кроме того, что Бертран Мейер известен большинству специалистов как создатель языка программирования Eiffel и идей контрактного программирования (design by contract), он является почетным доктором и заведующим кафедрой ИТМО, преподает в университете Иннополис. И прекрасно владеет русским языком. ;)
Тема программной инженерии никогда не была особо популярной. Начиналось эта область как «методология программирования», что вызывает пред взором образ этакого бородача среднего возраста. Призывающего вас, с голландским, швейцаро-немецким или оксфордским акцентом, покаяться и встать на путь истинный. Охваченного (перефразируя Марка Твена) навязчивым страхом того, что кто-то, где-то может и на самом деле получать удовольствие от программирования.
Но так было в давние времена. За некоторыми исключениями, одно из которых будет упомянуто ниже, если кто и продолжает изучать методологии программирования, занимается он этим уже в мире agile, там, где решающие доводы часто начинаются с фразы «Я всегда говорю…» (Пример со страницы консультанта: «я всегда говорю команде: ‘Мне хотелось бы, чтобы [пользовательские] истории были небольшими, умещались в одну итерацию, однако такой путь не всегда приемлем»). Дейкстра, бывало, апеллировал к интуиции, однако подтверждал ее строгими концептуальными доказательствами.
Делу время, потехе час! Тезисы «мифического человеко-месяца» Фредерика Брукса, в пословицах и поговорках
Время — судья
Книга “мифический человеко-месяц”, заслуживает того, чтобы её читали и перечитывали, издавали и переиздавали. В 2025 году, а он не за горами, будет 50 лет первому изданию. Т.е. проверка временем пройдена. В 1995 году вышло юбилейное издание (ждём юбилейного издания 2К25), в предисловии к которому, автор, помимо прочего, сообщает:
Работая над обзором и обновлением книги «Мифический человеко-месяц», я поразился, как мало тезисы, заявленные в ней, были подвергнуты критике, доказаны или опровергнуты текущими исследованиями и опытом в инженерии ПО. Теперь для меня оказалось полезным каталогизировать эти тезисы в сырой форме, лишённой подтверждающих аргументов и данных. В надежде, что эти голые утверждения привлекут аргументы и факты для доказательства, опровержения, обновления или уточнения, я включил этот план в главу 18.
Кто празднику рад, тот накануне пьян
И я подумал, а почему бы и мне не составить свой список тезисов этой книги, в рамках подготовки к пятидесятилетнему юбилею. Но в форме не просто набора тезисов, а в форме пословиц, поговорок и т.д.
В споре рождается истина
А цель всё та же что у Брукса, ещё раз обратить внимание, и привлечь новые аргументы, доказательства, опровержения или уточнения.
А заодно расслабиться, и повеселиться. Не воспринимайте написанное слишком буквально — без смешного нельзя понять серьёзное.
Почему чтобы переместить кнопку, нужно две недели
Допустим, мы строим пирамиду из кирпичиков Lego размером 2x2 блока. Сколько потребуется времени на создание MVP (minimum viable product) пирамиды? Столько, сколько требуется для установки одного кирпичика! Допустим, это 1 секунда. То есть мы создали MVP пирамиды за 1 с. Сколько потребуется времени на реализацию v1? Нам нужно установить ещё три детали на уровне 0 и одну на уровне 1. Ещё 4 детали, то есть ещё 4 секунды. А для версии v2? Ещё пять деталей на уровне 0, три детали на уровне 1 и одна на уровне 2 — суммарно девять деталей и ещё девять секунд.
Программирование — это материализация идей
Основной тезис этой статьи: Разработку программного обеспечения следует рассматривать как материализацию идей посредством трансформации ментальных моделей в программный код.
В статье описывается парадигма материализации идей в программной инженерии (engl.: RPSE: Reification as Paradigm of Software Engineering).
Образование программисту – Что? Где? Когда?
Привет, Хабр! Уже много сказано об образовании, в частности для программистов, о программах, что лучше подходят или не подходят, но каждый год ситуация меняется и как бы грустно не было, в этом надо разбираться (будь ты абитуриент или работодатель). Очень важно начать свой путь именно с выбора alma mater
… Прошу под кат всех, кого не испугает длинная статья по теме.
Почему вы должны думать о функциональном программировании
Почему вы должны думать о функциональном программировании? Давайте ответим на следующие вопросы:
- всегда ли ваши проекты выполняются в определенные сроки?
- Были ли у пользователей какие-либо жалобы?
- Поддержка проекта никогда не занимала много времени?
- Новый функционал всегда удачно вписывается в существующую архитектуру?
Если ответы на все вышеупомянутые вопросы положительные, вам не нужно ничего менять, ваша команда — редкий пример гармоничного персонала, методологии и инструментов. В противном случае вы должны быть открыты для новых подходов к решению ваших проблем, включая критический взгляд на используемые технические средства и языки программирования.
Изменение требований к проекту — ключевая проблема разработки ПО
Шаги по разработке большой компьютерной программы для доставки заказчику
Иллюстрация выше — из статьи д-ра Уинстона Ройса «Управление разработкой больших программных систем» 1970 года. Считается, что это первое в программной инженерии описание модели водопада. Диаграммы д-ра Ройса разошлись по сотням учебников и статей. Но часто забывают тот факт, что изобретатель водопада сразу написал: «Эта конкретная реализация рискованна и влечёт за собой неудачу».
Мы разрабатываем программное обеспечение, чтобы удовлетворить потребности какого-либо клиента, пользователя или рынка. Задача программной инженерии как области компьютерных наук — сделать эту разработку предсказуемой и экономически эффективной.
Прошло уже более 50-ти лет с момента проведения первой конференции IFIP по программной инженерии, и за это время предложено немало различных методик, процессов и моделей, призванных помочь разработчикам достичь этого предсказуемого и экономически эффективного процесса. Но и через полвека у нас те же проблемы, что и всегда: опоздания, неудовлетворительные результаты и полные провалы проектов.
Современные технологии проектирования ПО в контексте теории коммуникации и метода декомпозиции
Неплохая статья о преподавании программной инженерии
Есть информация, полезная любому разработчику. Некоторые цитаты:
"Заблуждение 3: Планирование в программной инженерии осуществляется хуже, чем в других областях
[...]
Флайвберг, Брузелиус и Розенгаттер приводят примеры нескольких известных проектов с крупными перерасходами бюджетов:
Суэцкий канал (1869 год) — перерасход на 1900%;
Сиднейский оперный театр (1973 год) — перерасход на 1400%;
«Конкорд» (первый полет в 1969 году) — перерасход на 1100%;
Панамский канал (1913 год) — перерасход на 200%;
Бруклинский мост (1883 год) — перерасход на 100%."
Говорит ли ваш код по-русски?
Да, это пока не широко распространено. Обработка естественного языка еще недостаточно развита и не интегрирована с разработкой. Также, как нет и удобных способов интегрировать код с поиском или виртуальным помощником (таким как Siri). Голосовые команды имитируют GUI пути (щелчок-открыть-щелчок). Семантический Веб пытается познакомить приложения со смыслом, но все еще не может достигнуть широкой аудитории. Behavior-driven development (BDD) полагается на DSL (предметно-ориентированный язык), который близок к естественному, но этого все еще недостаточно, чтобы научить ваш код говорить.
Однако ваш код может взаимодействовать с естественным языком уже сегодня, правда не используя существующие подходы. Современные технологии не понимают естественный язык и непонятно, когда это станет возможным. Поэтому нам необходим иной подход:
- который будет адаптирован к естественному языку
- которому будет легко обучить широкий круг людей
- который может выступать связующим звеном между естественным языком и компьютерными сущностями
- который сможет создавать окружение в как можно большем количестве областей программной инженерии
Может ли рассуждать ваш код?
Когда мы думаем о рассуждениях (reasoning) в программировании, первое, что приходит в голову — это логическое программирование и подход базируемый на правилах (rule-based), экспертные системы и системы управления бизнес-правилами (business rule management systems, BRMS).
Общераспространенные мультипарадигмальные языки практически не включают эти подходы, хотя и работают с ними посредством библиотек и интерфейсов. Почему? Потому что эти языки не могут включать себя формы, которые в некотором смысле противоречат их сути. Популярные языки программирования обычно работают с детерминизмом (ожидаемые данные, сценарии использования, и т.п.), в то время как подходы, использующие рассуждения, обычно работают с неопределенностью (непредсказуемые данные, сценарии использования, и т.п.). Рассуждения (reasoning) будет различным в обеих случаях тоже. В первом, рассуждает архитектор или разработчик, во втором же рассуждает машина вывода/правил (reasoning/rule engine).
Разыменование нулевых указателей больше не проблема
Дефект, который справедливо считается «чумой» современного программирования преодолим. Предлагаем ознакомиться с переводом статьи Бертрана Мейера, французского учёного, создателя языка программирования Eiffel, приглашенного профессора и руководителя Лаборатории программной инженерии Университета Иннополис. Оригинал статьи опубликован в журнале Сommunications of the ACM.
Вонючие дипломы или стальное колечко?
Первый вариант висячего моста в США, в штате Вашингтон через пролив Такома-Нэрроуз, который разрушился 7 ноября 1940 года из-за недоучёта ветровой нагрузки и явления механического резонанса. Восстановленный мост был открыт в 1950 году.
«Вонючие дипломы или стальное колечко?» — так называется завершающий параграф одной из глав книги «Профессиональная разработка программного обеспечения». Рекомендую тем, кто занимается разработкой программного обеспечения и тем, кто пользуется программным обеспечением и является заказчиком — всему ИТ сообществу и не только.
Давно хотел выложить этот небольшой параграф (как-нибудь еще пару отрывков из книги выложу), но не было повода. И вот произошло событие, которое заставило меня это сделать. А произошло вот, что: «В Волгограде сильнейший ветер и волны раскачали один из самых больших мостов через Волгу».
Вонючие дипломы или стальное колечко?
В Канаде инженеры, получающие диплом по окончании обучения по аттестованным инженерным программам, при выпуске получают стальное кольцо. С 1923 года это кольцо вручается на закрытой церемонии, которую разработал Редьярд Киплинг. Традиция гласит…
Программная инженерия в НИУ-ВШЭ, абитуриентам
Приветствую молодую часть Хабрахабра.
Как вы можете догадаться из названия топика, речь пойдёт об абитуриентах, кто в эти выходные делает выбор — МГУ или ВШЭ, а может между чем-то ещё.
Я успешно отучился 2 (UPD: 4) курса на факультете программной инженерии ВШЭ, давно хотел написать небольшой рекламный пост.
Рекламщик из меня плохой, да и вопросов для обзора придумать самостоятельно не смог.
Зато в эти дни меня часто стали спрашивать примерно так
Привет! Ты с ПИ ВШЭ? Если да, то можешь ответить на несколько вопросов по поводу ПИ (я абитуриент, надо определиться окончательно в ближайшие дни).
И я подумал, почему бы не ответить подробно и не выложить на хабр. Вопросы довольно специфичные и относятся к первым двум курсам.
Предполагается, что вы уже знакомы с НИУ-ВШЭ и, в частности, с факультетом ПИ.
Данная статья была актуальна пару лет назад, сейчас многое изменилось в лучшую сторону, а ещё Яндекс и Высшая школа экономики открывают факультет Computer Science.