Показаны сообщения с ярлыком требования. Показать все сообщения
Показаны сообщения с ярлыком требования. Показать все сообщения

воскресенье, 10 марта 2013 г.

Методология, свод знаний, процессный фреймворк, нотация, стандарт ... как тут не запутаться?

Почитал обсуждение на UML2.RU, по его мотивам решил немного порассуждать по этой теме. Собственно вопрос в том, что иногда возникает в головах путаница что есть что и как эти понятия с собой соотносятся. По-хорошему для того, чтобы бы не путаться следует создавать глоссарий (или использовать готовые, англоязычные, только иногда имеет смысл делать их value added перевод :-) ).

Если подходить формально, то МЕТОДОЛОГИЯ - это некий мета уровень, т.е. учение о конкретных методах познания объекта познания (по данным Википедии, другие источники не смотрел). Но  в практике ИТ как правило "так не заморачивваются" и под методологией часто понимают, что-то близкое к определению, которое дает глоссарий BABOK (A set of processes, rules, templates, and working methods that prescribe how business analysis, solution development and implementation is per­formed in a particular context). В этом определении смело можно заменить  фразу "business analysis, solution development and implementation" на что-то что более релевантное (вот словечко "подцепил", работая в MS ;-)) к конкретной области и оно станет универсально (в этом определении говорится скорее про методологию создания "РЕШЕНИЯ вообще", контекстом которого в нашем случае может быть и заказное ПО, т.н. интеграционное решение иди Enterprise Architecture - как вполне себе решение). Это определение, на мой взгляд, очень даже жизнеспособное. Примерами методологий вполне можно считать тот же SADT, и более специфично - в области создания "преимущественно программных решений" - условно RUP, ну и Agile (обобщенно). Тут конечно сразу же возникает термин "процессный фреймворк", к которому  скорее можно отнести тот же RUP. И это название даже более точно отражает  его суть, чем термин "методология". Думаю, что в данном конкретном случае принимая за основу определение от BABOK,  вполне можно называть тот же RUP - методологией. В любом случае,  исходя из вышесказанного, можно считать, что методология нас направляет на конечный результат, и говорит каким образом его можно достичь. При этом в большинстве случаев степень детализации описания методологии может различаться от МЕТОДОЛОГИИ к МЕТОДОЛОГИИ. А конкретный набор шагов, состав результатов и их содержимое могут быть подвержены существенной "кастомизации" при работе в конкретных условиях, на конкретном проекте и это отдельная работа.

Говоря о СВОДЕ ЗНАНИЙ, примерами которого являются тот же BABOK, SWEBOK, PMBOK, ... следует понимать, что свод знаний как правило менее конкретен (специфичен). Он выполняет роль сбора в одном месте всего, что мы знаем об определенной области деятельности. Вполне может быть, что на основании свода знаний может быть построена МЕТОДОЛОГИЯ. Другой вопрос, что зачастую методологии и своды знаний имеют множество "пересечений", но это просто нужно "принимать как есть", т.к. "nobody care about it".

Теперь мы добрались до НОТАЦИЙ. Если подходить неформально, то  под нотацией обычно понимается некий язык (чаще - графический), или структура, позволяющая унифицированным образом описать статическую и/или динамическую модель системы или ее части (в качестве системы может выступать и целая предметная область). Графическими нотациями является например семейство языков IDEF, или тот же UML, или BPMN. Нотации часто являются составной частью МЕТОДОЛОГИЙ, или МЕТОДОЛОГИИ используют для описания тот или иной язык (нотацию). Например, RUP использует UML, SADT - устойчиво ассоциирован с IDEF и т.п.
Говоря о вариантах использования (use cases) - следует четко определять контекст - о чем мы говорим, т.е. мы говорим о части языка UML или же о текстовых описаниях. Во избежании путаницы, далее речь пойдет о вариантах использования как о текстовых структурированных описаниях. Тот же К. Вигерс отводит место вариантам использования, как некой нотации, которая позволяет описывать пользовательские требования. Следует отметить, что пользовательские требования могут быть описаны разными способами, одним из которых (и достаточно эффективным в определенных ситуациях) являются варианты использования. В этом случае вполне можно согласиться с точкой зрения Вигерса о юзкейсах, как фактически о нотации.

