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

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

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

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

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

12.2. Обеспечение легкости применения программного средства.

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

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

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

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

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

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

· базироваться на терминах и понятиях, знакомых пользователю,

· быть единообразным,

· обеспечивать пользователю возможности исправления своих ошибок,

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

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

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

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

12.3. Обеспечение эффективности программного средства.

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

С учетом этого следует придерживаться принципов:

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

· используй оптимизирующий компилятор;

· если эффективность средства не удовлетворяет спецификации качества, то найди критические по эффективности модули и оптимизируй их посредством ручной доводки;

· не оптимизируй модули, если в этом нет необходимости.

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

12.4. Обеспечение сопровождаемости программного средства.

Сопровождаемость программного средства обеспечивается его изучаемостью и модифицируемостью.

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

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

· используй осмысленные (мнемонические) и различимые имена (размер 4-12 литер, цифры в конце) и не используй сходные имена и ключевые слова;

· соблюдай осторожность в использовании констант (уникальная константа должна иметь единственное вхождение в текст модуля);

· не бойся использовать необязательные скобки они обходятся дешевле, чем ошибки;

· размещай не более одного оператора в строке, а для прояснения структуры модуля используй отступы в начале каждой строки, этим обеспечишь удобочитаемость текста модуля;

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

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

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

Ссылка на основную публикацию
Adblock detector
x