Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

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

Содержание:

ВВЕДЕНИЕ

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

Понятие клиент-серверной модели впервые появилось в конце 1980-х годов, когда термины «клиент» и «сервер» были впервые применены к персональным компьютерам в сети [1.]. Модель «клиент-сервер» основана на распределении функций между двумя типами независимых и автономных объектов.

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

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

Итак, клиент-серверная модель представляет собой совокупность компьютерного оборудования, инфраструктуры и программ, работающих вместе для выполнения вычислительных задач. Разделение функций клиента и сервера, таким образом, может быть выражено в терминах аппаратных и программных средств. Информационные системы, созданные с использованием этой модели, представляют собой сервер баз данных, манипулирующий данными, и клиентское приложение, обращающееся к нему и использующее для этого либо клиентские API (программный интерфейс приложения, англ. Application Programming Interface), либо один из универсальных механизмов доступа к данным. API – это набор классов, процедур, функций и структур, обеспечивающих взаимодействие клиентов и серверов, который используется при написании всевозможных программ. Одним из этапов жизненного цикла автоматизированной информационной системы является разработка клиентских приложений. Результатом этого этапа является готовый продукт, который может состоять из ряда приложений, позволяющих пользователям вводить либо редактировать уже существующие данные, анализировать их и представлять их в более удобном для восприятия виде, например, в виде графиков, сводных таблиц или отчетов (в том числе в виде «бумажных» документов). Изучение программных средств для разработки клиентских приложений составляет цель данной работы. Для достижения цели в работе были поставлены следующие задачи:

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

Архитектура клиент-серверных систем

Основные принципы взаимодействия компонентов системы

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

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

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

Клиент-серверная архитектура основана на аппаратных и программных компонентах, которые взаимодействуют между собой для формирования системы. Система включает в себя в основном три компонента [2.]:

  1. Аппаратное обеспечение (клиент и сервер);
  2. Программное обеспечение (которое обеспечивает работоспособность оборудования);
  3. Связующее программное обеспечение (используется для связи аппаратного и программного обеспечения).

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

  1. Аппаратная независимость;

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

  1. Независимость программного обеспечения;

Принципы независимости программного обеспечения требуют, чтобы процессы клиентского, серверного и связующего программного обеспечения поддерживали несколько операционных систем (таких как Windows 7, Windows 10, Apple Mac, Linux, Unix и т.д.), несколько сетевых протоколов (таких как IPX и TCP / IP) и несколько приложений (электронные таблицы, базы данных, электронная почта и т. д.).

  1. Открытый доступ к услугам;

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

  1. Распределение процессов;

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

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

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

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

  1. Приемлемое оборудование;

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

  1. Операционная система, способная к многозадачности;

Клиент должен иметь доступ к операционной системе с минимальными возможностями многозадачности. Любая из систем Microsoft Windows старше 1998 года обеспечивает доступ к памяти, многозадачность при работе с приложениями и графический пользовательский интерфейс, что делает Windows одной из самых популярных платформ в большинстве реализаций клиент-серверных систем [2.]. Однако многие современные «разновидности» UNIX, включая Linux с множеством различных дистрибутивов, также хорошо подходят в качестве основной операционной системы для клиентской стороны.

  1. Наличие средств связи;

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

  1. Графический интерфейс пользователя.

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

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

  1. Файловые сервисы;

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

  1. Сервисы по управлению печатью;

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

  1. Сервисы базы данных;

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

  1. Сервисы веб-приложений;

Некоторые документы, данные и т. д. находятся на веб-серверах. Веб-приложение обеспечивает доступ к документам и другим данным. «Тонкие» клиенты обычно используют веб-браузер для запроса этих документов. Такие сервисы обеспечивают совместное использование документов в интрасетях или в Интернете. Наиболее часто используемый протокол – это HTTP (протокол передачи гипертекста). Серверы веб-приложений теперь дополняют простые веб-серверы.

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

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

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

  1. Быстрый процессор (с поддерживающей RISC архитектурой);
  2. Отказоустойчивые возможности:
  • Двойной блок питания для предотвращения проблем с первым блоком;
  • Резервный источник питания для защиты от отказа линии электропередачи;
  • Проверка ошибок и исправление памяти для защиты от сбоев модуля памяти;
  • Избыточный массив независимых дисков (RAID) для защиты оборудования от физических сбоев.

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

  1. Независимость от местоположения;

