Лекция 8. Технология разработки программных комплексов для управления автоматическими и автоматизированными системами.

Проблемы разработки ПО

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

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

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

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

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

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

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

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

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

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

Методы борьбы с ошибками ПО имеют еще одно важнейшее направление: конструирование ПО со свойствами устойчивости к ошибкам.

4. Проблемы изменяемости ПО.

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

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

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

В настоящее время по американской статистике из-за неправильной технологии разработки ПО, низкого уровня планирования и организации работ – хаотического процесса разработки 15% всех программных продуктов так и не достигли своего завершения. А для оставшихся 85% превышение первоначально заявленной стоимости и сроков создания в 2-3 раза является обычным явлением.

Таким образом, разработка ПО требует трех знаний: знаний в предметной области, знаний в области программирования, знаний в области технологии разработки ПО.

 

Качество ПО и технология его производства. Влияние человеческого фактора

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

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

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

Рис. 8.1 - Факторы, влияющие на качество ПО

 

Технология разработки ПО включает в себя методы управления программным проектом, которые включают в себя методы и принципы:

-организации разработки,

-планирования разработки,

-контроля хода разработки,

-мотивации разработчиков ПО.

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

Человеческий фактор влияет на качество ПО двумя сторонами. Во первых людям свойственно ошибаться. Ошибки бывают двух видов:

ü Ошибки-промахи

ü Ошибки-заблуждения

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

Кроме деструктивного влияния человеческого фактора можно отметить и позитивные его стороны. Имеются три грани в квалификации разработчиков ПО:

Уровень знаний и опыт в предметной области,

Уровень знаний и опыт в области программирования.

Уровень знаний и опыт в технологии разработки ПО.

При этом приоритет отдается знаниям в предметной области. Конечно, без программирования в настоящее время ПО не создашь. Но программирование – всего лишь средство выражения идей предметной области.

 

Стандартизация характеристик качества ПО. Управление качеством ПО

Несмотря на огромное разнообразие программных продуктов, производимых в настоящее время и соответственно огромное количество критериев качества для них, удалось выделить некоторое количество базовых критериев качества ПО, которое легло в основу международного стандарта ИСО/МЭК 9126-92 «характеристики качества ПО» .

Качество ПО в соответствии с этим стандартом оценивается шестью базовыми характеристиками:

-функциональные возможности,

-надежность,

-эффективность,

-практичность,

-сопровождаемость,

-мобильность или переносимость на другую аппаратную платформу или в другое программное окружение прежде всего ОС.

Данный набор базовых критериев качества не лишен недостатков. Например, в нем явно не хватает требования по безопасности ПО.

В итоге процесс управления качеством ПО состоит из 5 шагов:

1.Определение критериев качества ПО и их мер с учетом конкретного назначения ПО.

2.Определение потребного уровня значений, выбранных критериев качества.

3.Определение методической базы измерения критериев качества.

4.Обеспечение качества ПО как множества процедур и стандартов и их адаптация для конкретного случая разработки ПО.

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

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

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

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

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