Основы бизнес-аналитики и науки о данных

Программное и техническое обеспечение функционирования систем

В лекции последовательно раскрывается устройство современного программного обеспечения и сетевой инфраструктуры, на которой строятся веб-приложения. Изложение начинается с определения ПО, его классификации по назначению и типам лицензирования. Даётся обзор ключевых платформ – от настольных и мобильных операционных систем до облачных моделей SaaS, PaaS и IaaS. Затем рассматриваются принципы сетевого взаимодействия: семиуровневая модель OSI, работа системы DNS, структура HTTP-запроса и коды ответов сервера. Кульминацией становится объяснение архитектуры современных веб-сервисов – распределённой системы с балансировщиками, кластерами серверов, базами данных, API и SDK.

Основные мысли

В результате изучения лекции слушатель будет способен:
1. Определять понятие «программное обеспечение» и различать его виды по назначению и схеме лицензирования.
2. Классифицировать основные программные платформы (настольные, мобильные, облачные) и описывать облачные модели обслуживания SaaS, PaaS, IaaS.
3. Объяснять роль каждого уровня модели OSI и указывать протоколы, работающие на прикладном, транспортном и сетевом уровнях.
4. Описывать процесс преобразования доменного имени в IP-адрес с учётом кэширования у провайдера и в браузере.
5. Анализировать структуру HTTP-запроса: метод, хост, порт, путь, параметры, якорь.
6. Интерпретировать коды ответов HTTP (200, 404, 500) и понимать их значение при отладке веб-сервисов.
7. Объяснять, почему современные приложения разрабатываются как веб-сервисы и зачем нужен балансировщик нагрузки.
8. Различать компоненты веб-проекта: продукт, админ-панель, API, SDK, и объяснять их назначение.
Показывать лекцию целиком
Краткое изложение

Введение в программное обеспечение

Программное обеспечение (ПО, software) — это компьютерные программы, процедуры, документация и данные, обеспечивающие функционирование компьютерной системы. Согласно российскому ГОСТу, ПО — совокупность программ системы обработки информации и программных документов, необходимых для эксплуатации этих программ. Термин software предложен Аланом Тьюрингом, а ввёл его в обиход Джон Тьюки в 1957 году. Первая компьютерная программа была создана Адой Лавлейс в 1842 году для аналитической машины Бэббиджа; она вычисляла числа Бернулли и представляла собой пошаговый алгоритм, выполняемый вручную.

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

Виды программного обеспечения по назначению

• Прикладное ПО: приложения для доступа к контенту, бизнес-приложения, ERP- и CRM-системы.
• Системное ПО: операционные системы, драйверы, прошивки.
• Вредоносное ПО: программы, целенаправленно наносящие вред пользователю или машине.
• API (Application Programming Interface, программный интерфейс приложения): инструмент внешнего доступа к другому ПО, обеспечивающий интеграцию систем.
• Средства программирования: компиляторы, интерпретаторы, редакторы кода, среды разработки.

Виды ПО по схеме лицензирования

• Проприетарное (несвободное) ПО — ограничения на коммерческое использование, распространение и модификацию. По умолчанию любое ПО является проприетарным.
• Бесплатное (Freeware) и условно-бесплатное (Shareware) ПО — обычно распространяется без исходного кода и остаётся проприетарным.
• ПО в общественном достоянии — не защищается авторским правом, не имеет ограничений.
• Свободное ПО — можно свободно использовать, изучать, адаптировать и распространять копии.
• Открытое ПО (open source) — имеет доступный исходный код (source code), который разрешено изменять и дорабатывать под собственные нужды.

Основные программные платформы

Настольные операционные системы: Windows, macOS, Linux-дистрибутивы (Ubuntu, FreeBSD, CentOS, Red Hat и др.).
Мобильные ОС: Android и iOS — две доминирующие платформы. Также существуют WebOS и Windows Mobile. Рынок мобильных приложений демонстрирует экспоненциальный рост: большинство повседневных задач — интернет-сёрфинг, работа с офисными документами — успешно решаются на смартфонах.

Облачные платформы предоставляют ресурсы через интернет:
• SaaS (Software as a Service, ПО как услуга): готовое приложение в облаке (Office 365, Dropbox, Google Apps).
• PaaS (Platform as a Service, платформа как услуга): платформа для разработки и запуска приложений без управления собственной ОС.
• IaaS (Infrastructure as a Service, инфраструктура как услуга): аренда виртуального оборудования и системного ПО (AWS, Microsoft Azure, Yandex Cloud, IBM Cloud).

Другие платформы: браузеры (Chrome, Firefox, Safari, Opera) с движком JavaScript, виртуальные машины, плагины, смарт-ТВ и т.д.

Взаимодействие систем: модель OSI

