- •Общая характеристика технологии программных средств.
- •Принципиальная схема разработки программных средств. (Технология, процесс создания).
- •Способы описания алгоритмов.
- •Описание алгоритма с помощью таблиц решения.
- •Технология системного проектирования программных средств. Принципиальная схема разработки.
- •Современные методы и средства разработки прикладных программных средств.
- •Характеристики качества программного обеспечения.
- •Языки программирования.
- •Надёжность программного обеспечения.
- •Показатели надёжности.
- •Факторы, определяющие надёжность по.
- •Стандартизация. Дисциплина и творчество программирования.
- •Виды программ и программных документов.
- •Виды программных документов.
- •Эксплуатационные документы.
- •Классификация документов.
- •Работы, выполняемые на стадии «Эскизный проект».
- •Структурное программирование.
- •Терминология и обозначения.
- •Очевидно, что g и h являются простыми программами, иначе f была бы не простой.
- •Число управляющих линий в блоке h удовлетворяет соотношению:
- •Графическая иерархическая документация (гид).
- •Простейшие пути повышения качества программ.
- •Классификация ошибок.
- •Сквозной структурный контроль.
- •Стиль программирования и качества программ.
- •Case – технологии.
- •Моделирование данных.
- •Что дает применение case-средств?
- •Средства реализации case-технологий.
- •Общая характеристика case-средства
- •Особенности рабочего интерфейса
- •Начало работы с проектом в среде
- •Разработка диаграммы вариантов использования в среде Rational Rose.
- •Разработка диаграммы классов в среде
- •Диаграмма классов
- •Разработка диаграммы состояний в среде Rational Rose.
- •Разработка диаграммы последовательности в среде Rational Rose.
- •Разработка диаграммы кооперации в среде Rational Rose.
- •Разработка диаграммы компонентов в среде Rational Rose.
- •Разработка диаграммы развёртывания в среде Rational Rose.
- •Практические примеры диаграмм.
- •Актеры.
- •Диаграмма классов (основы)
- •Ассоциации
- •Заказ от одного клиента
- •Полезные советы по использованию диаграмм классов
- •Диаграмма взаимодействия
- •Диаграмма кооперации
- •Диаграмма кооперации
- •Диаграмма пакетов
- •Диаграмма состояний
- •Верификация программ.
- •Восходящее тестирование, нисходящее тестирование.
- •Методы тестирования компонентов.
- •Структура коллектива программистов.
- •Общая структура коллектива, работающего над крупным проектом.
- •Трудовые затраты по видам работ (человеко/месяц).
Верификация программ.
Особенностью программного продукта является практическая невозможность не в тривиальных случаях произвести всестороннее и полное его испытание с целью выявления ошибок.
Известное высказывание Дейкстры говорит о том, что экспериментальное тестирование программ может служить доказательством наличия в них ошибок, но никогда не докажет их отсутствие. Поэтому естественно стремление программистов найти возможность формулировать и доказывать некоторые утверждения, касающиеся правильности созданной программы подобно тому, как в математике формулируются и доказываются теоремы и решения.
Верификация – идея математического доказательства корректности программ.
Верификация обычно сводится к доказательству того факта, что программа является корректной, относительно её входной и выходной спецификаций.
Наиболее известный метод называется методом индуктивных утверждений.
В этом методе первый шаг состоит в записи утверждений, относительно свойств входных и выходных данных программы, а также результатов в ряде промежуточных точек, называемых точками разреза. Эти утверждения формулируются в некоторой формально-логической системе. На основе этих утверждений и семантики операторной схемы программы путем определённых преобразований формулируются верификационные условия, а затем эти условия доказываются.
Если они оказываются истинными, то программа корректна относительно входных и выходных данных.
Если доказать истинность условий невозможно, то либо в программе есть ошибки, либо ошибки есть в процедуре доказательства (например, неверное утверждение в некоторой точке разреза).
Если программист хочет написать правильную программу, ему необходимо выполнить следующие этапы:
написать программу;
определить входные и выходные условия для этой программы;
разрезать циклы и снабдить каждую точку разреза индуктивным утверждением;
получить верификационные условия;
доказать истинность верификационных условий. Если это не удается, то не исключено, что какое-то индуктивное утверждение записано не верно или программа содержит ошибку.
Очевидно, что методы верификации найдут широкое применение в практике в том случае, если удастся их формировать настолько явно, что можно будет осуществлять верификацию программ с помощью ЭВМ.
Выводы:
Использование в практике программирования систем доказательства правильности программ эффективно лишь при помощи ЭВМ.
Методы математического доказательства теорем в настоящее время интенсивно развиваются и совершенствуются. Их применение в программировании способствует дальнейшему прогрессу в этой области.
Идеи доказательства правильности программ оказывают свое влияние на общую культуру программирования. Необходимость формального описания входных и выходных данных побуждает программиста четко определять интерфейсы между модулями программы. Механизм утверждений представляет собой превосходное средство спецификаций модулей. Далее, пытаясь изобрести индуктивные утверждения, программист вынужден более тщательно и глубоко анализировать свою программу и таким образом обнаруживать в ней ошибки.