16.5. Инструментальные системы технологии программирования.
Для компьютерной поддержки разработки и сопровождения больших ПС с продолжительным жизненным циклом используются инструментальные системы технологии программирования. Инструментальная система технологии программирования - это интегрированная совокупность программных и аппаратных инструментов, поддерживающая все процессы разработки и сопровождения больших ПС в течение всего его жизненного цикла в рамках определенной технологии. Из этого определения вытекают следующие основные черты этого класса компьютерной поддержки: ·
комплексность, ·
ориентированность на коллективную разработку, ·
технологическая определенность, ·
интегрированность.
Комплексность компьютерной поддержки означает, что она охватывает все процессы разработки и сопровождения ПС и что продукция этих процессов согласована и взаимоувязана. Тем самым, система в состоянии обеспечить, по-крайней мере, контроль полноты (комплектности) создаваемой документации (включая набор программ) и согласованности ее изменения (версионности). Тот факт, что компьютерная поддержка охватывает и фазу сопровождения ПС, означает, что система должна поддерживать работу сразу с несколькими вариантами ПС, ориентированными на разные условия применения ПС и на разную связанную с ним аппаратуру, т.е. должна обеспечивать управление конфигурацией ПС.
Ориентированность на коллективную разработку означает, что система должна поддерживать управление (management) работой коллектива и для разных членов этого коллектива обеспечивать разные права доступа к различным фрагментам продукции технологических процессов.
Технологическая определенность компьютерной поддержки означает, что ее комплексность ограничивается рамками какой-либо конкретной технологии программирования. Инструментальные системы технологии программирования представляют собой достаточно большие и дорогие ПС, чтобы как-то была оправданна их инструментальная перегруженность. Поэтому набор включаемых в них инструментов тщательно отбирается с учетом потребностей предметной области, используемых языков и выбранной технологией программирования.
Интегрированность компьютерной поддержки означает·
интегрированность по данным, ·
интегрированность по пользовательскому интерфейсу, ·
интегрированность по действиям (функциям),
Интегрированность по данным означает, что инструменты действуют в соответствии с фиксированной информационной схемой (моделью) системы, определяющей зависимость различных используемых в системе фрагментов данных (информационных объектов) друг от друга. Интегрированность по пользовательскому интерфейсу означает, что все инструменты объединены единым пользовательским интерфейсом. Интегрированность по действиямозначает, что, во-первых, в системе имеются общие части всех инструментов и, во-вторых, одни инструменты при выполнении своих функций могут обращаться к другим инструментам.
С учетом обсужденных свойств инструментальных систем технологии программирования можно выделить три их основные компоненты:·
база данных разработки (репозиторий),·
инструментарий, ·
интерфейсы.
Репозиторий - центральное компьютерное хранилище информации, связанной с проектом (разработкой) ПС в течении всего его жизненного цикла.Инструментарий - набор инструментов, определяющий возможности, предоставляемые системой коллективу разработчиков. Обычно этот набор является открытым: помимо минимального набора (встроенные инструменты), он содержит средства своего расширения (импортированными инструментами), - и структурированным, состоящим из некоторой общей части всех инструментов (ядра) и структурных (иногда иерархически связанных) классов инструментов.Интерфейсы разделяются на пользовательский и системные. Пользовательский интерфейс обеспечивает доступ разработчикам к инструментарию (командный язык и т.п.), реализуется оболочкой системы. Системные интерфейсы обеспечивают взаимодействие между инструментами и их общими частями. Системные интерфейсы выделяются как архитектурные компоненты в связи с открытостью системы - их обязаны использовать новые (импортируемые) инструменты, включаемые в систему.
Самая общая архитектура инструментальных систем технологии программирования представлена на рис. 16.4.
Различают два класса инструментальных систем технологии программирования: инструментальные системы поддержки проекта и языково-зависимые инструментальные системы. Инструментальная система поддержки проекта - это открытая система, способная поддерживать разработку ПС на разных языках программирования после соответствующего ее расширения программными инструментами, ориентированными на выбранный язык. Такая система содержит ядро (обеспечивающее, в частности, доступ к репозиторию), набор инструментов, поддерживающих управление (management) разработкой ПС, независимые от языка программирования инструменты, поддерживающие разработку ПС (текстовые и графические редакторы, генераторы отчетов и т.п.), а также инструменты расширения системы. Языково-зависимая инструментальная система - это система поддержки разработки ПС на каком-либо одном языке программирования, существенно использующая в организации своей работы специфику этого языка. Эта специфика может сказываться и на возможностях ядра (в том числе и на структуре репозитория), и на требованиях к оболочке и инструментам. Примером такой системы является среда поддержки программирования на Аде (APSE [16.3]).
Рис. 16.4. Общая архитектура инструментальных систем технологии программирования.
- 1. Программное средство как продукт технологии программирования
- 1.1. Программа как формализованное описание процесса обработки данных. Программное средство.
- 1.2. Неконструктивность понятия правильной программы.
- 1.3. Надежность программного средства.
- 1.4. Технология программирования как технология разработки надежных программных средств
- 1.5. Технология программирования и информатизация общества.
- 2. Источники ошибок в программных средствах
- 2.1. Интеллектуальные возможности человека.
- 2.2. Неправильный перевод как причина ошибок в программных средствах.
- 2.3. Модель перевода.
- 2.4. Основные пути борьбы с ошибками.
- 3. Общие принципы разработки программных средств
- 3.1. Специфика разработки программных средств.
- 3.2. Жизненный цикл программного средства.
- 3.3. Понятие качества программного средства.
- 3.4. Обеспечение надежности - основной мотив разработки программных средств.
- 3.5. Методы борьбы со сложностью.
- 3.6. Обеспечение точности перевода.
- 3.7. Преодоление барьера между пользователем и разработчиком.
- 3.8. Контроль принимаемых решений.
- 4. Внешнее описание программного средства
- 4.1. Назначение внешнего описания программного средства и его роль в обеспечении качества программного средства.
- 4.2. Определение требований к программному средству.
- 4.3. Спецификация качества программного средства.
- 4.4. Функциональная спецификация программного средства.
- 4.5. Методы контроля внешнего описания программного средства.
- 5. Методы спецификации семантики функций
- 5.1. Основные подходы к спецификации семантики функций.
- 5.2. Метод таблиц решений.
- 5.3. Операционная семантика.
- 5.4. Денотационная семантика.
- 5.5. Аксиоматическая семантика.
- 5.6. Языки спецификаций.
- 6. Архитектура программного средства
- 6.1. Понятие архитектуры программного средства.
- 6.2. Основные классы архитектур программных средств.
- 6.3. Архитектурные функции.
- 6.4. Контроль архитектуры программных средств.
- 7. Разработка структуры программы и модульное программирование
- 7.1. Цель модульного программирования.
- 7.2. Основные характеристики программного модуля.
- 7.3. Методы разработки структуры программы.
- 7.4. Контроль структуры программы.
- 8. Разработка программного модуля
- 8.1. Порядок разработки программного модуля.
- 8.2. Структурное программирование.
- 8.3. Пошаговая детализация и понятие о псевдокоде.
- 8.4. Контроль программного модуля.
- 9. Доказательство свойств программ
- 9.1. Обоснования программ. Формализация свойств программ.
- 9.2. Свойства простых операторов.
- 9.3. Свойства основных конструкций структурного программирования.
- 9.4. Завершимость выполнения программы.
- 9.5. Пример доказательства свойства программы.
- 10. Тестирование и отладка программного средства
- 10.1. Основные понятия.
- 10.2. Принципы и виды отладки.
- 10.3. Заповеди отладки.
- 10.4. Автономная отладка модуля.
- 10.5. Комплексная отладка программного средства.
- 11. Обеспечение функциональности и надежности программного средства
- 11.1. Функциональность и надежность как обязательные критерии качества программного средства.
- 11.2. Обеспечение завершенности программного средства.
- 11.3. Обеспечение точности программного средства.
- 11.4. Обеспечение автономности программного средства.
- 11.5. Обеспечение устойчивости программного средства.
- 11.6. Обеспечение защищенности программных средств.
- 12. Обеспечение качества программного средства
- 12.1. Общая характеристика процесса обеспечения качества программного средства.
- 12.2. Обеспечение легкости применения программного средства.
- 12.3. Обеспечение эффективности программного средства.
- 12.4. Обеспечение сопровождаемости.
- 13. Документирование программных средств
- 13.1. Документация, создаваемая в процессе разработки программных средств.
- 13.2. Пользовательская документация программных средств.
- 13.3. Документация по сопровождению программных средств.
- 14. Аттестация программного средства
- 14.1. Назначение аттестации программного средства.
- 14.2. Виды испытаний программного средства.
- 14.3. Методы оценки качества программного средства.
- 15. Оъектный подход к разработке программных средств
- 15.1. Объекты и отношения в программировании. Сущность объектного подхода к разработке программных средств.
- 15.2. Объектный и субъектный подходы к разработке программных средств.
- 15.3. Объектный подход к разработке внешнего описания и архитектуры программного средства.
- 16. Компьютерная поддержка разработки и сопровождения программных средств
- 16.1. Инструменты разработки программных средств.
- 16.2. Инструментальные среды разработки и сопровождения программных средств.
- 16.3. Инструментальные среды программирования.
- 16.4. Понятие компьютерной технологии разработки программных средств и ее рабочие места.
- 16.5. Инструментальные системы технологии программирования.