Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Раздел 3. . Интеграция системы

Поиск

Эффективность программы

Основной задачей программирования является создание правильных (не обязательно при этом эффективных) программ. Эффективная программа не нужна, если она не обеспечивает правильных результатов.

Правильность программы не является дополнительной характеристикой программы в отличие от эффективности.

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

Требования к эффективности программы обычно определяют на стадии проектирования.

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

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

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

Можно лишь обратить внимание на те аспекты, где скрыты резервы оптимизации и проиллюстрировать их на примерах.

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

Существуют два подхода к оптимизации программ: «чистка» и перепрограммирование. Оба подхода имеют как достоинства, так и недостатки.

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

Второй подход состоит в переделке исходной программы. Можно переделать часть программы, которая, например, расходует наибольшую часть времени. Этот подход обеспечивает обычно наилучший результат, но и самый дорогой. Он приемлем, если оптимизируемая программа подвергалась значительным изменениям.

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

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

Оптимизация эффективности эксплуатации программного обеспечения.

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

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

Важным частным случаем запаса на развитие программы является ее универсальность и настройка по параметрам. Например, вряд ли можно найти много алгоритмов, для которых существенно то, что матрица имеет размер 20x20, а для матрицы размером 21x21 они уже непригодны. При этом, если в алгоритме нет ничего «существенного квадратного», то лучше считать размер матрицы с некоторыми параметрами — М и N.

Задание значений всем таким параметрам сводится в одно место (лучше в начало программы). В результате получится блок настройки программного обеспечения по параметрам, и все, относящиеся к параметрам изменения в нем, затрагивают только этот блок.

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

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

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

Увеличить надежность программного продукта можно за счет блокировки ошибок, которую скорее можно отнести к неэффективности программы, так как она снижает и качество программы (на нее расходуется и время и память), и качество разработки (требуется дополнительное программирование и отладка; усложняется логика программы). Но программа без блокировки ошибок может столь «эффективно» обработать, например, файл, что затем его нельзя будет восстановить даже эффективными программами.

Конкретные методы блокировки ошибок и степень контроля данных выбираются в зависимости от конкретных условий и обстоятельств.

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

Объем исходных данных. Программы принято делить на научные, коммерческие и системные.

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

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

Системные программы, обращенные к пользователю (например, трансляторы), должны контролировать данные как коммерческие. Прочие системные программы получают данные от других программ и контроль данных почти не ведут.

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

Последствия ошибки. Контроль данных можно свести к минимуму или вообще пренебречь им, если он сложен, а ошибка не влечет катастрофических последствий.

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

К организационным мерам можно отнести периодическое копирование файлов данных и хранение их в надежном месте (например, в сейфе).

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




Поделиться:


Последнее изменение этой страницы: 2021-12-15; просмотров: 56; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.219.247.59 (0.006 с.)