Инструментальные средства разработки программных продуктов. Курсовая работа: Сущность и особенности использования инструментального программного обеспечения

1. Инструменты разработки программных средств. В процессе разработки программных средств в той или иной мере используется компьютерная поддержка процессов разработки ПС. Это достигается путем представления хотя бы некоторых программных документов ПС (прежде всего, программ) на компьютерных носителях данных (например, дисках) и предоставлению в распоряжение разработчика ПС специальных ПС или включенных в состав компьютера специальных устройств, созданных для какой-либо обработки таких документов. В качестве такого специального ПС можно указать компилятор с какого-либо языка программирования.

Компилятор избавляет разработчика ПС от необходимости писать программы на языке компьютера, который для разработчика. ПС был бы крайне неудобен, - вместо этого он составляет программы на удобном ему языке программирования, которые соответствующий компилятор автоматически переводит на язык компьютера. В качестве специального устройства, поддерживающего процесс разработки ПС, может служит эмулятор какого-либо языка. Эмулятор позволяет выполнять (интерпретировать) программы на языке, отличном от языка компьютера, поддерживающего разработку ПС, например на языке компьютера, для которого эта программа предназначена. ПС, предназначенное для поддержки разработки других ПС, будем называть программным инструментом разработки ПС, а устройство компьютера, специально предназначенное для поддержки разработки ПС, будем называть аппаратным инструментом разработки ПС.

Инструменты разработки ПС могут использоваться в течении всего жизненного цикла ПС для работы с разными программными документами. Так текстовый редактор может использоваться для разработки практически любого программного документа. С точки зрения функций, которые инструменты выполняют при разработке ПС, их можно разбить на следующие четыре группы: · редакторы, · анализаторы, · преобразователи, · инструменты, поддерживающие процесс выполнения программ.

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

Инструменты, поддерживающие процесс выполнения программ, позволяют выполнять на компьютере описания процессов или отдельных их частей, представленных в виде, отличном от машинного кода, или машинный код с дополнительными возможностями его интерпретации. Примером такого инструмента является эмулятор кода другого компьютера. К этой группе инструментов следует отнести и различные отладчики. По-существу, каждая система программирования содержит программную подсистему периода выполнения, которая выполняет наиболее типичные для языка программирования программные фрагменты и обеспечивает стандартную реакцию на возникающие при выполнении программ исключительные ситуации (такую подсистему мы будем называть исполнительной поддержкой), - также можно рассматривать как инструмент данной группы.

2. Инструментальные среды разработки и сопровождения программных средств. В настоящее время с каждой системой программирования связываются не отдельные инструменты (например, компилятор), а некоторая логически связанная совокупность программных и аппаратных инструментов поддерживающих разработку и сопровождение ПС на данном языке программирования или ориентированных на какую-либо конкретную предметную область. Такую совокупность будем называть инструментальной средой разработки и сопровождения ПС. Для таких инструментальных сред характерно, во-первых, использование как программных, так и аппаратных инструментов, и, во-вторых, определенная ориентация либо на конкретный язык программирования, либо на конкретную предметную область. Инструментальная среда не обязательно должна функционировать на том компьютере, на котором должно будет применяться разрабатываемое с помощью ее ПС. Часто такое совмещение бывает достаточно удобным (если только мощность используемого компьютера позволяет это): не нужно иметь дело с компьютерами разных типов, в разрабатываемую ПС можно включать компоненты самой инструментальной среды.

Различают три основных класса инструментальных сред разработки и сопровождения ПС среды программирования, · рабочие места компьютерной технологии, · инструментальные системы технологии программирования. Среда программирования предназначена в основном для поддержки процессов программирования (кодирования), тестирования и отладки ПС. Рабочее место компьютерной технологии ориентировано на поддержку ранних этапов разработки ПС (спецификаций) и автоматической генерации программ по спецификациям. Инструментальная система технологии программирования предназначена для поддержки всех процессов разработки и сопровождения в течение всего жизненного цикла ПС и ориентирована на коллективную разработку больших программных систем с длительным жизненным циклом.

3. Инструментальные среды программирования содержат прежде всего текстовый редактор, позволяющий конструировать программы на заданном языке программирования, инструменты, позволяющие компилировать или интерпретировать программы на этом языке, а также тестировать и отлаживать полученные программы. Кроме того, могут быть и другие инструменты, например, для статического или динамического анализа программ. Взаимодействуют эти инструменты между собой через обычные файлы с помощью стандартных возможностей файловой системы. Различают следующие классы инструментальных сред программирования: · среды общего назначения, · языково-ориентированные среды.

