Потребность в ресурсах памяти и производительности

Обновлено: 02.07.2024

Оптимизация использования памяти может преследовать две цели – увеличение объема памяти, доступной приложениям, и повышение быстродействия обращений к памяти. На старых машинах, когда объем установленной физической памяти не превышал единиц мегабайт, зачастую приходилось чем-то жертвовать; в современных системах достижение обеих целей уже не противоречит друг другу. Нет сомнений в том, что, чем больше установленный объем ОЗУ, тем лучше – компьютер будет мощнее: он позволит загружать приложения, особо «жадные» до памяти; увеличить число одновременно работающих приложений (в многозадачной ОС); ускорить работу. Однако для обеспечения возможности использования памяти в ряде случаев требуются некоторые дополнительные действия по конфигурированию компьютера.
В системах с размером установленной памяти более 640 Кбайт возможны различные варианты использования последних 384 Кбайт из первого мегабайта физической памяти:

  • память не используется;
  • область (или часть ее) перемещается в конец дополнительной памяти;
  • область (или часть ее) используется в качестве теневой (Shadow) памяти адаптеров и ROM BIOS.
  • для компьютеров класса XT на процессорах 8086/88 – MS-DOS 3.30;
  • для компьютеров класса AT на процессорах 80286 – MS-DOS 5.x;
  • для компьютеров класса AT на процессорах 80386 и выше – MS-DOS 6.2x (правда, одно время встречались некачественные системные платы для 80386, на которых MS-DOS 6.2x отказывалась загружаться в НМА, хотя MS-DOS 5.x работала нормально).

Оптимизация и ускорение работы жесткого диска

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

Отключение индексирования

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

Основой метода является закрытие раздела винчестера от индексирования, что обеспечит ускорение его работы. Для этого:

  1. Переходим в «Мой компьютер». Там нужно вызвать контекстное меню на главном диске, зачастую это диск С:\. Затем нажимаем «Свойства».
  2. В меню «Общие» выбираем пункт «Разрешить индексировать содержимое…». Нужно снять галочку и подтвердить действие.
  3. После данных действий появится оповещение, где будет сообщаться про возможность использования новой политики только к определенным файлам. Выбираем «Продолжить», а затем «Пропустить все».

Отказываемся от ведения журнала

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

Инструкция по отключению:

  1. Запуск командной строки. Наиболее простейший способ: нажатие «Win+R», а в появившемся окне «Выполнить» ввести «cmd».
  2. Откроется приложение, где требуется ввести: fsutil usn deletejournal /D С:, где С – это буква необходимого жесткого диска.
  3. Для подтверждения своих намерений нужно нажать на «Enter». Затем командную строку необходимо закрыть.
  4. Для вступления в силу изменений, компьютер необходимо перезагрузить.

Очистка от ненужных файлов

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

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

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

Чтобы очистить диски в Виндовс 7 и иных версиях, используются специальные инструменты. Они располагаются в меню «Пуск» в категории служебных программ. Точное название – «Очистка диска». Программа производит поиск неиспользуемых файлов в разделе, а затем предлагает пользователю их удалить.

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

Дефрагментация

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

Подобный инструмент способен помочь только при использовании HDD дисков.

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

Операционные системы от Microsoft имеют возможность проводить дефрагментацию с использованием встроенных возможностей. Для этого в «Компьютере» необходимо выбрать необходимый диск и произвести запуск контекстного меню. Затем выбирается «Свойства», там пункт «Сервис» и указать «Оптимизировать». Затем ОС предложит выполнить дефрагментацию.

Переразметка

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

Это форматирование диска, а некоторые разработчики указывают, что заново «режется» жесткий диск на сектора и дорожки.

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

Перемещение файлов на съемный носитель

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

Изделия можно использовать не только для хранения устаревших файлов, но и в виде флешки. Для подобных целей 500 Гб будет достаточно. С компьютером он соединяется по USB интерфейсу и отличается бесшумной работой.

Отключение автозагрузки программ

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

В разных версиях Виндовс управление автозагрузкой располагается в разных местах. Наиболее удобно для подобной цели использовать утилиту «CCleaner». Требуется осуществить запуск утилиты и перейти в меню «Сервис/Автозагрузка».

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

Любую из отключенных программ можно всегда снова запустить вручную. Если пропадет значок в системном трее, то ее запуск можно вернуть с использованием кнопки «Включить».