Серверный процесс может быть расположен где угодно в сети.

  1. Оптимизация ресурсов;

Серверный процесс может быть общим.

  1. Масштабируемость;

Серверный процесс может быть модернизирован для работы на более мощных платформах.

Эти преимущества вкупе с принципами независимости аппаратного и программного обеспечения модели клиент / сервер облегчают интеграцию компьютеров, мобильных устройств и мэйнфреймов в практически цельную среду [4.] (рисунок 1). К наиболее популярным из так называемых портативных компьютеров относятся ноутбуки, планшеты и смартфоны. Мобильные устройства, такие как планшеты и смартфоны, позволяют преодолеть недостаток ноутбуков, то есть они менее громоздки.

Рисунок 1. Общая среда клиент-серверной архитектуры

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

Программное обеспечение клиента и сервера

Операционная система клиента

Программное обеспечение для поддержки определенных функций, таких как редактирование полей, контекстно-зависимая справка, навигация, подготовка и хранение личных данных, а также манипулирование ими, часто выполняется на клиентской рабочей станции. Все эти функции используют графический интерфейс и функциональность окон. Дополнительная бизнес-логика для расчетов и анализа может находиться на рабочей станции клиента. Она использует локальную операционную систему для размещения как основных служб, так и интерфейсов сетевой операционной системы. Эта операционная система может быть такой же или отличаться от операционной системы сервера. Запуск BIOS включает проверку оборудования, подключенного к компьютеру, например, клавиатуры, чтобы убедиться, что оно работает и может обмениваться данными с операционной системой компьютера. Запуск операционной системы завершает процесс загрузки (запуска компьютера) и подготавливает компоненты и среду компьютера для фактического использования. Unix, Linux, Mac OS, Windows XP, Windows 7, 8 и 10 являются примерами операционных систем.

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

Операционная система сервера

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

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

Сетевая операционная система

Сетевая операционная система (англ. Network Operating System, NOS) – это системное программное обеспечение, которое управляет сетью и ее трафиком, а также очередями сообщений (например, пакетами), контролирует доступ нескольких пользователей к сетевым ресурсам, таким как файлы, и обеспечивает определенные административные функции, включая безопасность. Также она включает в себя специальные функции для подключения компьютеров и устройств в локальную сеть (LAN) или межсетевое взаимодействие.

Сетевая операционная система (NOS) – это операционная система, которая была специально написана для поддержания оптимальной производительности сетей с собственной структурой для использования в сетевой среде [5.]. Некоторые из наиболее важных функций сетевой операционной системы включают в себя:

  • Предоставление файлов, печати, веб-сервисов, услуг резервного копирования и репликации;
  • Обеспечение базовых функций операционной системы, таких как поддержка процессоров, протоколов, автоматическое обнаружение аппаратного обеспечения и поддержка множественной обработки приложений;
  • Функции безопасности, такие как аутентификация, авторизация, ограничения входа в систему и контроль доступа;
  • Управление пользователями и поддержка инструментов входа и выхода, удаленного доступа, управления системой, администрирования.
  • Поддержка межсетевого взаимодействия. Некоторые из компонентов, которые обычно встроены в NOS и могут отсутствовать в обычной операционной системе, включают поддержку сетевой карты, общий доступ к файлам, вход на сервер, сопоставление дисков и поддержку собственного протокола. Большинство операционных систем могут поддерживать все эти компоненты с надстройкой либо от первоначального производителя операционной системы, либо от стороннего поставщика.

Некоторые из систем, доминирующих в сетевых операционных системах, – это JUNOS, Cisco IOS, ZyNOS, RouterOS и т. д.

Веб-браузер

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

Веб-браузер – это не то же самое, что поисковая система, хотя их часто путают. Для пользователя поисковая система – это просто веб-сайт, такой как Google Search, Bing или DuckDuckGo, который хранит доступные для поиска данные о других веб-сайтах. Однако для подключения к серверу веб-сайта и отображения его веб-страниц у пользователя должен быть установлен веб-браузер.

По состоянию на март 2019 года более 4,3 миллиарда человек используют браузер, что составляет около 55% населения мира. Три самых популярных браузера – это Chrome, Firefox и Safari (рисунок 2).

Рисунок 2. Наиболее популярные веб-браузеры в 2019 году