Инструментальные среды программирования общего назначения содержат набор программных инструментов, поддерживающих разработку программ на разных языках программирования (например, текстовый редактор, редактор связей или интерпретатор языка целевого компьютера) и обычно представляют собой некоторое расширение возможностей используемой операционной системы. Для программирования в такой среде на каком-либо языке программирования потребуются дополнительные инструменты, ориентированные на этот язык (например, компилятор). . . Классификация инструментальных сред программирования

4. Понятие компьютерной технологии разработки программных средств и ее рабочие места. Имеются некоторые трудности в выработке строгого определения CASE-технологии (компьютерной технологии разработки ПС). CASE - это абревиатура от английского Computer-Aided Software Engineering (Компьютерно. Помогаемая Инженерия Программирования). Но без помощи (поддержки) компьютера ПС уже давно не разрабатываются (используется хотя бы компилятор). В действительности, в это понятие вкладывается более узкий (специальный) смысл, который постепенно размывается (как это всегда бывает, когда какое-либо понятие не имеет строгого определения). Первоначально под CASE понималась инженерия ранних этапов разработки ПС (определение требований, разработка внешнего описания и архитектуры ПС) с использованием программной поддержки (программных инструментов). Теперь под CASE может пониматься и инженерия всего жизненного цикла ПС (включая и его сопровождение), но только в том случае, когда программы частично или полностью генерируются по документам, полученным на указанных ранних этапах разработки. В этом случае CASE-технология стала принципиально отличаться от ручной (традиционной) технологии разработки ПС: изменилось не только содержание технологических процессов, но и сама их совокупность.

В настоящее время компьютерную технологию разработки ПС можно характеризовать - Использованием программной поддержки для разработки графических требований и графических спецификаций ПС, - автоматической генерации программ на каком-либо языке программирования или в машинном коде (частично или полностью), - программной поддержки прототипирования.

Инструментальная система технологии программирования - это интегрированная совокупность программных и аппаратных инструментов, поддерживающая все процессы разработки и сопровождения больших ПС в течение всего жизненного цикла в рамках определенной технологии. Из этого определения вытекают следующие основные черты этого класса компьютерной поддержки: · комплексность, · ориентированность на коллективную разработку, · технологическая определенность, · интегрированность.

С учетом обсужденных свойств инструментальных систем технологии программирования можно выделить три их основные компоненты: · база данных разработки (репозиторий), · инструментарий, · интерфейсы.

Репозиторий - центральное компьютерное хранилище информации, связанной с проектом (разработкой) ПС в течении всего жизненного цикла. Инструментарий - набор инструментов, определяющий возможности, предоставляемые системой коллективу разработчиков. Обычно этот набор является открытым: помимо минимального набора (встроенные инструменты), он содержит средства своего расширения (импортированными инструментами), - и структурированным, состоящим из некоторой общей части всех инструментов (ядра) и структурных (иногда иерархически связанных) классов инструментов. Интерфейсы разделяются на 1)пользовательский 2) системные. Пользовательский интерфейс обеспечивает доступ разработчикам к инструментарию (командный язык и т. п.), реализуется оболочкой системы. Системные интерфейсы обеспечивают взаимодействие между инструментами и их общими частями. Системные интерфейсы выделяются как архитектурные компоненты в связи с открытостью системы - их обязаны использовать новые (импортируемые) инструменты, включаемые в систему.

Различают два класса инструментальных систем технологии программирования: 1)инструментальные системы поддержки проекта и 2) языково-зависимые инструментальные системы. Инструментальная система поддержки проекта - это открытая система, способная поддерживать разработку ПС на разных языках программирования после соответствующего ее расширения программными инструментами, ориентированными на выбранный язык. Такая система содержит ядро (обеспечивающее, в частности, доступ к репозиторию), набор инструментов, поддерживающих управление (management) разработкой ПС, независимые от языка программирования инструменты, поддерживающие разработку ПС (текстовые и графические редакторы, генераторы отчетов и т. п.), а также инструменты расширения системы. Языково-зависимая инструментальная система - это система поддержки разработки ПС на каком-либо одном языке программирования, существенно использующая в организации своей работы специфику этого языка. Эта специфика может сказываться и на возможностях ядра (в том числе и на структуре репозитория), и на требованиях к оболочке и инструментам.

Унифицированный язык моделирования UML Большинство существующих методов объектно-ориентированного анализа и проектирования (ООАП) включают как язык моделирования, так и описание процесса моделирования. Язык моделирования – это нотация (в основном графическая), которая используется методом для описания проектов. Нотация представляет собой совокупность графических объектов, которые используются в моделях; она является синтаксисом языка моделирования. Например, нотация диаграммы классов определяет, каким образом представляются такие элементы и понятия, как класс, ассоциация и множественность. Процесс – это описание шагов, которые необходимо выполнить при разработке проекта. Унифицированный язык моделирования UML (Unified Modeling Language) – это преемник того поколения методов ООАП, которые появились в конце 80 -х и начале 90 -х гг.

