Системный подход к решению функциональных задач и к организации информационных процессов

 

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

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

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

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

Последнее особенно важно, так как по тяжести послед­ствий ошибок этот этап занимает первое место среди всех остальных этапов. Так, по проведенному статистическому анализу большого числа проектов, выполненных ведущими западными компьютерными фирмами (IBM, TRW, GTE Corp., Bell Labs.), в типовом программистском проекте 56% всех обнаруженных ошибок приходится на ошибки в требованиях на программы, а на уст­ранение этих ошибок уходит до 82% всех усилий, затрачивае­мых разработчиками на устранение ошибок проекта. Такое положение дел объясняется, с одной стороны, сложностью и трудоемкостью этапа в плане обеспечения адекватности трак­товки разработчиками проекта требований пользователей, а с другой стороны, тем, что неизбежные ошибки, допущенные на этом этапе, как правило, обнаруживаются (проявляются) лишь на стадии опытной и даже промышленной эксплуатации, когда стоимость их исправления возрастает в десятки раз. Объективное требование системного подхода к разработке программных средств решения задач при автоматизации сис­тем управления вызвало необходимость дифференциации специалистов-разработчи­ков, что проявилось в выделении в их составе системных ана­литиков, системотехников, прикладных и системных програм­мистов.

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

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

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

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

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

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

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

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

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