Первые шаги в мире программного обеспечения были тесно связаны с необходимостью преодоления ограничений аппаратного обеспечения и оптимизации производственных процессов. В эпоху, когда появлялись первые компьютеры, таких как IBM 701 и IBM 704, вычислительные ресурсы были крайне ограничены, а время работы машин дорого ценилось. Именно тогда появились первые измерения производительности и попытки системного подхода к программированию и эксплуатации вычислительных систем. В конце 1940-х годов вычислительная техника основывалась на машинах с программным управлением, созданными с учётом физических ограничений. Одной из таких систем был Карточный программируемый калькулятор, распространённый в это время и использующий перфокарты.
Ограничение скорости работы, обусловленное скоростью подачи карт — около 100 карт в минуту — ставило предел скорости обработки. Особенно проблемными были задачи, содержащие итеративные вычисления, например, вычисление трансцендентных функций, где скорость подачи карт тормозилась ожиданием результата вычислений. Этот аппаратный изъян требовал нестандартных решений. Одним из первых известных инженерных ответов на аппаратные ограничения стала разработка полиномиальных аппроксимаций для математических функций, предложенная Сесилом Хастингсом из корпорации Rand в 1949 году. Этот метод разрешал вычислять значения требуемых функций с минимальными вычислительными затратами — несколькими умножениями и сложениями, тем самым устраняя необходимость долгих итераций и поддерживая ритм обработки перфокарт.
Это был один из ранних примеров программных изменений, успешно устраняющих «узкие места» аппаратной части. С развитием вычислительной техники в начале 1950-х появились первые коммерческие мейнфреймы, такие как IBM 701. Эти системы доставлялись в виде нескольких аппаратных блоков и наборов руководств. Организация рабочего времени на таких машинах была сложной задачей из-за ограниченного числа систем — всего около двух десятков в стране. Использование компьютеров строилось по блокам времени, которые нередко использовались неэффективно, а простой и ожидание между сеансами снижали общую производительность центра.
Одним из пионеров оптимизации работы вычислительных систем в том периоде был Роберт Л. Патрик, который, работая в Convair и General Motors Research, применял идеи промышленной инженерии к вычислительным центрам. Его исследования черпали вдохновение из трудов Генри Л. Ганта, создателя метода анализа временных издержек и потоков работ. Патрик проводил измерения, эксперименты производительности и формулировал концепции, направленные на повышение эффективности работы машин и оптимизацию операционных процессов.
Одним из ключевых достижений на этом пути стала разработка проектного замысла мультипользовательской операционной системы для IBM 704. Эта система позволяла увеличить число выполняемых в час вычислительных задач примерно в десять раз. Для достижения такого результата пришлось бороться с несколькими проблемами управляемости и организации труда. Программирование без чётких стандартов и процедур порождало хаос и снижало эффективность. Принятие единых стандартов кода и документации, внедрение формальной документации для операторов и операторских процедур существенно повысили стабильность и предсказуемость работы.
Проблемы с потерей времени между заданиями и необходимостью повторного запуска после сбоев были решены посредством пакетной обработки задач и создания стандартов перезапуска долгих заданий. Появление памяти с возможностью отображения содержимого (core map) помогало операторам и программистам выявлять и устранять ошибки, снижая количество сбоев и улучшая обратную связь. Управление и контроль ресурсов были переведены на более высокий организационный уровень благодаря введению управленческих отчетов и учётных данных, формируемых автоматически системой. Это помогало руководству контролировать загруженность и оценивать возможности расширения вычислительной мощности. При этом на сменах вводились дифференцированные правила работы операторов и программистов, чтобы поддерживать согласованность операций и обеспечивать высокий уровень производительности.
Следующим шагом модернизации стала концепция перемещения рутинных операций ввода-вывода из главной вычислительной машины на более дешёвую вспомогательную систему. Этот подход воплотился в проекте Direct Couple, где IBM 7040 использовался в качестве процессора поддержки для IBM 7090. Программное обеспечение Direct Couple позволяло эффективно организовать очередь заданий, ускорять обработку и снижать нагрузку на основную вычислительную машину. Особенностью этого решения была возможность динамического перераспределения приоритетов. Высокоприоритетные задания могли прерывать остальные, если возникала необходимость немедленной обработки критически важных задач, например, связанных с космическими запусками.
Такая гибкость в управлении нагрузкой существенно повышала качество и оперативность вычислительных услуг. Оптимизация обработки вывода на печать также была предметом глубоких решений. Для борьбы с перебоями и скоплением выходных данных разрабатывались продуманные логистические схемы, включая использование конвейерных лент и специальные слоты для сортировки документов по категориям и областям ответственности. Такая системная организация позволяла снизить физическую усталость операторов и обеспечивала быстрое и точное распределение информации. С развитием аппаратного обеспечения, включая замену IBM 7090 на 7094 и 7040 на 7044, эти операционные системы продолжили развиваться, распространяясь во всей аэрокосмической индустрии и становясь ориентиром для последующих поколений систем.
Программные продукты, основанные на этих решениях, такие как HASP и ASP, становились коммерческими решениями и применялись на новых моделях вычислительных систем, включая семейство System/360. Создание и внедрение OS/360 стало кульминацией сбора опыта множества инженерных и операционных решений. Команда IBM, учитывая данные обратной связи с полевых установок, смогла разработать операционную систему, обладающую высокой производительностью и надежностью. Значительную роль в этом процессе сыграл сбор и анализ статистики работы системы, что позволяло предсказывать и устранять потенциальные проблемы до попадания продукта в эксплуатацию. Сложности внедрения и поддержки крупных программных продуктов в это время стали толчком для формирования процессов тестирования и контроля качества.
Производственные предприятия разрабатывали собственные наборы тестов, прогоняли комплексные сценарии, проверяли корректность исполнения и стабильность работы после изменений в аппаратуре и программном обеспечении. В конце 1960-х годов на примере разработки IMS/360 в Rockwell Space Division был проведён эксперимент по измерению пропускной способности системы. Это дало важные ориентиры для планирования и позволило обосновать проектные решения в новой области — системах управления базами данных, работающих в реальном времени с огромным объемом транзакций. Все эти усилия — от первых инженерных исследований выработки и применения математических аппроксимаций до многоуровневых операционных систем и комплексных процессов измерения производительности — сыграли ключевую роль в становлении современной вычислительной техники. Они показали, что системный, измерительный и инженерный подход к разработке программного обеспечения и эксплуатации вычислительных ресурсов формируют базу для эффективных, гибких и надежных процессов Благодаря таким инновациям, разработкам и коллективной работе инженеров, учёных и программистов, компьютерные системы эволюционировали от простых недолговечных машин с ограниченными возможностями до масштабируемых и многозадачных платформ, способных обеспечить требования современных приложений и нагрузок.
Важность измерений и анализа в области программного обеспечения, заложенная в первые этапы развития вычислительной техники, сохраняет свою актуальность и в наши дни, будучи основой для оптимизации, мониторинга и развития IT-инфраструктуры.