ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 20.11.2019
Просмотров: 9514
Скачиваний: 184

•
поиск
покрывающего
цикла
минимальной
длины
(
задача
коммивояжера
);
•
задачи
поиска
кратчайшего
пути
.
4.1.2.
Для
этих
задач
должны
быть
реализованы
:
•
алгоритм
,
обеспечивающий
получение
точного
решения
;
•
в
том
случае
,
если
точное
решение
получается
алгоритмом
,
имеющим
неполиномиальную
вычислительную
сложность
,
то
необходимо
дополнительно
разработать
алгоритм
,
обеспечивающий
получение
приближенных
решений
с
полиномиальной
вычислительной
сложностью
,
4.1.3.
Методическое
обеспечение
должно
быть
реализовано
в
пользовательском
интерфейсе
системы
,
который
должен
предполагать
выбор
задачи
,
метода
и
алгоритма
ее
решения
;
ввод
данных
;
решение
проектной
задачи
и
сохранение
исходных
данных
,
промежуточных
и
окончательных
результатов
во
встроенной
базе
данных
для
последующего
анализа
.
4.2.
Требования
к
надежности
4.2.1.
Предусмотреть
контроль
вводимой
информации
и
блокировку
некорректных
действий
пользователя
при
работе
с
системой
.
4.2.2.
Обеспечить
корректное
завершение
вычислений
с
соответствующей
диагностикой
при
превышении
имеющихся
вычислительных
ресурсов
.
4.2.3.
Обеспечить
целостность
информации
,
хранящейся
в
базе
данных
.
4.3.
Т
р
е
б
о
в
а
н
и
я
к
с
о
с
т
а
в
у
и
п
а
р
а
м
е
т
р
а
м
т
е
х
н
и
ч
е
с
к
и
х
с
р
е
д
с
т
в
4.3.1.
Система
должна
работать
на
IBM
совместимых
персональных
компьютерах
.
4.3.2.
Минимальная
конфигурация
:
•
тип
процессора
................................................................................................Pentium-100:
•
объем
оперативного
запоминающего
устройства
.......................................16
Мб
;
•
тип
монитора
...................................................................................................SVGA (15').
4.4.
Т
р
е
б
о
в
а
н
и
я
к
и
н
ф
о
р
м
а
ц
и
о
н
н
о
й
и
п
р
о
г
р
а
м
м
н
о
й
с
о
в
м
е
с
т
и
м
о
с
т
и
Система
должна
работать
под
управлением
операционной
системы
Windows'95
и
выше
.
5.
ТРЕБОВАНИЯ
К
ПРОГРАММНОЙ
ДОКУМЕНТАЦИИ
5.1.
Разрабатываемая
система
должна
включать
справочную
информацию
о
работе
системы
и
подсказки
пользователю
.
5.2.
В
состав
сопровождающей
документации
должны
входить
:
•
пояснительная
записка
;
руководство
пользователя
.
6.
ЭТАПЫ
РАЗРАБОТКИ
После
утверждения
технического
задания
организация
-
разработчик
непосредственно
приступает
к
созданию
программного
обеспечения
.
Однако
переход
к
следующему
этапу
разработки
-
этапу
уточнения
спецификаций
требует
принятия
еще
некоторых
принципиальных
решений
,
от
которых
во
многом
зависят
как
характеристики
и
возможности
разрабатываемого
программного
обеспечения
,
так
и
особенности
его
разработки
,
начиная
с
выбора
моделей
этапа
уточнения
спецификаций
.

3.5.
Принципиальные
решения
начальных
этапов
проектирования
На
начальных
этапах
процесса
проектирования
должны
быть
приняты
принципиальные
решения
,
во
многом
определяющие
этот
процесс
,
а
также
качество
и
трудоемкость
разработки
.
К
таким
решениям
относят
:
•
выбор
архитектуры
программного
обеспечения
;
•
выбор
типа
пользовательского
интерфейса
и
технологии
работы
с
документами
;
•
выбор
подхода
к
разработке
(
структурного
или
объектного
);
•
выбор
языка
и
среды
программирования
.
Другими
словами
,
эти
решения
определяют
,
что
проектируется
,
с
какими
потребительскими
характеристиками
,
как
и
какими
средствами
.
Часть
решений
может
быть
определена
в
техническом
задании
,
образовав
группу
технологических
требований
остальные
должны
быть
приняты
как
можно
раньше
,
так
как
представляют
собой
исходные
данные
для
процесса
проектирования
.
Выбор
архитектуры
программного
обеспечения
.
Архитектурой
программного
обеспечения
называют
совокупность
базовых
концепций
(
принципов
)
его
построения
.
Архитектура
программного
обеспечения
определяется
сложностью
решаемых
задач
,
степенью
универсальности
разрабатываемого
программного
обеспечения
и
числом
пользователей
,
одновременно
работающих
с
одной
его
копией
.
Различают
:
•
однопользовательскую
архитектуру
,
при
которой
программное
обеспечение
рассчитано
на
одного
пользователя
,
работающего
за
персональным
компьютером
;
•
многопользовательскую
архитектуру
,
которая
рассчитана
на
работу
в
локальной
или
глобальной
сети
.
Кроме
того
,
в
рамках
однопользовательской
архитектуры
различают
:
•
программы
;
•
пакеты
программ
;
•
программные
комплексы
;
•
программные
системы
.

Многопользовательскую
архитектуру
реализуют
системы
,
построенные
по
принципу
«
клиент
-
сервер
» (
см
. § 1.1).
Программой
называют
адресованный
компьютеру
набор
инструкций
,
точно
описывающий
последовательность
действий
,
которые
необходимо
выполнить
для
решения
конкретной
задачи
.
При
структурном
подходе
программы
представляют
собой
иерархию
подпрограмм
,
вызывающих
друг
друга
в
процессе
решения
поставленной
задачи
,
при
объектном
подходе
-
совокупность
обменивающихся
сообщениями
объектов
,
для
реализации
которых
разработаны
специальные
классы
.
Программа
в
этом
случае
представляет
собой
отдельно
компилируемую
программную
единицу
,
которая
может
использовать
стандартные
библиотеки
подпрограмм
,
но
,
как
правило
,
не
организует
свои
.
Это
самый
простой
вид
архитектуры
,
который
обычно
используется
при
решении
небольших
задач
.
Пакеты
программ
представляют
собой
совокупность
программ
,
решающих
задачи
некоторой
прикладной
области
.
Например
,
пакет
графических
программ
,
пакет
математических
программ
.
Программы
такого
пакета
связаны
между
собой
только
принадлежностью
к
определенной
прикладной
области
.
Пакет
программ
реализуют
как
набор
отдельных
программ
,
каждая
из
которых
сама
вводит
необходимые
данные
и
выводит
результаты
.
По
сути
дела
пакет
программ
-
это
некоторая
библиотека
программ
.
Программные
комплексы
представляют
собой
совокупность
программ
,
совместно
обеспечивающих
решение
небольшого
класса
сложных
задач
одной
прикладной
области
.
Для
решения
такой
задачи
может
потребоваться
решить
несколько
подзадач
,
последовательно
вызывая
программы
комплекса
.
Вызов
программ
в
программном
комплексе
осуществляется
специальной
программой
-
диспетчером
,
который
обеспечивает
несложный
интерфейс
с
пользователем
и
,
возможно
,
выдачу
некоторой
справочной
информации
.
От
пакета
программ
программный
комплекс
отличается
еще
и
тем
,
что
несколько
программ
могут
последовательно
или
циклически
вызываться
для
решения
одной
задачи
,
и
,
следовательно
,
желательно
хранить
исходные
данные
и
результаты
вызовов
в
пределах
одного
пользовательского
проекта
.
Программы
в
этом
случае
могут
реализовываться
как
отдельно
,
так
и
как
совместно
компилируемые
программные
единицы
,
а
исходные
данные
храниться
в
оперативной
памяти
или
в
файлах
.
Программные
системы
представляют
собой
организованную
совокупность
программ
(
подсистем
),
позволяющую
решать
широкий
класс
задач
из
некоторой
прикладной
области
.
В
отличие
от
программных
комплексов
программы
,
входящие
в
программную
систему
,
взаимодействуют
через
общие
данные
.
Программные
системы
обычно
имеют
развитые
пользовательский
и
внутренние
интерфейсы
,
что
требует
их
тщательного
проектирования
.
Многопользовательские
программные
системы
в
отличие
от
обычных
программных
систем
должны
организовывать
сетевое
взаимодействие
отдельных
компонентов
программного
обеспечения
,
что
еще
усложняет
процесс
его
разработки
.
Для
разработки
подобного
программного
обеспечения
используют
специальные
технологии
или
платформы
,
например
,
технологии
CORBA,
COM, Java
и
т
.
п
.
Выбор
типа
пользовательского
интерфейса
.
Различают
четыре
типа
пользовательских
интерфейсов
:
•
примитивные
-
реализуют
единственный
сценарий
работы
,
например
,
ввод
данных
-
обработка
-
вывод
результатов
;
•
меню
-
реализуют
множество
сценариев
работы
,
операции
которых
организованы
в
иерархические
структуры
,
например
, «
вставка
»: «
вставка
файла
», «
вставка
символа
»
и
т
.
д
.;
•
со
свободной
навигацией
-
реализуют
множество
сценариев
,
операции
которых
не
привязаны
к
уровням
иерархии
,
и
предполагают
определение
множества
возможных
операций
на
конкретном
шаге
работы
;
интерфейсы
данной
формы
в
основном
используют
Windows-
приложения
;
•
прямого
манипулирования
-
реализуют
множество
сценариев
,
представленных
в
операциях
над
объектами
,
основные
операции
инициируются
перемещением
пиктограмм
объектов
мышью
,
данная
форма
реализована
в
интерфейсе
самой
операционной
системы
Windows
альтернативно
интерфейсу
со
свободной
навигацией
.
Тип
пользовательского
интерфейса
во
многом
определяет
сложность
и
трудоемкость

разработки
,
которые
существенно
возрастают
в
порядке
перечисления
типов
.
По
последним
данным
до
80 %
программного
кода
может
реализовывать
именно
пользовательский
интерфейс
[49].
Поэтому
понятно
,
что
на
ранних
стадиях
обучения
программированию
реализуют
в
основном
примитивные
интерфейсы
и
меню
,
хотя
они
и
не
удобны
для
пользователей
.
Появление
объектно
-
ориентированных
визуальных
сред
разработки
программного
обеспечения
,
использующих
событийный
подход
к
программированию
и
в
основном
рассчитанных
на
создание
интерфейсов
со
свободной
навигацией
,
существенно
снизило
трудоемкость
разработки
подобных
интерфейсов
и
упростило
реализацию
интерфейсов
прямого
манипулирования
.
Таким
образом
,
выбор
двух
последних
типов
интерфейсов
предполагает
использование
одной
из
визуальных
сред
разработки
программного
обеспечения
.
Если
соответствующие
среды
разработчику
не
доступны
,
то
следует
учитывать
большую
трудоемкость
создания
подобных
интерфейсов
.
Кроме
того
,
выбор
типа
интерфейса
включает
выбор
технологии
работы
с
документами
.
Различают
две
технологии
:
•
однодокументная
,
которая
предполагает
однодокументный
интерфейс
(SDI - Single
Document Interface);
•
многодокументная
,
которая
предполагает
многодокументный
интерфейс
(MDI - Multiple
Document Interface).
Многодокументную
технологию
используют
,
если
программное
обеспечение
должно
работать
с
несколькими
документами
одновременно
,
например
,
с
несколькими
текстами
или
несколькими
изображениями
.
Однодоку
-
ментную
-
если
одновременная
работа
с
несколькими
документами
не
обязательна
.
Трудоемкость
реализации
многодокументных
интерфейсов
с
использованием
современных
библиотек
примерно
на
3...5 %
выше
,
чем
первого
.
Выбор
типа
влияет
на
трудоемкость
более
существенно
(
более
подробно
типы
интерфейсов
будут
рассмотрены
в
§ 8.1).
Выбор
подхода
к
разработке
.
Если
выбран
интерфейс
со
свободной
навигацией
или
прямого
манипулирования
,
то
,
как
указывалось
выше
,
это
практически
однозначно
предполагает
использование
событийного
программирования
и
объектного
подхода
,
так
как
современные
среды
визуального
программирования
,
такие
как
Visual C++, Delphi, Builder C++
и
им
подобные
,
предоставляют
интерфейсные
компоненты
именно
в
виде
объектов
библиотечных
классов
.
При
этом
в
зависимости
от
сложности
предметной
области
программное
обеспечение
может
реализовываться
как
с
использованием
объектов
и
,
соответственно
,
классов
,
так
и
чисто
процедурно
.
Исключение
составляют
случаи
использования
специализированных
языков
разработки
Интернет
-
приложений
,
таких
как
Perl,
построенных
по
совершенно
другому
принципу
.
Примитивный
интерфейс
и
интерфейс
типа
меню
совместимы
как
со
структурным
,
так
и
с
объектным
подходами
к
разработке
.
Поэтому
выбор
подхода
осуществляют
с
использованием
дополнительной
информации
.
Практика
показывает
,
что
объектный
подход
эффективен
для
разработки
очень
больших
программных
систем
(
более
100000
операторов
универсального
языка
программирования
)
и
в
тех
случаях
,
когда
объектная
структура
предметной
области
ярко
выражена
.
Следует
также
учитывать
,
что
необходимо
осторожно
использовать
объектный
подход
при
жестких
ограничениях
на
эффективность
разрабатываемого
программного
обеспечения
,
например
,
при
разработке
систем
резального
времени
.
Во
всех
прочих
случаях
выбор
подхода
остается
за
разработчиком
.
Выбор
языка
программирования
.
В
большинстве
случаев
никакой
проблемы
выбора
языка
программирования
реально
не
существует
.
Язык
может
быть
определен
:
•
организацией
,
ведущей
разработку
;
например
,
если
фирма
владеет
лицензионным
вариантом
C++ Builder,
то
она
будет
вести
разработки
преимущественно
в
данной
среде
;
•
программистом
,
который
по
возможности
всегда
будет
использовать
хорошо
знакомый
язык
;
•
устоявшимся
мнением
(«
все
разработки
подобного
рода
должны
выполняться
на
C++
или
на
Java
или
на
...»)
и
т
.
п
,
Если
же
все
-
таки
выбор
языка
реально
возможен
,
то
нужно
иметь
в
виду
,
что
все

существующие
языки
программирования
можно
разделить
на
следующие
группы
:
•
универсальные
языки
высокого
уровня
;
•
специализированные
языки
разработчика
программного
обеспечения
;
•
специализированные
языки
пользователя
;
•
языки
низкого
уровня
.
В
группе
у
н
и
в
е
р
с
а
л
ь
н
ы
х
я
з
ы
к
о
в
в
ы
с
о
к
о
г
о
у
р
о
в
н
я
безусловным
лидером
на
сегодня
является
язык
С
(
вместе
с
C++).
Действительно
различные
версии
С
и
C++
имеют
целый
ряд
очень
существенных
до
стоинств
:
•
многоплатформенность
-
для
всех
используемых
в
настоящее
время
платформ
существуют
компиляторы
с
языка
С
и
C++;
•
наличие
операторов
,
реализующих
основные
структурные
алгоритмические
конструкции
(
условную
обработку
,
все
виды
циклов
);
•
возможность
программирования
на
низком
(
системном
)
уровне
с
использованием
адресов
оперативной
памяти
;
•
огромные
библиотеки
подпрограмм
и
классов
.
Все
это
сделало
С
и
C++
основными
языками
,
используемыми
для
создания
операционных
систем
,
и
,
в
свою
очередь
,
служит
для
них
дополнительной
рекламой
.
Однако
С
и
C++
имеют
и
серьезные
недостатки
:
•
отсутствие
полноценных
встроенных
структурных
типов
данных
(
имеющиеся
псевдоструктурные
типы
,
использующие
адресную
арифметику
,
недостаточно
жестко
определены
,
чтобы
контролировать
многие
операции
над
этими
данными
,
что
приводит
к
большому
количеству
ошибок
,
выявляемых
только
в
процессе
отладки
программы
);
•
наличие
синтаксических
неоднозначностей
,
которые
также
не
позволяют
компилятору
контролировать
правильность
программы
;
•
ограниченный
контроль
параметров
,
передаваемых
в
подпрограмму
,
что
также
обнаруживается
только
в
процессе
отладки
программы
,
и
т
.
п
.
Альтернативой
С
и
C++
среди
универсальных
языков
программирования
,
используемых
для
создания
прикладного
программного
обеспечения
,
на
сегодня
является
Pascal,
компиляторы
которого
в
силу
четкого
синтаксиса
обнаруживают
помимо
синтаксических
и
большое
количество
семантических
ошибок
.
Версия
Object Pascal,
использованная
в
среде
Delphi,
сопровождается
профессиональными
библиотеками
классов
,
упрощающими
ведение
больших
разработок
,
в
том
числе
и
требующих
использования
баз
данных
,
что
делает
Delphi
достаточно
эффективной
средой
для
создания
приложений
Windows.
Кроме
этих
языков
к
группе
универсальных
принадлежат
также
Basic, Modula, Ada
и
некоторые
другие
.
Каждый
из
указанных
языков
,
так
же
,
как
C++
и
Pascal,
имеет
свои
особенности
и
,
соответственно
,
свою
область
применения
.
С
п
е
ц
и
а
л
и
з
и
р
о
в
а
н
н
ы
е
я
з
ы
к
и
р
а
з
р
а
б
о
т
ч
и
к
а
используют
для
создания
конкретных
типов
программного
обеспечения
.
К
ним
относят
:
•
языки
баз
данных
;
•
языки
создания
сетевых
приложений
;
•
языки
создания
систем
искусственного
интеллекта
и
т
.
д
.
Эти
языки
изучаются
в
специальных
курсах
и
в
настоящем
учебнике
рассматриваться
не
будут
.
С
п
е
ц
и
а
л
и
з
и
р
о
в
а
н
н
ы
е
я
з
ы
к
и
п
о
л
ь
з
о
в
а
т
е
л
я
обычно
являются
частью
профессиональных
сред
пользователя
,
характеризуются
узкой
направленностью
и
разработчиками
программного
обеспечения
не
используются
.
Я
з
ы
к
и
н
и
з
к
о
г
о
у
р
о
в
н
я
позволяют
осуществлять
программирование
практически
на
уровне
машинных
команд
.
При
этом
получают
самые
оптимальные
,
как
с
точки
зрения
времени
выполнения
,
так
и
с
точки
зрения
объема
необходимой
памяти
программы
.
Но
эти
языки
совершенно
не
годятся
для
создания
больших
программ
и
,
тем
более
,
программных
систем
.
Основная
причина
-
низкий
уровень
абстракций
,
которыми
должен
оперировать
разработчик
,
откуда
недопустимо
большое
время
разработки
.
Существенно
и
то
,
что
сами
языки
низкого
уровня