Книга: Программное обеспечение и его разработка
Окружение разработки программного обеспечения
Окружение разработки программного обеспечения
При создании новой группы программ существенную помощь программистам и руководителям процесса разработки оказывают вычислительные машины и множество различных программ. В систему эффективно проводящейся разработки входят:
1) мощная вычислительная машина, на которой проходит разработка;
2) мощный и стабильный комплект программ, помогающий при программировании;
3) хорошая группа людей, составляющая и сопровождающая программы;
4) мощный набор программ, помогающих управлять разработкой.
Раньше для разработки нужны были помещения, люди, вычислительные машины и программы. Теперь разработка стала как никогда ранее автоматизированной и управляемой, и все это благодаря системе разработки — множеству программ, называемому окружением. Такое окружение — как написано применительно к языку Ада министерством обороны — состоит из: правил взаимодействия (интерфейса) с пользователем, базы данных и множества инструментальных средств.
Интерфейс с пользователем должен позволять разработчику программ управлять любыми инструментальными программами, а также вводить и выводить из системы информацию.
Базы данных могут быть разными — от простых справочников для пользователей до поддерживаемых с помощью вычислительной техники библиотечных систем. Инструментальные средства могут также быть разными — от листа бумаги и карандаша до автоматизированной системы тестирования, формирующей проблемно-зависимые тестовые данные.
Пользователь должен иметь возможность извлекать из базы данных сведения:
о доступных инструментальных средствах, о способах работы,
о доступных прикладных библиотеках, о том, чем различаются между собой версии инструментальных средств и программ.
Когда транслятор обнаруживает синтаксическую или логическую ошибку, он печатает сообщение об этом. Сообщение об ошибке, выдаваемое для разработчика программы, должно:
выдаваться развернутым текстом, а не каким-нибудь кодом,
указывать неправильную лексему, объект, действие пользователя,
указывать контекст, в котором обнаружена ошибка.
База данных должна удовлетворять современным стандартам на легкость использования и содержать:
информацию о самой себе, своей структуре и связях, все версии разрабатываемых программ, учебный материал по языку программирования и инструментальным средствам. В системе должны быть собраны сведения: об ошибках: их частоте и типах, о простоях, о денежных затратах, о графиках работ, о результатах тестирования,
об отчетах по использованию машин и программ. В систему должны быть включены модули (программы), работающие совместно с выполняемыми программами и похожие на модули обычной операционной системы. Примером могут служить программы стандартного ввода/вывода.
Инструменты, используемые при проектировании, это: справочники, стандарты разработки, руководства по разработке («рецепты»), анализ конкретных ситуаций проектирования с помощью вычислительных машин как в пакетном режиме, так и в диалоге.
Инструментальные средства должны:
помогать при интегрированном проектировании аппаратного и программного обеспечений, поддерживать структурную декомпозицию, включать графические средства,
быть интерактивными (работать в диалоговом режиме), по возможности использовать базу данных, включать методы моделирования и тестирования. Интерфейсы должны обладать следующими свойствами: быть стандартизованными, использовать соглашения о связях и загрузке, их трансляция должна обеспечивать взаимодействие с модулями непосредственной поддержки, в них должны учитываться средства тестирования и отладки.
Любой начальный набор инструментов и библиотек программ должен включать:
Транслятор.
Пакет программ непосредственной поддержки, в том числе пакет программ ввода/вывода.
Пакет программ работы с файлами.
Библиотечную систему для работы с модулями, написанными на языке Ада.
Редактор связей/загрузчик.
Набор средств отладки, работающих на символьном уровне[31]. Оптимизатор.
Вспомогательные средства для составления толковых словарей, указателей и перекрестных ссылок.
Редактор текстов, ориентированный на входной язык.
Анализатор структур программ.
Средства преобразования.
В фирме IBM есть некоторый документ, описывающий подмножество такого окружения в несколько других терминах, но настолько похоже по существу, что о нем тоже стоит рассказать. В IBM это называется библиотеками поддержки разработок (Development Support Libraries).
Любая библиотека поддержки разработок представляет собой множество программ и процедур, которые обеспечивают:
1) постоянное отслеживание состояния дел, связанных с разработкой продукции;
2) руководство возможностью управления ходом работ по разработке этой продукции.
Библиотека поддержки разработки состоит из четырех элементов:
Внутренней библиотеки в виде, воспринимаемом машиной[32].
Внешней библиотеки в виде, воспринимаемом человеком.
Механизированных процедур и программ.
Канцелярских процедур.
Механизированная библиотека содержит все текущие сведения о программной части проекта, включая программы на входном языке, перемещаемые модули, операторы редактора связей, рабочие программы, операторы языка управления заданием, тестовые данные и связанную со всем этим информацию. Вся внутренняя библиотека печатается и хранится в удобном для человека виде во внешней библиотеке. Для ссылок хранится вся история предыдущих версий. Машинные процедуры состоят из стандартизованных управляющих операторов, которые выполняют следующие действия:
Редактирование библиотек.
Поиск модулей для трансляции и запоминания результатов.
Редактирование связей задач и организацию тестовых пусков.
Восстановление библиотек и возврат к предыдущим версиям.
Выдачу распечаток состояния библиотеки.
Канцелярские процедуры используются библиотекарями для:
регистрации изменяющихся состояний текстов внешней библиотеки.
Регистрации и замены листов в архивах. Программист работает только с внешней библиотекой.
Стыковка программ. Если наш процесс продолжается, переходя от человека к человеку, от машины к машине, от программы к программе, нам необходимо сопровождать его сведениями двух следующих типов.
1. Данные, или сырье, «полуфабрикаты». «Это материал, с которым нужно произвести известные вам действия. Приступайте к работе». (Данные.)
2. Информация о процессе. «Все надо делать вдвое быстрее». (Управляющая информация.)
Некоторые из таких пояснений могут достигать весьма значительных объемов. Пояснение данных выглядит просто, но оно может разрастаться, становясь тяжеловесным и слишком подробным. Управляющую информацию, возможно, и не удастся передать, придется просто начать с нее работу по следующему процессу, но в таком случае будет потеряна гибкость системы.
Есть и еще один весьма важный вопрос, который редко бывает поставлен с достаточной четкостью. «Когда нужно включать управляющую информацию?» При стыковке двух программ это может произойти на четырех разных этапах.
1. Во время трансляции. Если управляющая информация вводится на этом этапе, рабочая программа становится не соответствующей действительности. Для ее исправления надо провести перетрансляцию.
2. Во время редактирования связей. Эта часть этапа компоновки разрабатываемых программ влияет сразу на несколько раздельно транслированных программ. При этом достигается большая гибкость, поскольку перетрансляцию проводить не нужно, достаточно провести повторное редактирование связей.
3. Во время выполнения. Такое управление должно осуществляться непосредственно в вычислительной машине всякий раз, когда программы передаются на выполнение. Чтобы таким образом состыковать программы, нужно затрачивать и время процессора, и память, но гибкость системы значительно возрастает. Мы можем менять, модифицировать, приспосабливать программы во время каждого их выполнения. Для этого не требуется ни перетрансляции, ни повторного проведения редактирования связей. Такой метод позволяет достичь наибольшей гибкости.
4. Во время написания. Пишется программа, которая всего лишь транслирует другую программу, больших размеров. Это наименее гибкий метод; для внесения исправлений нужно переписывать программу.
- Характеристики программ
- Процесс разработки программного обеспечения
- Полный цикл
- Использование
- «Большой взрыв» и эволюция
- Определение требований
- Требования системного уровня
- Изменения неизбежны
- Кто формулирует требования к программному обеспечению?
- Язык документирования требований
- Особая важность требований
- Кто является действительным пользователем в любом проекте?
- Противоречивые требования разных пользователей
- Требования к товарным программам и программному обеспечению проектов
- Изменения, вносимые пользователем
- Адаптируемость способствует непрекращающимся изменениям
- Определение требований — это длительный процесс
- Спецификация требований
- Определение требований к окружающей обстановке в фазе использования
- Управление процессом выработки требований
- Новые методы определения требований
- Личный опыт
- Резюме: требования к большим системам программного обеспечения
- Проектирование
- Что такое проектирование?
- Программное обеспечение — это подсистема
- Многократное и параллельное проектирование
- Параллельная разработка
- Итерации при проектировании и выработке требований
- Проектирование программного обеспечения фазы использования
- Кто должен вести проектирование
- Конечная продукция — что же мы создаем?
- Составные части и процесс проектирования
- Структура
- Описание
- Последовательный ход процесса проектирования программной системы
- Уровни проектирования
- Проектирование верхнего уровня
- Расслоение
- Выделение макрослоев
- Временные ограничения
- Проектирование среднего уровня
- Выделение микрослоев
- Проектирование модуля
- Упрятывание информации
- Проектирование нижнего уровня
- Межуровневые механизмы и уровень тривиальности
- Вариации уровня тривиальности и межуровневых механизмов
- Структурное программирование
- Введение в структурное программирование
- Преимущества структурного программирования
- Приемлемость структурного программирования
- Хорошее проектирование
- Проектирование это…
- Итеративность
- Компромиссы
- Проектирование больших программ типа V — это многогранная деятельность
- Деталировка — это примитивное проектирование
- Устойчивые программы, или программы, дружественные пользователю
- Документирование проекта
- Спецификация — это проектирование и одновременно выработка требований
- Новые методы проектирования
- Данные и процесс
- Структурное проектирование
- Трудности нововведений
- Написание программ — программирование
- Языки
- Мощность языка и связанные с ней трудности
- Рост числа языков
- Язык и мышление
- Ограничения, накладываемые языками
- Процесс написания программы
- Кросс-транслятор
- Множество форм одной программы
- Вычислительные машины для трансляции
- Программирование в диалоговом режиме
- С чем же мы ведем диалог?
- Управление написанием программ
- Различия уровня квалификации программистов
- Главный программист
- Библиотекарь
- Компоновка программ
- Сборка большого числа модулей в одну работающую систему программного обеспечения
- Следует ли проводить компоновку перед тестированием?
- Средства обслуживания руководства
- Автоматическое использование инструментальных средств
- Выбор трансляторов и языков
- Реализация сверху вниз
- Окружение разработки программного обеспечения
- Выводы
- Верификация и тестирование
- Верификация
- Раннее выявление «пробелов»
- Инспектирование
- Пример ошибки
- Тестирование и качество
- Надежное программное обеспечение — неверный термин
- Тестирование с возвратом
- Физическая сохранность
- Тестирование — средство обучения
- Независимость тестирующих групп
- Продолжительность развития
- Выводы
- Документирование
- Самодокументирование
- Структурированное словесное описание
- Документация для других целей
- Отслеживание связей
- Избыток документации
- Исключение блок-схем
- История проекта
- «Как» — это «что». Требование — это проект — уровни детализации
- Реальная ситуация
- Сборка большого числа модулей в одну работающую систему программного обеспечения
- Факторы, определяющие трудность разработки
- 11.2. СВОЙСТВА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
- Выбор аппаратного обеспечения для InterBase
- 1.8. СТАДИИ И ЭТАПЫ РАЗРАБОТКИ ПРОГРАММ
- 3. Участники разработки экспертных систем
- Часть III. Шаблоны разработки через тестирование
- Функция программного обеспечения
- 1.1. Схема и основные этапы разработки новой продукции
- Не вижу значка Сетевое окружение, как его вернуть?
- 9.1. Окружение процесса
- 5.5. ПРИМЕР РАЗРАБОТКИ ОПИСАНИЯ ПРОЦЕССА "КИПЯЧЕНИЕ ВОДЫ В ЧАЙНИКЕ"