Средства разработки клиентских программ

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

Интегрированные среды разработки программ и их ключевые особенности

Интегрированные среды разработки предназначены для охвата всех необходимых задач программиста в одном приложении. Современные среды предлагают единый интерфейс, который включает в себя все инструменты, которые требуются разработчику. Обычно они включают в себя [8.]:

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

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

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

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

  • Ускоренная настройка. Без графического интерфейса, предоставляемого визуальной интегрированной средой, разработчикам придется тратить время на настройку нескольких инструментов разработки. Благодаря возможностям интегрированной среды разработчики получают один и тот же набор функций в одном месте без необходимости постоянного переключения инструментов.
  • Ускоренные задачи разработки. Более тесная интеграция всех задач разработки повышает производительность труда разработчиков. Например, код может быть проанализирован лексически и синтаксически во время редактирования, если среда обеспечивает мгновенную обратную связь при появлении синтаксических ошибок. Разработчикам не нужно переключаться между приложениями для выполнения задач. Кроме того, инструменты и функции интегрированной среды разработки помогают разработчикам оптимизировать ресурсы, предотвращать ошибки и использовать наиболее рациональные способы решения задач. Кроме того, интегрированные среды разработки улучшают мыслительный процесс, заставляя разработчиков думать о своих действиях с точки зрения всего жизненного цикла разработки, а не как серии отдельных задач.
  • Непрерывное обучение. Поддержка проектов и самообразование при помощи интегрированных сред – еще одно преимущество. Например, разделы справки или помощи в современных средах разработки постоянно обновляются, а также появляются новые образцы кода, шаблоны проектов и т.д. Программисты, которые постоянно учатся и знакомятся с лучшими практиками, с большей вероятностью будут приносить пользу команде и предприятию и повышать производительность.
  • Стандартизация. Интерфейс интегрированной среды стандартизирует процесс разработки, что помогает разработчикам более комфортно работать вместе и быстрее привлекать к совместному сотрудничеству новых специалистов.

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

Некоторые современные интегрированные среды предназначены для определенного языка программирования или набора языков, предоставляя набор функций, который согласуется с особенностями этого языка [10.]. Например, среда Xcode поддерживается только для языков Objective-C и Swift. Однако также существует много так называемых мультиязычных сред, таких как Eclipse (для языков C, C ++, Python, Perl, PHP, Java, Ruby и других), Komodo (Perl, Python, Tcl, PHP, Ruby, Javascript и других) и NetBeans (Java, JavaScript, PHP, Python, Ruby, C, C ++ и других). Поддержка альтернативных языков часто обеспечивается плагинами. Например, Flycheck является расширением проверки синтаксиса для GNU Emacs с поддержкой 39 языков.

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

Как правило, большинство современных интегрированных сред снабжены графическими интерфейсами. При этом среда может быть автономным приложением, а в некоторых случаях она может быть частью существующего и совместимого приложения. Например, язык программирования BASIC можно использовать вместе с приложениями Microsoft Office, и можно написать программу WordBasic в приложении Microsoft Word. Современные интегрированные среды стремятся обеспечить удобную среду программирования для современных языков, таких как Visual Basic, Java, C# и многих других.

Вряд ли есть какое-либо определение, которое четко проводит границу между интегрированными средами и другими более широкими средами разработки программного обеспечения. Поэтому некоторые среды могут содержать компилятор, а некоторые – интерпретатор, в то время как в некоторых случаях интегрированные среды могут использоваться как компиляторы, так и интерпретаторы [11.]. Некоторыми примерами таких сред, которые поддерживают как компилятор, так и интерпретатор, являются Microsoft Visual Basic и Eclipse, в то время как другие, такие как SharpDeveloper и Lazarus, не допускают и того, и другого. В некоторых случаях для упрощения построения графического интерфейса пользователя в среды могут быть интегрированы системы контроля версий и различные другие инструменты.

Многоязычные интегрированные среды, такие как Eclipse, NetBeans, Komodo, Aptana и Geany, поддерживают несколько языков программирования.

Eclipse: поддерживает C, C++, Python, Perl, PHP, Java, Ruby и другие. Этот бесплатный редактор с открытым исходным кодом является моделью для многих сред разработки. Eclipse начинался как среда разработки Java и расширился с помощью плагинов. В настоящее время Eclipse управляется и направляется Консорциумом Eclipse.org.

