На понимание факта, что юнит тесты это не только инструмент борьбы с регрессией в коде, но также и отличная инвестиция в качественную архитектуру меня натолкнул топик, посвященный модульному тестированию в одном англоязычном .net сообществе. Автора топика звали Джонни и он описывал свой первый (и последний) день в компании, занимавшейся разработкой программного обеспечения для предприятий финансового сектора. Джонни претендовал на вакансию разработчика модульных тестов и был расстроен низким качеством кода, который ему вменялось тестировать. Он сравнил увиденный им код со свалкой, набитой объектами, бесконтрольно создающими друг друга в любых непригодных для этого местах. Также он писал, что ему так и не удалось найти в репозитории абстрактные типы данных, код состоял исключительно из туго переплетенных в один клубок реализаций, перекрестно вызывающих друг друга. Джонни, понимая всю бесполезность применения практики модульного тестирования в этой компании, обрисовал ситуацию нанявшему его менеджеру и, отказавшись от дальнейшего сотрудничества, дал напоследок ценный, с его точки зрения, совет. Он посоветовал отправить команду разработчиков на курсы, где бы их смогли научить правильно инстанцировать объекты и пользоваться преимуществами абстрактных типов данных. Я не знаю, последовал ли менеджер совету (думаю, что нет), но если вам интересно, что имел в виду Джонни и как использование практик модульного тестирования может повлиять на качество вашей архитектуры, добро пожаловать под кат, будем разбираться вместе.Читать полностью »
Рубрика «архитектура» - 31
Почему использование юнит тестов это отличная инвестиция в качественную архитектуру
2014-02-01 в 21:12, admin, рубрики: moq, tdd, unit test, архитектура, Программирование, тестирование, метки: moq, tdd, unit test, архитектураШпаргалка по шаблонам проектирования
2014-01-25 в 17:07, admin, рубрики: GoF, Анализ и проектирование систем, архитектура, паттерны, паттерны проектирования, проектирование, Проектирование и рефакторинг, разработка, шаблоны, шаблоны проектирования, метки: GoF, архитектура, паттерны, паттерны проектирования, проектирование, шаблоны, шаблоны проектирования
Перевод pdf файла с сайта http://www.mcdonaldland.info/ с описанием 23-х шаблонов проектирования GOF. Каждый пункт содержит [очень] короткое описание паттерна и UML-диаграмму. Сама шпаргалка доступна в pdf, в виде двух png файлов (как в оригинале), и в виде 23-х отдельных частей изображений. Для самых нетерпеливых — все файлы в конце статьи.
Под катом — много картинок.
Масштабировать просто. Часть третья — стратегии
2014-01-20 в 16:01, admin, рубрики: distributed computing, java, nosql, scalability, Анализ и проектирование систем, архитектура, архитектура приложений, Программирование, метки: distributed computing, nosql, scalability, архитектура, архитектура приложений, СОА В предыдущих частях (тут и тут) мы говорили об основных архитектурных принципах построения масштабируемых порталов. Сегодня продолжим разговор об оптимизации правильно построенного портала. Итак, стратегии масштабирования.
Читать полностью »
Назад, к технологиям верхнего палеолита, от любимых всеми REST, STATEless, CRUD, CGI, FastСGI и MVC
2014-01-20 в 7:58, admin, рубрики: api, cgi, crud, event loop, fastcgi, mvc, mvp, node.js, rest, RESTful, statefull, Анализ и проектирование систем, архитектура, Веб-разработка, метки: cgi, crud, event loop, fastcgi, model, mvc, mvp, node.js, rest, RESTful, statefull, архитектура «Только со смертью догмы начинается наука.»
// Галилео Галилей
«Я начал завидовать рабам. Они всё знают заранее. У них твёрдые убеждения.»
// х/ф Марка Захарова «Убить дракона» по мотивам пьесы Евгения Шварца
Уже пару лет и дня не проходит, чтобы я не услышал (или не прочитал) от людей, начинающих новые проекты, фразу типа «Возьмем серверный движок для REST API и MVC, и погнали». Сначала я думал, что у этих слов есть один источник, может книжку какую завезли во все магазины или где-то в топе поисковиков лежит статья, зомбирующая разработчиков. Если же выяснять у них, что они понимают под REST и MVC, то можно повредиться умом. Ну с MVC уже все ясно, об этом я уже давно писал, ничего не изменилось, только усугубилось, стоит набрать в Google Images «mvc» и мы увидим страшное, стрелочки в любые стороны. Ну а про REST отвечают следующее: ну как же, нам нужно из браузерного GUI и мобильного приложения вызывать серверные методы, например: setUserCity(userId, cityId) или calculateMatrix(data) или startVideoConverter(options, source, destination) а потом мы столкнемся с большой нагрузкой и архитектура REST все решит. Дальше я задаю вопросы, от которых глаза округляются уже у тех, кто недавно еще горел праведной верой, рвался в бой и точно знал, что к чему в этом мире. Теперь можно перейти к рассмотрению терминологической катастрофы, в эпицентре которой мы с вами пребываем.
Читать полностью »
Перевод книги Эдди Османи «Паттерны для масштабируемых JavaScript-приложений»
2014-01-17 в 9:59, admin, рубрики: javascript, архитектура, книга, книга на русском, проектирование, Проектирование и рефакторинг, метки: javascript, архитектура, книга, книга на русском, проектированиеВ какой-то момент меня очень удивило что потрясающая и понятная книга о проектировании JavaScript приложений от известного автора до сих пор не переведена на русский язык. Вместе с единомышленниками мы перевели все главы. Сейчас мы внимательно вычитали 5 из них и хотим их показать всем, кто интересуется JS. Каждую неделю мы обещаем публиковать по 2 главы.
Прочитать книгу можно на сайте, который мы специально для нее создали, следить за обновлениями можно по RSS и в твиттереЧитать полностью »
Масштабировать просто. Часть вторая — кэширование
2014-01-16 в 16:10, admin, рубрики: architecture, cache, java, scalability, Анализ и проектирование систем, архитектура, порталы, Программирование, метки: architecture, cache, java, scalability, архитектура, порталы, СОАВ предыдущей части мы говорили об основных архитектурных принципах построения масштабируемых порталов. Сегодня поговорим об оптимизации правильно построенного портала. Итак: первый вид оптимизации — локальный кэш.
Масштабировать просто
2014-01-15 в 14:53, admin, рубрики: architecture, java, nosql vs sql, Анализ и проектирование систем, архитектура, Программирование, метки: architecture, nosql vs sql, архитектура, СОА От B2C-порталов ожидается прежде всего масштабирование. К сожалению, масштабирование слишком часто объявляется вопросом Технологии — достаточно выбрать модную технологию и все проблемы решены. То, что это не так, может проявиться, позднее всего, уже в production mode (на рабочей системе).
Вместо того, чтобы махать технологической булавой, расскажу о том, как при помощи продуманной архитектуры и сознательного отказа от модели данных разработать высоко доступный (highly available), масштабируемый (scalable) портал. Первая часть опишет общие концепты, а возможные сценарии и их решения последуют.
Читать полностью »
All that merge: рибосомная архитектура программного кода
2013-12-21 в 15:35, admin, рубрики: merge, архитектура, ненормальное программирование, Программирование, метки: merge, архитектура
Все начинается с примера.Читать полностью »
Просто о сложном. Архитектура ПО
2013-12-05 в 6:47, admin, рубрики: архитектура, информационные технологии, Программирование, проектирование, Проектирование и рефакторинг, управление проектами, метки: архитектура, информационные технологии, проектированиеНедавно я написал:
Для программных продуктов еще не придумали адекватные инструменты визуализации. Об этом говорил еще Брукс, почти 40 лет назад. Поэтому разработчики ПО часто уподобляются слепым монахам из буддийской притчи.
Следствие #5. Необходимость постоянных коммуникаций участников разработки.
Из опыта. В среднем у каждого участника проекта разработки ПО на всякие разговоры уходит 50% рабочего времени. У нас это называется «синхронизация ментальных моделей».
И вот, как это обычно выглядит.
О стандартах мыслей свежих несколько
2013-11-13 в 11:47, admin, рубрики: IT-стандарты, Анализ и проектирование систем, архитектура, интерфейсы, проектирование, протоколы, спецификации, стандарты, управление проектами, метки: архитектура, интерфейсы, проектирование, протоколы, спецификации, стандарты Речь пойдет, о технических стандартах, т.е. протоколах, спецификациях, паттернах, конвенциях, интерфейсах, форматах данных, нотациях и других отраслевых и особенно внутренних нормах, которые мы используем или изобретаем при разработке программных систем. Очевидных вещей я не буду повторять, каждый знает, что стандарты — это хорошо и правильно, что они способствуют унификации и, следовательно, совместимости систем и их модулей. Надеюсь, мои обобщения опыта, в форме «заметок для себя», будут полезными и нетривиальными.
Читать полностью »