Инструментальное программное обеспечение, его назначение и состав
Задание:
Инструментальное
программное обеспечение, его назначение
и состав.
Инструментальное
программное обеспечение — программное
обеспечение (ПО), предназначенное для
использования в ходе проектирования,
разработки и сопровождения программ.
Обычно этот термин применяется для акцентирования
отличия данного класса ПО от прикладного
и системного программного обеспечения.
Программное обеспечение — наряду с аппаратными средствами, важнейшая составляющая информационных технологий, включающая компьютерные программы и данные, предназначенные для решения определённого круга задач и хранящиеся на машинных носителях. Программное обеспечение представляет собой либо данные для использования в других программах, либо алгоритм, реализованный в виде последовательности инструкций для процессора.
Прикладное программное обеспечение (прикладное ПО, прикладные программы) — программы, предназначенные для выполнения определенных пользовательских задач и рассчитанные на непосредственное взаимодействие с пользователем. В отличие от прикладного, системное программное обеспечение (операционная система) используется для обеспечения работы компьютера самого по себе и выполнения прикладных программ.
Системное программное обеспечение - это набор программ, которые управляют компонентами вычислительной системы, такими как процессор, коммуникационные и периферийные устройства, а также которые предназначены для обеспечения функционирования и работоспособности всей системы.
Большинство из них отвечают непосредственно за контроль и объединение в единое целое различных компонентов аппаратного оборудования вычислительной системы.
Системное
программное обеспечение
Виды инструментального ПО:
- Текстовые редакторы;
- Интегрированные среды разработки;
- SDK;
- Компиляторы;
- Интерпретаторы;
- Линковщики;
- Парсеры;
- Ассемблеры;
- Отладчики;
- Профилировщики;
- Генераторы документации;
- Средства анализа покрытия кода;
- Средства непрерывной интеграции;
-
Средства автоматизированного
- Системы управления версиями;
-
и др.
Текстовый редактор — компьютерная программа, предназначенная для создания и изменения текстовых файлов, а также их просмотра на экране, вывода на печать, поиска в них и т. п.
Некоторые
текстовые редакторы
Другие
текстовые редакторы имеют
Ещё один класс программ этой группы - текстовые рабочие среды. По сути, такие среды представляют собой полноценную рабочую среду, в которой можно решать самые разнообразные задачи: с помощью надстроек они позволяют писать и читать письма, веб-каналы, работать в вики и Вебе, вести дневник, управлять списками адресов и задач. Представители этого класса — Emacs, Archy, Vim и Acme из операционной системы Plan 9. Такие программы могут служит средами разработки программного обеспечения. В любом случае, последние всегда содержат текстовый редактор как необходимый инструмент программирования.
Популярные текстовые редакторы
GridinSoft Notepad — текстовый редактор с проверкой орфографии на 7 языках.
BDV Notepad — Заменитель Блокнота для Windows, содержит дополнительные функции для редактирования текста, бесплатен.
EditPlus — текстовый редактор для Windows, предназначенный для программирования и веб-разработки.
Emacs Открытая программа. — Имеет мощный и очень гибкий настраиваемый интерфейс, поддерживает макросы.
EmEditor — платный редактор для Windows-систем. Обеспечивает подсветку текста для разных форматов, модулей, однако интерфейс требует изучения.
JEdit. Открытая программа. — кросс-платформенный редактор, написанный на языке Java.
Kate. Открытая программа. — Мощный расширяемый текстовый редактор с подсветкой синтаксиса для массы языков программирования и разметки (модули подсветки можно автоматически обновлять по сети). Гибкий настраиваемый интерфейс. Входит в состав KDE.
Notepad — входит в состав Windows.
SciTE. Открытая программа. Редактор с подсветкой синтаксиса для многих языков программирования, фолдингом. Широкие возможности настройки и автоматизации.
Vim. Открытая программа. Разделяет процесс редактирования на режим ввода и командный. Даёт неограниченные возможности настройки и автоматизации.
GNU nano. Редактор для командной строки.
Pspad Текстовый редактор с подсветкой синтаксиса, поддержкой скриптов и инструментами для работы с HTML-кодом.
TEA.
Редактор с сотням функций обработки текста
и разметки в HTML, LaTeX, Docbook
Интегрированная среда разработки программного обеспечения — система программных средств, используемая программистами для разработки программного обеспечения.
Обычно среда разработки включает в себя текстовый редактор, компилятор и/или интерпретатор, средства автоматизации сборки и отладчик. Иногда также содержит систему управления версиями и разнообразные инструменты для упрощения конструирования графического интерфейса пользователя. Многие современные среды разработки также включают браузер классов, инспектор объектов и диаграмму иерархии классов — для использования при объектно-ориентированной разработке ПО. Хотя и существуют среды разработки, предназначенные для нескольких языков — такие как Eclipse или Microsoft Visual Studio, обычно среда разработки предназначается для одного определенного языка программирования — как например, Visual Basic.
Примеры сред разработки — Turbo Pascal, Borland C++, GNU toolchain, DrPython, Delphi.
Визуальное
Частный
случай ИСР — среды визуальной разработки,
которые включают в себя возможность визуального
редактирования интерфейса программы.
Компилятор — разновидность транслятора, программный модуль или отдельная программа, задачей которой является полный перевод программы, написанной на одном из языков программирования (исходный язык) в программу на другом языке программирования (целевой язык) до начала ее выполнения. Другой разновидностью трансляторов являются интерпретаторы, осуществляющие анализ и перевод текста программы в машинный код пошагово, непосредственно перед выполнением программы.
Основы
Большинство компиляторов переводят программу с некоторого высокоуровневого языка программирования в машинный код, который может быть непосредственно выполнен компьютером, то есть в набор инструкций для центрального процессора. Компьютер, для которого производится компиляция, называется целевой машиной.
Некоторые компиляторы (например, Java) переводят программу не в машинный код, а в программу на некотором специально созданном низкоуровневом языке. Например, для языка Java это язык Java Virtual Machine, JVM — язык виртуальной машины Java, или так называемый байт-код Java. Для языков программирования на платформе .NET Framework (C#, Managed C++, Visual Basic .NET и другие) это так называемый MSIL (Microsoft Intermediate Language), или «Промежуточный язык фирмы Майкрософт». Далее программа на этом промежуточном языке подлежит интерпретации либо ещё одной компиляции в код целевой машины непосредственно перед исполнением (для Java это делает «Just-In-Time compiler» (JIT)).
Для каждой целевой машины (IBM, Apple и т. д.) и каждой операционной системы или семейства операционных систем, работающих на целевой машине, требуется написание своего компилятора. Существуют также так называемые «кросс-компиляторы», позволяющие на одной машине и в среде одной ОС получать код, предназначенный для выполнения на другой целевой машине или в среде другой ОС. Кроме того, компиляторы для одной и той же целевой машины могут быть оптимизированы под разные процессоры. Например, компилятор, оптимизированный под процессоры фирмы Intel, создаёт машинный код, который быстрее всего выполняется на компьютерах с этими процессорами.
Существуют программы, которые решают обратную задачу — перевод программы с низкоуровневого языка на высокоуровневый. Этот процесс называют декомпиляцией, а программы — декомпиляторами. Можно считать, что декомпиляторы восстанавливают исходный текст программы, однако качество этого восстановления, как правило, невысокое.
Структура компилятора
Процесс компиляции состоит из двух основных частей — собственно компиляции и компоновки (генерации исполняемого файла).
Компиляция. Программа, как правило, состоит из нескольких модулей. В результате компиляции для каждого модуля генерируется объектный файл, который содержит инструкции на целевом языке и информацию о содержащихся в модуле функциях и о внешних функциях, используемых в модуле. Процесс компиляции зависит, как правило, только от типа процессора.
Компоновка (англ. linking, linkage). Все необходимые объектные файлы собираются вместе. Далее происходит процесс разрешения ссылок — все внешние по отношению к каждому отдельному модулю ссылки должны быть разрешены, то есть для каждой из них должна быть поставлена в соответствие конкретная функция из другого модуля программы, либо из внешней библиотеки. Например, если в модуле вызывается функция операционной системы, которая рисует на экране линию, то компилятор «верит на слово», что такая функция существует. В процессе сборки этой ссылке должна быть сопоставлена конкретная функция из конкретной библиотеки (для Windows — это как правило DLL, для Linux — SO) операционной системы. Кроме того при генерации исполняемого файла (для Windows — exe-файл) должны быть соблюдены требования операционной системы к формату исполняемых файлов. Поэтому процесс сборки зависит от операционной системы, а зачастую — и от версии операционной системы.
Примеры
компиляторов: GCC, Free Pascal Compiler.
Интерпретатор (языка программирования) — программа для непосредственного исполнения программ (производства вычислений, предписываемых этими программами) из исходного кода на определенном языке.
Простые интерпретаторы анализируют и выполняют (интерпретируют) программу последовательно (покомандно или построчно). Синтаксические ошибки обнаруживаются такими интерпретаторами только когда интерпретатор приступает к выполнению команды (строки) содержащей ошибку, это может быть удобно начинающим.
Более сложные интерпретаторы (называемые интерпретаторами компилирующего типа) перед выполнением производят компиляцию исходного кода программы в машинный или некий "промежуточный" код, и только после этого приступают к выполнению. И поэтому все синтаксические ошибки обнаруживаются до выполнения. Такие интерпретаторы быстрее выполняют большие и циклические программы, т.к. не занимаются анализом исходного кода (в т.ч избыточным, например, в циклах) в реальном времени, но могут быть сложны для начинающих.
Некоторые
интерпретаторы для начинающих (преимущественно,
для языка Бейсик) могут работать
в режиме диалога, добавляя вводимую строку
команд в программу (в памяти) или выполняя
команды непосредственно.
Линковщик (также редактор связей, англ. linker, link editor) — программа, которая принимает на входе один или несколько объектных модулей и собирает по ним исполняемый модуль.
Для связывания модулей, линковщик использует таблицы имён, созданные компилятором в каждом из объектных модулей. Такие имена могут быть двух типов:
Определённые или экспортируемые имена — функции и переменные, определённые в данном модуле и предоставляемые для использования другим модулям
Неопределённые или импортируемые имена — функции и переменные, на которые ссылается модуль, но не определяет их внутри себя
Работа
линковщика заключается в том, чтобы
в каждом модуле разрешить ссылки
на неопределённые имена. Для каждого
импортируемого имени находится
его определение в других модулях,
упоминание имени заменяется на его
адрес.
Ассемблер (от англ. assemble — собирать) — компилятор с языка ассемблера в команды машинного языка. Русифицированное название - МНЕМОКОД. Предназначен для представления в удобном (мнемоническом) виде машинные коды команд. Пример команд на МНЕМОКОДЕ: СЛЖ - сложить, ВЧТ - вычесть, ПРХ - переход и другие. Обеспечивает наиболее эффективное использование ресурсов системы (процессор, память, периферия). Используется в "узких" местах - требуется большое быстродействие, ограничение по размеру оперативной памяти и другие. Ассемблером также называют иногда саму систему команд центрального процессора.
Под каждую архитектуру процессора и под каждую ОС или семейство ОС существует свой Ассемблер. Существуют также так называемые «кросс-ассемблеры», позволяющие на машинах с одной архитектурой (или в среде одной ОС) ассемблировать программы для другой целевой архитектуры или другой ОС, и получать исполняемый код в формате, пригодном к исполнению на целевой архитектуре или в среде целевой ОС.
Наиболее распространённые на сегодня архитектуры — x86 и PowerPC.
Наиболее известными ассемблерами для операционной системы DOS являлись Borland Turbo Assembler (TASM) и Microsoft Assembler (MASM). Также в своё время был популярен простой ассемблер A86.
Изначально они поддерживали лишь 16-битные команды (до появления процессора Intel 80386). Более поздние версии TASM и MASM поддерживают и 32-битные команды, а также все команды, введённые в более современных процессорах, и системы команд, специфических для конкретной архитектуры (такие как, например, MMX, SSE, 3DNow! и т. д.).
Windows
При появлении операционной системы Windows появилось расширение TASM, именуемое TASM32, позволившее создавать программы для выполнения в среде Windows. Последняя известная версия Tasm — пятая, включая различные к ней дополнения. Но официально развитие программы полностью остановлено.
Совсем по-другому обстоит дело с программой MASM. Она продолжает развиваться и по сей день, последние версии включены в наборы DDK. Но версия программы, направленная на создание программ для ДОС, также не развивается.
Для более удобного создания программ на ассемблере для Windows появился пакет, названный MASM32, автором которого является hutch (Стив Хатчессон). Более подробная информация доступна на сайте пакета MASM32 —
Linux
Несколько иначе обстоит ситуация с ассемблерами для другой известной операционной системы Linux. В её состав входит компилятор gcc, включающий в себя ассемблер gas (GNU Assembler)… Но в нём используется AT&T синтаксис, в отличие от Intel-синтаксиса, используемого в большинстве остальных ассемблеров.
Переносимые ассемблеры
Также существует открытый проект ассемблера, версии которого доступны под различные операционные системы, и который позволяет получать объектные файлы для этих систем. Называется этот ассемблер NASM (Netwide Assembler).
FASM —
молодой, но быстро развивающийся и завоёвывающий
популярность ассемблер, распространяется
с исходным кодом, есть версии для Linux и
Windows, использует Intel-синтаксис. Достоинством
является очень сильный макроязык, разнообразие
форматов выходных файлов и несколько
изменённый (в лучшую сторону, но несколько
непривычный для «старой школы») синтаксис.
Отладчик является модулем среды разработки или отдельным приложением, предназначенным для поиска ошибок в программе. Отладчик позволяет выполнять пошаговую трассировку, отслеживать значения переменных в процессе выполнения программы, устанавливать точки останова и т. д.
Например
низкоуровневый отладчик SoftICE для операционных
систем семейства windows
Генератор документации — программа или пакет программ, позволяющая получать документацию, предназначенную для программистов (документация на API) и/или для конечных пользователей системы, по особым образом комментированному исходному коду и, в некоторых случаях, по исполняемым модулям (полученным на выходе компилятора).
Обычно, генератор анализирует исходный код программы, выделяя синтаксические конструкции, соответствующие значимым объектам программы (типам, классам и их членам/свойствам/методам, процедурам/функциям и т. п.). В ходе анализа также используется мета-информация об объектах программы, представленная в виде документирующих комментариев. На основе всех собранной информации формируется готовая документация, как правило, в одном из общепринятых форматов — HTML, HTMLHelp, PDF, RTF и других.
Документирующие комментарии
Документирующий комментарий — это особым образом оформленный комментарий к объекту программы, предназначенный для использования каким-либо конкретным генератором документации. От того, какой генератор документации применяется, зависит синтаксис конструкций, используемых в документирующих комментариях.
В документирующих комментариях может содержаться информация об авторе кода, описываться назначение объекта программы, смысл входных и выходных параметров — для функции/процедуры, примеры использования, возможные исключительные ситуации, особенности реализации.
Популярные генераторы документации
Наиболее известные генераторы документации:
Javadoc — для программ на Java
Doxygen
NDoc — для программ на C#, VB.NET и других языков платформы .NET
Doc-O-Matic
Document! X
HappyDoc
PHPDoc — адаптация Javadoc для использования с PHP
POD
ROBODoc
TwinText
VBdocman — для VB6 и VB.NET
WEB
/ CWEB
Покрытие кода — мера, используемая при тестировании программного обеспечения. Она показывает процент, насколько исходный код программы был протестирован.
Техника покрытия кода была одной из первых методик, изобретённых для систематического тестирования ПО. Первое упоминание покрытия кода в публикациях появилось в 1963 году.
Существует несколько различных способов измерения покрытия, основные из них:
Покрытие операторов — каждая ли строка исходного кода была выполнена и протестирована?
Покрытие условий — каждая ли точка решения (вычисления истинно ли или ложно выражение) была выполнена и протестирована?
Покрытие путей — все ли возможные пути через заданную часть кода были выполнены и протестированы?
Некоторые
из приведённых критериев покрытия
связаны между собой; например, покрытие
путей включает в себя и покрытие
условий и покрытие операторов.
Непрерывная интеграция (англ. Continuous Integration) — термин, относящийся к разработке программного обеспечения и обозначающий автоматизированный процесс, выполняющий частые переборки и тесты приложения. Обычно это выглядит как процесс на сервере либо демон, который следит за изменениями на файловой системе либо в системе управления версиями (такой как Subversion или CVS) и автоматически запускает полную переборку всех модулей приложения и прогон тестов (например, на основе JUnit или NUnit). Во многих случаях, при сборке проекта помимо собственно компиляции может выполняться автоматическая генерация документации, веб-страниц, статистики и подготовка дистрибутивов (таких как .MSI-файлы для Windows или RPM-пакеты).
Основные преимущества непрерывной интеграции:
проблемы интеграции выявляются и исправляются непрерывно, а не в самом конце разработки;
ранние предупреждения об испорченном /несовместимом коде;
немедленное юнит-тестирование всех изменений;
постоянное наличие «текущей» собранной версии — для тестирования, демонстрации, других применений;
немедленный эффект от неполного или неработающего кода приучает разработчиков к работе в итеративном режиме с более коротким циклом.
Основные недостатки:
затраты на поддержку работы непрерывной интеграции;
потенциальная
необходимость в выделенном сервере
под нужды непрерывной
немедленный
эффект от неполного или неработающего
кода — отучает разработчиков от выполнения
периодических резервных включений кода
в репозиторий;
Система управления версиями (от англ. Version Control System или Revision Control System) — программное обеспечение для облегчения работы с изменяющейся информацией. Система управления версиями позволяет хранить несколько версий одного и того же документа, при необходимости, возвращаться к более ранним версиям, определять, кто и когда сделал то или иное изменение и многое другое.
Такие системы наиболее широко применяются при разработке программного обеспечения, для хранения исходных кодов разрабатываемой программы. Однако, они могут с успехом применяться и в других областях, в которых ведётся работа с большим количеством непрерывно изменяющихся электронных документов, в частности, они всё чаще применяются в САПР, обычно, в составе систем управления данными об изделии (PDM). Управление версиями используется в инструментах конфигурационного управления (Software Configuration Management Tools).
Программное обеспечение Википедии ведёт историю изменений для всех её статей, используя методы, аналогичные тем, которые применяются в системах управления версиями.
Общие сведения
Ситуация, когда электронный документ за время своего существования претерпевает ряд изменений достаточно типична. При этом часто бывает важно иметь не только последнюю версию, но и несколько предыдущих. В простейшем случае, можно просто хранить несколько вариантов документа, соответствующим образом их нумеруя. Но такой способ неэффективен (приходится хранить несколько практически идентичных копий), требует много внимания и дисциплины и часто ведёт к ошибкам. Поэтому были разработаны средства для автоматизации этой работы.
Большинство систем управления версиями используют централизованную модель, когда имеется единое хранилище документов, управляемое специальным сервером, который и выполняет большую часть функций по управлению версиями. Пользователь, работающий с документами, должен сначала получить нужную ему версию документа из хранилища; обычно создаётся локальная копия документа, т. н. «рабочая копия». Может быть получена последняя версия или любая из предыдущих, которая может быть выбрана по номеру версии или дате создания, иногда и по другим признакам. После того, как в документ внесены нужные изменения, новая версия помещается в хранилище. В отличие от простого сохранения файла, предыдущая версия не стирается, а тоже остаётся в хранилище и, в любое время, может быть оттуда получена. Сервер использует такой способ хранения документов (т н., дельта-компрессию), при котором сохраняются только изменения между последовательными версиями, уменьшая, таким образом, объём хранимой информации.

- Инструментальные компьютерные системы бухгалтерского учета
- Инструментальные материалы
- Инструментальные материалы
- Инструментальные материалы
- Инструментальные материалы
- Инструментальные методы
- Инструментальные методы анализа – главная инструментальная база контроля качества продукции и мониторинга состояния агросистем и объек
- Инструкция по установке и настройке системы на 3-спутника
- Инструкция по эксплуатации квартир в панельном здании
- Инструкция по эксплуатации Сварочных Аппаратов Telwin
- Инструкция при работе на компьютере
- Инструментализм Джона Дьюи
- Инструментальная база информационных технологий, используемых для построения информационных систем
- Инструментальная обработка корневого канала. Методика step-back и crown-down