3. Инструментарий технологии программирования
Инструментарий технологии программирования — программные продукты поддержки (обеспечения) технологии программирования.
В рамках этого направления сформировались следующие группы программных продуктов, как показано на рисунке 20:
- средства для создания приложений, включающие:
- локальные средства, обеспечивающие выполнение отдельных работ по созданию программ;
- интегрированные среды разработчиков программ, обеспечивающие выполнение комплекса взаимосвязанных работ по созданию программ;
- средства для создания информационных систем (CASE- технология), представляющие методы анализа, проектирования и создания программных систем и предназначенные для автоматизации процессов разработки и реализации информационных систем.
Рис. 20. Классификация инструментария технологии программирования
3.1. Средства для создания приложений
Локальные средства разработки программ Эти средства на рынке программных продуктов наиболее представительны и включают языки и системы программирования, а также инструментальную среду пользователя. Язык программирования — формализованный язык для описания алгоритма решения задачи на компьютере. Средства для создания приложений — совокупность языков и систем программирования, а также различные программные комплексы для отладки и поддержки создаваемых программ. Языки программирования можно условно разделить на следующие классы (если в качестве признака классификации взять синтаксис образования конструкций языка):
- машинные языки (computer language) — языки программирования, воспринимаемые аппаратной частью компьютера (машинные коды);
- машинно-ориентированные языки (computer-oriented language) — языки программирования, которые отражают структуру конкретного типа компьютера (ассемблеры);
- алгоритмические языки (algorithmic language) — языки программирования, не зависящие от архитектуры компьютера (Паскаль, Си, Фортран, Бейсик и др.);
- процедурно-ориентированные языки (procedure-oriented language) — языки программирования, где имеется возможность написания программы как совокупности процедур (подпрограмм);
- проблемно-ориентированные языки (universal programming language) — языки программирования, предназначенные для решения задач определенного класса (Лисп, Пролог, Симула и др.);
- интегрированные системы программирования.
Другой классификацией языков программирования является их деление на языки, ориентированные на реализацию основ структурного программирования, и объектно-ориентированные языки, поддерживающие понятие объектов и их свойств и методов обработки. Программа, подготовленная на языке программирования, проходит этап трансляции, когда происходит преобразование исходного кода программы (source code) в объектный код (object code), который далее пригоден к обработке редактором связей. Редактор связей специальная программа, обеспечивающая построение загрузочного модуля (load module), пригодного к выполнению, схема которой показана на рисунке 21. Рис. 21. Схема процесса создания загрузочного модуля программы Трансляция может выполняться с использованием средств компиляторов (compiler) или интерпретаторов (interpreter). Компиляторы транслируют всю программу, но без ее выполнения. Интерпретаторы, в отличие от компиляторов, выполняют пооператорную обработку и выполнение программы. Существуют специальные программы, предназначенные для трассировки и анализа выполнения программ, так называемые отладчики (debugger). Лучшие отладчики позволяют осуществить трассировку (отслеживание выполнения программы в пооператорном варианте), идентификацию места и вида ошибок в программе, наблюдение за изменением значений переменных, выражений и т.п. Для отладки и тестирования правильности работы программ создается база данных контрольного примера. Более мощным средством разработки программ являются системы программирования. Системы программирования (programming system) включают:
- компилятор;
- интегрированную среду разработчика программ;
- отладчик;
- средства оптимизации кода программ;
- набор библиотек (возможно с исходными текстами программ);
- редактор связей;
- сервисные средства (утилиты) для работы с библиотеками текстовыми и двоичными файлами;
- справочные системы;
- документатор исходного кода программы;
- систему поддержки и управления проектом программного комплекса.
Средства поддержки проектов — новый класс средств разработки программного обеспечения, предназначенный для:
- отслеживания изменений, выполненных разработчиками программ;
- поддержки версий программы с автоматической разноской изменений;
- получения статистики о ходе работ проекта.
Инструментальная среда пользователя представлена специальными средствами, встроенными в пакеты прикладных программ, такими, как:
- библиотека функций, процедур, объектов и методов обработки;
- макрокоманды;
- клавишные макросы; языковые макросы;
- программные модули-вставки; конструкторы экранных форм и отчетов;
- генераторы приложений; языки запросов высокого уровня;
- языки манипулирования данными; конструкторы меню и многое другое.
Средства отладки и тестирования программ предназначены для подготовки разработанной программы к промышленной эксплуатации. Интегрированные среды разработки программ Дальнейшим развитием локальных средств разработки программ, являются интегрированные программные среды разработчиков. Основное назначение инструментария данного вида — повышение производительности труда программистов, автоматизация создания кодов программ, обеспечивающих интерфейс пользователя графического типа, разработка приложений для архитектуры клиент-сервер, запросов и отчетов. CASE-технологии CASE-технологии — относительно новое направление, формировавшееся на рубеже 80-х годов. CASE-технологии делятся на две группы:
- встроенные в систему реализации, в которых все решения по проектированию и реализации привязаны к выбранной системе явления базами данных (СУБД);
- независимые от системы реализации, в которых все решения по проектированию ориентированы на унификацию начальных этапов жизненного цикла, средств их документирования и обеспечивают большую гибкость в выборе средств реализации.
Основное достоинство CASE-технологии — поддержка коллективной работы над проектом за счет возможности работы в локальной сети разработчиков, экспорта/импорта любых фрагментов проекта, организационного управления проектом. Некоторые CASE-технологии ориентированы только на системных проектировщиков и предоставляют специальные графические средства для изображения различного вида моделей:
- диаграмм потоков данных (DFD — data flow diagrams) совместно со словарями данных и спецификациями процессов;
- диаграмм «сущность-связь» (ERD — entity relationship diagrams), являющихся информационной моделью предметной области;
- диаграмм переходов состояний (STD — state transition diagrams), учитывающих события и реакцию на них системы обработки данных.
Диаграммы DFD устанавливают связь источников информации с потребителями, выделяют логические функции (процессы) образования информации, определяют группы элементов данных и их хранилища (базы данных). Описание структуры потоков данных, определение их компонентов хранятся в актуальном состоянии в словаре данных, который выступает как база данных проекта. Каждая логическая функция может детализироваться с помощью DFD нижнего уровня согласно методам исходящего проектирования. Этими CASE-технологиями выполняются автоматизированное проектирование спецификаций программ (задание основных характеристик для разработки программ) и ведение словаря данных. Другой класс CASE-технологий поддерживает только разработку программ, включая:
- автоматическую генерацию кодов программ на основании их спецификаций;
- проверку корректности описания моделей данных и схем потоков данных;
- документирование программ согласно принятым стандартам и актуальному состоянию проекта;
- тестирование и отладку программ.
Кодогенерация программ выполняется двумя способами: создание каркаса программ и создание полного продукта. Каркас программы служит для последующего ручного варианта редактирования исходных текстов, обеспечивая возможность вмешательства программиста; полный продукт не редактируется вручную. В рамках CASE-технологий проект сопровождается целиком, а не только его программные коды. Проектные материалы, подготовленные в CASE-технологии, служат заданием программистам, а само программирование скорее сводится к кодированию — переводу на определенный язык структур данных и методов их обработки, если не предусмотрена автоматическая кодогенерация.
6.2. Инструментальные средства программирования
Инструментарий программирования— это совокупность программных продуктов, обеспечивающих технологию разработки, отладки и внедрения создаваемых новых программных продуктов. Они делятся на средства для создания приложений и средства для создания информационных систем (Case-технологии).
К средствам для создания приложений можно отнести:
1. Языки, системы программирования(например, C, Pascal, Basic) иинструментальные среды для разработки приложений(например, C++, Delphi, Visual Basic, Java), которые включают средства визуального программирования.
2. Интегрированные среды разработки программ— средства для комплексного применения на всех технологических этапах создания программ. Они позволяют повысить производительность труда как программистов, так и профессиональных пользователей, автоматизировать создание кодов программ, разрабатывать приложения для архитектуры клиент-сервер, запросов и отчетов.
3. Инструментальные среды пользователя— специальные средства, которые встроены в пакеты прикладных программ — библиотеки функций, процедур, объектов и методов обработки, макрокоманды, клавишные макросы, языковые макросы, программные модули-вставки, конструкторы экранных форм и отчетов, генераторы приложений, языки запросов высокого уровня, языки манипулирования данными, конструкторы меню и др.
Средства для создания информационных систем — CASE-технологии— это программные комплексы, автоматизирующий весь технологический процесс анализа, проектирования, разработки и сопровождения сложных программных систем. Средства CASE-технологии делятся на встроенные в систему и независимые от системы реализации. Они нацелены на коллективную работу над проектом за счет возможности работы в локальной сети разработчиков.
Язык программирования— это формализованный язык, предназначенный для записи алгоритмов решения задач на ЭВМ.
Языки программирования можно классифицировать по различным признакам. Например, по синтаксису образования конструкций языка их условно делят на следующие классы:
машинные коды(наборы двоичных данных) — воспринимаются аппаратной частью компьютера;
машинно-ориентированные(ассемблеры) — отражают структуру конкретного типа компьютеров;
алгоритмические языки(Fortran, Basic, Pascal, C и др.) — отражают структуру алгоритма и не зависят от архитектуры компьютера;
процедурно-ориентированные языки— используются для описания программы как совокупности процедур (подпрограмм);
проблемно-ориентированные языка(Lisp, Prolog и др.) — используются для решения задач определенного класса.
Существует и другая классификация: по поколениям или по уровням привязки к машинным кодам. В этом случае, языки первого и второго поколения (машинные коды и языки ассемблера) относят к языкам низкого уровня, а языки третьего — пятого поколения считаются языками высокого уровня, которые, в свою очередь делят на следующие классы:
линейные языки(набор операторов);
процедурные языки(Fortran,Cobol,Algol,Basic,Pascal,Cи др.);
логические языки(Prolog и др.);
объектно-ориентированные языки(C++, JAVA, Delphi, Visual Basic и др.);
языки запросов к базам данных(стандарт всех языков — SQL 92);
языки сценариев (скриптов) (Visual Basic Script, JAVA Script и др.);
языки макропрограммирования (Visual Basic for Application).
Система программирования— это совокупность программного обеспечения, включающая: транслятор, интерфейс разработчика, набор библиотек подпрограмм, редактор связей, отладчик, сервисные средства, справочную систему и др.
Транслятор(англ.translator— переводчик) — это средство преобразования исходного текста программы на алгоритмическом языке в машинный код. Трансляторы реализуются в виде компиляторов или интерпретаторов, которые существенно различаются по принципам работы.
Компилятор(англ. compiler — составитель, собиратель) читает всю программу целиком, делает ее перевод и создает объектный модуль на машинном языке (из него потом создается законченный вариант программы).
Интерпретатор(англ.interpreter— истолкователь, устный переводчик) переводит и выполняет программу построчно. Программа, обрабатываемая интерпретатором, должна заново переводиться на машинный язык при каждом очередном ее запуске.
Откомпилированные программы работают быстрее, но интерпретируемые проще исправлять и изменять.
Редактор связей— осуществляет перевод объектного модуля в загрузочный (исполняемую программу) с подключение всех используемых подпрограмм. Он включает в себя: отладчик; набор библиотек; средства оптимизации кода программ; справочные системы; сервисные средства для работы с библиотеками и др.