Эффективность и технологичность программного обеспечения.



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

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

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

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

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

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

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

• выносить вычисление константных, т.е. не зависящих от параметров цикла, выражений из циклов;

• избегать «длинных» операций умножения и деления, заменяя их сложением, вычитанием и сдвигами:

• минимизировать преобразования типов в выражениях;

• оптимизировать запись условных выражений – исключать лишние проверки;

• исключать многократные обращения к элементам массивов по индексам (особенно многомерных, так как при вычислении адреса элемента используются операции умножения на значение индексов) – первый раз прочитав из памяти элемент массива, следует запомнить его в скалярной переменной и использовать в нужных местах;

•избегать использования различных типов в выражении и т.п.

Программирование с «защитой от ошибок».

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

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

• правильность выполнения операций ввода-вывода;

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

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

ошибки передачи – аппаратные средства, например, вследствие неисправности, искажают данные;

ошибки преобразования – программа неверно преобразует исходные данные из входного формата во внутренний;

ошибки перезаписи – пользователь ошибается при вводе данных, например, вводит лишний или другой символ;

ошибки данных – пользователь вводит неверные данные.

Ошибки передачи обычно контролируются аппаратно.


Дата добавления: 2018-02-15; просмотров: 290; ЗАКАЗАТЬ РАБОТУ