Особенности имитационного моделирования производственных систем

Для анализа производственных систем, которые, во-первых, очень сложны, разноплановы, не имеют исчерпывающего мате­матического описания, а, во-вторых, проходят ряд этапов проек­тирования, реализации и развития, адекватные математические модели, будь то логические или числовые, построить не пред­ставляется возможным. Естественным здесь является использо­вание методов имитационного моделирования.

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

Имитационные модели позволяют без использования каких-либо аналитических или других функциональных зависимостей отображать сложные объекты, состоящие из разнородных эле­ментов, между которыми существуют разнообразные связи. В эти модели может быть включен также и человек. Без принципиальных усложнений в такие модели могут быть включены как детерминированные, так и стохастические потоки (материальные и информационные). С помощью имитационного моделирова­ния можно отображать взаимосвязи между рабочими местами, потоками материалов и изделий, транспортными средствами и персоналом. Несмотря на такие очевидные преимущества, преж­де всего заключающиеся в широте и универсальности примене­ния, при этом методе из вида упускается существо логических связей, что исключает возможность полной оптимизации полу­чаемых на этой модели решений. Гарантируется лишь возмож­ность отбора лучшего из просмотренных вариантов. Практиче­ски же имитационное моделирование во многих реальных случа­ях – единственно возможный способ исследования. После раз­работки имитационной модели с ней проводятся компьютерные эксперименты, которые позволяют сделать выводы о поведении производственной системы:

 без ее реализации, если эта система находится в стадии про­ектирования;

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

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

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

 до начала проектирования производственной системы с це­лью определения значимости и критичности ее параметров, а также оценки и оптимизации ее показателей;

 на этапе разработки проекта системы с целью исследования и сравнения различных вариантов ее построения;

 после окончания разработки системы и внедрения ее в экс­плуатацию с целью получения информации, дополняющей и объясняющей производственную информацию, и для оценки эффективности системы.

При составлении имитационной модели и проведении с ее помощью моделирования исследуемого объекта необходимо ре­шение нескольких связанных между собой задач. К ним отно­сятся:

анализ моделируемой системы и составление ее формализо­ванного описания, включая выявление информационно-логической структуры системы, идентификацию ее компо­нентов, выбор параметров, характеризующих состояние этих компонентов, разработку компьютерной модели системы, способной воспроизвести ее поведение, планирование эксперимента по развертыванию событий в компьютерной модели, отображающих события в моделируемой системе;

разработка методологии компьютерного статистического экс­перимента, включая генерацию случайных или псевдослу­чайных чисел, имитацию различных случайных событий, ста­тистическую обработку данных;

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



Тематический обзор*

1. ТЕХНОЛОГИя СОЗДАНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

1.1. Общая характеристика технологии создания программного обеспечения

Технология разработки программного обеспечения (ПО) определяется двумя факторами:

 осуществляется ли разработка программ как составных элементов единой системы автоматизиро­ванной обработки информации либо как относительно независимого локального компонента общего програм­много комплекса;

 какие программно-инструментальные средства использу­ются для разработки и реализации задач на ЭВМ.

К программно-инструменталь­ным средствам в первую очередь относятся алгоритмические языки и соответствующие им трансляторы, затем системы уп­равления базами данных (СУБД) с языковыми средствами про­граммирования в их среде, электронные таблицы с соответ­ствующими средствами их настройки и т.п.

Рассмотрим технологию разработки программ на примере экономических задач.

Исторически сложившаяся технология разработки про­грамм решения задач экономического характера строилась исходя из “позадачного” подхода, при котором слабо учиты­вались или вообще не учитывались программно-информаци­онные взаимосвязи между отдельными задачами, а в качестве инструментальных средств программирования использовались исключительно алгоритмические языки. Принципиальная схе­ма такого процесса представлена на рис. 1.1.

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

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

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

 форма представления отдельных реквизитов (цифровая, символьная и т.д.);

количество знаков (разрядов), выделяемых для записи рек­визитов, исходя из их максимальной значности;

