- •Введение Цели и задачи курса «Технология программирования»
- •Классификация программного обеспечения
- •Тема 1.Понятие программного изделия
- •1.1.Основные требования к программному изделию как к продукции производственно-технического назначения
- •1.2.Жизненный цикл программных изделий
- •1.3.Методическая, технологическая, инструментальная и организационная поддержка процесса проектирования программных изделий
- •1.4.Этапы проектирования сложных программных изделий
- •Тема 2.Внешнее проектирование программных изделий
- •2.1.Разработка требований и внешнее проектирование программных изделий
- •2.2.Обеспечение целей создания программных изделий Цели проекта с точки зрения пользователя
- •Цели проекта с точки зрения разработчика
- •2.3.Разработка внешних спецификаций проекта
- •Тема 3.Внутреннее проектирование программных изделий
- •3.1.Понятие модуля. Характеристики качества модулей
- •3.2.Методы проектирования программ
- •Иерархическая декомпозиция и абстрактные машины (метод нисходящей декомпозиции)
- •Программирование на основе принципа пошагового совершенствования
- •Структурное программирование по нисходящему принципу
- •Программирование с использованием пошаговой реорганизации
- •Способы описания программ. Язык проектирования программ
- •Тема 4.Структурированные программы
- •4.1.Блок-схемы и управляющие структуры
- •4.2.Теорема о структурировании
- •4.3.Рекурсивные структурированные программы
- •Тема 5.Методы Доказательства правильности программ
- •5.1.Математический аппарат доказательства Принцип простой индукции
- •Принцип модифицированной простой индукции
- •Принцип обобщенной индукции
- •5.2.Методы доказательства правильности программ Метод индуктивных утверждений
- •Пример доказательства правильности программы методом индуктивных утверждений
- •Тема 6.Рекурсивные программы. Методы доказательства их правильности
- •6.1.Понятие рекурсивных программ. Способы их описания Язык описания рекурсивных программ
- •Примеры рекурсивных программ
- •6.2.Рекурсивные программы работы со списками Списки и операции над ними
- •Примеры программ работы со списками
- •6.3.Примеры доказательства правильности рекурсивных программ
- •Тема 7.Отладка программ
- •7.1.Типичные ошибки в программных комплексах
- •7.2.Задачи отладки программ
- •7.3.Методы разработки тестов Метод эквивалентных разбиений
- •Методы тестирования программ путем покрытия логики
- •Метод функциональных диаграмм
- •Предположения об ошибках
- •7.4.Задачи комплексной отладки программ
- •Библиографический список
Тема 2.Внешнее проектирование программных изделий
2.1.Разработка требований и внешнее проектирование программных изделий
Главной особенностью требований к программным изделиям является то, что они отражают нужды организации пользователя. В связи с этим можно выделить несколько групп программных проектов:
управляемые пользователем,
утверждаемые пользователем,
независимые от пользователя.
Для проектов первой группы требования формулируются организацией пользователя. Для проектов второй группы совокупность требований разрабатывается проектировщиком или проектировщиком совместно с пользователями, после чего пользователь утверждает эти требования, а иногда и внешние спецификации. Для проектов третьей группы требования полностью определяются и утверждаются организацией разработчика, которая несет полную ответственность за работу, при этом для более качественного выполнения проекта на начальной стадии проектирования целесообразно привлекать к формулировке требований потенциальных пользователей с учетом специфики проекта.
Требования к программным изделиям должны разрабатываться небольшой группой лиц, например, в эту группу от организации пользователя должен входить представитель, наделенный правом принятия окончательного решения, и представитель, который будет непосредственно эксплуатировать программные изделия. От организации разработчика включаются специалист, который руководит процессом внешнего проектирования, и специалист, принимающий участие во внутреннем проектировании. Требования должны однозначно определять конечный продукт разработки и, может быть, метод разработки, но не подход к проектированию. В процессе разработки требований необходимо решить следующие задачи:
выявить наличие информации, необходимой для выполнения планируемых функций;
определить трудоемкость и стоимость предстоящей работы;
обеспечить полноту и точность определения функций, подлежащих выполнению программным изделием;
выявить пространственно-временные ограничения, налагаемые на систему, а также средства системы, которые могут претерпеть изменения.
Можно выделить две фазы в выработке требований:
фаза планирования, на которой в процессе взаимодействия пользователя и разработчика определяется реализуемость, устанавливаются цели, оцениваются затраты, обеспечивается ориентация для разработки проекта;
фаза выработки требований пользователя, на которой вырабатываются требования к внешним спецификациям, к входным данным, информационным потокам, выходным данным, документации, системной среде и вычислительным ресурсам. Именно на этой фазе вырабатываются детализированные требования к программному изделию.
Результатом работы по выработке требований обычно является документ, который должен быть:
достаточным для идентификации целей создания программного изделия, его среды, преимуществ и недостатков программного изделия для пользователя, состава и конфигурации ресурсов для его работы;
достаточно полным, чтобы в последующем при разработке исключить серьезные модификации и пересмотр требований.
2.2.Обеспечение целей создания программных изделий Цели проекта с точки зрения пользователя
Цели создания программного изделия, регламентируемые с точки зрения пользователя, обычно включают следующую информацию.
Краткое описание. В нем кратко определяется общее назначение разрабатываемого программного изделия и его функции.
Определение пользователя. Здесь описывается круг возможных пользователей программного изделия.
Подробное описание функциональных задач. Оно характеризует однозначное восприятие требований пользователей и разработчиков.
Документация. Определяются типы документаций и предлагаемый круг читателей для каждого типа.
Эффективность. Описываются все цели, касающиеся производительности – это временные характеристики, пропускная способность, используемые ресурсы.
Совместимость. Указываются стандарты, которым необходимо следовать в процессе разработки, а также другие программные продукты, с которыми программное изделие должно быть совместимым.
Конфигурация. Определяются различные конфигурации технических и программных средств, в среде которых может работать программное изделие.
Безопасность. Формируются цели в отношении обеспечения безопасности программного изделия.
Обслуживание. Описываются цели по затратам и времени исправления ошибок.
Установка. Здесь описываются методы и средства настройки программного изделия на конкретные условия эксплуатации.
Надежность.