Рассматривая СТАНДАРТЫ - тут все хуже ... :-). Стандартом в принципе может являться все из выше перечисленного. Другой вопрос СТАНДАРТОМ какого уровня - международным, государственным, отраслевым, корпоративным ... Говоря о требованиях и стандартизации, можно сказать, что в большинстве случаев имеются стандарты на содержание ДОКУМЕНТАЦИИ, которые содержат в себе требования. Тот же IEEE 830 или ГОСТ 34.602. Иногда даются рекомендации, как следует формулировать требования и как их следует разделять в документах.

понедельник, 13 декабря 2010 г.

Возвращаясь к вопросу о use cases и функциях ...

Читая форум UML2.RU, натолкнулся на дискуссию о том что функции системы дублируют юзкейсы, и вообще не понятно что есть что и для чего, кроме этого такие же вопросы иногда возникают у коллег по работе, и у заказчиков, для которых в силу специфики их систем, я разрабатываю еще и модель вариантов использования (Use Cases).... В данной заметке я решил дать краткое пояснение по данному вопросу, не слишком вдаваясь в формальные определения, а больше по сути вопроса.


Юзкейсы (Use Cases, варианты использования) - это взгляд с т.з.  пользователя на систему, который дает ответ на вопрос какие свои задачи (в терминах того же Коберна - цели) решает пользователь при помощи системы, и что при этом делает система в ответ на действия пользователя. Юзкейсы относятся к т.н. "пользовательским требованиям" (по "классификации" Вигерса).
Функции - это некие свойства системы, или нечто полезное, что может делать система, в т.ч. для внешнего по отношению к ней пользователя. Функции системы - это, если так можно выразиться, взгляд "изнутри" системы на ее окружение. Кстати, говорить о функциях системы можно только на этапе ее проектирования. Т,е. когда речь идет о том, что эти функции уже определены и мы их перечисляем, и поясняем механизм их реализации. На этапе требований - можно говорить только о ТРЕБОВАНИЯХ к функциям (или иначе - функциональным требованиям). Т.е. на этапе разработки требований, функций системы как самостоятельных артефактов еще нет, есть только требования к ним!

О разнице м/у юзкейсами и функциями. Юзкейсы не являются функциями а) по-определению б) по своей природе. Поясню на примере - юзкейсом для системы управления корпоративной печатью вполне может быть, например, "Распечатать документ" - это цель пользователя, явная и достаточно крупная. В то же время функцией такой системы может быть "Авторизация пользователя на устройстве печати посредством смарт-карты", или "Удаление заданий из очереди печати (после распечатки)", но таких юзкейсов у системы не будет (как минимум в данном контексте). Еще одной отличительной чертой является то, что функции, в отличии от юзкейсов, могут иметь жесткую иерархию, и могут быть декомпозированы (т.е. двигаясь вниз по иерархии - они будут детализировать "верхнюю" функцию).

Основной вопрос возникает как совмещать оба подхода при разработке требований к системам. И как не допускать явного дублирования. Тут есть несколько подходов.
Есть подход "a-la RUP", в котором юзкейсы могут рассматриваться как основа требований, и дальше разрабатывается только доп. спецификация - в которой описываются те аспекты (часть функциональных требований и нефункциональные требования), которые не затронуты юзкейсами и производится трассировка их на юзкейсы.
Есть подход Вигерса - где наряду с юзкейсами описывается полноценное SRS, в котором перечисляются именно функциональные требования и они так же, могут быть оттрассированы на юзкейсы.
Есть подход без использования юзкейсов - когда можно описать всю возможную функциональность в виде иерархического списка функциональных требований, и при этом вполне могут быть такие высокоуровневые функции (для той же системы управления печатью), как "Печать документа", "Копирование документа", и т.п, которые просто будут декомпозированы. А если при этом распределить эти функции по типам пользователей, то в принципе можно получить представление о том, каким пользователям какая функциональность доступна. При этом можно говорить о формулировке требований в формате "Система должна иметь возможность ..." и "Пользователь должен иметь возможность...". В этом случае можно высокоуровневыми требованиями сделать a-la пользовательские ("Пользователь должен иметь возможность..."), и декомпозировать их чисто функциональными ("Система должна иметь возможность ...").

