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