вид реквизита по его роли в процессе решения задачи (ис­ходный, расчетный, нормативный, справочный и т.п.);

источник возникновения реквизита (документ, задача и т.п.).

Кроме того, для цифровой информации указываются: характер реквизита (це­лочисленный или дробный, причем для после­днего дополнительно указывается количество десятичных знаков, выделяемых для записи дробной части числа), допу­стимый диапазон изменения величины реквизита (т.е. его мак­симальное и минимальное допустимое значение).

Для расчетных реквизитов дается соответствующее опи­сание формул расчета и особо выделяются те реквизиты, которые используются при последующих решениях задачи, так как они подлежат сохранению в памяти ЭВМ.

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

Завершается постановка задачи описанием контрольно­го примера, демонстрирующего порядок решения задачи тра­диционным способом. Основное требование к контрольному примеру – отражение всего многообразия возможных форм существования исходных данных. Контрольный пример со­провождается перечислением различного рода как штатных, так и нештатных ситуаций, которые могут возникнуть при решении задачи, и описанием ответных действий пользова­теля в каждой конкретной ситуации.

Особенность реализации этого этапа технологического процесса заключается в том, что конечный пользователь раз­рабатываемой программы, хорошо знающий ее проблемную сторону, обычно хуже представляет специфику и возможно­сти использования ЭВМ для решения задачи. В свою очередь, предметная область пользователя (особенно ее отдельные нюансы, способные оказать влияние на решение задачи) зачас­тую бывает незнакома разработчику программы, хотя он зна­ет возможности и ограничения на применение ЭВМ. Именно эти противоречия являются основной причиной возникнове­ния ошибок при реализации данного этапа технологического процесса разработки программ, которые затем неизбежно от­ражаются и на последующих этапах.

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

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

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

аналитические (вычислительные);

матричные (балансовые);

графические (частным видом которых являются сетевые).

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

Хотя математическая запись постановки задачи, как пра­вило, отличается высокой точностью отображения ее сущнос­ти, лаконичностью записи, а главное однозначностью пони­мания, далеко не для всех задач она может быть выполнена. Кроме того, математическое описание задачи в большинстве случаев трудно перевести на язык ЭВМ. Для задач, допус­кающих возможность экономико-математического описа­ния, необходимо выбрать численный метод решения, а для нечисловых
задач – принципиальную схему решения в виде однозначно понимаемой последовательности выполнения элементарных математических и логических функций (опе­раций).

При выборе метода решения задачи предпочтение отдает­ся методу, который наиболее полно удовлетворяет основным требованиям:

обеспечивает необходимую точность получаемых резуль­татов и не обладает свойством вырождения (т.е. бесконеч­ного зацикливания на каком-либо участке решения задачи при определенном наборе исходных данных);

позволяет использовать готовые стандартные программы для решения задачи или ее отдельных фрагментов;

ориентирован на минимальный объем исходной информации;

способствует наиболее быстрому получению искомых результатов.

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

Третий этап технологического процесса подготовки решения задач на ЭВМ представляет собой алгоритмизацию ее решения, т.е. разработку оригинального или адаптацию (уточнение и корректировку) уже известного алгоритма.

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

Любой алгоритм обладает следующими важными свой­ствами: детерминированностью, массовостью, результатностью и дискретностью.

Детерминированность алгоритма (определенность, однозначность) – свойство, определяющее однозначность результата работы алгоритма при одних и тех же исходных данных. Оно означает, что набор указаний алгоритма должен быть однозначно и точно понят любым исполнителем.

Массовость алгоритма – свойство, определяющее пригодность использования алгоритма для решения множества задач данного класса. Оно предполагает возможность варьирования исходными данными в определенных пределах. Свойство мас­совости алгоритма является определяющим фактором, обес­печивающим экономическую эффективность решения задач на ЭВМ, так как для задач, решение которых осуществляется один раз, целесообразность использования ЭВМ, как правило, дик­туется внеэкономическими категориями.

Результатность алгоритма – свойство, означающее, что для любых допу­стимых исходных данных он должен через конечное число шагов (или итераций) завершить работу.