NetBeans: поддерживает Java, JavaScript, PHP, Python, Ruby, C, C++ и другие языки программирования. Эта среда также бесплатная и с открытым исходным кодом. Все ее действия определены модулями, каждый из которых обеспечивает четко определенную функцию. Поддержка других языков программирования может быть добавлена ​​путем установки дополнительных модулей.

Komodo: поддерживает Perl, Python, Tcl, PHP, Ruby, Javascript и другие. Эта среда предназначена для промышленной разработки и имеет более высокую цену.

Aptana: поддерживает HTML, CSS, JavaScript, AJAX и другие языки программирования за счет использования специализированных плагинов. Эта среда является довольно популярным выбором для разработки веб-приложений.

Geany: поддерживает C, Java, PHP, HTML, Python, Perl, Pascal и многие другие языки программирования. Это настраиваемая среда с большим набором плагинов.

В последние годы облачные интегрированные среды разработки начинают становиться мейнстримом. Возможности этих веб-ориентированных сред быстро растут, и большинству крупных компаний-разработчиков, скорее всего, придется предлагать свою среду, чтобы быть конкурентоспособным. Облачные среды предоставляют разработчикам доступ к своему коду из любой точки мира. Например, Nitrous – это облачная платформа среды разработки, которая поддерживает Ruby, Python, Node.js и другие. Cloud9 поддерживает более 40 языков, включая PHP, Ruby, Python, JavaScript с Node.js и Go. Heroku – еще одна популярная облачная платформа разработки, поддерживающая несколько языков программирования.

Ниже перечислены среды разработки, предназначенные для тех, кто работает в средах Microsoft или Apple:

Visual Studio: поддерживает Visual C++, VB.NET, C#, F# и другие языки программирования. Visual Studio является средой компании Microsoft и предназначена для создания приложений для платформы Microsoft [12.].

MonoDevelop: поддерживает C / C++, Visual Basic, C# и другие языки .NET.

Xcode: поддерживает языки Objective-C и Swift, а также API-интерфейсы Cocoa и Cocoa Touch. Эта среда предназначена только для создания приложений для iOS и Mac и включает в себя симулятор iPhone / iPad и конструктор графического интерфейса пользователя.

Espresso: поддерживает HTML, CSS, XML, JavaScript и PHP. Это инструмент для веб-разработчиков Mac.

Coda: поддерживает PHP, JavaScript, CSS, HTML, AppleScript и API Cacao.

Учитывая цели данной курсовой работы, для дальнейшего рассмотрения был выбран язык программирования Cи как один из наиболее популярных среди современных языков программирования, предназначенных для обучения [13.]. Выбор среды разработки для реализации программного приложения основывается на том, что выбираемая среда должна быть простой в использовании, чтобы позволить сосредоточиться на изучении концепций программирования, а также многофункциональной, для того, чтобы научиться создавать простые программы для решения прикладных задач [14.].

В качестве интегрированной среды разработки была выбрана Dev-C++, написанная на языке программирования Delphi для Windows, которая является легковесной средой, бесплатной и с открытым исходным кодом, которой требуется всего пару минут для установки. Ее обзор и создание простейшего приложения выполняются в следующих подразделах.

Основы разработки программ в Dev-C++

Dev-C++ – это полнофункциональная среда для языка программирования C/C++. Как и подобные ей интегрированные среды, она предлагает программисту простой и универсальный инструмент для редактирования, компиляции, компоновки и отладки программ. Она также обеспечивает поддержку управления файлами программы в проектах, содержащих все элементы, необходимые для создания окончательной исполняемой программы.

Dev-C++ использует порт Mingw GCC (GNU Compiler Collection) в качестве компилятора. Он может создавать собственные исполняемые файлы Win32, как для консольных приложений, так и для графических, а также библиотеки DLL и статические библиотеки. Dev-C++ также можно использовать в сочетании с Cygwin или любым другим компилятором на основе GCC. В этой работе будет продемонстрировано использование Mingw, который включен в дистрибутив Dev-C++ по умолчанию, для создания консольных программ на языке Си. Dev-C++ является свободным программным обеспечением, распространяемым в соответствии с GNU General Public License (GPL).

