Оптимизирующие компиляторы, одни из самых сложных сегодня программ, продолжают и дальше усложняться, а потому компаниям-разработчикам приходится выделять все больше ресурсов на их поддержку и развитие. Чем интересны современные компиляторы и, в частности, оптимизирующий компилятор Intel, какие основные идеи и технологии повышения производительности приложений сегодня используются?
Что может происходить в один и тот же день в Федеральном бюро расследований? Команда спецназа спасает заложника, аналитики изучают разведданные о террористической угрозе, оперативники проводят арест преступника, а в подвале здания штаб-квартиры ФБР в Вашингтоне сотрудники работают над созданием основанной на «скорые» (agile) методах системы, призванной изменить применяемые ведомством принципы обработки данных.
В проектах разработки программного обеспечения с открытым кодом применяются многие фундаментальные принципы программной инженерии, и, наоборот, существование OpenSource-приложений, не оставляющих ниши для конкуренции, наводит на мысль о том, что традиционной программной инженерии есть чему поучиться у разработчиков ПО с открытым кодом.
Традиционно люди покупали программное обеспечение, руководствуясь теми же соображениями, что и при покупке любых товаров, — необходимостью или желанием. Иногда эту необходимость подсказывает третье лицо, часто это поставщик товара, однако «компьютеризация» закончились — отныне ИТ не применяются только для решения задач, уже решенных ранее.
Agile-методологии проникли в российскую индустрию разработки программного обеспечения уже несколько лет назад, и имеется немало отчетов и статей о том, как приступать к внедрению Scrum или других разновидностей agile-методологий и практик. Однако что делать дальше, после того как проблемы начального этапа остались в прошлом, а работа по принципам Scrum стала для команды нормой?
Отраслевые отчеты консультантов, бизнес-журналы, блоги и книги – все пытаются рассказать разработчикам о прелестях облаков, а провайдеры соответствующих сервисов, в свою очередь, изо всех сил расхваливают достоинства новой модели, однако имеется совсем немного информации о том, как разрабатывать программы для облаков.
Приняв участие в создании успешных платформ категории Open Source, производители программного обеспечения могут эффективнее конкурировать, предлагая различные компоненты стека своих технологий и расширяя тем самым свой целевой рынок.
С высоких трибун сегодня звучат призывы к модернизации управления экономикой на разных уровнях, что, казалось бы, должно означать повышение спроса на программное обеспечение, однако в нашей стране формированию развитой отрасли разработки ПО мешают устоявшиеся иллюзии и нерешенные проблемы.
Фактически провал или успех наших повседневных дел в той или иной степени определяется корректностью функционирования ПО, что ставит современное общество в зависимость от программных ошибок.
Еще несколько лет назад для полноценного управления процессом разработки программного обеспечения требовались существенные инвестиции либо в коммерческие продукты, либо в создание собственных решений, что для небольших развивающихся компаний означало низкое качество выпускаемого продукта или высокую стоимость входа в отрасль. Развитие систем категории Open Source позволило добиться этой цели практически бесплатно, однако остается проблема интеграции систем.
Несмотря на постоянное повышение эффективности компьютеров продуктивность человеческого труда увеличивается весьма скромными темпами, особенно это касается производительности труда программистов. Ситуацию могут исправить такие методологии как INTSPEI P-Modeling Framework, обратная семантическая трассировка и др., позволяющие оптимизировать этапы процесса создания программного обеспечения, которые трудно поддаются автоматизации.
Погрязнув в деталях, теряешь перспективу. И где уж разглядеть то, что может в корне изменить наше представление о процессе параллельного программирования?
Не всякий, даже самый интеллектуальный, компилятор сможет в последовательной программе распознать скрытые возможности параллельного выполнения, но и далеко не каждый программист способен распараллелить свою программу лучше компилятора.
Разработка программного обеспечения на разных его фазах всегда сопряжена с принятием серьезных управленческих и инженерных решений. Эффективность выбора таких решений можно повысить за счет использования формальных методов - объективный анализ фактов, обоснование сделанных выводов и оценка последствий различных действий позволяют свести к минимуму риски, связанные с разработкой программного продукта.
Подавляющее большинство усовершенствований в методах и инструментальных средствах разработки программного обеспечения касаются создания новых приложений, а это означает, что организации с солидными активами, созданными при помощи когда-то популярных технологий, могут перейти на новые приложения или компоненты, лишь приложив изрядные усилия.
Любая профессия базируется на совокупности теоретических знаний и практического опыта — если удается эту основу формализовать и документировать, то подобный свод знаний становится точкой опоры для отрасли. Яркий пример этому — SWEBOK, Руководство к своду знаний по программной инженерии.
Вслед за Айваром Якобсоном и Майклом Кузумано Москву посетил создатель концепции экстремального программирования (Extreme Programming, XP) Кент Бек.