Обновление драйвера контроллера диска

От актуальности драйверов зависит стабильность всей системы. Рекомендуется обновлять драйверы до новейшей версии, особенно это касается SSD дисков.

Для проверки версии установленных драйверов нужно зайти в «Диспетчер устройств». Необходимо вызвать командную строку, а в ней ввести «devmgmt.msc» и нажать «Enter». Затем нажать правой кнопкой мыши по SATA контроллеру и выбрать пункт «Свойства».

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

Существуют специальные утилиты, которые позволяют обновить драйверы. Можно выбрать софт «Driver Booster», который при запуске покажет список драйверов, для которых требуется обновление.

Данная информация поможет Вам оптимизировать жесткий диск и повысить его работоспособность.

Способы увеличения быстродействия программ

Современные ЭВМ обладают очень большой мощностью. Скорость работы процессора (ЦП) современных ЭВМ измеряется гигагерцами, объём оперативной памяти гигабайтами, а современные интерфейсы устройств обеспечивают скорость обмена данными порядка, как минимум, нескольких сотен мегабайт в секунду. Производительность, которая ещё несколько лет назад казалась «сказочной» в настоящее время стала нормой жизни.

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

Общие вопросы быстродействия программ.

Быстродействие программ (ПО) зависит от многих факторов, но основными из них являются два:

  • Соотношение между реальными системными требованиями ПО и существующей аппаратной конфигурацией ЭВМ;
  • Алгоритмы работы ПО.

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

  1. Увеличивается производительность hardware, а вовсе не быстродействие ПО;
  2. Производительность hardware ограничена возможностями существующих в данный момент элементной базы и инженерных решений в данной области;
  3. Большие финансовые затраты на модернизацию и настройку по причине высокой стоимости комплектующих ЭВМ и услуг специалистов требуемой квалификации.

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

  1. Обеспечить работу нового ПО на уже существующем оборудовании;
  2. Разработать масштабируемое ПО;
  3. Значительно уменьшить финансовые и трудовые затраты при внедрении.

Вместе с тем и у этого пути имеется ряд недостатков:

  1. Значительно усложняется процесс разработки ПО, так как более «быстрые» алгоритмы сложнее более «медленных» (на пример алгоритм бинарного поиска сложнее, чем алгоритм линейного поиска);
  2. Реализация более сложных алгоритмов, как правило, требует привлечения специалистов более высокой квалификации;
  3. В случае работы с большими объёмами данных или выполнении задач требующих больших и сложных вычислений, ресурсоёмкость ПО всё равно остаются достаточно высокой. Несмотря, на какие либо способы увеличения быстродействия.

Таким образом, в общем случае обеспечение быстродействия ПО является комплексной задачей.

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

Программная инженерия предоставляет несколько способов увеличения быстродействия программ. Рассмотрим их на примере языков программирования Delphi и Assembler.

Увеличение быстродействия программ.

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

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

