Паттерны и антипаттерны в стандартах для разработки программного обеспечения

А.В. Юрченко
ЗАО «ЕС-лизинг»,
г. Москва


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

Если рассматривать что именно представляет собой паттерн, то существует тесная корреляция между понятием паттерна и понятиями «лучших практик», или «стандартов». Всегда существовали определенные методы для решения каких-либо задач, и многие из этих методов, со временем, превратились в постоянные, повторяемые практики, которые были зафиксированы как стандарты. Таким образом, термин паттерн является синонимом для «лучших практик», которые часто становятся стандартами.

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

Допустим, что возникла необходимость развивать паттерны до такого уровня зрелости, что они могли стать стандартами, или стандартными технологическими процессами, которые бы представляли лучшие практики.

Стандарты представляют общепринятые и широко распространенные практики, которые определяют цели и задачи для достижения определенного результата. С этой точки зрения, ролью паттернов в разработке стандартов является ответ на вопрос – как паттерны должны быть улучшены до уровня стандартов, чтобы обеспечить им широкое использование? Второй вопрос – действительно ли паттерны представляют результат такого инновационного мышления и добавляют столько преимуществ технологическим процессам, что могут претендовать на роль стандартов?

Если проанализировать идею превращения паттернов в стандарты, то на лицо явные выгоды для организаций, которые будут их использовать. Наиболее очевидная выгода в том, что паттерны доступны широким слоям желающих (внедрение обычных стандартов зачастую стоит денег). Они содействуют пониманию, эффективности, экономии по различным параметрам в виде повторяемых, общепризнанных методов. Институционализация таких практик и методов дает выгоды всем, кто занимается разработкой ПО.

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

Другой подход к разработке стандартов состоит в согласованном мышлении, фокусировании на основе содержимого стандарта, т.е. том, что будет являться общими принципами для всего. Такой подход не пытается сделать все и для всех, он предоставляет компромисс для всех участников процесса. Именно при таком подходе наиболее интересно и выгодно использовать паттерны и антипаттерны.

Стандарты обычно являются кратким содержанием лучших методов работы и предлагают апробированные методы, которые уже использовались разработчиками, и которые уже доказали свою ценность. Чтобы эффективно перенести паттерны и антипаттерны в среду разработки стандартов, необходимо выяснить какие конкретные цели стоят перед паттернами антипаттернами, а затем создать дополнения к стандартам. Такой подход позволит спуститься на специфический уровень деталей, и позволит создать связи между разными дисциплинами (КУ и прикладная дисциплина, для которой разрабатывается стандарт, например анализ данных), чтобы создать необходимую точность описания деталей для достижения целей этих дисциплин. 


Назад к списку