В любом случае, если есть сомнение "to Use Case or not ...", следует четко понимать, какую дополнительную ценность принесут юзкейсы, не только для разработки требований, но и для проектирования, тестирования и проведения приемо-сдаточных испытаний. И исходя из этого принимать решение, какой из подходов использовать.

среда, 18 июня 2008 г.

Исследование Forrester Research "Selecting the Right Requirements Management Tool -- Or Maybe None Whatsoever"

Попалось на глаза исследование Forrester Research, датированное сентябрем прошлого года на тему выбора инструментария для управления требованиями, в котором инструментарий от MKS имеет очень хорошие позиции, по сравнению с Borland, IBM Rational (включая Telelogic) и др. ... Есть конечно у меня ряд вопросов, в частности по поддержке инструментариями MS Word и критериев ее оценки :-). Но тем не менее, думаю статью имеет смысл посмотреть всем интересующимся топиком. Собственно статья доступна по этой ссылке, только нужно будет зарегистрироваться http://www.gantthead.com/redirect/clickCount.cfm?ID=242678

суббота, 12 января 2008 г.

Дискуссия с приверженцами ГОСТ на одном из формумов

Забавно обсуждать процессы разработки ПО с людьми, которые считают что они работают в соответствии с ГОСТ и творчески подходят к его положениям :-). Оно конечно понятно, что творческий подход на то и творческий, но тем не менее ... В одном из форумов, где обсуждаются разработка документации по ГОСТам имел дискуссию с одним джентельменом, который вкратце описал таким образом их подход к использованию ARIS в процессе разработке ПО, который соответствует требованиям ГОСТ:
"В исходных данных описываем бизнес-процессы в модели AS-IS и на их основе формулируем требования в ТЗ. Если есть картинка, то сформулировать требования все равно, что два байта переслать.
Затем вместе с программистами описываем модель TO-BE и вставляем ее, соблюдая требования ГОСТ 34 серии (19 серии), в технический (рабочий) проект. Заказчик доволен и нам хорошо."


Как минимум напрашивается вопрос, в документации технического проекта по ГОСТ по-идее должны быть представлены технические решения, а не модели бизнес-процессов! О каком же соответствии ГОСТ в данном случае может идти речь?
Лишний раз убеждаюсь, что очень часто заказчики, которые требуют от разработчиков соблюдения ГОСТ, сами ТОЛКОМ ГОСТов не знают! ...
Мне например однажды один большой знаток ГОСТов из Газпрома сказал, что спецификации юзкейсов -- это уже технические решения. Хотя в тексте юзкейсов ни разу не встретилось слово "база данных" или описание элементов пользовательского интерфейса. Это кстати камень в огород ГОСТов, т.к. если сравнить тот же ГОСТ 34.602 и IEEE 830, то последний более внятен, и вызывает меньше повода для "фантазий" и "творчества". Да и вокруг ГОСТов не сформировалось сообщество, которое бы разработало методические рекомендации, тренинги и т.п., которое бы являлось источником методического обеспечения для разработчиков. А культура сформированная в отдельных НИИ/ОКБ и т.п. структур советского времени, практически утеряна (за редким исключением в оборонной промышленности).

четверг, 3 января 2008 г.

Книга по RequisitePro (!)

Вот откуда я узнал о ее существовании http://www.ibm.com/developerworks/rational/library/dec07/reader/excerpt.html

Как-то удивительно, что книга выпущена ТОЛЬКО в 2007 г. Хотя актуальна такая книга была в 2000-2005 гг -- в пик популярности Rational в России. Уже даже Telelogic выпустил ПЕРЕВОД книги по требованиям и DOORS в России пару лет назад, и только теперь IBM разродился :-). Хотя, допускаю, что дата выпуска не случайна, и призвана реанимировать упавший интерес к инструменту RequisitePro.

Признаюсь, что сам вынашивал планы в свое время написать что-то про работу с требованиями в ReqPro, и даже наивно надеялся на материальную поддержку со стороны IBM.