Дискретность алгоритма – свойство, означающее возможность разбиения определенного алгоритмического процесса на отдельные эле­ментарные действия, возможность реализации которых чело­веком или ЭВМ не вызывает сомнения, а результат их выпол­нения вполне определен и понятен.

Таким образом, алгоритм дает возможность чисто механи­чески решать любую задачу из некоторого класса однотип­ных задач.

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

Процесс алгоритмизации решения задачи обычно реализу­ется по следующей схеме:

выделение автономных этапов процесса решения задачи (как правило, с одним входом и выходом);

формализованное описание содержания работ, выполняе­мых на каждом выделенном этапе;

проверка правильности реализации выбранного алгорит­ма на различных примерах решения задачи.

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

Непосредственно к предыдущему этапу примыкает этап тестирования и отладки. Оба эти процесса функционально свя­заны между собой, хотя их цели несколько отличаются друг от друга. Тестирование представляет собой совокупность дей­ствий, предназначенных для демонстрации правильности ра­боты программы в заданных диапазонах изменения внешних условий и режимов эксплуатации программы. Цель тестиро­вания заключается в демонстрации отсутствия (или выявле­нии) ошибок в разработанных программах на заранее подго­товленном наборе контрольных примеров. Процессу тестиро­вания сопутствует понятие “отладка”, которое подразумевает совокупность действий, направленных на устранение ошибок в программах, начиная с момента обнаружения фактов ошибочной работы программы и завершая устранением причин их возникновения.

По своему характеру (причине возникновения) ошибки в программах делятся на синтаксические и логические.

Синтаксические ошибки в программе представляют собой некорректную запись отдельных языковых конструкций с точ­ки зрения правил их представления для выбранного языка программирования. Эти ошибки выявляются автоматически при трансляции исходной программы (т.е. в процессе ее пе­ревода с исходного языка программирования во внутренние коды машины) до ее выполнения. После устранения синтак­сических ошибок проверяется логика работы программы на исходных данных. При этом возможны следующие основные формы проявления логических ошибок:

в какой-то момент программа не может продолжать работу (возникает программное прерывание, обычно сопровождаю­щееся указанием места в программе, где оно произошло);

программа работает, но не выдает всех запланированных результатов и не выходит на останов (происходит ее “за­цикливание”);

программа выдает результаты и завершает свою работу, но они полностью или частично не совпадают с конт­рольными.

После выявления логических ошибок и устранения при­чин их возникновения в программу вносятся соответствую­щие исправления и ее отладка продолжается.

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

Процесс тестирования и отладки программ имеет итераци­онный характер и считается одним из наиболее трудоемких этапов процесса разработки программ. По оценкам специа­листов, он может составлять от 30 до 50% в общей структуре затрат времени на разработку проектов и зависит от объема и логической сложности разрабатываемых программных комп­лексов.

Для сокращения затрат на проведение тестирования и от­ладки в настоящее время широко применяются специальные программные средства тестирования (например, генерато­ры тестовых данных) и приемы отладки (например, метод трассировки программ, позволяющий выявлять, все ли ветви программы были задействованы при решении задачи с за­данными наборами исходных данных). После завершения процесса тестирования и отладки программные средства вместе с сопроводительной документацией передаются пользователю для эксплуатации. Основное назначение со­проводительной
документации – обеспечить пользователя не­обходимыми инструктивными материалами по работе с про­граммными средствами. Состав сопроводительной докумен­тации обычно оговаривается заказчиком (пользователем) и разработчиком на этапе подготовки технического задания на программное средство. Как правило, это документы, регламентирующие работу пользователя в процессе эксплуата­ции программы, а также содержащие информацию о программе, необходимую в случае возникновения потребности внесения изменений и дополнений в нее. Сопроводительная документация призвана также облегчить процесс выявления причин возникновения тех или иных ошибок в работе про­граммы, которые могут быть обнаружены уже в ходе ее эксп­луатации пользователем.