В чём же состоят выше упомянутые рекомендации? Их краткое содержание применительно к языку программирования Delphi приведено ниже.

  1. При написании кода программ рекомендуется избегать процедур, состоящих из сотен строк. Практически всегда в них можно выделить блоки, которые лучше оформить в виде отдельной процедуры. Возможно, позже вы ей даже воспользуетесь где-то в другом месте. Не говоря уже о том, что это повышает понимание программы и вами, и другими программистами. К тому же так проще искать «узкие» места в программе.
  2. Использование оператора case (switch) вместо многократных if… then… else (if… else). Во втором варианте компилятор будет выполнять проверку условия столько раз, сколько у вас вариантов. В первом проверка выполняется лишь однажды.
  3. Некоторые действия могут быть довольно продолжительными, поэтому рекомендуется выносить за рамки цикла всё, что можно выполнить вне его, чтобы избежать большого числа повторений внутри цикла.
  4. В циклах типа for нужно стараться, чтобы значение счетчика уменьшалось до нуля, а не наоборот — начиналось с нуля. Это связано с особенностями процессора. Сравнение с нулём выполняется гораздо быстрее, чем с другим числом.
  5. Пользоваться типом Variant только при необходимости. Операции над этим типом сложнее, чем, например, над Integer или String.
  6. Не злоупотреблять «программированием на компонентах». В частности не использовать компонент TTreeView для хранения древовидных структур данных — он работает очень медленно и предназначен только для визуального отображения. В случае работы со структурами данных лучше использовать алгоритмы, созданные самостоятельно на основе фундаментальных.
  7. Сохранение и загрузка свойств компонентов с помощью методов ReadComponent и WriteComponent работает довольно медленно, поэтому по возможности рекомендуется сохранять и восстанавливать состояние программы между сеансами при помощи других способов.
  8. Заменить простой в реализации алгоритм на более сложный, но с большим быстродействием. Например, если заранее известно, что в списке для поиска будет много элементов, лучше его отсортировать и применять бинарный поиск вместо линейного.
  9. В критических с точки зрения быстродействия местах программы делать вставки на ассемблере. Команды ассемблера напрямую транслируются в машинный код. Таким образом, в отличие от высокоуровневых языков при компиляции отсутствует проблема синхронизации и ряд других негативных обстоятельств.

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

  1. Замещение универсальных инструкций на учитывающие конкретную ситуацию, например, замена умножения на степень двойки на команды сдвига (отказ от универсальности).
  2. Уменьшение количества передач управления в программе: за счет преобразования подпрограмм в макрокоманды для непосредственного включения в машинный код; за счет преобразования условных переходов так, чтобы условие перехода оказывалось истинным значительно реже, чем условие для его отсутствия; перемещение условий общего характера к началу разветвленной последовательности переходов; преобразование вызовов, сразу за которыми следует возврат в программу, в переходы («сращивание хвостов» и «устранение рекурсивных хвостов») и т.д.
  3. Максимальное использование всех доступных регистров за счет хранения в них рабочих значений всякий раз, когда это возможно, чтобы минимизировать число обращений к памяти, упаковка множественных значений или флагов в регистры и устранение излишних продвижений стека (особенно на входах и выходах подпрограмм).
  4. Использование специфических для данного процессора инструкций, например, инструкции засылки в стек непосредственного значения, которая имеется в процессоре 80286 и более поздних. Другие примеры – двухсловные строковые инструкции, команды перемножения 32-разрядных чисел, деление 64-разрядного на 32-разрядное число и умножение на непосредственное значение, которые реализованы в процессорах 80386 и 80486. Программа должна, разумеется, вначале определить, с каким типом процессора она работает!

Заключение.

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

Database Engine выполняется под операционной системой Windows, которая сама использует системные ресурсы. Эти ресурсы имеют значительное влияние на производительность операционной системы, так же как и на производительность системы базы данных. Производительность любой системы базы данных зависит от четырех основных системных ресурсов:

♦ центральный процессор (central processing unit, CPU);

♦ дисковые операции ввода/вывода;

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

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

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

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

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

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

Все системные ресурсы взаимно зависят друг от друга. Это означает, что проблемы производительности с одним ресурсом могут привести к проблемам производительности, связанным с другими ресурсами. Аналогично, улучшения, связанные с одним ресурсом, могут значительно повысить производительность некоторого другого ресурса (или даже всех). Рассмотрим примеры.

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

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

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

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

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

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

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

Стандартизация характеристик качества

Одной из важнейших проблем обеспечения качества программных средств является формализация характеристик качества и методология их оценки. Для определения адекватности качества функционирования, наличия технических возможностей программных средств к взаимодействию, совершенствованию и развитию необходимо использовать стандарты в области оценки характеристик их качества. Основой регламентирования показателей качества программных средств ранее являлся международный стандарт ISO 9126:1991 (ГОСТ Р ИСО / МЭК 9126-93) "Информационная технология. Оценка программного продукта. Характеристики качества и руководство по их применению". Завершается разработка и формализован последний проект состоящего из четырех частей стандарта ISO 9126-1--4 для замены небольшой редакции 1991 года. Проект состоит из следующих частей под общим заголовком "Информационная технология - характеристики и метрики качества программного обеспечения": "Часть 1. Характеристики и субхарактеристики качества" Часть 2. Внешние метрики качества" "Часть 3. Внутренние метрики качества" "Часть 4. Метрики качества в использовании".

В России в области обеспечения жизненного цикла и качества сложных комплексов программ в основном применяется группа устаревших ГОСТов, которые отстают от мирового уровня на 5-10 лет.