Сетевое взаимодействие описывается семиуровневой моделью OSI (Open Systems Interconnection):
1. Физический уровень — передача битов (USB, оптоволокно).
2. Канальный уровень — кадры (Ethernet, Wi-Fi).
3. Сетевой уровень — пакеты (протокол IP).
4. Транспортный уровень — сегменты (TCP, UDP).
5. Сеансовый уровень — управление сеансами.
6. Представительский уровень — преобразование форматов данных.
7. Прикладной уровень — взаимодействие приложений (HTTP, FTP, SMTP, POP3).

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

Основы работы интернета

Система доменных имён (DNS, Domain Name System) преобразует символьное имя (например, google.com) в IP-адрес физического сервера. Доменное имя регистрируется у аккредитованного регистратора и делегируется на DNS-серверы. В мире существует 13 корневых DNS-серверов и их зеркала.

При вводе адреса в браузере происходит разрешение имени:
1. Проверяется кэш браузера.
2. Если адрес не найден, запрос уходит к провайдеру, где также может быть закэшировано соответствие.
3. В случае отсутствия записи у провайдера обращение направляется к DNS-серверу, который возвращает IP-адрес.

Крупные сайты, например Google, обслуживаются не одним сервером, а распределённой инфраструктурой из 1–2 миллионов физических машин, сконцентрированных в дата-центрах. Современные дата-центры в основном обслуживают облачные сервисы, а не только частные серверы компаний.

HTTP-запрос (HyperText Transfer Protocol) — основа взаимодействия браузера с сервером. Структура запроса включает:
• Метод: GET, POST, PUT, DELETE и др.
• Хост: доменное имя (после разрешения — IP-адрес).
• Порт: позволяет хостить множество сайтов на одной машине.
• Путь: размещение ресурса на сервере.
• Параметры: после знака ? в формате ключ=значение (например, ?date=...).
• Якорь: после # указывает на конкретный фрагмент страницы.

Безопасная версия протокола — HTTPS, где добавляется SSL/TLS-шифрование для защиты передаваемых данных (логинов, паролей, платёжной информации). Аналогичным образом работают почтовые протоколы: SMTP — для отправки, IMAP/POP3 — для получения писем.

Коды ответов HTTP:
200 OK — успешный запрос.
400 Bad Request — неверные параметры.
404 Not Found — страница не найдена.
500 Internal Server Error — внутренняя ошибка сервера.

Архитектура современных веб-приложений

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

Типичная архитектура:
• Пользователь (браузер или мобильное приложение) отправляет запросы.
• Запросы попадают на балансировщик нагрузки (load balancer) или прокси-сервер, который распределяет трафик по кластеру серверов приложений, выбирая наименее загруженный узел.
• Каждый сервер приложений может обращаться к базе данных, которая сама может быть распределённой (кластер БД).
• В состав веб-проекта обязательно входят:
o Основной продукт (веб-приложение).
o Админ-панель — интерфейс системного управления продуктом.
o API — программный интерфейс для доступа из внешних систем (например, получение курса валют от API Центробанка в XML-формате).
o SDK (Software Development Kit, набор средств разработки) — инструменты, позволяющие разработчикам создавать расширения и модифицировать продукт.
Таким образом, современное ПО представляет собой сложную распределённую систему, работающую по протоколам интернета и опирающуюся на облачную инфраструктуру.

Краткие итоги

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

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

Переход к модели OSI и протоколам интернета выводит анализ на уровень взаимодействия систем. Стек протоколов TCP/IP, служба DNS и HTTP-запросы — это не просто технические детали, а каркас, на котором держится любая распределённая архитектура. Знание кодов ответов сервера, структуры URL и механизмов кэширования DNS позволяет не только диагностировать сбои, но и проектировать отказоустойчивые сервисы, где одна и та же доменная запись может вести на миллионы физических машин.

Ключевой вывод — архитектурный сдвиг от настольных приложений к веб-сервисам. Балансировщик нагрузки, кластер серверов, распределённая база данных — это стандартная схема обеспечения масштабируемости и надёжности. В таком окружении API и SDK превращаются из вспомогательных элементов в стратегические инструменты интеграции и расширяемости. Для практикующего специалиста это означает, что любой проект должен закладывать не только функциональность продукта, но и административный интерфейс, точки внешнего доступа и средства кастомизации. Понимание описанной архитектуры становится обязательным фундаментом для принятия обоснованных решений на всех этапах жизненного цикла программного продукта.
Программное обеспечение (ПО, software) — это совокупность программ, процедур, документации и данных, предназначенных для функционирования компьютерной системы. Оно работает в многоуровневой среде: пользователь ↔ приложение ↔ операционная система ↔ оборудование.

Виды ПО по назначению:
Прикладное – бизнес-приложения, ERP, CRM.
Системное – ОС, драйверы, прошивки.
Вредоносное – ПО для нанесения ущерба.
API (Application Programming Interface) – интерфейс для интеграции систем.
Средства программирования – компиляторы, среды разработки.

Виды ПО по схеме лицензирования:
Проприетарное – ограничения на использование, изменение, распространение.
Freeware/Shareware – бесплатное/условно-бесплатное, без исходного кода.
Общественное достояние – без авторских прав.
Свободное ПО – можно свободно использовать, изучать, адаптировать.
Открытое ПО (open source) – предоставляется исходный код (source code) с правом модификации.