При передаче пользователю разработанных прикладных программных средств создается специальная комиссия, вклю­чающая в свой состав представителей разработчиков и заказ­чиков (пользователей). Комиссия в соответствии с заранее со­ставленным и утвержденным обеими сторонами планом про­водит работы по приемке-передаче программных средств и сопроводительной документации. По завершении работы комис­сии оформляется акт приемки-передачи.

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

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

Описанная схема технологического процесса разработки прикладных программных средств отражает их “жизненный цикл”, т.е. временной интервал с момента зарождения про­граммы до момента полного отказа от ее эксплуатации.

1.2. Современные методы и средства разработки программного обеспечения

1.2.1. Современные методы разработки ПО

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

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

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

Для ускорения разработки программного комплекса час­то вместо некоторых программ нижнего уровня, находящих­ся в процессе разработки, могут применяться специальные “программы-заглушки”. Программы-заглушки требуются толь­ко на ранних стадиях разработки для того, чтобы не сдержи­вать общий ход создания программного комплекса. Суть про­граммы-заглушки заключается в том, что при обращении к ней в соответствии с заданным набором исходных тестовых данных она не формирует, а выбирает результат “решения” из заранее подготовленного набора. Благодаря этому обеспе­чивается возможность имитировать работу на ЭВМ реально создаваемой программы, а следовательно, осуществлять про­верку работоспособности программ верхнего уровня еще до того, как будут разработаны и отлажены все составляющие программы нижнего уровня.

Реализация метода нисходящего проектирования тесно свя­зана с другим понятием программирования – модульным про­ектированием, так как на практике при декомпозиции слож­ной программы возникает вопрос о разумном пределе ее дроб­ления на составные части. Вместе с тем понятие модульности нельзя сводить только к представлению сложных программ­ных комплексов в виде набора отдельных функциональных блоков. Модуль – это последовательность логически взаимо­связанных фрагментов задачи, оформленных как отдельная часть про­граммы. При этом программные модули должны обладать следующими свойствами:

на модуль можно ссылаться (т.е. обращаться к нему) по имени, в том числе и из других модулей;

по завершении работы модуль должен возвращать управ­ление тому модулю, который его вызывал;

модуль должен иметь один вход и выход;

модуль должен иметь небольшой размер, обеспечиваю­щий его обозримость.

При разработке сложных программ, как правило, в них выделяют головной управляющий модуль, подчиненные ему модули, обеспечивающие реализацию отдельных функций управления, функциональную обработку (т.е. непосредствен­ную реализацию основного назначения программного комп­лекса), а также вспомогательные модули, обеспечивающие сервисное обслуживание пакета (например, сбор и анализ ста­тистики работы программы, обработка различного рода оши­бочных ситуаций, обучение и выдача подсказок и т.п.).

Модульный принцип разработки программ обладает сле­дующими преимуществами:

большую программу могут разрабатывать одновременно несколько исполнителей, и это позволяет сократить сро­ки ее разработки;

появляется возможность создавать (и многократно исполь­зовать в дальнейшем) библиотеки наиболее употребимых программ;

упрощается процедура загрузки больших программ в опе­ративную память, когда требуется ее сегментация;

возникает много естественных контрольных точек для на­блюдения за осуществлением хода разработки программ, а в последующем для контроля за ходом исполнения про­грамм;

обеспечивается более эффективное тестирование про­грамм, проще осуществляются проектирование и последу­ющая отладка.

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

Актуальная для начального периода развития и исполь­зования ЭВМ проблема разработки программ, занимающих минимум основной памяти и выполняющихся за кратчайшее время, в последующем в связи с резким падением стоимости аппаратной части ЭВМ, значительным возрастанием их быстродействия и объемов памяти сменилась необходимостью разработки и применения принципиально новых “индустри­альных” методов составления программ. Все это нашло свое воплощение в разработке принципа структурного програм­мирования. Одной из целей структурного программирования было стремление облегчить разработку и отладку програм­мных модулей, а главное – их последующее сопровождение и модификацию.

В настоящее время структурное программирование – это целая дисциплина, объединяющая несколько взаимосвязан­ных способов создания ясных, легких для понимания про­грамм. Эффективность применения современных универсаль­ных языков программирования во многом определяется удоб­ством написания с их помощью структурных программ.

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

