Найти тему
IT Raccoon

Как работает программное обеспечение?

Оглавление

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

https://pixabay.com/ru/photos/%D0%BA%D0%BE%D0%B4-html-%D1%82%D0%B5%D1%85%D0%BD%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D0%B8-3622942/
https://pixabay.com/ru/photos/%D0%BA%D0%BE%D0%B4-html-%D1%82%D0%B5%D1%85%D0%BD%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D0%B8-3622942/

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

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

  • Некоторые операционные системы поддерживают только определенные языки. Например, разработка приложения для iPhone и iPad будет осуществляться на языке Objective-C или Swift, но то же самое приложение для телефона на базе Android будет запрограммировано на Java.
  • Для научных приложений существуют предпочтительные языки, такие как Fortran или C.
  • Многие бизнес-приложения написаны на языке COBOL на мейнфреймах компьютеров, Java на компьютерах Linux и C# на компьютерах Microsoft Windows.
  • Для работы в "Искусственном интеллекте" был разработан ряд специальных языков, таких как Лисп.
  • Для веб-приложений существует множество других языков, таких как PHP, Javascript.

Базы данных

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

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

Базы данных используются для данных, которые могут быть представлены в виде таблицы из строк и столбцов. Для доступа к таким данным используется стандартный язык под названием Structured Query Language (SQL).

Уровни программного обеспечения

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

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

Прикладной уровень

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

Инструменты приложений

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

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

  • математика
  • обработка текста
  • нетворкинг, интернет-протоколы
  • графические и аудиофайлы

SDK - это "Комплект для разработки программного обеспечения". Многие возможности операционной системы могут быть недоступны в стандартных библиотеках. SDK должен быть добавлен в набор инструментов, чтобы обеспечить интерфейс к конкретной операционной системе. Для разработки программного обеспечения для приложений Windows необходим Windows SDK от Microsoft, а для разработки приложения для iPhone - iOS SDK от Apple.

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

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

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

В настоящее время используются такие знакомые операционные системы, как Microsoft Windows, iOS для Apple iPhone/iPad и Google Android для различных мобильных телефонов и планшетов. Специализированные компьютеры имеют собственные операционные системы, например, сетевые коммутаторы и маршрутизаторы Cisco, работающие под управлением Cisco IOS.

ОС предоставляет интерфейс для программного обеспечения верхнего уровня для связи с аппаратными устройствами, такими как накопители (дисководы), устройства ввода (клавиатура, мышь, сенсорный экран), устройства вывода (экран, принтер) и сети (Ethernet, Wi-Fi).

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

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

Связь между уровнями

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

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

Разработка программного обеспечения

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

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

Требования

Маркетинг или управление продуктом определяет необходимые возможности и особенности программного обеспечения в документе "Требования".

Анализ

Группа разработчиков программного обеспечения предоставляет техническую оценку требований в документе "Технические характеристики". Анализ может также включать оценку программного обеспечения сторонних производителей, создание прототипов и проведение технико-экономических испытаний. Результаты анализа могут привести к изменению Требований.

Дизайн

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

Кодирование

Наконец-то начинается разработка программного обеспечения (кодирование). Команды программистов распределены по различным компонентам проекта.

Испытания

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

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

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

Выпуск

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

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

Пример разработки программного обеспечения

В качестве примера развития рассмотрим интернет-магазин. Ранним разработчиком такого рода веб-приложений был сайт Amazon.com, который был открыт в 1995 году в качестве интернет-магазина книг. С тех пор она расширилась и стала перевозить тысячи различных видов продукции. Многие компании в настоящее время имеют веб-сайт, где люди могут просматривать свою продукцию и выбирать товары для покупки. Ниже приведен типичный пример.

Требования

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

1. Покупки для клиентов

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

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

2. Администрация

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

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

Разработка программного обеспечения

Компоненты под Интернетом - это клиентские компоненты. Они общаются с серверами в центре обработки данных через Интернет.

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

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

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

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

  • Серверы построены на компьютерах Linux. Веб-сервер - это Apache, широко используемый открытый исходный код, который просто необходимо установить и настроить. Программное обеспечение в других серверных компонентах написано на языке Java.
  • Веб-браузеры администратора и клиента загружают веб-страницы с веб-сервера. Веб-страницы написаны в формате HTML со встроенным кодом, написанным на PHP и JavaScript.
  • Приложение для iPhone написано на языке Swift, разработанном компанией Apple для разработки приложений для iPhone и iPad.
  • Приложение для Android написано на Java.
  • В действительности, вы вряд ли будете разрабатывать программное обеспечение с нуля для всех этих компонентов. Это связано с тем, что существует большое количество программного обеспечения, доступного от третьих сторон для создания приложений интернет-магазина. Обычно экономически выгоднее и быстрее использовать существующее, протестированное программное обеспечение, чем разрабатывать его самостоятельно. Существуют коммерческие пакеты, а также довольно много открытого программного обеспечения. Программное обеспечение с открытым исходным кодом можно загружать и использовать бесплатно, если только оно не используется в составе продаваемого пакета.

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

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

Некоторые из революционных приложений программного обеспечения были:

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

Финансовые - банкоматы, интернет-банкинг, биржи, онлайн-брокерские услуги.

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

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

Коммуникации - электронная почта, компьютерный обмен мгновенными сообщениями/чат.

Производство. Компьютерное проектирование (САПР) для создания и анализа проектов и подготовки данных для производства. Компьютерное автоматизированное производство (CAM) для управления станками в производстве.

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

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

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

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

Наука и исследования - в физике, химии, астрономии, биологии, медицине. Например, проект по геному человека, в рамках которого в 2003 году были выявлены и картированы все образцы ДНК человека, был бы невозможен без программного обеспечения.

Социальные сети - это услуга, в рамках которой участники могут создать сеть друзей и общаться с ними, размещая сообщения, фотографии и видео. Когда Интернет стал широко доступен и облегчил людям доступ к таким услугам, социальные сети росли очень быстро. Многие люди считают, что это лучший способ оставаться на связи и общаться с друзьями, чем использование старых технологий, таких как телефон и электронная почта. Несмотря на то, что существует довольно много различных социальных сетей, Facebook стал доминирующей силой, насчитывающей более 1,5 миллиарда пользователей. Twitter - это более публичная социальная сеть, которая позволяет людям "следить" за кем угодно и за любой другой темой в Twitter. Твиттер стал важным источником свежих новостей, которые часто появляются в Твиттере перед традиционными новостными СМИ или другими веб-сайтами.

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