Основные платформы:
Настольные ОС: Windows, macOS, Linux (Ubuntu, CentOS, Red Hat и др.).
Мобильные ОС: Android, iOS; рынок мобильных приложений стремительно растёт.
Облачные платформы:
o SaaS (Software as a Service) – готовое ПО в облаке (Office 365, Google Apps).
o PaaS (Platform as a Service) – облачная платформа для разработки.
o IaaS (Infrastructure as a Service) – аренда виртуальной инфраструктуры (AWS, Microsoft Azure, Yandex Cloud).
Другие: браузеры (JavaScript), виртуальные машины, плагины, смарт-ТВ.

Сетевое взаимодействие (модель OSI): семь уровней — от физического (биты) до прикладного (данные приложений). Ключевые протоколы: IP (сетевой уровень), TCP/UDP (транспортный), HTTP, FTP, SMTP (прикладной).

Работа интернета:
DNS (Domain Name System) преобразует домен в IP-адрес. Сначала проверяется кэш браузера, затем — провайдера, и при необходимости — запрос к DNS-серверу. Крупные сайты обслуживаются миллионами серверов, сгруппированных в дата-центры.
HTTP-запрос состоит из метода (GET, POST и др.), хоста, порта (позволяет хостить много сайтов на одной машине), пути, параметров (после ?) и якоря (после #). Защищённый вариант — HTTPS с SSL/TLS-шифрованием.
Коды ответов: 200 (OK), 404 (Not Found), 500 (Internal Server Error).

Веб-приложения и архитектура веб-проекта: Современные приложения всё чаще реализуются как веб-сервисы, работающие через браузер. Это исключает локальную установку и упрощает обновление и масштабирование.

Типовая архитектура включает:
• Пользовательский интерфейс (браузер/мобильное приложение).
Балансировщик нагрузки (load balancer) — распределяет запросы по кластеру серверов.
• Кластер серверов приложений, обращающихся к распределённой базе данных.
• Обязательные компоненты: админ-панель, API для внешних систем, SDK (Software Development Kit) для разработки расширений.

Таким образом, понимание программных платформ, сетевых протоколов и архитектуры веб-сервисов является базой для анализа и проектирования современных ИТ-решений.

Выводы

1. Программное обеспечение — это не только исполняемый код, но и документация с данными, обеспечивающие работу вычислительной системы.
2. По назначению ПО делится на прикладное, системное, вредоносное, API и инструменты программирования.
3. Лицензионные модели простираются от полностью проприетарных до открытых (open source) с доступным для модификации исходным кодом.
4. Доминирующие платформы сегодня — настольные ОС (Windows, macOS, Linux), мобильные ОС (Android, iOS) и облачные сервисы.
5. Облачные вычисления реализуются в трёх основных форматах: SaaS (ПО), PaaS (платформа) и IaaS (инфраструктура).
6. Модель OSI описывает семь уровней сетевого взаимодействия; верхние три оперируют данными, нижние — сегментами, пакетами, кадрами и битами.
7. DNS-система преобразует доменные имена в IP-адреса, используя кэширование на стороне браузера, провайдера и корневых серверов.
8. HTTP-запрос состоит из метода, хоста, порта, пути, параметров и якоря; ответ сервера обязательно содержит код состояния.
9. Коды ответов HTTP (200, 404, 500 и др.) являются первичным диагностическим инструментом при работе веб-сервисов.
10. Современные приложения преимущественно строятся как веб-сервисы, доступные через браузер без локальной установки.
11. Балансировщик нагрузки и кластер серверов обеспечивают масштабируемость и отказоустойчивость веб-проектов.
12. Полноценный веб-проект включает продукт, админ-панель, API для внешней интеграции и SDK для расширения функциональности.

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

1. Какие компоненты, согласно различным определениям, входят в понятие «программное обеспечение»?
2. Перечислите все виды ПО по назначению, упомянутые в лекции, и приведите по одному примеру для каждого.
3. Чем проприетарное ПО отличается от открытого с точки зрения доступных пользователю прав?
4. Какие облачные модели обслуживания описаны, и в чём их принципиальные различия?
5. Назовите три крупнейших мировых облачных провайдера и один российский, упомянутый в лекции.
6. Какие протоколы работают на транспортном и сетевом уровнях модели OSI, и какую информацию они передают?
7. Опишите по шагам процесс преобразования доменного имени в IP-адрес при первом обращении к сайту.
8. Из каких элементов состоит стандартный HTTP-запрос при наборе URL в адресной строке браузера?
9. Что означают коды ответа HTTP 400, 404 и 500 и с какими проблемами они обычно связаны?
10. Почему современные приложения разрабатываются в виде веб-сервисов, а не традиционных устанавливаемых программ?
11. Какую функцию выполняет балансировщик нагрузки в архитектуре распределённого веб-приложения?
12. Для каких целей в веб-проекте предусматриваются админ-панель, API и SDK?
Вернуться к учебному плану