Язык UML представляет собой общецелевой язык визуального моделирования, который разработан для спецификации, визуализации, проектирования и документирования компонентов программного обеспечения, бизнес-процессов и других систем. Язык UML одновременно является простым и мощным средством моделирования, который может быть эффективно использован для построения концептуальных, логических и графических моделей сложных систем самого различного целевого назначения. Конструктивное использование языка UML основывается на понимании общих принципов моделирования сложных систем и особенностей процесса объектно-ориентированного проектирования (ООП) в частности. Выбор выразительных средств для построения моделей сложных систем предопределяет те задачи, которые могут быть решены с использованием данных моделей. При этом одним из основных принципов построения моделей сложных систем является принцип абстрагирования, который предписывает включать в модель только те аспекты проектируемой системы, которые имеют непосредственное отношение к выполнению системой своих функций или своего целевого предназначения. При этом все второстепенные детали опускаются, чтобы чрезмерно не усложнять процесс анализа и исследования полученной модели.

UML содержит стандартный набор диаграмм и нотаций самых разнообразных видов. Диаграмма в UML – это графическое представление набора элементов, изображаемое чаще всего в виде связанного графа с вершинами (сущностями) и ребрами (отношениями). Диаграммы рисуют для визуализации системы с разных точек зрения. Диаграмма – в некотором смысле одна из проекций системы. Как правило, за исключением наиболее тривиальных случаев, диаграммы дают свернутое представление элементов, из которых составлена система. Один и тот же элемент может присутствовать во всех диаграммах, или только в нескольких (самый распространенный вариант), или не присутствовать ни в одной (очень редко). Теоретически диаграммы могут содержать любые комбинации сущностей и отношений. На практике, однако, применяется сравнительно небольшое количество типовых комбинаций, соответствующих пяти наиболее употребительным видам, которые составляют архитектуру программной системы.

UML выделяют следующие типы диаграмм: – диаграммы вариантов использования (usecase diagrams) – для моделирования бизнес-процессов организации (требований к системе); – диаграммы классов (class diagrams) – для моделирования статической структуры классов системы и связей между ними. На таких диаграммах показывают классы, интерфейсы, объекты и кооперации, а также их отношения. При моделировании объектно-ориентированных систем этот тип диаграмм используют чаще всего. Диаграммы классов соответствуют статическому виду системы с точки зрения проектирования; – диаграммы поведения системы (behavior diagrams); диаграммы взаимодействия (interaction diagrams) – для моделирования процесса обмена сообщениями между объектами. – диаграммы состояний (statechart diagrams) – для моделирования поведения объектов системы при переходе из одного состояния в другое.

– диаграммы деятельностей (activity diagrams) – для моделирования поведения системы в рамках различных вариантов использования или моделирования деятельностей. – диаграммы реализации (implementation diagrams): диаграммы компонентов (component diagrams) – для моделирования иерархии компонентов (подсистем) системы; диаграммы размещения (deployment diagrams) – для моделирования физической архитектуры системы.

Инструментальное программное обеспечение (Software tools) - программное обеспечение, используемое в ходе разработки, корректировки или развития других программ: редакторы, компиляторы, отладчики, вспомогательные системные программы, графические пакеты и др.

Сюда входят языки программирования, интегрированные среды разработки программ, CASE-системы и др.

Выбор языка программирования

Существующие на сегодняшний день языки программирования можно выделить в следующие группы :

  • универсальные языки высокого уровня;
  • специализированные языки разработчика программного обеспечения;
  • специализированные языки пользователя;
  • языки низкого уровня.

В группе универсальных языков высокого уровня безусловным лидером на сегодня является язык С++. Действительно, он имеет ряд достоинств:

  • масштабируемость. На языке С++ разрабатывают программы для самых различных платформ и систем;
  • возможность работы на низком уровне с памятью, адресами, портами, что при неосторожном использовании может легко превратиться в недостаток;
  • C++ имеет мощный препроцессор, унаследованный от С, но, как и любой другой мощный инструмент, требует осторожного использования;
  • возможность создания обобщенных алгоритмов для разных типов данных, их специализация и вычисления на этапе компиляции, используя шаблоны.