Первая часть стандарта - ISO 9126-1 - распределяет атрибуты качества программных средств по шести характеристикам, используемым в остальных частях стандарта. Исходя из принципиальных возможностей их измерения, все характеристики могут быть объединены в три группы, к которым применимы разные категории метрик:

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

В части стандарта ISO 9126-1 даются определения с уточнениями из остальных его частей для каждой характеристики программного средства, а также для субхарактеристик качества.

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

Вторая и третья части стандарта - ISO 9126-2 и ISO 9126-3 - посвящены формализации соответственно внешних и внутренних метрик характеристик качества сложных программных средств. Все таблицы содержат унифицированную рубрикацию, где отражены имя и назначение метрики; метод ее применения; способ измерения, тип шкалы метрики; тип измеряемой величины; исходные данные для измерения и сравнения; а также этапы жизненного цикла программного средства (по ISO 12207), к которым применима метрика.

Четвертая часть стандарта - ISO 9126-4 - предназначена для покупателей, поставщиков, разработчиков, сопровождающих, пользователей и менеджеров качества программных средств. В ней обосновываются и комментируются выделенные показатели сферы (контекста) использования программных средств и группы выбранных метрик для пользователей.

Выбор показателей качества

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

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

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

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

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

Методологии и стандартизации оценки характеристик качества готовых программных средств и их компонентов (программного продукта) на различных этапах жизненного цикла посвящен международный стандарт ISO 14598, состоящий из шести частей. Рекомендуется следующая общая схема процессов оценки характеристик качества программ:

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

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

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

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

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

Оценка защищенности программных средств включает определение полноты использования доступных методов и средств защиты программного средства от потенциальных угроз и достигнутой при этом безопасности функционирования информационной системы. Наиболее широко и детально методологические и системные задачи оценки комплексной защиты информационных систем изложены в трех частях стандарта ISO 15408:1999-1--3 "Методы и средства обеспечения безопасности. Критерии оценки безопасности информационных технологий".

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

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

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

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

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

Система управления качеством

Выбор характеристик и оценка качества программных средств - лишь одна из задач в области обеспечения качества продукции, выпускаемой компаниями - разработчиками ПО. Комплексное решение задач обеспечения качества программных средств предполагает разработку и внедрение той или иной системы управления качеством. В мировой практике наибольшее распространение получила система, основанная на международных стандартах серии ISO 9000, включающей десяток с лишним документов, в том числе стандарт, регламентирующий обеспечение качества ПО (ISO 9000/3). Эти стандарты должны служить руководством для ведущих специалистов компаний, разрабатывающих ПО на заказ.

Определения характеристик и субхарактеристик качества (ISO 9126-1)

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

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

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

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

Защищенность - способность компонентов программного средства защищать программы и информацию от любых негативных воздействий.

Надежность - обеспечение комплексом программ достаточно низкой вероятности отказа в процессе функционирования программного средства в реальном времени.

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

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

Сопровождаемость - приспособленность программного средства к модификации и изменению конфигурации и функций.

Мобильность - подготовленность программного средства к переносу из одной аппаратно-операционной среды в другую.

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

По мере того как требования к ресурсам хранения данных возрастают, а бюджеты урезаются, предприятия изыскивают дополнительные возможности для оптимизации своей инфраструктуры хранения и администрирования данных. Важную роль в этом деле играют такие технологии, как дедупликация данных, которая позволяет сократить их объем за счет удаления повторных копий и сохранения только уникальной информации. Надо отметить, что технология сжатия данных менее эффективна, так как не способна распознавать одинаковую информацию. Дедупликация заменяет копии многократно встречающихся данных ссылками (они же — указатели, или Pointer) на первичный источник и используется в масштабе всей файловой системы или ресурсов хранения. Различия заключаются в степени детализации (уровень файлов или блоков) и в том, где осуществляется дедупликация (в первичной памяти или на носителе резервной копии). Резервное копирование данных — это одна из основных областей применения дедупликации, но эта технология все активнее внедряется также в сетевые устройства хранения (Network Attached Storage, NAS) и при долгосрочном архивировании информации (см. Рисунки 1 и 2).


Рисунок 1. Образец конфигурации решения для дедупликации в среде резервного копирования.


Рисунок 2. В долгосрочной перспективе дедупликация данных становится неотъемлемым элементом всей инфраструктуры ИТ.