При развитии этого направления следует учитывать специфику задач экономи­ческого управления:

доминирование задач с относительно несложными вычис­лительными алгоритмами и потребностью формирования различного рода накопительных итогов, т.е. задач “пря­мого счета”;

работа с большими массивами исходной информации (обычно упорядоченной определенным образом);

требование предоставления большинства результатной информации в виде документов табличной формы.

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

К наиболее развитым программно-инструментальным средствам относятся систе­мы автоматизации проектирования (САПР) ПО, создание ко­торых было начато в конце 70-х годов. Однако подобные раз­работки в то время слабо учитывали требования системного подхода, так как ограничивались автоматизацией лишь части этапов разработки ПО, причем, как правило, узкого класса задач. Вместе с тем появление и быстрое распространение совре­менных персональных компьютеров среди профессиональных разработчиков ПО открыли новые перспективы в деле автоматизации бла­годаря их широким возможностям интерактивного взаимо­действия. Так, за последнее десятилетие в области средств автоматиза­ции программирования сформировалось новое направление под общим названием CASE-технология (Computer Aided Software Engineering).

CASE-технология представляет собой совокупность средств систем­ного анализа, проектирования, разработки и сопровождения сложных программных систем, поддерживаемых комплексом взаимоувязанных инструментальных средств автоматизации всех этапов разработки программ. Благодаря структурным методам CASE-технология на стадиях анализа и проектирования обеспечивает разработчиков широкими возможностя­ми для различного рода моделирования, а централизованное хранение всей необходимой для проектирования информации и контроль за целостностью данных гарантируют согласован­ность взаимодействия всех специалистов, занятых в разработ­ке ПО.

Высокая “тяжесть” последствий ошибок, присущих этапу составления спецификаций для автоматизации информацион­ной системы объекта, вызвала поиск путей сокращения их числа на этом этапе до минимума. Естественным решением проблемы была разработка формализованного аппарата для составления описания и последующего анализа информационной модели системы. Впервые такой подход с системных позиций был реализован сотрудниками Мичиганского уни­верситета под руководством проф. Д.Тайкроу в рамках про­екта ISDOS (Information System Design and Optimization System – проектирование и оптимизация информационных систем).

В основу реализации проекта ISDOS были положены спе­циально разработанный язык PSL (Problem Stain-lent Language – язык постановки задач), который обеспечивал описание це­лей, функций и задач систем организационно-экономическо­го управления, и программный анализатор описаний PSA (Problem Statment Analizator – анализатор постановок задач), выполненных средствами PSL.

На языке PSL пользователь специфицирует параметры, определяющие входы и выходы информационной системы и их временные характеристики.

Проект ISDOS был первой западной системой автомати­зированного формализованного анализа требований к про­граммному обеспечению. Он состоял из взаимосвязанных модулей, которые обеспечивали:

ввод, контроль и кодирование спецификаций проектируе­мой системы;

анализ правильности постановки и согласован­ности задач;

выявление ошибок и выдачу сообщений пользователям, а также устранение дублирования в исходной информации;

преобразование постановок задач после проверки и корректировки исходных данных в машинные программы в соответствии с заданными требованиями к системе;

выделение основных элементов информационной системы.

Первая версия ISDOS, разработанная применительно к си­стемам административного управления, впоследствии приме­нялась в области управления правительственными организациями, космическими объектами, торговыми организациями и т.д.

Язык PSL также позволяет системному аналитику описать в формализованном виде требуемые результаты решения за­дач, необходимые входные данные, взаимосвязи между от­дельными процедурами и данными, представить информа­цию о характеристиках отдельных модулей, процедур, дан­ных и т.д.

Подсистема PSA анализирует поставленную и описанную с помощью PSL проблему и генерирует полезные для разра­ботчика интегральные характеристики, такие, как формаль­ные постановки задач, иерархические структуры данных, рекомендации по выбору ключевых слов, обобщенные блок-схемы алгоритмов обработки данных при решении задач и ряд других характеристик.

