О ТЕРМИНЕ "ПРОГРАММНОЕ ИЗДЕЛИЕ"

В соответствии с ГОСТ 19.004-80 программное изделие (ПИ) определяется, как программа на носителе данных, являющаяся продуктом промышленного производства. Поскольку ПИ - это программа, то и его свойства определяются свойствами программы. Однако такое понимание ПИ нередко порождает тупиковые ситуации. Наиболее яркие примеры тому - измерение производительности труда программистов в байтах или командах и оценка надёжности ПИ методами, принятыми в теории надёжности. И в том, и в другом случае делается попытка использовать методы, не соответствующие природе объекта. Дело в том, что из признания программирования промышленной деятельностью ещё не следует, что именно программы являются изделиями. Более того, из этого не следует даже, что вообще изготавливаются какие-либо изделия (есть и добывающая промышленность). И даже если изделия действительно изготавливаются, не всякий продукт труда в производстве изделий является изделием [1]: водитель автокара не изготавливает ничего, хотя участвует в процессе изготовления. Ничего не изготавливает и программист-технолог станков с ЧПУ: его программы считаются не изделиями, технологиями, и труд его нормируется, как труд технолога. Т.е. нормы устанавливаются в соответствии со сложностью задания [2], а не с длиной использованной перфоленты.

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

Разумно считать программным изделием объект, существующий в ЭВМ во время выполнения программы. Этот объект существует физически, поскольку взаимодействует с другими физическим объектами и, в частности, с людьми. Грубо говоря, программное изделие - это некая система абстрактных понятий, "материализовавшаяся" при помощи процессора так же, как "материализуется" абстрактное понятие болта в конкретном болте. Исследуя, как "чёрный ящик", машину с программой вычисления факториала, мы убеждаемся, что имеется физический объект, обладающий всеми свойствами абстрактного понятия "факториал". Понятно, что при этом одно и то же изделие можно изготовить, используя различные технологии: болт можно вытачивать и штамповать, а факториал можно вычислять простым перемножением или рекурсивно.

Если понимать ПИ именно так, то можно выделить три типа деятельности в программировании:

  1. конструкторскую, когда выделяются изготавливаемые понятия и определяются связи между ними. Эта деятельность заканчивается выдачей внешних спецификаций;
  2. технологическую, когда описывается технология изготовления изделия, т.е. это алгоритмизация и кодирование. Эта деятельность заканчивается выдачей технологической документации программ и руководств обслуживающему персоналу, которая должным образом опробована и проверена;
  3. производственную, когда изделия непосредственно изготавливаются. Очевидно, что это происходит в тех ВЦ, в которые передана технологическая документация, т.е. в ВЦ пользователей. Именно там происходит массовый выпуск изделий.

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

Другой ответ на вопрос о том, что такое ПИ, заключается в том, что никакие изделия вообще не изготавливаются. Так, в добывающей промышленности отсутствует продукция в виде изделий, т.е. определённым образом сконструированных искусственных объектов.

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

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

Список литературы

  1. Котарбинский Т. Трактат о хорошей работе. -М. \ Экономика, 1975. - 270 с.
  2. Хайкин Д.М., Мамаев В.И. Нормирование труда технологов, разрабатывающих технологические процессы для станков с ЧПУ // Нормирование труда инженерно-технических работников и служащих \ Материалы семинара. -М. \ Б.и., 1986. - с. 36-43.

Опубликовано: Тезисы 2-й Всесоюзной конференции "Технология программирования", Киев, ИК АН УССР, 1986, с.21-23.
© Алексей Бабий 1986