НовостиОбзорыСобытияIT@WorkРеклама
Идеи и практики автоматизации:

Блог

Будущее программных архитектур

Паттерны проектирования и HTML5, аджайлы и Windows 8, архитектурные стили и самые крутые языки программирования обсуждались в октябре на шестой ежегодной конференции по программным архитектурам Software Architect 2012.

[spoiler]Два дня и несколько десятков выступлений можно разбить на несколько потоков. В каждом из них отмечу ключевые акценты, которые делали выступающие.

Управление требованиями.
Невозможно учитывать меняющиеся требования или выполнять рефакторинг проекта, если практика разработки не включает в себя рефлексивные моменты.

Что система будет делать? На это не ответить простым сбором требований или детализированным ТЗ. Да и сами требования, которые часто возникают задним числом, подчас сложно выделить в отдельные элементы, удобные для реализации.
Требования -- это не то, что может быть формально учтено и подсчитано, поэтому при их формировании надо использовать хотя бы несколько разных практик, обязательно включая постоянное взаимодействие клиента и заказчика.

Теорию сложности пора применять не только к колониям муравьев, но и к интернет-проектам.

Аджайлы.
Не стихают, и даже разгораются сильнее, холивары между поклонниками scrum, lean, kanban, crystal. И даже сторонники водопада продолжают (причем весьма неплохо) сражение за место под цифровым солнцем.

Разработка софта как спорт подходит к концу, и успех проекта уже давно не связан с его "деталями реализации".

Общеизвестно, что методы в объектах надо делать компактнее и внедрять повторность. Полезно и само-документирование, когда код сам рассказывает о реализуемых процессах, однако часто делает это неполноценно, поэтому требуются более формальные практики такого документирования.

Technical debt. Что лучше -- делать чистый качественный код долго и дорого, либо грязный -- быстро и с большим количеством ошибок, которому потом присущи высокие накладные расходы на сопровождение?

Архитектурный стиль -- важный момент при проектировании системы. Какой набор шаблонов проектирования будет выбран? От этого зависит многое. Но мы не знаем того, что мы не знаем.

Проектирование.
Активно развиваются альтернативы классическим подходам "UI-клиент -- middleware (обработка сообщений, кэширование) -- СУБД".

Паттерны проектирования в практических проектах взаимодействуют достаточно сложными способами, реализации их обычно отличаются от стандартной, поэтому требуется работа по выявлению мета-паттернов, формализующих подобные взаимодействия.

Развитие модели RESTful (когда сервер не знает предыстории взаимодействия с клиентом, и легко масштабируется) на схожий, но с определенными отличиями, подход Resource API в веб-сервисах.

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

Какие мобильные клиенты лучше -- "родные" (куда решил двигаться Фейсбук) или веб?

.NET для айфонов и андроидов. NodeJS для .NET. jQuery и HTML5. ASP.NET MVC.

Model-View-ViewModel и ее опенсорсная реализация для браузеров knockout.js.
Она позиционируется как своеобразная высокоуровневая альтернатива jQuery.

СУБД.
Cassandra, MongoDB, Neo4J как представители трех концептуально различающихся трендов в мире NoSQL.

Классическое программирование.
Windows 8. WinRT. Unit-тесты в новой Visual Studio.
Асинхронное программирование и C# 5.
Microsoft Roslyn -- компилятор как сервис.

Clojure -- самый крутой язык программирования для JVM. Динамически типизированный, функциональный, поддерживает транзакционную память. Компактно и элегантно реализует непревзойденный пока Lisp-стиль программирования.

Краткое резюме.
Будущее программной разработки -- это мобильность, аджайлы, RESTful APIs иже с ними, паттерны проектирования, NoSQL, .NET, функциональное программирование и общий уход в альтернативность классическим архитектурам (подальше от многозвенности, императивного программирования, реляционности SQL и standalone-программ)…