Постоянный поиск методов совершенствования процес­сов разработки прикладных программных средств обусло­вил появление в начале 80-х годов методологии, по которой разработка программы начиналась не после завершения про­цесса выработки окончательных требований к ней, а как толь­ко устанавливались требования на первый, “стартовый” (пилотный) вариант прикладной программы, позволяющий на­чать содержательную работу по ее реализации на компью­тере. Это дало пользователю возможность, получая уже с первых шагов конкретное представление о характере реали­зации задачи, уточнять ее постановку. Тем самым облегчал­ся процесс экспериментального поиска нужного решения ав­томатизации задачи. Благодаря тесному взаимодействию разработчика с заказчиком (пользователем) на самом ответ­ственном этапе создания прикладных программ между ними достигалось быстрое взаимопонимание цели поставленной задачи и возможности ее автоматизации в данных конкрет­ных условиях. Это повышало скорость разработки программ и послужило основанием для названия такой технологии RAD (Rapid Application Development – быстрая разработка про­грамм), которая получила широкое распространение.

Другое направление разработки прикладных программных средств, олицетворяющее собой современный подход к реа­лизации широкого круга задач для принятия управленческих решений, базируется на концепции создания специального хранилища данных (Data Warehouse). Основное отличие концепции Data Warehouse от традиционного представления баз данных заключается в следующем:

во-первых, в том, что актуализация данных в Data Warehouse означает не обновление элементов информа­ции, а добавление новых элементов к уже имеющимся (что расширяет возможности проведения различного рода сравнительного анализа);

во-вторых, в том, что наряду с информацией, непосред­ственно отражающей состояние системы управления, в Data Warehouse аккумулируются и метаданные.

Метаданные (данные о данных) облегчают возможность визуального представления содержимого Data Warehouse, позволяют, “перемещаясь” по хранилищу, быстро отбирать необходимые данные для последующей обработки. Основ­ные типы метаданных Data Warehouse отражают:

структуру и содержимое хранилища;

соответствие между исходными и выходными данными;

объемные характеристики данных;

критерии архивирования;

отношения между данными;

информацию по кодированию;

интервал жизни данных и т.п.

Концепция Data Warehouse поддерживается RAD сред­ствами разработки прикладного ПО, благодаря которым даже неспециалист может быстро создавать программные приложения, подбирая необходимые прототипы программ, расширяя их набор путем объединения и настройки более мелких.

Создание программных приложений для Data Warehouse по RAD-технологии представляет собой достаточно простой итеративный процесс, состоящий из следующих пяти этапов:

отбора необходимых объектов для создания программных приложений;

установки переменных для просмотра и ана­лиза данных;

различного рода настройки атрибутов в соответствии с требованиями отображения информации и алгоритмов об­работки;

тестирования приложения, возвращаясь при необходимости к предыдущим этапам;

создания пользовательского интерфейса и пиктограмм.

Концепция Data Warehouse обеспечивает возможность разработки программных приложений для поддержки про­цессов принятия решений с использованием OLAP-систем. Система OLAP (On-Line Analytical Processing) предоставляет возможность разработки прикладного ПО информационных систем, ориентированных на организацию многомерных баз данных и создание корпоративных сетей, а также обеспечива­ет поддержку Web-технологий в сетях Internet/Intranet.

Успешное применение инструментальных средств OLAP-систем объясняется быстротой разработки приложений, гибкостью и широкими возможностями в области доступа к дан­ным и их преобразования. В настоящее время на рынке ПО предлагается большое число OLAP-систем, разработчика­ми которых являются различные фирмы, например Arbor Software, IBM, Informix, Microsoft, Oracle, SAS Institute, Sybase.

1.2.2. Инструментарий технологии программирования

Инструментарий технологии программирования– про­граммные продукты поддержки (обеспечения) технологии программирования.

В рамках этого направления сформировались следующие группы программных про­дуктов (рис. 1.2):

средства для создания приложений, включающие:

– локальные средства, обеспечивающие выполнение отдельных работ по созданию программ;

