Модификация программы

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

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

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

Подобный эффект в программах, не разбитых на модули, можно проследить на примере-переменных, используемых для нескольких различных целей в различных частях программы. Потенциальные трудности можно выявить, проанализировав таблицу переменных. Другой распространенной причиной этого является использование переходов на большое расстояние по программе; они могут передавать управление со скоростью, уследить за которой программист не в состоянии. Так как при структурном программировании ограничивается область распространения переменных и контролируется ход выполнения программы, спагетти-эффект при такой дисциплине программирования минимален или вовсе отсутствует.

Уже отмечалось, что стиль программирования влияет на легкость понимания. Каждый программист стремится выработать свой собственный только ему свойственный стиль, и поэтому, если не делать сознательных усилий, чтобы следовать уже принятому стилю, то вполне реальна опасность того, что модифицированная программа станет шизофренической — в ней будут отражены два или более различных стилей. Это сделает ее более трудной для понимания в будущем. Сопровождающий программу программист должен сознавать указанную опасность и принимать соответствующие меры предосторожности.

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

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

Метки: , ,

Записи по теме

Комментировать

Введите код