182
ГЛАВА 4. ЖИЗНЕННЫЙ ЦИКЛ
альными объектами, и на самом деле единственными чисто искусственны-
ми объектами, кроме математических конструкций, с которыми имеет дело
человек. Например, машина сделана из реальных материалов, наследует их
свойства, и уже по этой причине не может создаваться чисто логически, си-
лами одной лишь мысли. А математический объект и программа сосотоят из
информационных сущностей. В принципе они могут быть порождены чисто
логически. Но и в том, и в другом случае чистая логика творения натыкается
на реальные либо конвенциональные ограничения. Математический объект
должен быть признан сообществом математиков, и поэтому должен вписать-
ся в систему существующих математических объектов. Программа же созда-
ется на базе других программ и должна работать в их окружении. Сложность
программного окружения такова, что разобраться в нем до конца невозмож-
но, да оно вдобавок и меняется все время. Так что программное окружение
играет сейчас для программ ту же роль, что конструкционные материалы
и окружающая среда — для технических. И, конечно же, неустраним фак-
тор пользователя. Все равно, делаете Вы программу для квалифицированных
программистов либо для конечных пользователей, пользователь перепутает
все, что возможно, и даже то, что невозможно, и затруднительно предсказать,
что он может сотворить с программой. Но, тем не менее, программа наибо-
лее близко, за исключением математическх структур, подходит к понятию
настоящего искусственного объекта.
Программы не подвержены физическому износу, но в ходе их эксплуа-
тации обнаруживаются ошибки (неисправности), требующие исправления.
Ошибки возникают также от изменения условий использования программы.
Последнее же является принципиальным свойством программного обеспече-
ния, иначе оно теряет свой смысл. Поэтому правомерно говорить о старении
программ, правда, не о физическом, а о моральном.
Необходимость внесения изменений в действующие программы (как из-
за обнаруживаемых ошибок, так и по причине развития требований) приво-
дит по сути дела к тому, что разработка программного обеспечения продол-
жается после передачи его пользователю и в течение всего времени жизни
программ. Деятельность, связанная с решением довольно многочисленных
задач такой продолжающейся разработки, получила название сопровожде-
ния программного обеспечения (см. рис. 4.1).
Исторически развитие концепций жизненного цикла связано с поиском
для него адекватных моделей. Как и всякая другая, модель жизненного цикла
является абстракцией реального процесса, в которой опущены детали, несу-
щественные с точки зрения назначения модели. Различие назначений приме-