Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
A_Kpo.pdf
Скачиваний:
156
Добавлен:
10.06.2015
Размер:
1.82 Mб
Скачать

1.Роль ПО и компьютеров в производстве, социальной жизни и науке.

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

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

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

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

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

В развитии биологических и социальных систем также просматривается тенденция все более широкого применения ЦВМ и их ПО для обработки информации и выработки управляющих воздействий

Растет использование ЦВМ в научных исследованиях. Со времен Сократа научный метод состоит из следующих составляющих:

поставить вопрос,

cформулировать гипотезу и найти доказательства,

поставить эксперимент,

объяснить результаты и сделать выводы,

пересмотреть гипотезу (вернуться к второму шагу).

Компьютеры позволили изменить эти этапы и количественно и качественно.

Компьютерное моделирование во многих случаях позволяет заменить или дополнить физический эксперимент.

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

2. Инженерия ПО

Программная инженерия – систематическое применение научных и технологических знаний, методов и практического опыта к проектированию, реализации, тестированию и документированию ПО в целях оптимизации его производства, поддержки и качества (ISO/IEC 2382/1-93).

В совокупности наук имеются «компьютерная наука» (computer science) - это скорее теоретическая наука. И есть прикладная область исследований, именуемая «инженерией ПО» (software ingenering), объединяющая достижения различных инженерных знаний в создании эффективных и безопасных систем ПО, в управлении проектами ПО и персоналом, в инженерном искусстве верификации и отработки принятых решений, создании хорошей документации и среды тестирования ПО. Можно сказать, что инженерия ПО состоит из двух частей: технологии разработки ПО и Надежность и качество ПО.

Действительно, для реальной разработки ПО необходимы инженерные знания в области:

характеристик качества ПО, стандартизованных в ГОСТ Р ИСО/МЭК 9126-93, методов их измерений и обеспечения.

жизненного цикла ПО,

трудоемкости разработки ПО и ее связей с характеристиками и сложностью ПО,

планирования и оценки программного проекта,

технологий в области проектирования алгоритмов и программ, проектирования архитектуры (структуры ПО и организации вычислительного процесса системной ЦВМ),

организации корпоративной разработки ПО,

технологий отладки ПО,

технологической защиты ПО,

необходимости и опасности проведения изменений ПО,

причин типичных ошибок и методов их предупреждения и обнаружения.

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

3. Проблемы разработки ПО и пути их решения

Какие проблемы сопровождают реальную разработку ПО.

ПО нужно много.

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

Проблема сложности ПО.

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

[Введите текст]

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

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

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

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

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

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

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

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

Универсальный путь борьбы со сложностью систем – сужение пространства перебора – декомпозиция системы на простые подсистемы, связанные между собой. Причем в простой системе число взаимодействующих элементов должно быть <7. Тогда число связей между элементами в предельном случае взаимодействия «каждый с каждым» в такой системе будет не более15. Такое число связей надо в этом предельном случае организовывать, поддерживать и отлаживать. Если удвоить число элементов в системе и дове-

4

сти их до значения <14, то число связей, которые в пределе надо поддерживать и отлаживать увеличится в пять раз((78). Такую сложную систему целесообразно разбить на две простых системы по 7 элементов.

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

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

Чем больше и сложнее программное обеспечение, тем важнее разбить его на небольшие четко описан-

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

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

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

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

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

Здесь необходимо использовать принцип и средства реализации прозрачности распределения ПО, который позволяет рассматривать распределенное ПО, как единое целое

Проблема борьбы с ошибками.

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

[Введите текст]

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]