Мы начинаем четвертую лекцию курса «Анализ требований к информационным системам». В первом модуле мы обсудим виды анализа, в которых применяется инженерия требований для решения прикладных задач. Требования, как мы выяснили, – это способ преобразования, который необходимо использовать для решения задач в конкретной деятельности, направленной на достижение результатов. Анализ – тип такой деятельности. Суть анализа – уменьшить суммарную сложность, представив ее в виде связанных рисков, каждый из которых решается за счет выполнения конкретных действий. Именно о типах анализа, каждый из которых направлен на решение проблем определенного контекста, мы и будем говорить в этой лекции.
Анализ как вид деятельности направлен на то, чтобы решить проблему, любую. Но в зависимости от того, какой контекст имеет проблема, к ней лучше подходить с специализированным инструментарием, то есть с набором методов и техник, которые позволят выработать точные и эффективные решения. Информационные технологии – комплексный, разносторонний вид деятельности, в котором много проблем и задач. Информационные технологии, как прикладной вид деятельности, содержит прикладной контекст. Этот контекст влияет на суть проблемы и подходы к ее решению. По мере эволюционирования информационных технологий сложилось несколько основных контекстов. Они продолжают формироваться и трансформироваться все время, но нужно сказать, что основные на данный момент известны и выявлены. Виды IT-анализа направлены на эти контексты и помогают решать конкретные задачи.
Лекция 4 и все ее модули будут именно про анализ. Мы внимательно рассмотрим процессный анализ, продуктовый анализ, бизнес-анализ, системный анализ и анализ данных. Каким-то видам анализа мы уделим больше внимания, каким-то меньше, но рассмотрим все. Мы поговорим о сферах их применения, специфике и выделим ценность, которую они несут. Мы обязательно свяжем анализ с артефактами проектирования и посмотрим на то, как они влияют друг на друга. Говоря про анализ, нужно помнить о том, что это деятельность, которая состоит из определенных работ и приносит результат после того, как выполняются определенные действия. Обо всем этом мы и будем говорить в лекции 4.
Этот модуль будет вводным. Мы постараемся дать общее понятие анализа и посмотрим на то, что лежит в его основе, каково его назначение, какие задачи он решает, где его место в разработке информационных систем. Анализ – общее понятие. Говоря об анализе, нужно осознавать, что в информационных технологиях не менее пяти разных общих видов анализа и каждый из них имеет свои артефакты, структуру, функции и сферу применения. Каждый тип анализа приносит свою ценность. Она обосновывается затратами на достижение результатов, которые были выработаны в результате проведения того самого анализа.
Процитирую компетентный источник: анализ – один из основных механизмов процесса мышления, который заключается в выявлении субъектом свойств познаваемого объекта посредством включения объекта в систему связей с другими объектами. Так мы приходим к тому, что анализ – это образ мышления, направленный на критическое осмысление действительности через ее декомпозицию на отдельные объекты. В последующем эти отдельные мини-объекты используются для разработки более сложных объектов. Сложность объектов характеризуется количеством использованных простых объектов и связей между ними. То есть, декомпозируя конкретный объект или ситуацию реального или ментального мира, аналитик накапливает опыт, который потом используется как топливо для процесса проектирования. Анализ разбирает, делит. Иногда очень трудно приступить к рассмотрению сложного и комплексного объекта. Трудно потому, что аналитик пытается сразу осознать сложность объекта целиком. Но это вредит, потому что мешает в осознании сложности через суммы простых вещей. Профессионализм в том числе заключается во взвешенном и спокойном восприятии любой сложности через образ мышления. Анализ формирует багаж, который состоит из элементов. Этот багаж используется для построения функционирующих механизмов и сложных структур, объединяющих в себе элементы и функционирующих по типу отдельных механизмов.
Основная функция анализа заключается в преобразовании рассматриваемого объекта или явления в набор простых, понятных и однозначных элементов. Эти элементы должны стать артефактами, используемыми при построении задуманного решения. Слова, общение, договоренности, письма – это важно, это часть коммуникации, но это не надежные помощники при выполнении анализа. Слова забываются, трактуются по-разному, в зависимости от того, как были поняты. Коммуникации сильно зависят от контекста, отношений между коммуницирующими и других эмоциональных факторов. Договоренности, как правило, определяются конкретной ситуацией, а ситуации очень часто меняются. Письма – это лишь небольшие кусочки информации, не определяющие общего контекста, но влияющие на развитие ситуации, как и многие другие факторы. Все это ненадежно. Важен набор артефактов, которые позволят сделать поэлементный снимок текущей ситуации. Для каждого типа анализа существуют свои артефакты. Они должны воплощать описание элементов и функций, которые необходимо реализовать для достижения желаемого состояния. Все артефакты должны содержать последовательный, пошаговый набор действий, которые приведут к результату. Такую последовательность действий принято называть алгоритмом. Алгоритм – основа построения любого автоматизированного решения. По ходу проведения анализа нужно выбрать наиболее подходящий алгоритм и реализовать его при выполнении практической деятельности.
Алгоритм состоит из последовательности действий, результат выполнения которых – решение конкретной задачи или получение доказательств того, что ее решить нельзя. Конечно, такое описание весьма абстрактно и под него подходит практически любой процесс. Мы приходим к необходимости анализа специфичных понятий и деталей, полученных на основе дополнительно рассмотренных определений. Еще раз перечислим понятия, которые стоит рассмотреть подробнее для понимания сути значения алгоритма: автор алгоритма, определенность алгоритма, конечность алгоритма, эффективность алгоритма, ввод и вывод.
Автор алгоритма привносит в него точку зрения и вариант решения конкретной задачи. От компетентности и профессионализма автора алгоритма зависят многие его дополнительные атрибуты. Автор должен разбираться в контексте решаемой задачи. Это позволит выбрать эффективный алгоритм с точки зрения рассматриваемой ситуации. То, насколько алгоритм будет эффективно решать ту или иную задачу, предопределяет успешность решения. Контекст – полнота описания конкретной прикладной задачи – является источником разработки эффективного алгоритма. Контекст задачи, формулируемый автором, – это первый шаг на пути создания успешного алгоритма. Вывод – автор алгоритма должен хорошо представлять предметную область, для которой разрабатывается алгоритм. В противном случае решение будет не обоснованным с прикладной, утилитарной позиции. Алгоритм приводит к решению задачи за конечное число действий. В принципе, решить можно любую задачу, но решения иногда бывают длительными и очень запутанными. Если мы получаем большое число шагов, это затрудняет решение, делает его сложным.
Каждое действие в алгоритме должно быть четким, однозначным. Определенность алгоритма позволяет не допускать вариантов трактовок одного действия. Это свойство алгоритма определяет понятность для тех, кто будет этот алгоритм применять. Эффективность алгоритма – очень важное и многосоставное свойство, связанное с его исполнением. Говоря о эффективности, нужно рассматривать варианты алгоритмов или варианты его отдельных этапов. Эффективность – аналог понятия производительности повторяющихся или непрерывных процессов.
Для достижения эффективности нужно работать над уменьшением ресурсов, которые используются на этапах выполнения алгоритма. Ресурсы (время, скорость) нельзя напрямую сравнить друг с другом. Сравнение не всегда возможно одним эквивалентным значением. Какой из вариантов этапов алгоритма считать более эффективным, определяется дополнительным контекстом выполнения задачи. Ввод – параметр или набор параметров, материалы или прочие артефакты, которые алгоритм использует в качестве входных данных для решения задачи. Эти параметры и условия их использования составляют контекст, который определяет большинство основных и дополнительных характеристик алгоритма. Анализ параметров при выработке алгоритма позволяет сосредоточиться на самых важных его частях. Алгоритмы используются в каждом виде выполняемого анализа. О них и поговорим далее.
Ранее мы выделили виды анализа. Итак, бизнес-анализ. Объект его деятельности – конкретная бизнес-область или коммерческое направление деятельности. При декомпозиции мы опускаемся до уровня объектов, понятных экспертам в предметной области. Этот тип анализа помогает в решении бизнес-проблем, предлагает варианты решения той или иной бизнес-задачи. Далее – продуктовый анализ. Традиционно объект его внимания – цифровой продукт. Декомпозиция проводится до уровня конструктивной единицы продукта. Продуктовый анализ решает задачи повышения ценности продукта за счет выявления наиболее слабых и сильных сторон рассматриваемого продукта и выделения наиболее привлекательных для клиента функций продукта и вариантов их развития. Есть и системный анализ, объект рассмотрения которого – информационная система и ее окружение, а также способы работы с ней. Декомпозиция проводится до уровня конструктивной единицы системы, таких как модуль, таблица базы данных, структура хранения данных. Системный анализ решает задачи развития системы и ее функциональности. Следующий вид анализа – анализ данных. Объект его рассмотрения – бизнес-данные. Декомпозиция проводится до уровня атомарной единицы данных, имеющей ценность для конкретной задачи. Анализ данных решает задачи выявления «чистоты данных», их взаимосвязь, корреляции.
Можно сказать, что, несмотря на такой спектр решаемых задач, каждый тип анализа имеет схожее назначение. Все они призваны идентифицировать источник проблемы, уточнить имеющимися инструментами с привлечением ресурсов, что проблема именно такая, как мы выявили, предложить решение или набор решений, реализовать выбранное решение и проверить, что оно устранило проблему или решило задачу. Если все это не сработало, то нужно повторить. Анализ предлагает двигаться продуманными небольшими шагами в решении поставленной проблемы, чтобы в конечном итоге прийти к желаемой цели. Специфика каждого вида анализа проявляется на конкретном этапе. Выражается это в виде используемых инструментов и методов. Решаются разные задачи, но эти решения должны быть эффективными.
Что интересно, алгоритм решения задач тоже не зависит от типа используемого анализа. Да, отдельные этапы могут занимать разное время, могут использоваться разные инструменты и ресурсы, но можно говорить о каком-то общем метаалгоритме. Такие метаалгоритмы выделяются в аналитические шаблоны и составляют аналитическую базу знаний специалиста. Абстрактно для решения задачи составляется или используется выбранный алгоритм, который потом подвергается проверке. В принципе, мы с вами можем использовать уже знакомый нам термин «валидация». Затем, анализируя результат, мы либо корректируем алгоритм, либо приступаем к решению следующей задачи. Так, у нас есть две основных задачи – составить алгоритм и проверить алгоритм. Для составления алгоритма мы используем извлеченные и разработанные требования, которые помогают в формализации задачи, а для проверки алгоритма мы снова будем использовать требования, чтобы подтвердить, провалидировать, что этот алгоритм помогает в достижении требуемого результата.
Нужно помнить, что разные задачи требуют разного внимания и разных ресурсов. Когда задачи более глобальные, то есть в них вовлечено большое количество сотрудников, разные функции, одна или несколько организаций, нам нужно выделить, то есть локализовать источник проблемы или проблем. Выделить его возможно, когда мы разделим проблемы на секторы, то есть связанные части, и поймем, как они влияют друг на друга. Потом мы последовательно посмотрим на каждый сектор как на самостоятельный объект и проведем схожее деление внутри, выделив в нем несколько связанных частей. Так, шаг за шагом, мы придем к конкретному элементу и сможем оценить, оттрассировать, как элемент в одном секторе может влиять на элемент в другом секторе. Таким образом мы найдем источники проблемы или источники влияния на требуемый результат.
Подходя к решению конкретной задачи, мы как аналитики требований информационных систем стремимся найти эффективное информационное решение. В этих поисках нужно помнить, что наши информационные системы находятся в каком-то прикладном контексте, направленном на решение конкретной практической задачи. Этот контекст требует внимания. Вырабатывая конкретное информационное решение, нужно также помнить о том, что, оказывая влияние на конкретный элемент или набор элементов, мы меняем их, изменяя структуру и функционирование системы в целом. Нам нужно предварительно оценить, что организационная система готова к привносимым изменениям.
Итак, мы подошли к концу первого модуля. Давайте подведем итоги. Мы говорили об анализе в целом. Каждый вид анализа в сфере информационных технологий решает свои специальные задачи. Анализ – самодостаточная область деятельности. Он дает эффект, необходимый для применения только тогда, когда в его основе лежат собранные требования и вместе с анализом используется проектирование. Анализ требует внимания, подготовки и ресурсов. Далее мы подробнее рассмотрим каждый озвученный тип анализа.
• Анализ в IT — это самодостаточная и критически важная область деятельности, которая не существует изолированно, а опирается на собранные требования и неразрывно связана с проектированием.
• Каждый вид анализа (бизнес, продукт, система, данные) обслуживает свой «слой» реальности и требует специфических инструментов, но все они служат одной цели — эффективному решению проблем заказчика.
• Ключевым продуктом аналитика является алгоритм. Понимание свойств алгоритма (конечность, определенность, эффективность) и контекста его применения отличает профессиональное решение от любительского.
• При внесении изменений в отдельные элементы системы (будь то бизнес-процесс или модуль ПО) аналитик обязан оценить готовность всей организационной системы к этим изменениям и их возможные последствия.
1. В чем заключается суть анализа как вида деятельности, согласно лекции, и почему простые договоренности и слова не могут его заменить?
2. Какие пять видов IT-анализа перечислены в лекции? Кратко охарактеризуйте объект декомпозиции для каждого из них.
3. Дайте определение алгоритма. Перечислите и объясните четыре ключевых свойства алгоритма, упомянутых в лекции.
4. Какую роль играет «контекст» в работе аналитика? Почему понимание контекста важно как для выбора вида анализа, так и для оценки эффективности алгоритма?
5. В чем заключается «метаалгоритм» решения задач, общий для всех видов анализа? Какое место в этом цикле занимают требования?