
- •1. Технология программирования. Основные понятия и подходы
- •1.1. Технология программирования и основные этапы ее развития
- •1.2. Проблемы разработки сложных программных систем
- •1.3. Блочно-иерархический подход к созданию сложных систем
- •1.4. Жизненный цикл и этапы разработки программного обеспечения
- •1.5. Эволюция моделей жизненного цикла программного обеспечения
- •1.6. Ускорение разработки программного обеспечения.
- •1.7. Оценка качества процессов создания программного обеспечения
- •2. Приемы обеспечения технологичности программных продуктов
- •2.1. Понятие технологичности программного обеспечения
- •2.2. Модули и их свойства
- •2.3. Нисходящая и восходящая разработка программного обеспечения
- •2.4. Структурное и «неструктурное» программирование. Средства описания структурных алгоритмов
- •2.5. Стиль оформления программы
- •2.6. Эффективность и технологичность
- •2.7. Программирование «с защитой от ошибок»
- •2.8. Сквозной структурный контроль
- •3. Определение требований к программному обеспечению и исходных данных для его проектирования
- •3.1. Классификация программных продуктов по функциональному признаку
- •3.2. Основные эксплуатационные требования к программным продуктам
- •3.3. Предпроектные исследования предметной области
- •3.4. Разработка технического задания
- •1. Введение
- •2. Основание для разработки
- •3. Назначение
- •4.Требования к программе или программному изделию
- •5. Требования к программной документации
- •1. Введение
- •2. Основание для разработки
- •3. Назначение
- •4. Требования к программе или программному изделию
- •5. Требования к программной документации
- •1. Введение
- •2. Основание для разработки
- •3. Назначение
- •4. Требования к программе или программному изделию
- •5. Требования к программной документации
- •6. Этапы разработки
- •3.5. Принципиальные решения начальных этапов проектирования
5. Требования к программной документации
5.1.Разрабатываемые программные модули должны быть самодокументированы, т. е. тексты программ должны содержать все необходимые комментарии.
5.2.Программная система должна включать справочную информацию о работе и подсказки пользователю.
5.3.В состав сопровождающей документации должны входить:
5.3.1.Пояснительная записка на 25-30 листах, содержащая описание разработки.
5.3.2.Руководство системного программиста.
5.3.3.Руководство пользователя.
5.3.4.Графическая часть на трех листах формата А1:
5.3.4.1.Схема структурная программной системы.
5.3.4.2.Диаграмма компонентов данных.
5.3.4.3.Формы интерфейса пользователя.
Пример 3.3. Разработать техническое задание на создание системы решения комбинаторно-оптимизационных задач. Первая версия системы должна включать алгоритмы решения задач: поиска цикла минимальной длины (задача коммивояжера), поиска кратчайшего пути и поиска минимального связывающего дерева.
Комбинаторными называют задачи, решение которых сводится к выбору варианта из конечного множества решений. В комбинаторно-оптимизационных задачах в конечном множестве допустимых решений отыскивается такое, для которого целевая функция достигает оптимального (минимального или максимального) значения.
Задача коммивояжера или поиска цикла минимальной длины в простейшем варианте формулируется следующим образом. Задан список городов и дорог, соединяющих данные города. Известны расстояния между городами. Необходимо объехать все города, не заезжая ни в какой город дважды, и вернуться в исходный город так, чтобы суммарная длина пути была минимальной.
Задача поиска кратчайшего пути при тех же исходных данных предполагает другую цель:
необходимо проехать из одного города в другой так, чтобы суммарная длина пути была минимальной.
Задача поиска минимального связывающего дерева ставится на тех же исходных данных, но теперь мы прокладываем телефонные линии вдоль дороги и хотим, чтобы длина кабеля была минимальной.
Текст технического задания приведен ниже.
1. Введение
Настоящее техническое задание распространяется на разработку системы решения комбинаторно-оптимизационных задач, предназначенной для ввода и хранения данных указанных задач, а также для их решения и хранения полученных результатов, и использования разработчиками программных и аппаратных средств вычислительной техники.
Широкий круг задач проектирования различного рода технических объектов, в том числе и компьютеров, относится к классу комбинаторно-оптимизационных задач, точные методы решения которых, как правило, имеют экспоненциальную вычислительную сложность и нереализуемы на современных компьютерах. В настоящее время для решения таких задач широко используются приближенные методы и алгоритмы, которые требуют различных вычислительных ресурсов и обеспечивают разную точность решения.
В то же время эти методы и алгоритмы не систематизированы, оценки их вычислительной и емкостной сложности и сведения о возможной точности получаемых решений неполны и разбросаны по многим источникам. В рамках единой системы не существует программной реализации даже для ограниченного круга алгоритмов решения основных комбинаторно-оптимизационных задач проектирования.
Создание системы, в рамках которой были бы реализованы наиболее часто упоминаемые методы и алгоритмы решения комбинаторно-оптимизационных задач, позволит как оценивать и исследовать отдельные методы и алгоритмы, так и сравнивать их с точки зрения затрат вычислительных ресурсов и точности получаемых решений.