При этом язык C++ обладает рядом существенных недостатков:

  • подключение интерфейса внешнего модуля через препро-цессорную вставку заголовочного файла (#include) серьезно замедляет компиляцию при подключении большого количества модулей;
  • недостаток информации о типах данных во время компиляции;
  • сложность для изучения и компиляции;
  • некоторые преобразования типов неинтуитивны. В частности, операция над беззнаковым и знаковым числами выдает беззнаковый результат.

Для C++ существует большое количество библиотек классов, поддерживающих создание пользовательского интерфейса, клиент-серверных приложений, работу с базами данных и т. д., поэтому пока альтернативы C++ нет . Для второстепенных проектов иногда используется Visual Basic. Язык Java рассматривался как альтернатива Basic, но из-за отсутствия визуального средства разработки форм он пока остается малопригодным. Современный Object Pascal, как и Pascal, предложенный Н. Виртом в середине 70-х годов XX в., остается наиболее привлекательным для обучения основам программирования в силу своей простоты, структурированности и обнаружения компилятором большого количества не только синтаксических, но и семантических ошибок.

В нынешнее время в отличие от 60-х годов XX в. языки программирования создаются крайне редко. За последние 15 лет можно отметить лишь две новинки, получившие широкое распространение - это Java (Sun Microsystems, 1995 г.), ставший популярным во многом благодаря технологии его использования в Интернете и появления такого понятия, как виртуальная Java-машина, и C# (Microsoft, 2000 г.), созданный на основе C++.

Создателем языка является сотрудник Microsoft Андреас Хейлсберг. Он стал известным в мире программистов задолго до того, как пришел в Microsoft. Хейлсберг входил в число ведущих разработчиков одной из самых популярных сред разработки - Delphi. В Microsoft он участвовал в создании версии Java - J++, так что опыта в написании языков и сред программирования ему не занимать. Как отмечал сам Андреас Хейлсберг, C# создавался как язык компонентного программирования, и в этом одно из главных достоинств языка, направленное на возможность повторного использования созданных компонентов.

Другие достоинства языка С#:

  • сохраняет лучшие черты популярных языков программирования C/C++, на основе которых он создан. В связи с этим облегчается переход программистов от C++ к С#;
  • является проще и надежнее C++. Простота и надежность главным образом связаны с тем, что на C# хотя и допускаются, но не поощряются такие опасные свойства C++, как указатели, адресация, разыменование, адресная арифметика;
  • является полностью объектно-ориентированным языком, где даже типы, встроенные в язык, представлены классами;
  • реализует возможности наследования и универсализации;
  • учитывает все возможности Framework .Net, так как C# создавался параллельно с данной средой;
  • благодаря каркасу Framework .Net, ставшему надстройкой над операционной системой, программисты C# получают те же преимущества работы с виртуальной машиной, что и программисты Java. Эффективность кода даже повышается, поскольку исполнительная среда CLR представляет собой компилятор промежуточного языка, в то время как виртуальная Java-машина является интерпретатором байт-кода;
  • мощная библиотека каркаса поддерживает удобство построения различных типов приложений на С#, позволяя легко строить Web-службы, другие виды компонентов, достаточно просто сохранять и получать информацию из базы данных и других хранилищ данных;
  • является источником надежного и эффективного кода.

Кроме вышеописанных языков к группе универсальных

принадлежат также Modula, Ada, COBOL, FORTRAN и некоторые другие. Каждый из вышеописанных языков имеет свои особенности и, соответственно, свою область применения. В настоящее время универсальные языки программирования применяются в самых различных областях человеческой деятельности, таких как:

  • научные вычисления (языки C++, FORTRAN, Java);
  • системное программирование (языки C++, Java);
  • обработка информации (языки C++, COBOL, Java);
  • искусственный интеллект (LISP, Prolog);
  • издательская деятельность (Postscript, ТеХ);
  • удаленная обработка информации (Perl, РНР, Java, C++);
  • описание документов (HTML, XML).

С течением времени одни языки развивались, приобретали новые черты и остались востребованными, другие утратили свою актуальность и сегодня представляют в лучшем случае чисто теоретический интерес (Focal, PL/1 и др.). В значительной степени это связано с такими факторами:

  • наличие среды программирования, поддерживающей разработку приложений на конкретном языке программирования;
  • удобство сопровождения и тестирования программ;
  • стоимость разработки с применением конкретного языка программирования;
  • четкость и ортогональность конструкций языка;
  • применение объектно-ориентированного подхода.

Специализированные языки разработчика используют для создания конкретных типов программного обеспечения. К ним относят:

  • языки баз данных;
  • языки создания сетевых приложений;
  • языки создания систем искусственного интеллекта и т. д.

Специализированные языки пользователя обычно являются частью профессиональных сред пользователя, характеризуются узкой направленностью и разработчиками программного обеспечения не используются.

Языки низкого уровня позволяют осуществлять программирование практически на уровне машинных команд. При этом получают самые оптимальные как с точки зрения времени выполнения, так и с точки зрения объема необходимой памяти программы. Недостатком их является то, что они не поддерживают принципов структурного программирования .

В настоящее время языки типа ассемблера обычно используют:

  • при написании сравнительно простых программ, для обращения к техническим средствам, например драйверов;
  • в виде вставок в программы на языках высокого уровня, например, для ускорения преобразования данных в циклах с большим количеством повторений.

В большей степени выбор языка программирования определяется опытом разработчика, требованиями ведущей разработку организации или просто устоявшимся мнением.

Разработка программного обеспечения осуществляется с использованием различных инструментальных средств, обеспечивающих:

    оригинальное программирование;

    использование пакетов прикладных программ – типовые программы, реализующие функции обработки данных;

    автоматизацию основных этапов разработки программ.

Наиболее традиционными средствами разработки являются языки и системы программирования. Языки программирования принято делить на машинные и алгоритмические языки.

Машинные языки содержат машинные команды, соответствующие простейшим операциям обработки. Машинные команды привязаны к определенному классу компьютеров и/или операционных систем.

Алгоритмические языки программирования описывают алгоритм задачи, обеспечивают наглядность алгоритма и удобство сопровождения программы. Алгоритмические языки делятся на машинно-ориентированные, процедурно-ориентированные и проблемно-ориентированные языки.

Машинно -ориентированные языки программирования являются языками низкого уровня, поскольку они учитывают архитектуру и тип компьютеров. Программирование на таких языках трудоемко, но программы оптимальны с точки зрения потребных ресурсов компьютера. Примеры машинно-ориентированных языков программирования - различные ассемблеры 1 (Macro Assembler, Turbo Assembler и др.) определенного класса компьютеров.

Процедурно -ориентированные языки программирования, такие как Visual Basic, Pascal, C++, Ada, Cobol, PL1 и др. позволяют описать набор процедур обработки, реализуют типовые вычислительные структуры:

1. Последовательности блоков (инструкций): 1, 2, 3, 4 и т.д.

Все блоки (инструкции) выполняются в строгой последовательности (Рис.5 А)

2. Условный переход (Рис.5 Б) – проверка заданного условия (2) и выбор альтернативного действия: если условие истинно – 3, иначе - 4. После этого управление передается блоку 5.

3. Альтернативный выбор (Рис.5 В) – проверка условия (2), если условие истинно – выполнение действия 3, иначе проверка условия (4); если условие истинно – выполнение действия 5 и т.д. Если не выполнилось ни одного условия или выполнились действия (3 или 5 и т.п.), управление передается блоку 6.

А Б В

Рисунок 5

4. Циклический процесс – цикл «пока» (Рис. 6А). Цикл повторяется, пока истинно условие (2) – блок 3. Если условие (2) ложно, передача управления блоку 4.

5. Циклический процесс – цикл «до» (Рис. 6Б). Цикл выполняется как минимум один раз – блок 2. После проверки условия (3), если оно истинно, выполняется блок (2), иначе управление передается блоку 4.

Рисунок 6

Языки программирования объектного типа используют в программном коде класса объектов или процедурах обработки событий также элементы структурного программирования.

Проблемно -ориентированные языки программирования - реляционные языки запросов высокого уровня, генераторы отчетов и т.д. позволяют идентифицировать проблему, входную и выходную информацию, не указывая конкретных процедур обработки.

Пакеты прикладных программ (ППП) делятся на классы:

    Проблемно-ориентированные ППП – обеспечивают решение задач определенной предметной области;

    Методо-ориентированные ППП – поддерживают определенного вида модели и методы решения задач, применяются независимо от предметной области;

    ППП общего назначения – обеспечивают поддержку информационных технологий (текстовые работы, графические работы, стандартные вычисления и т.п.).

К инструментальному программному обеспечению относятся средства разработки программного обеспечения. Это системы программирования, включающие программные средства, необходимые для автоматического построения машинного кода. Они являются инструментами для программистов- профессионалов и позволяют разрабатывать программы на различных языках программирования.

В состав средств разработки программного обеспечения входят следующие программы:

  • ассемблеры – компьютерные программы, осуществляющие преобразование программы в форме исходного текста на языке ассемблера в машинные команды в виде объектного кода;
  • трансляторы – программы, выполняющие трансляцию программы;
  • компиляторы – программы, переводящие текст программы на языке высокого уровня в эквивалентную программу на машинном языке;
  • интерпретаторы – программы, анализирующие команды или операторы программы и тут же выполняющие их;
  • компоновщики (редакторы связей) – программы, которые производят компоновку – принимают на вход один или несколько объектных модулей и собирают по ним исполнимый модуль;
  • препроцессоры исходных текстов – это компьютерные программы, принимающие данные на входе, и выдающие данные, предназначенные для входа другой программы, например такой, как компилятор;
  • отладчики (debugger) – программы, являющиеся модулем среды разработки или отдельным приложением, предназначенным для поиска ошибок в программе;
  • специализированные редакторы исходных текстов – программы, необходимые для создания и редактирования исходного кода программ. Специализированный редактор исходных текстов может быть отдельным приложением или встроенным в интегрированную среду разработки и др.

Языки, представляющие алгоритмы в виде последовательности читаемых (не двоично-кодированных) команд, называются алгоритмическими языками. Алгоритмические языки подразделяются на машинно-ориентированные, процедурно-ориентированные и проблемно-ориентированные.

Машинно-ориентированные языки относятся к языкам программирования низкого уровня – программирование на них наиболее трудоемко, но позволяет создавать оптимальные программы, максимально учитывающие функционально-структурные особенности конкретного компьютера. Программы на этих языках, при прочих равных условиях, будут более короткими и быстрыми. Кроме того, знание основ программирования на машинно-ориентированном языке позволяет специалисту подробнейшим образом разобраться с архитектурой компьютера. Большинство команд машинно-ориентированных языков при трансляции (переводе) на машинный (двоичный) язык генерируют одну машинную команду.

Процедурно-ориентированные и проблемно-ориентированные языки относятся к языкам высокого уровня, использующим макрокоманды. Макрокоманда при трансляции генерирует много машинных команд (для процедурноориентированного языка это соотношение в среднем "1 к десяткам машинных команд", а для проблемно-ориентированного – "1 к сотням машинных команд". Процедурноориентированные языки программирования являются самыми используемыми (Basic, Visual Basic, Pascal, Borland Delphi, С и др.). В этом случае программист должен описывать всю процедуру решения задачи, тогда как проблемно-ориентированные языки (их называют также непроцедурными) позволяют лишь формально идентифицировать проблему и указать состав, структуры представления и форматы входной и выходной информации для задачи.

При выполнении инструкций программ компьютеру необходимо преобразовать удобные для человеческого восприятия операторы, написанные на каком-либо языке программирования, в форму, попятную для компьютера. Инструментальное программное обеспечение имеет специальные программы, транслирующие (translate) текст программ, написанных на различных языках программирования, в машинные коды, которые затем выполняются компьютером. Этот вид программного обеспечения называется компилятором или интерпретатором. Текст программы, написанной на языке программирования высокого уровня, до того как быть преобразованным в машинные коды, называется исходным кодом (source code). Компилятор (compiler) преобразует исходный код в машинные коды, называемые объектным кодом (object code) – программой на выходном языке транслятора. Перед выполнением происходит процесс редактирования связей (linkage editing), заключающийся в том, что модули выходной программы объединяются с другими модулями объектного кода, содержащими, например, данные. Результирующий загрузочный модуль – это команды, непосредственно выполняемые компьютером. Некоторые языки программирования содержат не компилятор, а интерпретатор (interpreter), который преобразует каждое отдельное выражение исходного кода в машинные коды и сразу выполняет их. Интерпретатор удобен на этапе отладки программы, так как обеспечивает быструю обратную связь при обнаружении ошибки в исходном коде. Основы программирования на языке высокого уровня Visual Basic изложены в гл. 12 настоящего учебника.

К инструментальному ПО относят также некоторые системы управления базами данных (СУБД). СУБД – это специализированный комплекс программ, предназначенный для организации и ведения баз данных. Так как системы управления базами данных не являются обязательным компонентом вычислительной системы, их не относят к системному программному обеспечению. А так как отдельные СУБД осуществляют лишь служебную функцию при работе других видов программ (веб-серверы, серверы приложений), их не всегда можно отнести к прикладному программному обеспечению. По этим причинам их часто относят к инструментальному программному обеспечению.

Основные функции таких СУБД:

  • управление данными во внешней памяти (на дисках);
  • управление данными в оперативной памяти с использованием дискового кэша;
  • фиксация изменений в специальных журналах, резервное копирование и восстановление базы данных после сбоев;
  • поддержка языков БД (язык определения данных, язык манипулирования данными).

Теоретические основы СУБД описаны выше (параграф 3.2), а практическое применение описано в гл. 10.

Инструментальные средства разработки ПО– это совокупность аппаратно-программных средств, позволяющих осуществить написание и отладку программ для микропроцессорных систем с большой степенью достоверности их работоспособности в реальных системах.

К ним относятся:

Внутрисхемные эмулятры;

Программные симуляторы;

Отладочные мониторы;

Платы развития (оценочные платы);

Эмуляторы ПЗУ;

Интегрированные среды разработки.

Внутрисхемный эмулятор – наиболее мощное и универсальное отладочное средство. Это программно-аппаратное средство, способное замещать процессор в реальной системе и делающее процесс функционирования отлаживаемого контроллера прозрачным, т. е. легко контролируемым, произвольно управляемым и модифицируемым по воле разработчика.

Функционально внутрисхемные эмуляторы делятся на стыкуемые с внешней ЭВМ и функционирующие автономно.

Стыковка с отлаживаемой системой производится с помощью специального кабеля с эмуляционной головкой, которая вставляется вместо отлаживаемого микроконтроллера или параллельно ему. В последнем случае микроконтроллер должен иметь отладочный режим, при котором все его выводы переводятся в третье состояние.

Основные функциональные блоки эмулятора:

Отладчик;

Узел эмуляции микроконтроллера;

Эмуляционная память;

Подсистема точек останова.

Дополнительные блоки:

Процессор точек останова;

Трассировщик;

Профилировщик (анализатор эффективности программного кода);

Таймер реального времени;

Программно-аппаратные средства, обеспечивающие возможность чтения и модификации эмулируемого процессора;

Программно-аппаратные средства, обеспечивающие синхронное управление, необходимое для эмуляции в мультипроцессорных системах.

Отладчик осуществляет:

Управление процессом эмуляции (моделирования);

Вывод на монитор состояния и содержимого всех регистров и памяти и, при необходимости, их модификации (изменение их содержимого).

Отладчик позволяет одновременно следить за ходом выполнения программы и видеть соответствие между исходным текстом, образом программы в машинных кодах и состоянием всех ресурсов эмулируемого микроконтроллера.

Эмуляционная память может применяться вместо ПЗУ отлаживаемой системы, а также дает возможность отлаживать программу без реальной системы или ее макета. (Нет необходимости в перепрограммировании ПЗУ.) Эмулирование возможно целиком или поблочно.

Трассировщик – это логический анализатор, работающий синхронно с процессором и фиксирующий поток выполняемых инструкций и состояния выбранных внешних сигналов.

Процессор точек останова позволяет останавливать выполнение программы или выполнять иные действия, например, запускать или останавливать трассировщик при выполнении заданных пользователем условий (любой степени сложности) без вывода из масштаба «реального времени».

Профилировщик позволяет получить по результатам прогона отлаживаемой программы следующую информацию:

Количество обращений к различным участкам программы;

Время, затраченное на выполнение различных участков программы.

Анализ статистической информации, поставляемой профилировщиком, позволяет легко выявлять «мертвые» или перенапряженные участки программ и в результате оптимизировать структуру отлаживаемой программы.

Интегрированная среда разработки – это совокупность программных средств, поддерживающая все этапы разработки ПО – от написания исходного текста программы до ее компиляции и отладки – и обеспечивающая простое и быстрое взаимодействие с другими инструментальными средствами (программным отладчиком-симулятором и программатором).

Наличие встроенных редактора текста, менеджера проектов и системы управления существенно помогает разработчику, избавляя его от множества рутинных действий. Стирается грань между написанием, редактированием и отладкой программы.

Существуют эмуляторы, предназначенные для эмуляции микроконтроллеров семейств Intel MCS 8051, MCS-196, Microchip PIC.

Программный симулятор – программное средство, имитирующее работу микроконтроллера и его памяти. В его состав входят отладчик, модель центрального процессора и памяти. Более сложные симуляторы содержат также модели встроенных периферийных устройств (таймеров, АЦП и систем прерываний). Загрузив программу в симулятор, пользователь может запускать ее в пошаговом или непрерывном режимах, задавать условные или безусловные точки останова, контролировать и свободно модифицировать содержимое ячеек памяти и регистров микроконтроллера. С его помощью можно быстро проверить логику выполнения программы и правильность выполнения арифметических операций.

Наличие интерфейса внешней среды позволяет избавить разработчика от необходимости устанавливать и изменять вручную содержимое входных регистров, т. е. можно создавать и гибко использовать модель внешней среды микроконтроллера, функционирующую и взаимодействующую с отлаживаемой программой по заданному алгоритму.

Особенностью программных симуляторов является то обстоятельство, что исполнение программ, загруженных в симулятор, происходит в масштабе времени, отличном от реального. Однако более низкая цена, возможность ведения отладки даже в условиях отсутствия макета отлаживаемого устройства делают программные симуляторы весьма эффективным средством отладки.

Отладочный монитор – специальная программа, загружаемая в память отлаживаемой системы и вынуждающая процессор выполнять, кроме прикладной задачи, еще и отладочные функции:

Загрузку прикладных кодов в свободную от монитора память;

Установку точек останова;

Запуск и останов загруженной программы в реальном времени;

Проход программы пользователя по шагам;

Просмотр, редактирование содержимого памяти и управляющих регистров.

Программа монитора должна быть связана с внешним компьютером или монитором для визуализации процесса отладки.

Основное достоинство использования монитора – это малые затраты при сохранении возможности вести отладку в реальном времени на микроконтроллере, стоящем на плате. Недостатком является отвлечение ресурсов микроконтроллера на отладочные и связные процедуры (память, прерывания, последовательный канал).

Платы развития , или оценочные платы, являются своеобразными конструкторами для макетирования прикладных систем. Выпуск оценочных плат – это современный подход к продвижению микроконтроллеров на рынке. Обычно на печатной плате устанавливается вся необходимая аппаратура для демонстрации возможностей микроконтроллера, обеспечивается связь с компьютером и предоставляется поле для монтажа прикладных схем пользователя. Такие платы могут быть применены для установки в аппаратуру малой серии (5 – 20 шт.).

Для удобства отладки платы развития комплектуются простейшими средствами отладки на базе монитора отладки для микроконтроллеров с внешней шиной и без нее.

В первом случае отладочный монитор поставляется в виде микросхемы ПЗУ, которая устанавливается в разъем (кроватку) на плате. На плате также имеется ОЗУ для программ пользователя и канал связи с компьютером. Пример – плата фирмы “INTEL” для микроконтроллера 8051.

Для микроконтроллеров без внешней шины плата развития имеет встроенные схемы программирования внутреннего ПЗУ микроконтроллера, управляемые от внешнего компьютера. В прикладной программе должны быть предусмотрены вызовы отладочных функций и сам монитор. После загрузки и прогона программы для внесения изменений требуется стирание ПЗУ и перезапись нового варианта программы пользователя.

Готовая программа получается путем удаления монитора и всех вызовов мониторных функций. Примерами могут служить платы развития фирмы “MICROCHIP” для своих PIC-контроллеров, а также платы развития для отладки своих контроллеров 80С750 Philips и 89С2051 Atmel.

В целом, возможности данного подхода (плата развития + монитор) не столь универсальны, как возможности внутрисхемного эмулятора, да и отвлечение ресурсов контроллера на режим отладки следует учитывать. Тем не менее, законченный набор программно-аппаратных средств, позволяющих без потерь времени приступить к монтажу и отладке прикладной системы, во многих случаях является решающим фактором, с учетом меньшей стоимости, по сравнению с универсальным эмулятором.

Эмуляторы ПЗУ – это программно-аппаратные средства, позволяющие замещать ПЗУ на отлаживаемой плате и подставляющие вместо него ОЗУ, куда загружается программа с компьютера через один из стандартных каналов связи. В данном случае стараются избежать многократных циклов перепрограммирования ПЗУ. Метод пригоден для микроконтроллеров, которые в состоянии обращаться к внешней памяти программ. По сложности и стоимости метод сравним с использованием плат развития, но более универсален, так как может применяться с любыми типами микроконтроллеров.

В настоящее время имеются модели «интеллектуальных» эмуляторов ПЗУ, позволяющие заглядывать внутрь микроконтроллера, т. е. работающие почти как внутрисхемный эмулятор за счет быстрого переключения шины. Создается эффект, будто бы монитор отладки установлен на плате пользователя и при этом не занимает у микроконтроллера никаких аппаратных ресурсов, кроме небольшой зоны программных шагов, примерно 4К. Такое устройство разработала фирма «ФИТОН» для всех существующих и будущих микроконтроллеров с ядром МК 8051, но дополнительно насыщенных различными устройствами ввода/вывода. Оно поддерживает множество микроконтроллеров фирм “PHILIPS”, “SIEMENS”,”OKI”.

Интегрированные среды разработки (Integrated Development Environment, IDE) позволяет программисту:

Использовать встроенный файловый текстовый редактор, специально ориентированный на работу с исходными текстами программ;

 
Статьи по теме:
Не работает разблокировка при открытии Smart Cover на iPad Honor 6c отключение при закрывании чехла
Чехол S View, которым Samsung оснащает свои смартфоны напоминает нам о старых добрых временах, когда телефоны-раскладушки оснащались небольшим дополнительным дисплеем на задней части крышки. Если вы ни разу не видели S View – то это обычный чехол в виде к
Блокировка в случае кражи или потери телефона
Порою случаются такие моменты, когда возникает необходимость произвести блокировку своей сим карты на определённый период времени. Возможно вы хотите в последствии изменить свой тарифный план или вовсе перестать пользоваться услугами своего мобильного опе
Прошивка телефона, смартфона и планшета ZTE
On this page, you will find the official link to download ZTE Blade L3 Stock Firmware ROM (flash file) on your Computer. Firmware comes in a zip package, which contains Flash File, Flash Tool, USB Driver and How-to Flash Manual. How to FlashStep 1 : Downl
Завис компьютер — какие клавиши нажать на клавиатуре, как перезагрузить или выключить
F1- вызывает «справку» Windows или окно помощи активной программы. В Microsoft Word комбинация клавиш Shift+F1 показывает форматирование текста; F2- переименовывает выделенный объект на рабочем столе или в окне проводника; F3- открывает окно поиска файла