Инструментальные программы что это

Инструментальное программное обеспечение, его назначение и состав

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

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

Работа содержит 1 файл

Инструментальное программное обеспечение, его назначение и состав.

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

Инструментальные средства разработки ПО Лекция 1 18 09 15

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

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

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

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

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

Виды инструментального ПО:

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

— Средства анализа покрытия кода;

— Средства непрерывной интеграции;

— Средства автоматизированного тестирования;

— Системы управления версиями;

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

Инструментальное программное обеспечение

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

Другие текстовые редакторы имеют расширенные функции форматирования текста, внедрения в него графики и формул, таблиц и объектов. Такие редакторы часто называют текстовыми процессорами и предназначены они для создания различного рода документов, от личных писем до официальных бумаг. Классический пример — Microsoft Word.

Ещё один класс программ этой группы — текстовые рабочие среды. По сути, такие среды представляют собой полноценную рабочую среду, в которой можно решать самые разнообразные задачи: с помощью надстроек они позволяют писать и читать письма, веб-каналы, работать в вики и Вебе, вести дневник, управлять списками адресов и задач. Представители этого класса — 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.

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

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

Читайте также:
K lite mega codec pack для чего нужна эта программа

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

Некоторые компиляторы (например, 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.

Интерпретатор (языка программирования) — программа для непосредственного исполнения программ (производства вычислений, предписываемых этими программами) из исходного кода на определенном языке.

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

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

Источник: www.stud24.ru

Инструментальное программное обеспечение

Инструмента́льное програ́ммное обеспе́чение — программное обеспечение, предназначенное для использования в ходе проектирования, разработки и сопровождения программ, в отличие от прикладного и системного программного обеспечения.

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

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

Языки программирования подразделяются на низкоуровневые и высокоуровневые языки.

Низкоуровневый язык программирования — язык программирования, близкий к программированию непосредственно в машинных кодах.

Как правило, использует особенности конкретного семейства процессоров. Общеизвестный пример низкоуровнего языка — язык ассемблера.

Высокоуровневый язык программирования — язык программирования, разработанный для быстроты и удобства использования программистом. Слово «высокоуровневый» здесь означает, что язык предназначен для решения абстрактных высокоуровневых задач и оперирует не инструкциями к оборудованию, а логическими понятиями и абстракцией данных. Это позволяет быстрее программировать сложные задачи и обеспечивает относительную независимость от оборудования. Использование разнообразных трансляторов и интерпретаторов обеспечивает связь программ, написанных при помощи языков высокого уровня, с различными операционными системами и оборудованием, в то время как их исходный код остаётся, в большей части, неизменным.

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

Читайте также:
Что за программа опп

Наиболее распространёнными языками подобного типа являются C++, Visual Basic, Java, Python, Ruby, Perl, Delphi, PHP.

Языки программирования также можно разделить на компилируемые и интерпретируемые.

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

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

Кратко говоря, компилятор переводит программу на машинный язык сразу и целиком, создавая при этом отдельную программу, а интерпретатор переводит на машинный язык прямо во время исполнения программы.

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

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

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

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

Некоторые языки, например, Java и C#, находятся между компилируемыми и интерпретируемыми. А именно, программа компилируется не в машинный язык, а в машинно-независимый код низкого уровня, байт-код. Далее байт-код выполняется виртуальной машиной. Для выполнения байт-кода обычно используется интерпретация, хотя отдельные его части для ускорения работы программы могут быть транслированы в машинный код непосредственно во время выполнения программы по технологии компиляции «на лету» (Just-in-time compilation). Для Java байт-код исполняется виртуальной машиной Java (Java Virtual Machine), для C# — Common Language Runtime.

Классы языков программирования.Условно, языки программирования можно разделить на следующие классы (рис. 2.).

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

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

· краткость и простота;

· функции — объекты вычисления;

· чистота (отсутствие побочных эффектов);

· отложенные (ленивые) вычисления.

Рис. 2. Классы языков программирования

Примеры языков функционального программирования: Лисп, Haskell, Clean, ML и др.

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

Примеры процедурных языков программирования: Ада, Бейсик, Си, Си++, Паскаль, Visual Basic, Dilphi и др.

Язык описания интерфейсовили IDL (англ. Interface Description Language) — чисто описательный компьютерный язык, синтаксически похожий на C++.

Примеры языков описания интерфейсов: CORBA IDL (разработан OMG для описания интерфейсов распределённых объектов — названий методов и типов переменных-аргументов), COM IDL (аналогичная CORBA IDL разработка Microsoft, созданная для описания интерфейсов между модулями COM).

Объектно-ориентированный язык программирования (ОО язык) — язык, благоприятствующий объектно-ориентированному программированию. В современных ОО языках используются методы:

Наследование. Создание нового класса объектов путём добавления новых элементов (методов). В данный момент ОО языки позволяют выполнять множественное наследование, т.е. объединять в одном классе возможности нескольких других классов.

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

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

Типизация. Позволяет устранить многие ошибки на момент компиляции, операции проводятся только над объектами подходящего типа.

Примеры ОО-языков программирования: Си++, Delphi (Object Pascal), С#, Java и др.

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

Читайте также:
Что за программа bluetooth и для чего она нужна

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

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

Примеры скриптовых языков программирования: VBA (Visual Basic Application), AutoLISP, 3DMAX Script, JCL, JavaScript и др.

В настоящее время, широкое использование компьютерных систем с кластерными и GRID-архитектурами поставило задачу создания высокоуровневых, мощных и лёгких для использования языков программирования, которые бы позволили создавать сложные, но в то же время быстрые приложения, эффективно использующие параллельные вычисления. Одним из таких языков в настоящее время является MC# (высокоуровневый объектно-ориентированный язык программирования для платформы .NET, поддерживающий создание программ, работающих в распределённой среде с асинхронными вызовами).

Вопросы для самопроверки:

1. Программное обеспечение.

2. Базовый уровень.

3. Системный уровень программного обеспечения.

4. Служебный уровень программного обеспечения.

5. Прикладной уровень программного обеспечения.

6. Что называется драйверами устройств?

7. Что называется утилитами?

8. Дайте определение языка программирования.

9. Что такое интерпретатор?

10. Что такое компилятор?

11. Приведите примеры языков программирования низкого и высокого уровней, в чём их отличие?

12. Какие классы языков программирования можно выделить? Приведите примеры для каждого класса.

13. Назовите основные свойства функциональных языков программирования

14. Назовите какие методы используются в современных объектно-ориентированных языках программирования.

15. Что такое сценарий (скрипт)?

Источник: studopedia.ru

Инструментальное программное обеспечение

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

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

Множество различных приложений на компьютере создаётся с помощью языков и систем программирования.

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

Популярные системы программирования — Turbo Basic, Quick Basic, Turbo Pascal, Turbo C.

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

  • 1) компилятор или интерпретатор;
  • 2) интегрированная среда разработки;
  • 3) средства создания и редактирования текстов программ;
  • 4) библиотеки стандартных программ и функций;
  • 5) отладочные программы, т. е. программы, помогающие находить и устранять ошибки в программе;
  • 6) многооконный режим работы;
  • 7) графические библиотеки; утилиты для работы с библиотеками;
  • 8) встроенный ассемблер;
  • 9) встроенная справочная служба;
  • 10) и другие специфические особенности.

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

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