ДЕДУПЛИКАЦИЯ НА УРОВНЕ ФАЙЛОВ И БЛОКОВ

Некоторые методы (дедупликация на уровне файлов или однократное сохранение данных — Single Instance Storage, SIS) рассматривают файлы целиком для определения копий. Другие разделяют файлы на отдельные блоки, которые легче поддаются анализу на предмет возможной избыточности и эффективнее сохраняются. В качестве разновидности блочных методов выделяются алгоритмы, где используются варьирующиеся размеры блоков.

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

Microsoft Windows Storage Server 2008, к примеру, снабжен функцией SIS, которая автоматически заменяет многократно сохраненные идентичные файлы соответствующими ссылками файловой системы — в результате экономится от 25 до 40% дискового пространства. При резервном копировании дедупликация данных на уровне файлов является полезным подспорьем, такими функциями обладают и современные системы NAS. Автоматическое распознавание неиспользуемых данных, сжатие файлов и хранение данных в единственном экземпляре могут на 30–40% сократить потребность в ресурсах хранения.

У ИСТОЧНИКА ИЛИ У ЦЕЛИ

В процессе резервного копирования дедупликация данных может осуществляться на двух его этапах: при сохранении на первичном носителе у источника (Source) или у цели (Target). Каждый из этих методов имеет свои преимущества и недостатки. При дедупликации у источника (Inband Deduplication) объем данных сокращается еще перед началом резервного копирования, но для этого сервер должен выделить немалые вычислительные ресурсы, поэтому для выполнения других задач их может не хватить. Кроме того, до недавних пор решения с использованием дедупликации у источника не были оптимально согласованы с широко распространенными системами резервного копирования.

В случае с дедупликацией данных у цели (Outband Deduplication) этот процесс осуществляется лишь на конечном носителе, и, по сравнению с дедупликацией у источника, при прочих равных исходных условиях по сети передается больший объем данных. Если данные в архитектуре с иерархическим хранением информации (Tiered Storage) затем копируются в другое место, дедупликация данных у цели имеет свои преимущества. У соответствующих устройств имеются и другие достоинства — их легче интегрировать в существующие среды резервного копирования, чем решения для дедупликации у источника.

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

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

НОСИТЕЛИ РЕЗЕРВНЫХ КОПИЙ — ДИСКИ ИЛИ ЛЕНТЫ?


Рисунок 3. Устранение данных, имеющихся в нескольких экземплярах, может способствовать тому, что затраты на создание резервных копий на жестких дисках будут соответствовать затратам на запись копий на ленточные накопители.

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

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

ПАРАМЕТРЫ

Для измерения эффективности дедупликации данных обычно используется коэффициент дедупликации. К примеру, значение 20:1 говорит о том, что потребность в ресурсах памяти была сокращена на 95%, но это не значит, что теперь администраторы смогут разместить на жестком диске в 20 раз больше данных. Если исходный объем информации равен 500 Гбайт, то при дедупликации с коэффициентом 20:1 объем данных никогда не сократится до 25 Гбайт. Иными словами, в зависимости от вида данных при проведении пяти операций резервного копирования удастся уместить эти резервные копии, к примеру, в 525 Гбайт, а не в 2,5 Тбайт, как это было бы при создании пяти полных резервных копий.


Рисунок 4. Данные, сохраняемые на предприятии, изменяются с различной частотой. На данной диаграмме представлен типичный сценарий.

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

ТИПЫ ФАЙЛОВ

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

Файлы Microsoft Office, к примеру, хорошо подходят для дедупликации на уровне блоков, поскольку их содержимое часто повторяется, а вот сжатые или мультимедийные данные нуждаются в особом обращении: здесь будет мало толку от дедупликации — как на уровне файлов, так и на уровне блоков. В таких случаях можно использовать еще один способ — анализ с учетом содержимого (Content-Aware), который используется, к примеру, в решениях компании Ocarina Networks. Этот производитель, недавно приобретенный Dell, разработал алгоритмы сжатия для 900 различных типов данных, в число которых входят уже сжатые графические и видеоформаты.

ИНСТРУМЕНТ ДЛЯ ВСЕСТОРОННЕГО УПРАВЛЕНИЯ ДАННЫМИ

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

Ханс Шрамм — менеджер по корпоративным продажам в компании Dell.

Читайте также: