630_Poletajkin_A.N._Sotsial'nye_iehkonomicheskie_informatsionnye_sistemy_
.pdfорганизаций и предприятий показывает, что их представления о структуре организации, общих и локальных целях функционирования, задачах и функциях подразделений, а также подчиненности работников иногда имеют противоречивый характер. Часто эти представления расходятся с официально декларируемыми целями и правилами или противоречат фактической деятельности.
Структуру информационных потоков можно выявить по образцам документов, конфигурациям компьютерных сетей и баз данных. Структура же реальных микропроцессов, осуществляемых персоналом в информационных контактах (в значительной мере недокументированных) остается неизвестной. Ответы на эти вопросы может дать структурно-функциональная диагностика, основанная на методах сплошной (или выборочной) фотографии рабочего времени персонала. Цель диагностики – получение достоверного знания об организации и организационных отношениях ее функциональных элементов. В связи с этим к важнейшим задачам функциональной диагностики организационных структур относятся:
классификация субъектов функционирования (категорий и групп работников);
классификация элементов процесса функционирования (действий, процедур);
классификация направлений (решаемых проблем), целей функционирования;
классификация элементов информационных потоков;
проведение обследования деятельности персонала организации;
исследование распределения (по времени и частоте) организационных характеристик: процедур, контактов персонала, направлений деятельности, элементов информационных потоков – по отдельности и в комбинациях друг с другом по категориям работников, видам процедур и их направлениям (согласно результатам и логике исследований);
выявление реальной структуры функциональных, информационных, иерархических, временных, проблемных отношений между руководителями, сотрудниками и подразделениями;
установление структуры распределения рабочего времени руководителей и персонала относительно функций, проблем и целей организации;
выявление основных технологий функционирования организации (информационных процессов, включая и недокументированные), их целеполагания в сравнении с декларируемыми целями организации;
выявление однородных по специфике деятельности, целевой ориентации и реальной подчиненности групп работников, формирование ре-
71
альной модели организационной структуры и сравнение ее с декларируемой;
определение причин рассогласования декларируемой и реальной структуры организационных отношений.
Сплошной "фотографией" рабочего времени (рис. 2.3) называется непрерывное наблюдение и регистрация характеристик работников в процессе функционирования в течение всего рабочего дня.
Рис. 2.3. Структура "фотографии" рабочего времени При этом индицируемые параметры последовательно вносятся в заранее
заготовленную рабочую таблицу. Ниже представлена форма рабочей таблицы системного аналитика. Часть показателей, те, что помечены звездочкой, заполняются в процессе обследования, остальные – после. Содержание записей следующее:
номер (по порядку);
агент (должность обследуемого работника);
время, в течение которого выполнялась процедура;
процедура (наименование содержания совокупности элементарных действий, объединенных общностью решаемой частной задачи);
содержание (суть процедуры, которая должна быть классифицирована);
информация (направление движения информации между агентом и контрагентом);
инициатива (инициатор начала выполнения данной процедуры);
контрагент (должность работника, который находится с обследуемым в контакте);
отношение (форма взаимодействия, отражающая субординацию агента и контрагента в данной процедуре);
проблема (словесная характеристика решаемой проблемы).
2.2.5 Результаты обследования предметной области
Результатом предпроектного обследования является "Отчет о предпроектном обследовании предприятия" (характеристика объекта информатизации), в состав которого входят такие сведения:
72
1.Краткое схематичное описание бизнес-процессов:
Операции бизнес-процесса
Операция |
Исполнитель |
Как |
Входящие документы (до- |
Исходящий документ (со- |
|
|
часто |
кументы-основания) |
ставляемый документ) |
|
|
|
|
|
|
|
|
|
|
Описание документов бизнес-процесса
Составляемый документ |
Операция |
Кто составляет (ис- |
Как |
Документы-основания |
(исходящий документ) |
|
полнитель) |
часто |
(входящие документы) |
|
|
|
|
|
|
|
|
|
|
2.Основные требования и приоритеты автоматизации.
3.Оценка необходимых для обеспечения проекта ресурсов заказчика.
4.Оценка возможности и целесообразности автоматизации.
5.Предложения по созданию автоматизированной системы с оценкой примерных сроков и стоимости.
Проведение предпроектного обследования позволяет решить следующие
задачи:
предварительное выявление требований к будущей системе;
определение структуры организации;
определение перечня целевых функций организации;
анализ распределения функций по подразделениям и сотрудникам;
выявление функциональных взаимодействий между подразделениями;
выявление информационных потоков внутри подразделений и между ними, внешних информационных воздействий;
анализ существующих средств автоматизации организации.
2.3Особенности жизненного цикла социальных и экономических ИС
2.3.1 Возникновение понятия «Жизненный цикл»
В конце 60-х – начале 70-х годов прошлого века произошло событие, которое вошло в историю как первый кризис программирования [28]. Событие состояло в том, что стоимость программного обеспечения стала приближаться к стоимости аппаратуры (период времени появления операционных систем), и в настоящее время намного опережает стоимость аппаратуры (рис. 2.4). Тогда и возникла необходимость в разработке технологии программирования, в основу которой было положено понятие о жизненном цикле программного обеспечения.
73
Рис. 2.4. Соотношение между затратами на аппаратную и программную часть
информационной системы
Однако прежде чем перейти к определению жизненного цикла ИС, рассмотрим ряд фундаментальных проблем разработки программ и найденных фундаментальных методов их решения [40].
Повторное использование кода (модульное программирование).
На первых этапах становления программирования отмечалась связь высокой стоимости программ с разработкой подобных фрагментов кода в разных программах. Использование при создании новых программ фрагментов, написанных ранее, сулило существенное снижение сроков и стоимости разработки. Решения оформлялись в виде программных модулей, которые тиражировались для создания программных продуктов. Описательная часть (т.н. интерфейс) модуля определял его назначение и взаимодействие с другими программами. Тем не менее, повторное использование модулей со сложными интерфейсами является и сегодня актуальной задачей, для решения которой разрабатываются специальные формы (структуры) представления модулей и организации их интерфейсов.
Рост сложности программ (структурное программирование).
Проблема возникла с появлением потребности в сложных программах (системы управления космическими объектами, управления оборонным комплексом, автоматизации крупного финансового учреждения и т.д.). Сложность программ оценивалась следующими показателями:
большой объем кода (миллионы строк);
большое количество связей между элементами кода;
74
большое количество разработчиков (сотни человек);
большое количество пользователей (сотни и тысячи человек);
длительное время использования.
Для таких сложных программ оказалось, что основная часть их стоимости приходится не на создание, а на их внедрение и эксплуатацию. Возникло понятие о жизненном цикле программного продукта, как о последовательности определенных этапов: этапа проектирования, разработки, тестирования, внедрения и сопровождения.
Здесь же заслуживает внимания этап сопровождения, которых включал действия по исправлению ошибок в работе программы и внесению изменений в соответствии с изменившимися требованиями пользователей. Основная причина высокой стоимости (а порой и невозможности выполнения) этапа сопровождения заключалась в том, что программы были плохо документированы (документация была непонятна и не соответствовала программному коду), а сам программный код был очень сложен и запутан. Это потребовало создания технологии корректного проектирования и рационального кодирования. Основные принципы технологии структурного проектирования и кодирования:
нисходящее функциональное проектирование, когда в системе выделяются основные функциональные подсистемы, которые потом разбиваются на подсистемы и т.д. (принцип декомпозиции);
применение специальных языков проектирования и средств автоматизации использования этих языков;
дисциплина проектирования и разработки: планирование и документирование проекта, поддержка соответствия кода проектной документации;
структурное кодирование без использования оператора goto.
Модификация программ (ООП).
Следующая проблема роста стоимости программ была вызвана тем, что изменение требований к программе стали возникать также на стадии проектирования. Это проблема заказчика, который не знает, чего он хочет. Создание программного продукта превратилось в его перманентное перепроектирование. Возник вопрос: как проектировать и писать программы, чтобы обеспечить возможность внесений изменений в программу, не меняя ранее написанного кода?
Решением этой проблемы стало использование объектноориентированного подхода (подробнее об ООП см. подраздел 5.1.3), который стали называть объектно-ориентированным проектированием, а подход к программированию соответственно объектно-ориентированным программированием. Суть данного подхода состоит в том, что вводится понятие класса как развитие понятия модуля с определенными свойствами и поведением, характе-
75
ризующими обязанностями класса. Каждый класс может порождать объекты – экземпляры данного класса. При этом работают основные принципы (парадиг-
мы) ООП:
инкапсуляция – объединение в классе данных (свойств) и методов (процедур обработки);
наследование – возможность вывода нового класса из старого с частичным изменением свойств и методов;
полиморфизм – способность объекта использовать свойства и методы производного класса, который не существует на момент создания базового.
На рубеже 80–90-х годов отмечается начало информационнотехнологической революции, вызванной взрывным ростом использования информационных средств: персональный компьютер, локальные и глобальные вычислительные сети, мобильная связь, электронная почта, Internet и т.д. При этом кризис программирования принимает хронические формы:
США тратит ежегодно более $200 млрд. на более чем 170 тыс. проек-
тов разработки ПО в сфере IT;
31,1% из них закрываются, так и не завершившись; 52,7% проектов завершаются с превышением первоначальных оценок бюджета/сроков и ограниченной функциональностью;
потери от недополученного эффекта внедрения ПО измеряются трил-
лионами.
Статистика по 30 000 проектам по разработке ПО в американских компаниях показывает следующее распределение (рис. 2.5) между:
успешными (точки) – вовремя и в рамках бюджета был выполнен весь намеченный фронт работ;
проблемными (линии) – нарушение сроков, перерасход бюджета и/или сделали не все, что требовалось;
проваленными (ромбы) – не были доведены до конца из-за перерасхода средств, бюджета, качества.
2000 г.
1998 г.
1995 г.
1994 г.
23% |
49% |
28% |
28% |
46% |
26% |
40% |
33% |
27% |
31% |
53% |
16% |
Рис. 2.5. Распределение IT-проектов по категориям [57]
76
Рассмотренные выше обстоятельства предопределили создание унифицированной процедуры разработки ПО, впоследствии ставшей одним из основных понятий в теории и практике построения ИС, – понятие жизненного цикла программного продукта и программного процесса.
Жизненный цикл – непрерывный процесс, который начинается с момента принятия решения о создании ПО и заканчивающийся снятием его с эксплуатации. Жизненный цикл (ЖЦ) разбивается на отдельные процессы, который при этом трактуется как совокупность действий и задач, имеющих целью достижение значимого результата. Основные процессы (иногда называют этапами или фазами) ЖЦ ПО (индифферентно к его назначению и другим особенностям) представлены в табл. 2.1.
Таблица 2.1 Основные процессы ЖЦ ПО
Процесс |
Результат |
Разработка спецификации |
Описания требований к программе, которые |
требований |
обязательны для выполнения – описание того, |
|
что программа должна делать |
Разработка проекта |
Описание того, как программа будет работать |
Кодирование |
Исходный код и файлы конфигурации |
Тестирование программы |
Контроль соответствия программы требованиям |
Документирование |
Документация к программе |
Внедрение |
Действующая программа |
Кроме основных, существует много дополнительных и вспомогательных процессов, связанных не с созданием продукта, а с организацией работ.
На сегодняшний день не существует универсального процесса разработки ПО для любых компаний, для команд любой национальности и т.д. Каждый текущий процесс разработки, осуществляемый некоторой командой в рамках определенного проекта, имеет большое количество индивидуальных особенностей. Однако есть и общие моменты. Так, перед началом проекта целесообразно спланировать процесс работы, определив роли и обязанности в команде, рабочие продукты (промежуточные и финальные), структуру проекта, порядок участия в их разработке членов команды и т.д. В методологии управления ЖЦ это предварительное описание называется конкретным процессом [13]. В системах управления ЖЦ используется шаблон данного процесса, создаваемый или адаптируемый (в случае использования стандартного) перед началом разработки. Наиболее распространенная подобная система – Microsoft Visual Studio Team System (VSTS) – универсальное решение для управления ЖЦ ПО и командной разработки приложений, позволяет создавать программные системы различного назначения в командах, придерживающихся различных подхо-
дов к управлению процессами разработки ПО. В VSTS существуют заготовки
77
для конкретных процессов на базе различных технологических подходов (CMMI, Scrum и другие подобные подходы будут описаны далее).
В рамках компании возможна и полезна стандартизация всех текущих процессов, которые отражаются в некоторой базе данных, содержащей:
информацию о средствах разработки (систем версионного контроля, средств контроля ошибок, средств программирования – различных IDE, СУБД и т.д.), в т.ч. правила их использования, документацию и инсталляционные пакеты;
описание практик разработки – проектного менеджмента, правил работы с заказчиком и т.д.;
шаблоны проектных документов – технических заданий, проектных
спецификаций, тестовых планов и пр.
Также возможна стандартизация процедуры разработки конкретного процесса как "вырезки" из стандартного. Основная идея стандартного процесса
– курсирование внутри компании передового опыта, а также унификация средств разработки. Множественность этих средств существенно затрудняет миграцию специалистов из проекта в проект, использование результатов одного проекта в другом и т.д. Однако при организации стандартного процесса необходимо следить, чтобы стандартный процесс не оказался всего лишь формальным, бюрократическим аппаратом. Понятие стандартного процесса введено и подробно описано в подходе CMM/CMMI (Capability Maturity Model – модель зрелости возможностей создания ПО: эволюционная модель развития способности компании разрабатывать программное обеспечение), CMMI (Integration – обобщающий стандарт).
2.3.2 Модели процесса разработки ПО
Стандартизация процесса создания ПО вовсе не отменяет необходимости улучшения качества создаваемых продуктов и/или снижение цены и времени их разработки. Производителей ПО к этому побудили следующие обстоятель-
ства [13]:
происходит быстрая смена технологий разработки ПО, требуется изучение и внедрение новых средств разработки;
наблюдается быстрый рост компаний и их выход на новые рынки, что требует новой организации работ;
имеет место высокая конкуренция, которая требует поиска более эффективных, более экономичных способов разработки.
При этом возможны следующие практические решения, улучшающие производственный процесс компании-производителя ПО:
78
1)переход на новые средства разработки, языки программирования и т.д.;
2)улучшение отдельных управленческих и инженерных практик – тес-
тирования, управления требованиями и пр.;
3)полная, комплексная перестройка всех процессов в проекте, департаменте, компании (в соответствии, например, с CMMI);
4)сертификация компании (CMM/CMMI, ISO 9000 и пр.).
Пункт 3 от пункта 4 отделен потому, что на практике сертификация компании далеко не всегда означает действительную созидательную работу по улучшению процессов разработки ПО, а часто сводится к поддержанию соответствующего документооборота, необходимого для получения сертификации. Сертификат потом используется как средство для продвижения продукции.
Однако основная трудность реального совершенствования процессов в компании заключается в том, что она при этом должна работать и создавать ПО. Отсюда вытекает идея непрерывного улучшения процесса малыми этапами. В числе прочего это обусловлено постоянным появлением новых и перманентным развитием существующих технологий разработки, что нужно постоянно отслеживать. Эта стратегия, в частности, отражена в стандарте совершен-
ствования процессов разработки CMMI [18].
В числе прочих средств совершенствования процесса создания ПО цен-
тральное место занимают модели данного процесса. Модель процесса разра-
ботки ПО – это упрощенное описание программного процесса, представленное с некоторой точки зрения [13]. Модель задается в виде практических этапов, необходимых для создания ПО. Выбор модели процесса является первым шагом в создании ПО. Правильный выбор модели очень важен, т.к. во многом определяет успех проекта. Выбор "тяжелых" процессов может "утопить" проект, а слишком легкое отношение к процессам – к потере контроля над ходом выполнения. В соответствии с двумя типами процессов – основных и дополнительных
– можно говорить о двух типах моделей процесса: модели процесса разработки
(модели жизненного цикла) и модели организации работ по выполнению разработки.
К моделям I типа относятся такие, в которых описывается порядок выполнения действий по созданию конечного продукта. К наиболее известным моделям относятся:
Каскадная (водопадная) модель – процесс разбивается на последовательность выполнения стадий; каждая стадия начинается после полного завершения предыдущей, продукт создается завершением последней стадии и должен полностью соответствовать изначально установленным требованиям.
Спиральная (циклическая) модель – процесс также разбивается на стадии, но стадии выполняются циклическим повторением. На первом
79
цикле создается прототип продукта, выполняющий часть требований. Дальнейшие циклы связаны с наращиванием прототипа до полного удовлетворения требований.
Компонентная модель предполагает сборку продукта из заранее написанных частей – компонентов. Основной упор делается на интеграцию и совместное тестирование компонентов.
Формальная модель основана на формальном описании требований с последующим их преобразованием (трансляцией) требований в исходный код. Применение формальной модели гарантирует соответствие
кода описанным требованиям.
Различия между этими моделями существуют только в теории, а на практике спиральная модель может быть дополнена элементами каскадной и компонентной. Задача проектировщика – подобрать правильную их комбинацию, ориентируясь только на конечный результат.
Ко второму типу моделей – моделей организации работ – относятся:
Модель потока работ – показывает последовательность действий, выполняемых людьми на различных этапах разработки ПО. Для каждого действия указываются входы, выходы (результаты) и связи по входам и выходам.
Модель потоков данных – представляет процесс в виде последовательного преобразования данных. Каждое преобразование может выполняться в одно или несколько действий.
Ролевая модель – показывает роли людей, участвующих в программном процессе, а также действия в этом процессе и результаты, за которые они отвечают.
2.3.3 Жизненный цикл информационных систем
Применительно к ИС понятие жизненного цикла (ЖЦ ИС) выглядит следующим образом. Это непрерывный процесс, который начинается с момента принятия решения о необходимости создания ИС и заканчивается в момент ее полного изъятия из эксплуатации [11].
Основным нормативным документом, регламентирующим структуру ЖЦ ИС, является международный стандарт ISO/IEC 12207 (ISO – International Organization of Standardization – Международная организация по стандартиза-
ции, IEC – International Electrotechnical Commission – Международная комиссия по электротехнике). Он определяет структуру ЖЦ, содержащую процессы, действия и задачи, которые должны быть выполнены за период существования
ИС.
80