Меню
Главная
Авторизация/Регистрация
 
Главная arrow Информатика arrow Архитектура и проектирование программных систем

ПРОБЛЕМЫ СОЗДАНИЯ БОЛЬШИХ ПРОГРАММНЫХ СИСТЕМ

Особенности разработки сложных (больших) программных систем

Из года в год увеличиваются разнообразие и сложность систем, получивших в международной научно-технической практике название систем, интенсивно использующих программное обеспечение, - (Software Intensive Systems (SIS). В системах такого рода функциональный потенциал определяется программным обеспечением (ПО) или зависит от ПО в существенной мере [23]. Общепризнанный законодатель в области исследований и разработок SIS, Институт программной инженерии Университета Карнеги-Меллон (Software Engineering Institute, SEI), относит к классу SIS системы, в которых программные системы представляют существенный сегмент по следующим позициям: функциональность системы, ее стоимость, риски в процессе разработки, время разработки.

В таких системах программные компоненты взаимодействуют друг с другом и компонентами и подсистемами другой природы, датчиками, приборами и людьми, вовлеченными в процессы использования SIS. К числу SIS, например, относятся разнородные автоматизированные системы управления, встроенные бортовые транспортные системы, телекоммуникационные и корпоративные системы, в том числе и на базе web-cep-висов. Для разработок SIS типичны крупномасштабные проекты - десятки или сотни разработчиков, месяцы или годы разработки, сотни тысяч или десятки миллионов долларов, комплектование из многочисленных разнородных подсистем, большая часть из которых включает программные системы.

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

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

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

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

Обычно сложная программа обладает следующими свойствами [4, 18]:

  • 1) программа решает одну или несколько связанных прикладных задач, зачастую сначала не имеющих четкой постановки и настолько важных для каких-либо лиц или организаций, что те приобретают значимые выгоды от ее использования;
  • 2) программа не предназначена для решения каких-либо прикладных задач, но от нее зависит эффективное решение этих прикладных задач. Это системные программы, например операционные системы, системы управления базами данных, различные инструментальные системы и т.п.;
  • 3) существенно, чтобы программа была удобной в использовании. В частности, она должна включать достаточно полную и понятную пользователям документацию, возможно, специальную документацию для администраторов, а также набор документов для обучения работе с программой;
  • 4) программа должна обладать высокой производительностью, высокой реактивностью или удовлетворять другим требованиям, в противном случае ее использование по назначению (на реальных данных) может привести к значимым для пользователей потерям;
  • 5) программа должна обладать высокой надежностью. Неправильная работа программы может нанести ощутимый ущерб пользователям и другим организациям и лицам, даже если сбои происходят не слишком часто;
  • 6) для выполнения своих задач программа должна удовлетворять требованиям совместимости, переносимости и интеграции с другими программами и программно-аппаратными системами и обеспечивать работу на разных платформах;
  • 7) пользователи, работающие с программой, могут приобретать дополнительные выгоды от того, что программа развивается, в нее вносятся новые функции и устраняются ошибки. Поэтому необходимо наличие проектной документации, позволяющей развивать ее, возможно, вовсе не тем разработчикам, которые ее создавали, без больших затрат на обратную разработку (реинжиниринг);
  • 8) в разработку программы вовлечено значительное количество людей (десятки и сотни человек). Большую программу практически невозможно написать с первой попытки, с небольшими усилиями и в одиночку;
  • 9) большая программа имеет намного большее количество ее возможных пользователей по сравнению с небольшими программами и еще больше тех лиц, деятельность которых будет так или иначе затронута ее работой и результатами.

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

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

В США к 1985 г. примерно 40% работающих использовали в своей профессиональной деятельности компьютер и программные системы, не обязательно зная, как эти средства функционируют [4]. По данным [16] в США в 2010 г. уровень использования компьютеров составил 90%, в Европе - 70%. Однако эта тенденция усиливается, и к 2015-2018 гг. около 95% работающих будут использовать компьютеры в своей повседневной деятельности. При этом более половины пользователей будут иметь определенные знания о работе компьютера.

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

В России с 1 января 2010 г. все организации, обрабатывающие в своих информационных системах персональные данные физических лиц (сотрудников, клиентов, партнеров и т.п.), независимо от размера и формы собственности должны выполнять требования, установленные Законом № 152-ФЗ «О персональных данных» [22]. Последние изменения по защите персональных данных были внесены Федеральным законом №261-ФЗ от 25.07.2011. Этим законом была уточнена сфера действия Федерального закона «О персональных данных», используемые в нем основные понятия, принципы и условия обработки персональных данных.

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

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

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

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

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

Рост спроса на программные системы предъявляет существенные требования к инженерному проектированию. Требования эти двоякого рода: во-первых, существенно повысить производительность труда при разработке программного обеспечения, и, во-вторых, повысить эффективность сопровождения программного продукта (ПП). Последнее особенно важно, поскольку сопровождение требует больших затрат, чем разработка. В частности, еще по данным 80-х гг. прошлого века, приведенным Б. Боэмом [4], среднее распределение затрат по 477 системам обработки данных оказалось следующим: разработка - 43,7%, сопровождение - 48,8%, другие работы - 7,9%. Более свежие данные по ряду источников [13] свидетельствуют о подтверждении такого распределения и в настоящее время. И это несмотря на совершенствование инструментальных систем, методологии программирования и развитие САБЕ-средств, поддерживающих все этапы жизненного цикла программных систем.

 
Если Вы заметили ошибку в тексте выделите слово и нажмите Shift + Enter
< Пред   СОДЕРЖАНИЕ   След >
 

Популярные страницы