Файл: Лекция Проблемы разработки по и пути их решения.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 23.11.2023

Просмотров: 9

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

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

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

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

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

Требуется разработать:

1.структуру такого ПО,

2.схему взаимодействия компонентов ПО между собой в «пространстве и во времени» и добиться работоспособности этой схемы.

3.меры по восстановлению работоспособности ПО и системы в случае возникновения нештатных ситуаций.

Нештатная ситуация – сочетание условий и обстоятельств при эксплуатации сложных технических систем и их ПО, отличающихся от предусмотренных для нормального функционирования и ведущих к возникновению аварийных и опасных состояний. В число нештатных ситуаций входят отказы оборудования системы, проявлению ошибок в программном обеспечении, ошибки во входных данных, отклонения от заданных условий эксплуатации, на которые проектировалась, отрабатывалась и испытывалась система. 9 Внешние возмущающие факторы (ВВФ), человеческий фактор, большое количество элементов и программ, каждые из которых имеет конечную надежность и с течением времени отказывают являются причиной того, что ситуация, когда сложная техническая система (СТС) функционирует полностью исправной, является крайне редкой. При полете Ю.А. Гагарина, например, зафиксировано 11 нештатных ситуаций. Тем не менее этот полет, как и множество других примеров из работы СТС, заканчиваются успешно, благодаря наличию разумной избыточности ПО и оборудования, наличию заранее продуманного плана действий и предусмотренной его реализации, как правило в ПО, при возникновении множества самых разнообразных нештатных ситуаций.

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

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

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

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

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

Можно сказать, что инженерия ПО состоит из двух частей: технологии разработки ПО и Надежность и качество ПО. Действительно, для реальной разработки ПО необходимы инженерные знания в области: характеристик качества ПО, стандартизованных в ГОСТ Р ИСО/МЭК 9126-93, методов их измерений и обеспечения. жизненного цикла ПО, трудоемкости разработки ПО и ее связей с характеристиками и сложностью ПО, планирования и оценки программного проекта, технологий в области проектирования алгоритмов и программ, проектирования архитектуры (структуры ПО и организации вычислительного процесса системной ЦВМ), свойств ПО, реализуемых при конструировании ПО, упрощающих его разработку, повышающих его надежность и безопасность, организации корпоративной разработки ПО, технологий отладки ПО, технологической защиты ПО, необходимости и опасности проведения изменений ПО, причин типичных ошибок и методов их предупреждения и обнаружения. 11 Проблемы разработки ПО и пути их решения Современные вычичслительные машины были изобретены как устройства, способные убыстрить и облегчить проведение сложных численных расчетов. Теперь же в большинстве случаев на первый план выходит способность ЦВМ получать, обрабатывать и выдавать огромные объемы информации и непосредственно управлять сложными физическими процессами, их порождающими.

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


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

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