Концепция объектно-ориентированного программирования
19.4. Инструментальные средства и среды разработки программного обе
спечения
Жизненный цикл программного обеспечения
В данной главе рассматриваются языки программирования, методы и средства создания программного обеспечения, а так же практические методики, применяемые при разработке ПО; дается определение различным понятиям, связанным с процессом создания программного обеспечения; описываются основные концепции объектно-ориентированного программирования. Особое внимание в главе уделено инструментальным средствам разработки программного обеспечения, а также средствам поддержки жизненного цикла программного обеспечения. Обсуждаются различные модели организации разработки программного обеспечения.
Основные понятия и классификация языков программирования
19.1. Основные понятия и классификация языков программирования
Основные понятия
Язык программирования предназначен для описания данных и алгоритмов их обработки на вычислительной машине. Языки программирования занимают промежуточное положение между естественными и формализованными языками. С естественными языками языки программирования роднит грамматический строй (употребление слов естественного языка, фразовая структура и т. п.), с формализованными языками — символы и понятия, а главное — строгие, точно описанные правила построения текстов.
Существуют различные способы задания инструкций компьютеру, заставляющие его выполнять необходимые вычисления. В одних случаях достаточно полностью описать алгоритм на формальном языке, в других приходится управлять более сложными деталями реализации программы: выделять память, следить за состоянием регистров процессора. Сложность, гибкость и скорость выполнения программ, как и потребление ресурсов компьютера, зависят от языка программирования, выбранного программистом. Но в любом случае результатом работы программиста является компьютерная программа.
Часто компьютерной программой называют исходный код, написанный на одном из языков программирования. Компьютерную программу принято считать результатом программирования.
, В широком смысле к указанным процессам относят все технические операции, необходимые для создания программ, включая анализ требований, а также все стадии разработки и реализации в виде готового программного продукта. Достаточно схематично процесс программирования представлен на рис. 19.1.
На рисунке показан приблизительный порядок действий при программировании. Программирование заключается в написании текста (исходного кода) программы на выбранном языке программирования.
Глава 19. Технологии и инструменты программирования
Формулирование задачи
Разработка алгоритма
Написание исходного кода программы
Лексический анализ | Трансляция |
Синтаксический анализ | |
Создание объектного кода |
Загружаемый модуль (образ) программы
Рис. 19.1. Схематичное описание процесса программирования
Исходный код преобразуется транслятором (специальной программой) в объектный модуль, который хранится на диске.
Для выполнения программы должен быть определенным образом подготовлен объектный модуль — определены адрес его загрузки в оперативную память и адреса связи с другими объектными модулями. Затем загружается объектный модуль в оперативную память.
Объединение модулей объектного кода в единую исполняемую программу является результатом работы компоновщика.
Основные понятия и классификация языков программирования
Процесс трансляции состоит из нескольких этапов.
1. Производится лексический анализ текста с разбиением его на элементы-лексемы
(ключевые слова, имена-идентификаторы и т. д.).
2. Производится синтаксический разбор, то есть проверка правильности и допу
стимости созданных на основе лексем конструкций языка.
3. Исходный код преобразуется в исполняемый машинный код.
Это описание процесса трансляции подводит нас к понятиям, связанным с языками программирования — синтаксису и семантике языка.
Синтаксис искусственных и естественных языков определяет, какие конструкции из допустимых лексем являются правильными для данного языка.
Пример. Рассмотрим предложение: «Это кошка страус зеленая». В этом примере все используемые в предложении слова и символы допустимы для русского языка, но вместе они составляют недопустимую конструкцию.
Формализация описания языка программирования нужна для создания математической или логической модели работы транслятора, то есть те правила, на основании которых транслятор будет производить синтаксический разбор. Одним из известных) способов формального описания синтаксиса языка является метаязык — формы Бэкуса-Наура. Задание синтаксиса языка программирования сводится к перечислению всех его допустимых конструкций.
Таким образом синтаксис связан только с перечислением всех конструкций языка, которые могут быть преобразованы транслятором в машинный код. Смысловая же составляющая языка программирования описывается понятием семантики.
Пример. Рассмотрим предложение: «Зеленая кошка — это страус». Этот пример проходит синтаксическую проверку, поскольку предложение построено правильно, но с семантической точки зрения он лишен смысла.
Семантические модели для языков программирования могут быть операционными (моделируется выполнение на абстрактной вычислительной машине), деривационными (модель описывается языком логических выражений) и денотационными (модель описывается понятиями, близкими к математическим, такими как множества, утверждения, суждения).
Синтаксические и семантические способы описания языков программирования служат основой для создания эффективных трансляторов.