Введение. Надежное программное средство как продукт технологии программирования. Исторический и социальный контекст программирования. Программа как формализованное описание процесса обработки данных. Программное средство. Неконструктивность понятия правильной программы. Надежность программного средства. Технология программирования как технология разработки надежных программных средств. Технология программирования и информатизация общества. Литература к лекции. Источники ошибок в программном средстве. Интеллектуальные возможности человека. Неправильный перевод как причина ошибок в программном средстве. Модель перевода. Основные пути борьбы с ошибками. Литература к лекции. Общие принципы разработки программных средств. Специфика разработки программных средств. Жизненный цикл программного средства. Понятие качества программного средства. Обеспечение надежности - основной мотив разработки программных средств. Методы борьбы со сложностью. Обеспечение точности перевода. Преодоление барьера между пользователем и разработчиком. Контроль принимаемых решений. Литература к лекции. Внешнее описание программного средства. Назначение внешнего описания программного средства и его роль в обеспечении качества программного средства. Определение требований к программному средству. Спецификация качества программного средства. Функциональная спецификация программного средства. Методы контроля внешнего описания программного средства. Литература к лекции. Методы спецификации семантики функций. Основные подходы к спецификации семантики функций. Метод таблиц решений. Операционная семантика. Денотационная семантика. Аксиоматическая семантика. Языки спецификаций. Литература к лекции. Архитектура программного средства. Понятие архитектуры программного средства. Основные классы архитектур программных средств. Архитектурные функции. Контроль архитектуры программного средства. Литература к лекции. Разработка структуры программы и модульное программирование. Цель модульного программирования. Основные характеристики программного модуля. Методы разработки структуры программы. Контроль структуры программы. Литература к лекции. Разработка программного модуля. Порядок разработки программного модуля. Структурное программирование. Пошаговая детализация и понятие о псевдокоде. Контроль программного модуля. Литература к лекции. Доказательство свойств программ. Обоснования программ. Формализация свойств программ. Свойства простых операторов. Свойства основных конструкций структурного программирования. Завершимость выполнения программы. Пример доказательства свойства программы. Литература к лекции. Тестирование и отладка программного средства. Основные понятия. Принципы и виды отладки. Заповеди отладки. Автономная отладка модуля. Комплексная отладка программного средства. Литература к лекции. Обеспечение функциональности и надежности программного средства. Функциональность и надежность как обязательные критерии качества программного средства. Обеспечение завершенности программного средства. Обеспечение точности программного средства. Обеспечение автономности программного средства. Обеспечение устойчивости программного средства. Обеспечение защищенности программных средств. Литература к лекции. Обеспечение качества программного средства. Общая характеристика процесса обеспечения качества программного средства. Обеспечение легкости применения программного средства. Обеспечение эффективности программного средства. Обеспечение сопровождаемости программного средства. Обеспечение мобильности программного средства. Литература к лекции. Документирование программных средств. Документация, создаваемая в процессе разработки программных средств. Пользовательская документация программных средств. Документация по сопровождению программных средств. Литература к лекции. Аттестация программного средства. Назначение аттестации программного средства. Виды испытаний программного средства. Методы оценки качества программного средства. Литература к лекции. Оъектный подход к разработке программных средств. Объекты и отношения в программировании. Сущность объектного подхода к разработке программных средств. Объекты и субъекты в программировании. Объектный и субъектный подходы к разработке программных средств. Объектный подход к разработке внешнего описания и архитектуры программного средства. Особенности объектно-ориентированного программирования. Литература к лекции. Компьютерная поддержка разработки и сопровождения программных средств. Инструменты разработки программных средств. Инструментальные среды разработки и сопровождения программных средств. Инструментальные среды программирования. Понятие компьютерной технологии разработки программных средств и ее рабочие места. Инструментальные системы технологии программирования. Литература к лекции. Обязанности и ответственность программистов. Интеллектуальная собственность.