пятница, 15 мая 2009 г.

Стандарты, модели, методологии - краткий обзор

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

- Мы разрабатываем софт по ISO...
- А мы по RUP-у...
- А у нас всех на Agile переводят...
- Ой, а мы только спиральную модель используем...

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

Я мучаюсь этим вопросом уже некоторое время как. Но, кажется, наконец, истина где-то рядом...


Стандарты

Стандарт (от англ. standard — норма, образец) в широком смысле слова — образец, эталон, модель, принимаемые за исходные для сопоставления с ними других подобных объектов.

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

Виды стандартов:
* Международный стандарт
* Отраслевой стандарт
* Стандарт фирмы, стандарт производителя
* Стандарт качества
* Социальный стандарт

Системы стандартизации:
* ГОСТ
* ISO
* CMMI


Модели жизненного цикла

Что такое жизненный цикл, на пальцах объясняет Алексей Баранцев в своей статье "Жизненный цикл разработки программного обеспечения -- что бы это значило?"
А более сухое определение звучит примерно так:
Жизненный цикл информационной системы — период времени, который начинается с момента принятия решения о необходимости создания информационной системы и заканчивается в момент ее полного изъятия из эксплуатации.
Модель жизненного цикла — структура, определяющая последовательность выполнения и взаимосвязи процессов, действий и задач на протяжении жизненного цикла. Модель жизненного цикла зависит от специфики, масштаба и сложности проекта и специфики условий, в которых система создается и функционирует.
Модели жизненного цикла ПО:
* Водопадная
* Каскадная
* Спиральная

Чтобы предупредить нападки по поводу отсутствия инкрементальной или итеративной модели разработки, сразу приведу в пример цитату из SWEBOK.
Мартин Фаулер [Фаулер, 2004, с.47] пишет:
"Итеративную разработку называют по-разному: инкрементальной, спиральной, эволюционной и постепенной. Разные люди вкладывают в эти термины разный смысл, но эти различия не имеют широкого признания и не так важны, как противостояние итеративного метода и метода водопада."
А почему я разделила водопад и каскад - будет чуть позже в посте, посвященном специально моделям ЖЦПО.

Взаимосвязь стандартов и моделей

Стандарт регламентирует состав процессов жизненного цикла ИС. Он определяет структуру жизненного цикла, содержащую процессы, действия и задачи, которые должны быть выполнены во время создания ИС.

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

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

Взаимосвязь моделей и методологий

Опять же - словами из SWEBOK:
Организация ролей (ответственности членов проектной команды), детализация этапов жизненного цикла и процессов, определение активов (артефактов), значимых на разных этапах проекта, практики анализа и предупреждения рисков – все это вопросы уже конкретного процессного фреймворка или, как принято говорить, методологии разработки.

Методологии разработки ПО

И так плавно мы перешли к методологиям разработки ПО. Сейчас просто перечислю, что к ним можно отнести:

* RUP (Rational Unified Process)
* EUP (Enterprise Unified Process)
* MSF (Microsoft Solutions Framework)
* XP (eXtream Programming)
* RAD (Rapid Application Development)
* SCRUM
* FDD (Feature Driven Development)
* DSDM (Dynamic Systems Development Method)
* и др...

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

Всегда ваша,
Наташа Искорева (Густыр)

Комментариев нет: