- •Замок дракона
- •Надёжное программное средство как продукт технологии программирования. Исторический и социальный контекст программирования
- •Программа как формализованное описание процесса обработки данных.
- •Программное средство
- •Неконструктивность понятия правильной программы
- •1.3. Надежность программного средства
- •Технология программирования как технология разработки надежных программных средств
- •Технология программирования и информатизация общества
- •Литература
- •Замок дракона
- •Источники ошибок в программных средствах
- •Интеллектуальные возможности человека
- •Неправильный перевод как причина ошибок в программных средствах
- •Модель перевода
- •Основные пути борьбы с ошибками
- •Жизненный цикл программного средства
- •Понятие качества программного средства
- •Обеспечение надёжности — основной мотив разработки программных средств
- •Методы борьбы со сложностью
- •Обеспечение точности перевода
- •Преодоление барьера между пользователем и разработчиком
- •Контроль принимаемых решений
- •Литература
- •Замок дракона
- •Внешнее описание программного средства
- •Назначение внешнего описания программного средства и его роль в обеспечении качества программного средства
- •Определение требований к программному средству
- •Спецификация качества программного средства
- •Функциональная спецификация программного средства
- •Методы контроля внешнего описания программного средства
- •Литература
- •Замок дракона
- •Л. Витгенштейн
- •Методы спецификации семантики функций
- •Основные подходы к спецификации семантики функций
- •Метод таблиц решений
- •Операционная семантика
- •Денотационная семантика
- •Аксиоматическая семантика
- •Аксиоматическая семантика
- •Литература
- •Замок дракона
- •Архитектура программного средства
- •Понятие архитектуры программного средства
- •Основные классы архитектур программных средств
- •Архитектурные функции
- •Контроль архитектуры программных средств
- •Литература
- •Замок дракона
- •Разработка структуры программы и модульное программирование
- •Цель модульного программирования
- •Основные характеристики программного модуля
- •Методы разработки структуры программы
- •Контроль структуры программы
- •Литература
- •Лекция 8. Разработка программного модуля
- •8.1. Порядок разработки программного модуля.
- •8.2. Структурное программирование.
- •8.3. Пошаговая детализация и понятие о псевдокоде.
- •8.4. Контроль программного модуля.
- •Литература к лекции 8.
- •Лекция 9. Доказательство свойств программ
- •9.1. Обоснования программ. Формализация свойств программ.
- •9.2. Свойства простых операторов.
- •9.3. Свойства основных конструкций структурного программирования.
- •9.4. Завершимость выполнения программы.
- •9.5. Пример доказательства свойства программы.
- •Литература к лекции 9.
- •Лекция 10. Тестирование и отладка программного средства
- •10.1. Основные понятия.
- •10.2. Принципы и виды отладки.
- •10.3. Заповеди отладки.
- •10.4. Автономная отладка модуля.
- •10.5. Комплексная отладка программного средства.
- •Литература к лекции 10.
- •Лекция 11. Обеспечение функциональности и надежности программного средства
- •11.1. Функциональность и надежность как обязательные критерии качества программного средства.
- •11.2. Обеспечение завершенности программного средства.
- •11.3. Обеспечение точности программного средства.
- •11.4. Обеспечение автономности программного средства.
- •11.5. Обеспечение устойчивости программного средства.
- •11.6. Обеспечение защищенности программных средств.
- •Литература к лекции 11.
- •Лекция 12. Обеспечение качества программного средства
- •12.1. Общая характеристика процесса обеспечения качества программного средства.
- •12.3. Обеспечение эффективности программного средства.
- •Литература к лекции 12.
- •Лекция 13. Документирование программных средств
- •13.1. Документация, создаваемая в процессе разработки программных средств.
- •13.2. Пользовательская документация программных средств.
- •Литература к лекции 13.
- •Лекция 14. Аттестация программного средства
- •14.1. Назначение аттестации программного средства.
- •14.2. Виды испытаний программного средства.
- •14.3. Методы оценки качества программного средства.
- •Лекция 15.Оъектный подход к разработке программных средств
- •15.1. Объекты и отношения в программировании. Сущность объектного подхода к разработке программных средств.
- •15.2. Объекты и субъекты в программировании.
- •15.3. Объектный и субъектный подходы к разработке программных средств.
- •15.4. Объектный подход к разработке внешнего описания и архитектуры программного средства.
- •Литература к лекции 15.
Архитектурные функции
Для обеспечения взаимодействия между подсистемами в ряде случаев не требуется создавать какие-либо дополнительные программные компоненты (помимо реализации внешних функций) — для этого может быть достаточно заранее фиксированных соглашений и стандартных возможностей базового программного обеспечения (операционной системы). Так в комплексе автономно выполняемых программ для обеспечения взаимодействия достаточно описания (спецификации) общей внешней информационной среды и возможностей операционной системы для запуска программ. В слоистой программной системе может оказаться достаточным спецификации выделенных программных слоёв и обычный аппарат обращения к процедурам. В программном конвейере взаимодействие между программами также может обеспечивать операционная система (как это имеет место в операционной системе UNIX).
Однако в ряде случаев для обеспечения взаимодействия между программными подсистемами может потребоваться создание дополнительных программных компонент. Так для управления работой комплекса автономно выполняемых программ часто создают специализированный командный интерпретатор, более удобный в данной предметной области для подготовки требуемой внешней информационной среды и запуска требуемой программы, чем базовый командный интерпретатор используемой операционной системы. В слоистых программных системах может быть создан особый аппарат обращения к процедурам слоя (например, обеспечивающий параллельное выполнение этих процедур). В коллективе параллельно действующих программ для управления портами сообщений требуется специальная программная подсистема. Такие программные компоненты никаких внешних функций не выполняют — они реализуют функции, возникшие в результате разработки архитектуры программного средства. В связи с этим такие функции мы будем называть архитектурными.
Контроль архитектуры программных средств
Для контроля архитектуры ПС используется смежный контроль и ручная имитация.
Смежный контроль архитектуры ПС сверху — это её контроль разработчиками внешнего описания: разработчиками спецификации качества и разработчиками функциональной спецификации. Смежный контроль архитектуры ПС снизу — это её контроль потенциальными разработчиками программных подсистем, входящих в состав ПС в соответствии с разработанной архитектурой.
Ручная имитация архитектуры ПС производится аналогично ручной имитации функциональной спецификации, только целью этого контроля является проверка взаимодействия между программными подсистемами. Так же как и в случае ручной имитации функциональной спецификации ПС должны быть сначала подготовлены тесты. Затем группа разработчиков должна для каждого такого теста имитировать работу каждой программной подсистемы, входящей в состав ПС. При этом работу каждой подсистемы имитирует один какой-либо разработчик (не автор архитектуры), тщательно выполняя все взаимодействия этой подсистемы с другими подсистемами (точнее, с разработчиками, их имитирующими) в соответствии с разработанной архитектурой ПС. Тем самым обеспечивается имитационное функционирование ПС в целом в рамках проверяемой архитектуры.