Архивы автора

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

use-case-include-example

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

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

advertur

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

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

prolog backtracking example

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

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

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

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

Dependency_Inversion_Principle_example

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

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

merge-sort_flowchart

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

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

asymptotic notation_Omega

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

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

Test_Driven_Developing_model

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

Теория чистого кода. Стиль кодирования

doxygen_class_diagram

Чистый код должен быть эффективным, простым для восприятия и сопровождения, гибким и надежным. Приведенные требования зачастую противоречат друг другу, поэтому для написания чистого кода в каждом конкретном случае надо идти на некоторый компромисс. Нередко опытные программисты пытаются сформулировать советы по написанию чистого кода [1, 2, 3, 4, 5], которые зависят от используемого языка программирования, но …

Блог. Эксперименты. Монетизация

average-daily-number-of-visitors

С момента публикации предыдущей статьи о блоге прошел почти год — за это время выросла посещаемость и вовлечённость пользователей. Кроме того, блог начал приносить хоть какой-то доход с рекламы (в районе 1000р в месяц), изначально я не ставил целью извлечение дохода, но немного поигрался с биржами. Я проводил с блогом эксперименты (покупал ссылки, баннеры, продавал …