Трансляторы языка программирования — это программа, предназначенная для преобразования программ, написанных на языках программирования, в машинный код.

Трансляторы делятся на два класса — компиляторы и интерпретаторы.

Компилятор преобразует (транслирует) всю программу в модуль на машинном языке, после этого программа записывается в память компьютера и лишь потом исполняется [2].

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

Ассемблеры переводят программу, записанную на языке ассемблера (автокода), в программу на машинном языке.

Источник: ozlib.com

6.12. Для чего нужны инструментальные программы? 6.13. Что такое текстовый редактор?

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

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

Инструментальные программные средства могут оказать помощь на всех стадиях разработки ПО.6.13. Что такое текстовый редактор?

Текстовый редактор — это программа, используемая специально для ввода и редактирования текстовых данных.

Этими данными могут быть программа или какой-либо документ или же книга. Редактируемый текст выводится на экран, и пользователь может в диалоговом режиме вносить в него свои изменения.

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

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

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

Рис. 6.5. Окно редактора Microsoft Word

Наиболее известный текстовый редактор — Microsoft Word.

Полнофункциональные издательские системы — Microsoft Publisher, Corel Ventura и Adobe PageMaker. Издательские системы незаменимы для компьютерной верстки и графики. Значительно облегчают работу с многостраничными документами, имеют возможности автоматической разбивки текста на страницы, расстановки номеров страниц, создания заголовков и т.д. Создание макетов любых изданий — от рекламных листков до многостраничных книг и журналов — становится очень простым, даже для новичков.

Источник: www.examen.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru