- •О. В. Шишов технология разработки программных продуктов
- •1. Программы и программирование
- •1.1 Основные определения
- •1.2. Классификация программ и различные виды программирования
- •1.3. Категории специалистов, занятых разработкой и эксплуатацией программ
- •2. Жизненный цикл программного обеспечения
- •2.1 Основные этапы жизненного цикла и их взаимосвязь
- •2.2 Стратегии и модели жизненного цикла
- •3. Качество по
- •3.1 Критерии оценки качества по
- •3.2 Методы оценки качества программного средства
- •4. Надежность программных продуктов
- •4.1 Надежность и виды отказов
- •4.2 Надежность и правильность программы
- •4.3. Вероятностный подход к оценке надежности
- •4.4 Факторы надежности
- •4.5 Приемы надежного программирования
- •6.2. Стандарты технологии создания программных продуктов
- •6.3. Основные этапы технологического процесса разработки программ
- •7. Структурное проектирование программных продуктов
- •7.1. Модули. Сцепление и связность модулей
- •7.2. Структура программных продуктов
- •7.3. Методы структурного программирования
- •8. Алгоритмическое представление задачи программирования
- •8.1. Свойства алгоритмов
- •8.2. Формы записи алгоритмов
- •8.3. Базовые алгоритмические структуры
- •9. Языки программирования
- •9.1. Основные понятия и элементы языков программирования
- •9.2. Классификация языков программирования
- •9.3. Развитие языков программирования
- •10. Пользовательский интерфейс
- •10.1. Типы интерфейсов
- •10.2. Этапы разработки пользовательского интерфейса
- •10.3. Критерии оценки интерфейса пользователем
- •11. Порядок работы эвм при выполнении программ. Трансляторы, интерпритаторы, компиляторы
- •12. Оптимизация программ
- •13. Отладка и тестирование программного обеспечения
- •13.1. Классификация неисправностей и ошибок в программе
- •13.2. Порядок и способы отладки и тестирования программ
- •13.3. Методы тестирования
- •13.4. Требования и рекомендации по тестированию программ
- •13.4. Программирование «с защитой от ошибок»
- •14. Аттестация программного средства
- •15. Сопровождение по
- •16. Защита программных продуктов
- •16.1. Обеспечение защищенности программных средств
- •16.3. Правовые методы защиты программных продуктов
- •17. Документорование программных продуктов
- •17.1. Виды программных документов
- •17.2. Содержание документации по еспд
- •17.3. Стиль оформления программы
- •Содержание
4.4 Факторы надежности
При любом виде деятельности людям свойственно непредумышленно ошибаться, в результате чего появляются в процессе создания или применения изделий или систем. В общем случае под ошибками подразумевается дефект, погрешность или неумышленное искажение объекта или процесса. При строго фиксированных данных программы исполняются по определенным маршрутам и выдают совершенно определенные результаты. Многочисленные варианты использования программ при разнообразных исходных данных представляются наблюдателю, как случайные, поэтому возникновение ошибок считается случайным и имеет разную природу и последствия. Анализ надежности ПС базируется на модели взаимодействия основных компонент представленном на рис.
Объекты уязвимости |
|
Дестабилизирующие факторы и угрозы надежности |
|
Методы предотвращения угрозы надежности: |
|
Последствия нарушения надежности: |
Вычислит. процесс
Объектный код
Инф-ция для потребителей |
|
Внутренние: 1. ошибки проектирования при постановке задачи 2. ошибки алгоритмизации задачи 3. ошибки программирования 4. недостаточное качество средств защиты
Внешние: 1. ошибки персонала при эксплуатации 2. искажение инф-ции в каналах связи 3. сбои и отказы аппаратуры ЭВМ 4. изменение конфигурации системы |
|
1. предотвращение ошибок проектирования в технологии 2. систематическое тестирование 3. обязательная сертификация |
|
1. разрушение выч-ного процесса 2. разрушение инф-ции базы данных 3. разрушение текста программ 4. разрушение инф-ции для потребителя |
|
||||||
Оперативные методы повышения надежности: |
||||||
1. временная избыточность 2. инф-ционная избыточность 3. программная избыточность |
Объектами уязвимости влияющими на надежность ПС являются:
-
динамический вычислительный процесс обработки данных, автоматизированной подготовки решений и выработки управляющих воздействий;
-
информация, накопленная в БД, отражающая объекты внешней среды в процессе ее обработки;
-
объектный код программы исполняемых вычислительными средствами в процессе функционирования ПС;
-
информация подаваемая пользователю и на исполнительные механизмы, являющаяся результатом обработки исходных данных и информации накопленной в БД.
На эти объекты воздействуют различные дестабилизирующие факторы:
Внутренние:
-
системные ошибки при постановке целей и задач, создания ПС, при формулировке требований к функциям и характеристикам решения задач, определения условий и параметров внешней среды.
-
алгоритмические ошибки разработки при непосредственной спецификации функций ПС, при определении структуры и взаимодействии компонент комплекса программ, а также при использовании БД.
-
ошибки программирования в текстах программ и описание данных, а также в исходной и результирующий документации на компоненты и ПС в целом.
-
недостаточную эффективность в используемых методах и средств оперативной защиты программ и данных от сбоев и отказов, и обеспечении надежности функционирования ПС в условиях случайных негативных воздействий.
Внешние:
-
ошибки оперативного и обслуживающего персонала в процессе эксплуатации ПС.
-
искажение в каналах телекоммуникации, информации, поступающей от внешних источников и передаваемой потребителя, а также недопустимые для конкретной информационной системы характеристики потоков внешней информации.
-
сбои и отказы в аппаратуре вычислительных средств.
-
изменение состава и конфигурации комплекса, взаимодействующей аппаратуры информационной системы за пределы проведенные при испытании или сертификации и отлаженной ПС в эксплуатационной документации.
Практически, чем выше требования к правильности и универсальности программного обеспечения, тем выше и требования к его надежности. Источниками помех могут являться все участники вычислительного процесса: технические средства, программные средства и люди.
Технические средства подвержены сбоям, например, из-за резких скачков напряжения питания или помех при передаче информации по сетям. Программное обеспечение может содержать ошибки. А люди могут ошибаться при вводе исходных данных.
Современные вычислительные устройства уже достаточно надежны. Сбои технических средств, как правило, регистрируются аппаратно, соответственно результаты вычислений в этом случае восстанавливаются. В случае длительных вычислений, как правило, промежуточные результаты сохраняют (прием получил название «создание контрольных точек»), что позволяет при возникновении сбоя продолжить вычисления с данными, записанными в последней контрольной точке.
Передача информации по сетям также аппаратно контролируется, кроме того, обычно применяется специальное помехозащитное кодирование, которое позволяет находить и исправлять ошибки передачи данных. Однако полностью исключить ошибки технических средств невозможно, поэтому в тех случаях, когда требования к надежности высоки, обычно используют дублирование систем, при котором две системы решают одну и ту же задачу параллельно, периодически сверяя полученные результаты.
Часто самым «ненадежным элементом» современных систем являются люди. Уже хорошо известно, что в условиях монотонной работы за пультом вычислительной установки операторы допускают большое количество ошибок. Известны и средства, позволяющие снизить количество ошибок в конкретных ситуациях. Так, там, где это возможно, используют ввод избыточной информации, позволяющий выполнять проверки правильности вводимых данных (ввод контрольных сумм и т. п.. Кроме этого, широко используют всякого рода подсказки, когда информацию необходимо не вводить, а выбирать из некоторого списка и т. п.
Повышенные требования к надежности предъявляют при разработке систем управления, функционирующих в режиме реального времени, когда вычисления выполняются параллельно с технологическими процессами. Существенно это требование и для научно-технических систем и баз данных.
Степень надежности ПО можно улучшать с помощью различных методов, тем не менее трудно достичь нужного соотношения между временем разработки, ее бюджетной стоимостью и высокой ценой, уплаченной за достигнутую надежность ПО.
В отличии от аппаратного обеспечения ПО с течением времени не «изнашивается» просто выявляются все новые и новые его дефекты. На рис. показана кривая распределения сбоев на протяжении эксплуатации ПО.