Dev-C++ включает в себя следующие возможности:

  • Поддержка компиляторов на основе GCC (включая Mingw);
  • Интегрированная отладка (с GDB);
  • Поддержка нескольких языков (локализация);
  • Класс браузера;
  • Отладка переменной браузера;
  • Завершение кода;
  • Список функций;
  • Менеджер проектов;
  • Настраиваемый редактор подсветки синтаксиса;
  • Быстрое создание Windows-приложения, консольные приложения, статические библиотеки и DLL;
  • Поддержка шаблонов для создания собственных типов проектов;
  • Создание Makefile;
  • Редактирование и компиляция файлов ресурсов;
  • Менеджер инструментов;
  • Менеджер пакетов для легкой установки дополнительных библиотек;
  • Поддержка печати.

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

Документацию о языке программирования C++ и самой среде можно получить из Dev-C++, нажав «Справка», затем «Справка по Dev-C++».

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

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

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

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

Процесс разработки приложения включает в себя следующие этапы:

  1. Создать проект;

Тип приложения и используемый язык программирования указываются на этом этапе.

  1. Написать исходный код;

После написания программы необходимо также сохранить все файлы исходного кода.

  1. Скомпилировать и скомпоновать код;

Исходный код компилируется и линкуется для генерации работающей программы. Другие файлы проекта могут быть созданы.

  1. Исправить ошибки компиляции, если таковые имеются;

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

  1. Запустить программу;

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

  1. Исправить ошибки выполнения, если таковые имеются.

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

Создание простейшего приложения в Dev-C++

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

Проект группирует несколько файлов с общей целью. Создаваемый в этом разделе проект будет включать файл с метаданными о проекте (.dev), файл с исходным кодом C (.c), файл с объектным кодом (.o) и файл с инструкциями по связыванию (makefile.win). Только файл .c должен быть явно создан; остальные файлы автоматически создаются Dev-C++.

При создании проекта Dev-C++ спрашивает пользователя, где должны храниться файлы. Для каждого проекта удобно использовать разные папки, поскольку по умолчанию исходный код называется main.c, а предыдущие файлы могут быть перезаписаны.

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

После запуска среды необходимо создать проект командами меню «Файл» -> «Создать» -> «Новый проект», после чего ввести его название, выбрать язык программирования, а также тип создаваемого приложения. На рисунке 3 создается консольное приложение на языке Си.

Необходимо также выбрать папку для хранения файлов в следующем окне. Каждый проект удобно хранить в отдельной папке.

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

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

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

Окно «Результаты» используется для представления результатов действий среды: ошибок компиляции, директив компиляции, команд отладки и т.д. Редактор исходного кода показывает код программы.

Файлы проекта сохраняются при сохранении файла исходного кода. Остальные файлы проекта сохраняются при компиляции приложения в папке проекта.

Рисунок 3. Параметры создания проекта

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

Для запуска программы исходный код должен быть скомпилирован и скомпонован. Dev-C++ выполняет весь процесс после нажатия на кнопку компиляции «Compile» (или Ctrl + F9).

Во время выполнения процесса компиляции и компоновки в среде отображается диалоговое окно со связанной информацией. Если процесс успешен, в окне отображается сообщение «Готово».

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

Ошибки компиляции – это ошибки, обнаруженные компилятором. Их также называют ошибками времени выполнения. Чтобы исправить все ошибки компиляции, рекомендуется исправить первую и затем заново скомпилировать программу, поскольку следующие ошибки часто являются неправильными разделами кода, которые компилятор не может интерпретировать как результат первой ошибки. Dev-C++ подчеркивает красной строкой кода, где была обнаружена ошибка компиляции. Вкладка «Компиляция» окна «Результаты» содержит подробное описание ошибки. Журнал компиляции показывает сообщение об ошибке, выданное программой компиляции (рисунок 6).

Рисунок 4. Программа HelloWorld на языке Си

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

В результате процесса линковки создается исполняемая программа. Чтобы запустить эту программу, необходимо нажать кнопку «Выполнить» (Ctrl + F10). Кроме того, можно найти exe-файл в папке проекта и дважды щелкнуть по нему.

Рисунок 5. Лог компиляции Dev-C++

