Основы UML. Диаграммы последовательности

sequence-erlang-process-example

Диаграммы последовательности (sequence diagram) являются видом диаграмм взаимодействия языка UML, которые описывают отношения объектов в различных условиях. Условия взаимодействия задаются сценарием, полученным на этапе разработки диаграмм вариантов использования [1]. Существуют различные взгляды на применение этого вида диаграмм: Фаулер предлагает строить диаграммы последовательности для визуализации наиболее сложных отношений на диаграмме классов… Read more »

Процесс ICONIX. Диаграммы пригодности

robustness_use_case_1

После построения диаграмм вариантов использования и их согласования с заказчиком, процесс ICONIX предлагает приступить к разработке диаграмм пригодности (робастности, rubustness diagrams) [1, 2]. Гради Буч не использует этот вид диаграмм, однако он все равно просматривает каждый вариант использования и пытается выделить объекты, после чего переходит сразу к построению диаграмм взаимодействия… Read more »

Основы UML – диаграммы использования (use-case)

use-case-include-example

Это первая статья из цикла про методологию ICONIX, посвящена UML-диаграммам вариантов использования. В публикациях и книгах по ICONIX, use-case диаграммы обычно описываются очень бегло, а в книгах по UML – слишком подробно. Я постараюсь сделать это настолько подробно, чтобы можно было приступить к использованию диаграмм, но при этом не было… Read more »

Раскрутка и монетизация блога

advertur

С момента публикации последнего отчета о развитии блога прошло полтора года, за это время я написал лишь 9 новых статей (среди них два фотоотчета). Тем не менее, посещаемость блога значительно выросла – в настоящее время блог посещает более 500 уникальных пользователей в сутки. Меня несколько раз спрашивали знакомые в чем… Read more »

Введение в логическое программирование (Prolog)

prolog backtracking example

На блоге я публиковал ряд статей по логическому программированию, а также разбирал решения задач на языке Prolog. Недавно я заметил, что из всего этого могла бы получиться полноценная методичка если добавить введение. Введение написано так, чтобы после его прочтения Вы смогли начать программировать на Prolog, более строгой с математической точки… Read more »

Паттерны MVC и Publish-Subscriber

Про шаблон проектирования MVC (Model-View-Controller, Модель-Представление-Контроллер) написано множество статей. Однако, периодически я все равно встречаю непонимание и вопросы: “зачем это надо и для чего все так усложнять?”. Попробую ответить на них. Кроме того, в статье описан паттерн Observer (Publish-Subscribe, наблюдатель, издатель-подписчик), часто применяющийся для организации взаимодействия модели и представления в… Read more »

Поход в национальный парк Ергаки (фото)

Mramornii_ waterfall

По парку мы гуляли с 11 до 20 июля – это лучшее время для походов в Ергаки, т.к. чуть позже в горах выпадет снег и некоторые перевалы станут недоступны (как в прошлый раз). Наш маршрут можно просмотреть по карте парка Ергаки. В связи с активностью медведей, в Ергаки действовал ряд… Read more »

SOLID принципы. Рефакторинг

Dependency_Inversion_Principle_example

Любая полезная программа постепенно изменяется, в нее вносятся новые возможности. Очевидно, что с кодом что-то не так, если для небольшого изменения приходится переписывать значительную часть системы. Под чистым кодом понимают код, который обеспечивает удобство сопровождения и безболезненность внесения изменений. Чистый код должен быть не только оформлен определенным образом [1], но… Read more »

Рекурсия в программировании. Анализ алгоритмов

merge-sort_flowchart

Рекурсия – это свойство объекта подражать самому себе. Объект является рекурсивным если его части выглядят также как весь объект. Рекурсия очень широко применяется в математике и программировании: структуры данных: граф (в частности деревья и списки) можно рассматривать как совокупность отдельного узла и подграфа (меньшего графа); строка состоит из первого символа… Read more »

Анализ сложности алгоритмов. Примеры

asymptotic notation_Omega

Алгоритм – это точное предписание, однозначно определяющее вычислительный процесс, ведущий от варьируемых начальных данных к искомому результату [1]. При разработке алгоритмов очень важно иметь возможность оценить ресурсы, необходимые для проведения вычислений, результатом оценки является функция сложности (трудоемкости). Оцениваемым ресурсом чаще всего является процессорное время (вычислительная сложность) и память (сложность алгоритма… Read more »

Юнит-тестирование. Пример. Boost Unit Test

Test_Driven_Developing_model

Разработка и поддержка программ невозможна без внесения изменений в существующий код. Однако, всякое изменение сопряжено с возможным внесением ошибок. Чем больше и сложнее проект – тем более нетривиальным образом изменения могут сказываться на работе подсистем. В связи с этим, любое изменение кода требует проведения тестирования. В статье описываются: теория unit-тестирования;… Read more »

Фотографии с охоты в Бирилюсском районе

Mendel river

В середине сентября ездил на охоту. Находились мы в этих координатах 57.595091 широты, 90.553788 долготы. Координаты примерные – взял с карт Google, но находится это на 15км севернее пос. Полевое.