УМП Технологические подходы к разработке ПО 17
легко упустить некоторые тонкости, специфические для рассматриваемого предмета, по-
ложившись на «общеизвестность» терминов. По нашему мнению, едва ли не самым за-
метным свидетельством прогресса в технологии программирования является то, что, на-
конец, удалось договориться о терминах.
7
2.2.1. Процессы и модели
Так или иначе, предметом технологии программирования является процесс разработки
программного обеспечения.
Процесс – 1) Последовательность смены состояний в развитии чего-нибудь. 2) Последова-
тельность действий для достижения какого-либо результата.
8
Заметим, что два процитированных определения не являются разными определениями –
это описание одного и того же предмета с разных точек зрения. Можно обратить свое
внимание на смену состояний. Но что является причиной смены состояний? Очевидно,
выполнение каких-то действий. Можно обратить свое внимание на выполнение действий.
Но что является результатом выполнения действий? Очевидно, смена состояний.
Чтобы иметь саму возможность делать какие-то наблюдения или проводить рассуждения
относительно процесса, нужно иметь описание процесса, или его модель. Термин «мо-
дель» широко используется в различных областях человеческой деятельности, и имеет
много значений. В данном случае подразумевается следующее значение.
Модель – любой образ или аналог (мысленный или условный: изображение, описание,
схема, чертеж и т.п.) какого-либо объекта, процесса или явления («оригинала» модели),
используемый в качестве его «представителя».
9
В разных областях человеческой деятельности используют совершенно различные средст-
ва для построения моделей. Физические процессы описывают математическими моделя-
ми, например, системами дифференциальных уравнений. Социальные процессы описы-
вают длинными и невнятными пассажами на естественном языке.
Процесс разработки программ также пытались описывать самыми разными способами, но
постепенно к настоящему времени сложилась традиция использовать для описания про-
цесса программирования примерно те же средства, которые используются для самого про-
граммирования. Программы же, как всем известно, записывают как алгоритмы, выражен-
ные на том или ином языке программирования.
Обсуждение значения этого факта мы отложим до темы 5, а здесь заметим, что языков
программирования очень много (тысячи) и среди
них встречаются как такие, которые
предназначены для записи программ, исполняемых компьютером, так и такие, которые
для этого не предназначены. Например, различные псевдокоды, блок-схемы и тому по-
добное. Язык программирования, если он предназначен для восприятия людьми, совсем
не обязан быть формальным, точным и сугубо бедным, как «настоящий» язык программи-
рования, подобный
С++ или Java. Сейчас процессы разработки программного обеспечения
принято описывать как алгоритмы, но очень неформально, с использованием понятий вы-
сокого уровня, далеких от машинной реализации. Конечно, неформальный характер таких
алгоритмов приводит к тому, что у разных авторов встречаются несколько различные тол-
кования основных элементов, из которых строится описание процессов разработки, но,
тем не менее, за последние годы фактически устоялся общий набор таких основных поня-
тий, и мы их перечисляем в следующих разделах.
7
Фактическая стабилизация и унификация терминологии стала наблюдаться сравнительно недавно, с начала этого века.
Но поскольку переводчики зарубежных книг по технологии программирования редко заглядывают в утвержденные тер-
минологические ГОСТы, в отечественной литературе пока еще наблюдается некоторый разнобой в терминологии.
8
Большой энциклопедический словарь дает еще одно определение: порядок рассмотрения дел в судопроизводстве. Но в
данном случае это значение слова «процесс» не имеет отношения к предмету.
9
Большой энциклопедический словарь дает еще шесть толкований этого термина.