– интегрированные среды разработчиков программ, обеспечивающие выполнение комплекса взаимосвязанных работ по созданию программ;

средства для создания информационных систем (СASE-технология), представляющие мето­ды анализа, проектирования и создания программных систем и предназначенные для автоматизации процессов разработки и реализации информационных систем.

1.2.3. Средства для создания приложений

Локальные средства разработки программ

Эти средства на рынке программных продук­тов наиболее представительны и включают языки и системы программирования, а также инструментальную среду пользователя.

Язык программирования – формализованный язык для описания алго­ритма решения задачи на компьютере.

Средства для создания приложений – совокупность языков и систем программирования, а также различные программные комплексы для отлад­ки и поддержки создаваемых программ.

Языки программирования можно условно разделить на следующие классы (если в качестве признака классификации взять синтаксис образования конструкций языка):

машинные языки (computer language) – языки программирования, воспринимаемые аппаратной частью компьютера (машинные коды);

машинно-ориентированные языки (computer-oriented language) – языки программиро­вания, которые отражают структуру конкретного типа компьютера (ассемблеры);

алгоритмические языки (algorithmic language) – языки программирования, не зависящие от архитектуры ком­пьютера, для отражения структуры алгоритма (Паскаль, Си, Фортран, Бейсик и др.);

процедурно-ориентированные языки (procedure-oriented
language) – языки програм­мирования, где имеется возможность описания программы как совокупности проце­дур (подпрограмм);

проблемно-ориентированные языки (universal programming language) – языки про­граммирования, предназначенные для решения задач определенного класса (Лисп, Пролог, Симула и др.);

интегрированные системы программирования.

Другой классификацией языков программирования является их деление на языки, ориентированные на реализацию основ структурного программирования, и объектно-ориен­тированные языки, поддерживающие понятие объектов и их свойств и методов обработки.

Программа, подготовленная на языке программирования, проходит этап трансляции, когда происходит преобразование исходного кода программы (source code) в объект­ный код (object code), который далее пригоден к обработке редактором связей. Ре­дактор связей – специальная программа, обеспечивающая построение загрузочного модуля (load module), пригодного к выполнению (рис. 1.3).

Трансляция может выполняться с использованием средств компиляторов (com­piler) или интерпретаторов (interpreter). Компиляторы транслируют всю програм­му, но без ее выполнения. Интерпретаторы, в отличие от компиляторов, выполняют пооператорную обработку и выполнение программы.

Существуют специальные программы, предназначенные для трассировки и анализа выполнения других программ, так называемые отладчики (debugger). Лучшие отлад­чики позволяют осуществить трассировку (отслеживание выполнения программы в поопе­раторном варианте), идентификацию места и вида ошибок в программе, “наблюдение” за изменением значений переменных, выражений и т.п. Для отладки и тестирования правиль­ности работы программ создается база данных контрольного примера.

Более мощным средством разработки программ являются системы программирования.

Системы программирования (programming system) включают:

компилятор;

интегрированную среду разработчика программ;

отладчик;

средства оптимизации кода программ;

набор библиотек (возможно с исходными текстами программ);

редактор связей;

сервисные средства (утилиты) для работы с библиотеками, текстовыми и двоичными файлами;

справочные системы;

документатор исходного кода программы;

систему поддержки и управления проектом программного комплекса.

Средства поддержки проектов – новый класс средств разработки программного обеспечения, предназна­ченный для:

отслеживания изменений, выполненных разработчиками программ;

поддержки версий программы с автоматической разноской изменений;

получения статистики о ходе работ проекта.

Инструментальная среда пользователя представлена специальными средствами, встроенными в пакеты прикладных программ, такими, как:

библиотека функций, процедур, объектов и методов обработки;

макрокоманды;

клавишные макросы;

языковые макросы;

программные модули-вставки;

конструкторы экранных форм и отчетов;

генераторы приложений;

языки запросов высокого уровня;

языки манипулирования данными;

конструкторы меню и многое другое.

Средства отладки и тестирования программ предназначены для подготовки разработанной программы к промышленной эксплуатации.

Наши рекомендации