Разработка синтаксически правильной программы не означает, что она выполняет необходимые процедуры. Сложные программы подвержены ошибкам, и обычно логика, реализованная в исходном коде, не приводит к ожидаемому поведению. Эти ошибки называются ошибками выполнения или логики, так как они обнаруживаются при запуске программы. Поэтому может потребоваться изменить исходный код и повторить процедуру компиляции и компоновки. В Dev-C++ имеется отладчик, который является вспомогательным инструментом для поиска ошибок времени выполнения. Чтобы использовать отладчик, необходимо изменить параметры компилятора, включив в него отладочную информацию и исполняемые файлы («Инструменты» -> «Параметры компилятора» -> «Компилятор»). Это делается путем добавления параметра –g к вызовам компилятора и компоновщика (рисунок 7).

Рисунок 6. Сообщение об ошибке компиляции

Рисунок 7. Опции компилятора для включения отладки

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

ЗАКЛЮЧЕНИЕ

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

Для создания клиентских приложений необходимы интегрированные среды разработки – это набор инструментов разработчика программного обеспечения, собранный в составе единого приложения и облегчающий труд программиста при написании приложений. Благодаря современным интегрированным средам разработки многие из наиболее рутинных и трудоемких задач, связанных с повседневной работой разработчика, можно автоматизировать. Основные возможности современных интегрированных сред разработки программ, позволяющие это сделать, рассматривались во второй главе данной работы. Также были закреплены и получены новые знания по интегрированной среде разработки Dev-C++, рассмотрены ее ключевые особенности, а также изучен пример создания простейших приложений в этой среде. Можно сделать вывод о том, что это лучшая среда разработки для новичков, которая позволяет легко создавать консольные приложения, и, кроме того, в ней можно установить плагин для создания приложений с графическим пользовательским интерфейсом методом перетаскивания элементов.

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

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

  1. Онтология распределенных прикладных систем // URL: https://www.osp.ru/os/2002/11/182086/ (Дата обращения: 15.11.2019)
  2. Таненбаум О. Архитектура компьютера / О. Таненбаум изд.: Питер, 2019. - 816 c.
  3. Многоуровневые системы клиент-сервер // URL: http://www.osp.ru/nets/1997/06/142618/ (Дата обращения: 16.11.2019)
  4. Куроуз Д., Росс К. Компьютерные сети. Нисходящий подход» / Д. Куроуз, К. Росс изд.: Эксмо, 2016. - 912 с.
  5. Сетевые операционные системы // URL: https://www.diera.ru/blog/nos (Дата обращения: 16.11.2019)
  6. Олифер В., Олифер Н. Компьютерные сети. Принципы, технологии, протоколы. Учебник / В. Олифер, Н. Олифер изд.: Питер, 2017. - 992 c.
  7. Ключарев А.А., Матьяш В.А., Щекин С.В. Структуры и алгоритмы обработки данных: Учебное пособие / СПбГУАП. СПб., 2004.
  8. Колдаев В.Д. Основы алгоритмизации и программирования: Учебное пособие / В. Д. Колдаев под ред. проф. Л.Г. Гагариной - М.: ИД ФОРУМ, НИЦ ИНФРА-М, 2016. - 416 с.
  9. Кнут Д. Искусство программирования // The art of computer programming: [в 3 т.]. Т.1. Основные алгоритмы / Д. Кнут; ред. Ю. В. Козаченко. - 3-е изд. - М.: Вильямс, 2014. - 720 с.
  10. Демидович Е.М. Основы алгоритмизации и программирования. Язык СИ, учебное пособие / Е. М. Демидович. - 2-е изд., испр. и доп. - СПб.: БХВ - Петербург, 2008. - 440 с.
  11. Вирт Н. Алгоритмы и структуры данных. Новая версия для Оберона + CD / Н. Вирт; пер. Д. Б. Подшивалов. - 2-е изд., испр. - М.: ДМК Пресс, 2012. - 272 с.
  12. Давыдов В.Г. Visual С++. Разработка Windows-приложений с помощью MFS и API функций / В.Г. Давыдов – СПб.: БХВ – Петербург, 2008. – 576 с.
  13. Шилдт Г. Полный справочник по С, 4-ое издание / Г. Шилдт пер. с англ. – М.: Издательский дом «Вильямс», 2015. – 704 с.
  14. Оберг Р.Д., Торстейнсон П. Архитектура .NET и программирование с помощью Visual C++ / Р.Д. Оберг, П. Торстейнсон пер.с англ. М.:Издательский дом "Вильям", 2002. - 656 с.