Какими свойствами должна обладать программа

Свойства качественного программного обеспечения

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

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

– программное обеспечение может оказаться трудным для правильного использования и легким — для неправильного;

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

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

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

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

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

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

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

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

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

Например:

–  

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

–  

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

–  

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

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

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

–  

установлением в явном виде целевых параметров качества и их относительных приоритетов;

–  

применением контрольных таблиц и вопросников по ана­лизу качества;

–  

введением специальных мер, гарантирующих высокое качество программ;

–  

использованием специальных средств и методов повы­шения  качества.

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

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

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

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

Для определения качества программного обеспечения необ­ходимо объявить для него целесообразную совокупность харак­теристик качества по приоритетам, установить для них один или более измеримых показателей. Например, число (процент завершенности, процент ошибок, выявленных при тестировании и т.п.) или качественное суждение, вынесенное человеком в одной из двух форм: в виде численной оценки или в виде решения типа «да — нет».

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

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

Ниже предлагаются описания всех возможных промежуточных и элементарных свойств качественного программного обес­печения.

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

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

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

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

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

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

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

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

Следовательно, завершенность предполагает замкнутость описания и живучесть программы.

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

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

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

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

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

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

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

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

Это свойство имеет две  стороны:

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

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

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

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

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

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

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

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

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

1) Способен ли программный продукт удовлетворить выд­винутым требованиям к нему? Если программный продукт — программа, то достигается ли необходимая точность процедур трансляции, загрузки и выполнения?

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

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

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

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

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

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

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

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

В качестве отрицательного примера можно привести два оператора

SUM: = TIIN/100;       SUM: = SUM + TIIN/100;

В результате их действий при некоторых значениях переменных                  (TIIN = 20 и TIIN = 81) происходит нежелательная потеря целого сума (в результате получается SUM = 0).

Для обеспечения требуемой точности это вычисление можно выполнить оператором

SUM: = (TIIN1+ TIIN2)/100;

Доступность. Программный продукт обладает свойством дос­тупности, если он допускает селективное использование от­дельных его компонент.

Отрицательным примером может служить запись

GRVITY: = 1.40764548Е16/ R**2;

Здесь GRVITY – переменная, обозначающая гравитационную постоянную.

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

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

GRVITY = GCONST/R**2;

где переменной GCONST по умолчанию при запуске прог­раммы присваивается значение 1.4076548* 1016, но пользователь может задавать и/или изменить это значение на новое.

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

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

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

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

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

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

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

Назад

Источник

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

Слайд 43 из презентации «Алгоритмизация и языки программирования».
Размер архива с презентацией 335 КБ.

Программирование

краткое содержание других презентаций

«Переменная» – Оператор присваивания. Имя переменной. Таблица стандартных функций. Арифметические выражения. Объекты, связанные с переменной. Арифметические операции. Правила записи арифметических выражений. Работа оператора присваивания. Значение. Тип переменной. Значения переменной. Описание переменной. Внутреннее представление переменных. Определение. Стандартные функции.

«Тестирование ПО» – Характеристики хорошего теста. Регрессионное тестирование. Приемочное тестирование. Недостатки восходящего тестирования. Обнаруживаемые ошибки. Классы эквивалентности. Системное тестирование. Программа. Функциональное тестирование. Павловская Т.А.. Виды и методы тестирования. Модульное тестирование. Недостатки нисходящего тестирования. Цифра. Типы дефектов. Исправление дефекта. Граничные значения класса.

«Разработка программных средств» – Разработка программных средств. Проектирование ПО. Программная инженерия. Требования – это жизнь проекта. Системный подход. Информационная модель процесса. Фундаментальная идея. Информационные потоки синтеза ПС. Потребность пользователя. Методы проектирования ПО. Система. Разработка ПО. Особенности проектирования. Отличие сложного ПО от программы. Технологический цикл разработки ПС. Частое изменение требований и спецификаций.

«Объектно-ориентированный подход к моделированию» – Программные продукты. Изученные вопросы. Диаграммы. Понятие объектного подхода. Свойства объекта. Объект. Различие между классом и объектом. Полиморфизм. Вопросы. Универсальный язык моделирования. Другие принципы ООП. Наследование. Инкапсуляция. Интерфейсная часть. Принципы ООП. Унифицированный язык моделирования. Объектно-ориентированный подход к моделированию систем. Понятие объектно-ориентированного подхода.

«Отношения между классами» – Операции класса. Правила именования классов. Правила именования операций. Роли объектов при взаимодействии. Спецификация объектов. Взаимодействие объектов. Спецификация для реализации и использования операции. Атрибуты класса. Спецификация операций класса. Initial value – начальное значение атрибута. Спецификация интерфейса операции. Спецификация отношений между классами. Спецификация класса. Persistence – определяет время существования объектов класса.

«Технология разработки ПО» – Базовые дисциплины диспетчеризации. Измерение времени. Функции ОС. Математический аппарат. Преимущества. Спецификации худшего времени выполнения. Технология разработки программного обеспечения. Классификация способов разработки программного обеспечения. ОСРВ как технология. Спиралеобразная модель разработки полного цикла. Механизм реализации. Стандарт. Иерархия методов разработки ПО. Диспетчеризация.

Всего в разделе
«Программирование»

19 презентаций

Источник