Консалтинг при автоматизации
предприятий: подходы, методы, средства
ЧАСТЬ 1 МЕТОДЫ И СРЕДСТВА СТРУКТУРНОГО СИСТЕМНОГО АНАЛИЗА И
ПРОЕКТИРОВАНИЯ
В первой части книги, состоящей из семи глав, подробно описываются базовые
методы и нотации структурного системного анализа - графического языка “для
передачи понимания”, используемого специалистами как бизнес-консалтинга, так и
информационно-технологического консалтинга. Рассматриваемый язык основан на
потоковых диаграммах, поддерживаемых большинством современных CASE-систем.
Глава 1 является введением в структурный системный анализ. В ней
рассматриваются основные задачи этапов анализа требований и проектирования
спецификаций системы, принципы структурного анализа, выделяются базовые средства
структурного анализа и их взаимосвязи и взаимовлияния.
Глава 2 посвящена наиболее известным и часто используемым средствам
функционального моделирования - диаграммам потоков данных. Приводятся основные и
вспомогательные объекты диаграмм, рассматривается понятие контекстной диаграммы
и детализации процесса, а также декомпозиции потока данных, даются рекомендации
для построения функциональной модели в виде иерархии диаграмм потоков данных.
В главе 3 приводится описание текстовых средств моделирования -
словарей данных, предназначенных для описания структуры потоков и хранилищ
данных. Вводится понятие словарной статьи, дается нотация, позволяющая формально
описать расщепление и объединение (группирование) потоков.
В главе 4 вводится понятие спецификации процесса (миниспецификации) и
описываются наиболее часто применяемые методы ее задания: структурированные
естественные языки, таблицы и деревья решений, визуальные языки проектирования.
Дается аналитическое сравнение методов.
В главе 5 описываются базовые средства информационного моделирования -
диаграммы "сущность-связь" (при этом рассматриваются две наиболее популярные
нотации - Чена и Баркера), приводятся основные этапы построения информационной
модели, включая нормализацию.
В главе 6 рассматривается метод задания спецификаций управления с
использованием диаграмм переходов состояний. Вводятся основные объекты диаграмм,
предлагаются правила и способы их построения.
Глава 7 посвящена средствам структурного проектирования.
Рассматриваются две базовые техники структурного проектирования (Константайна и
Джексона), вводятся основные символы соответствующих диаграмм, рассматриваются
их достоинства и недостатки. Проводится анализ характеристик хорошего проекта,
намечена схема алгоритма преобразования иерархии диаграмм потоков данных в
структурные карты.
ГЛАВА 1 ПОНЯТИЕ СТРУКТУРНОГО АНАЛИЗА
1.1. Жизненный цикл программного изделия и его критичные
этапы
В основе деятельности по созданию и использованию программного обеспечения
(ПО) лежит понятие его жизненного цикла (ЖЦ). ЖЦ является моделью создания и
использования ПО, отражающей его различные состояния, начиная с момента
возникновения необходимости в данном программном изделии и заканчивая моментом
его полного выхода из употребления у всех пользователей.
Традиционно выделяются следующие основные этапы ЖЦ ПО:
- анализ требований,
- проектирование,
- кодирование (программирование),
- тестирование и отладка,
- эксплуатация и сопровождение.
ЖЦ образуется в соответствии
с принципом нисходящего проектирования и, как правило, носит итерационный
характер: реализованные этапы, начиная с самых ранних, циклически повторяются в
соответствии с изменениями требований и внешних условий, введением ограничений и
т.п. На каждом этапе ЖЦ порождается определенный набор документов и технических
решений, при этом для каждого этапа исходными являются документы и решения,
полученные на предыдущем этапе. Каждый этап завершается верификацией порожденных
документов и решений с целью проверки их соответствия исходным.
Существующие модели ЖЦ определяют порядок исполнения этапов в ходе
разработки, а также критерии перехода от этапа к этапу. В соответствии с этим
наибольшее распространение получили три следующие модели ЖЦ:
- КАСКАДНАЯ МОДЕЛЬ (70-80г.г.) - предполагает переход на
следующий этап после полного окончания работ по предыдущему этапу.
- ПОЭТАПНАЯ МОДЕЛЬ С ПРОМЕЖУТОЧНЫМ КОНТРОЛЕМ (80-85г.г.) -
итерационная модель разработки ПО с циклами обратной связи между этапами.
Преимущество такой модели заключается в том, что межэтапные корректировки
обеспечивают меньшую трудоемкость по сравнению с каскадной моделью; с другой
стороны, время жизни каждого из этапов растягивается на весь период
разработки.
- СПИРАЛЬНАЯ МОДЕЛЬ (86-90г.г.) - делает упор на начальные
этапы ЖЦ: анализ требований, проектирование спецификаций, предварительное и
детальное проектирование. На этих этапах проверяется и обосновывается
реализуемость технических решений путем создания прототипов. Каждый виток
спирали соответствует поэтапной модели создания фрагмента или версии
программного изделия, на нем уточняются цели и характеристики проекта,
определяется его качество, планируются работы следующего витка спирали. Таким
образом, углубляются и последовательно конкретизируются детали проекта и в
результате выбирается обоснованный вариант, который доводится до реализации.
Специалистами отмечаются следующие преимущества спиральной модели:
- накопление и повторное использование программных средств, моделей и
прототипов;
- ориентация на развитие и модификацию ПО в процессе его проектирования;
- анализ риска и издержек в процессе проектирования.
Главная
особенность индустрии ПО состоит в концентрации сложности на начальных этапах ЖЦ
(анализ, проектирование) при относительно невысокой сложности и трудоемкости
последующих этапов. Более того, нерешенные вопросы и ошибки, допущенные на
этапах анализа и проектирования, порождают на последующих этапах трудные, часто
неразрешимые проблемы и, в конечном счете, приводят к неуспеху всего проекта.
Рассмотрим эти этапы более подробно.
АНАЛИЗ ТРЕБОВАНИЙ является первой фазой разработки ПО, на которой
требования заказчика уточняются, формализуются и документируются. Фактически на
этом этапе дается ответ на вопрос: "Что должна делать будущая система?".
Именно здесь лежит ключ к успеху всего проекта. В практике создания больших
систем ПО известно немало примеров неудачной реализации проекта именно из-за
неполноты и нечеткости определения системных требований.
Список требований к разрабатываемой системе должен включать:
- совокупность условий, при которых предполагается эксплуатировать будущую
систему (аппаратные и программные ресурсы, предоставляемые системе; внешние
условия ее функционирования; состав людей и работ, имеющих к ней отношение);
- описание выполняемых системой функций;
- ограничения в процессе разработки (директивные сроки завершения отдельных
этапов, имеющиеся ресурсы, организационные процедуры и мероприятия,
обеспечивающие защиту информации).
Целью анализа является
преобразование общих, неясных знаний о требованиях к будущей системе в точные
(по возможности) определения. На этом этапе определяются:
- архитектура системы, ее функции, внешние условия, распределение функций
между аппаратурой и ПО;
- интерфейсы и распределение функций между человеком и системой;
- требования к программным и информационным компонентам ПО, необходимые
аппаратные ресурсы, требования к БД, физические характеристики компонент ПО,
их интерфейсы.
ЭТАП ПРОЕКТИРОВАНИЯ дает ответ на вопрос:
"Как (каким образом) система будет удовлетворять предъявленным к ней
требованиям?". Задачей этого этапа является исследование структуры системы и
логических взаимосвязей ее элементов, причем здесь не рассматриваются вопросы,
связанные с реализацией на конкретной платформе. Проектирование определяется как
"(итерационный) процесс получения логической модели системы вместе со строго
сформулированными целями, поставленными перед нею, а также написания
спецификаций физической системы, удовлетворяющей этим требованиям". Обычно этот
этап разделяют на два подэтапа:
- проектирование архитектуры ПО, включающее разработку структуры и
интерфейсов компонент, согласование функций и технических требований к
компонентам, методам и стандартам проектирования, производство отчетных
документов;
- детальное проектирование, включающее разработку спецификаций каждой
компоненты, интерфейсов между компонентами, разработку требований к тестам и
плана интеграции компонент.
В результате деятельности на этапах
анализа и проектирования должен быть получен проект системы, содержащий
достаточно информации для реализации системы на его основе в рамках бюджета
выделенных ресурсов и времени.
1.2. Идеи, лежащие в основе структурных методов
Структурные методы являются строгой дисциплиной системного анализа и
проектирования, т.е. деятельностей, которые в прошлом были печально известны как
сложные и перегруженные проблемами.
Методы структурного анализа и проектирования стремятся преодолеть сложность
больших систем путем расчленения их на части ("черные ящики") и иерархической
организации этих черных ящиков. Выгода в использовании черных ящиков заключается
в том, что их пользователю не требуется знать, как они работают, необходимо
знать лишь его входы и выходы, а также его назначение (т.е. функцию, которую он
выполняет).
В окружающем нас мире черные ящики встречаются в большом количестве.
Проиллюстрируем преимущества систем, составленных из них, на примере
музыкального центра.
- Конструирование системы черных ящиков существенно упрощается. Намного
легче разработать магнитофон или проигрыватель, если не беспокоиться о
создании встроенного усилительного блока.
- Облегчается тестирование таких систем. Если появляется плохой звук одной
из колонок, можно поменять колонки местами. Если неисправность переместилась с
колонкой, то именно она подлежит ремонту; если нет, тогда проблема в
усилителе, магнитофоне или местах их соединения.
- Имеется возможность простого реконфигурирования системы черных ящиков.
Если колонка неисправна, то Вы можете отправить ее в ремонтную мастерскую, а
сами пока продолжать слушать свои записи в моно-режиме.
- Облегчается доступность для понимания и освоения. Можно стать специалистом
по магнитофонам без углубленных знаний о колонках.
- Увеличивается удобство при модификации. Вы можете приобрести колонки более
высокого качества и более мощный усилитель, но это совсем не означает, что Вам
необходим больших размеров проигрыватель.
Таким образом, первым шагом
упрощения сложной системы является ее разбиение на черные ящики, при этом такое
разбиение должно удовлетворять следующим критериям:
- каждый черный ящик должен реализовывать единственную функцию системы;
- функция каждого черного ящика должна быть легко понимаема независимо от
сложности ее реализации (например, в системе управления ракетой может быть
черный ящик для расчета места ее приземления: несмотря на сложность алгоритма,
функция черного ящика очевидна - "расчет точки приземления");
- связь между черными ящиками должна вводиться только при наличии связи
между соответствующими функциями системы (например, в бухгалтерии один черный
ящик необходим для расчета общей заработной платы служащего, а другой для
расчета налогов - необходима связь между этими черными ящиками: размер
заработанной платы требуется для расчета налогов);
- связи между черными ящиками должны быть простыми, насколько это возможно,
для обеспечения независимости между ними.
Второй важной идеей, лежащей
в основе структурных методов, является идея иерархии. Для понимаемости сложной
системы недостаточно разбиения ее на части, необходимо эти части организовать
определенным образом, а именно в виде иерархических структур. Все сложные
системы Вселенной организованы в иерархии. Да и сама она включает галактики,
звездные системы, планеты, …, молекулы, атомы, элементарные частицы. Человек при
создании сложных систем также подражает природе. Любая организация имеет
директора, заместителей по направлениям, иерархию руководителей подразделений,
рядовых служащих.
Наконец, третий момент: структурные методы широко используют графические
нотации, также служащие для облегчения понимания сложных систем. Известно, что
“одна картинка стоит тысячи слов”. На рис.1.1 изображен черноволосый мужчина,
одетый в серое двубортное пальто. Мужчина держит в левой руке дипломат и т.д.
Вообще говоря, нет необходимости комментировать это: читатель впитывает
вышеизложенное описание с первого взгляда.
Однако можно добавить дополнительные подробности, которые не видны из
рисунка. Например, мужчину зовут Борис Борисович, ему 45 лет. Структурные методы
также позволяют дополнить “картинки” любой информацией, которая не может быть
отражена при использовании соответствующей графической нотации.
О преимуществе “картинок” свидетельствует и следующий факт. Едва
ли найдется человек, не читавший рассказ А.П.Чехова “Толстый и тонкий”. И тем не
менее, практически никто не обращал внимание на любопытное противоречие в тексте
рассказа: “Нафанаил немного подумал и снял шапку … Нафанаил
шаркнул ногой и уронил фуражку”. С другой стороны, имея
иллюстрации этих двух сцен, легко обнаружить несоответствие.
Продолжение
статьи