Если попросить группу людей высказать своё мнение по поводу того, что такое качественное программное обеспечение, можно получить следующие варианты ответов:
- • его легко использовать;
- • оно демонстрирует хорошую производительность;
- • в нем нет ошибок;
- • оно не портит пользовательские данные при сбоях;
- • его можно использовать на разных платформах;
- • оно может работать 24 часа в сутки и 7 дней в неделю;
- • в него легко добавлять новые возможности;
- • оно удовлетворяет потребности пользователей;
- • оно хорошо документировано;
- • и др.
Все это действительно имеет непосредственное отношение к качеству ПО. Но эти ответы выделяют характеристики, важные для конкретного пользователя, разработчика или группы таких лиц. Для того, чтобы удовлетворить потребности всех сторон (конечных пользователей, заказчиков, разработчиков, администраторов систем, в которых оно будет работать и пр.), для достижения прочного положения разрабатываемого ПО на рынке и повышения потенциала его развития необходим учет всей совокупности характеристик ПО, важных для всех заинтересованных лиц.
9 свойств, которыми должен обладать человек
Приведенные выше ответы показывают, что качество ПО может быть описано большим набором разнородных характеристик. Такой подход к описанию сложных понятий называется холистическим (от греческого слова оХоо, целое), он не дает единой концептуальной основы для рассмотрения затрагиваемых вопросов.
Качество (quality) ПС — это совокупность его черт и характеристик, которые влияют на его способность удовлетворять заданные потребности пользователей. Качество программного обеспечения определяется в стандарте ГОСТ Р ИСО/МЭК 9126-93 (полностью заимствован из ISO 9126).
Различаются понятия внутреннего качества (конструктивного), связанного с характеристиками ПО самого по себе, без учета его поведения, внешнего качества, характеризующего ПО с точки зрения его поведения, и качества ПО при использовании (функциональное) — это качество, которое ощущается пользователями при конкретных сценариях работы с ПО. Для всех этих аспектов качества введены метрики, позволяющие их оценить. На создание ПО также оказывает существенное влияние качество технологических процессов разработки. Взаимоотношения между этими аспектами показано на рисунке 1.10.
Рисунок 1.10 — Основные аспекты качества ПО по ГОСТ Р ИСО/МЭК 9126-93
Каждое ПС должно выполнять определенные функции, т.е. делать то, что задумано. Также оно должно обладать еще целым рядом свойств, позволяющим успешно его использовать в течение длительного периода, т.е. обладать определенным качеством. Это не означает, что разные ПС должны обладать одной и той же совокупностью таких свойств в их наивысшей степени. Этому препятствует тот факт, что повышение качества ПС по одному из таких свойств часто может быть достигнуто лишь ценой изменения стоимости, сроков завершения разработки и снижения качества этого ПС по другим его свойствам. Качество ПС является удовлетворительным, когда оно обладает указанными свойствами в такой степени, чтобы гарантировать успешное его использование.
21 обязательное качество лидера | Джон Максвелл
Совокупность свойств, которые образуют удовлетворительное для пользователя качество, зависит от условий и характера эксплуатации этого ПС. Поэтому при описании качества ПС, прежде всего, должны быть фиксированы критерии отбора требуемых свойств. В настоящее время критериями качества ПС (criteria of software quality) принято считать:
- • функциональность;
- • надежность;
- • легкость применения (удобство использования);
- • эффективность (производительность);
- • сопровождаемость (удобство сопровождения);
- • мобильность (переносимость).
Для конкретизации качества ПС по каждому из критериев используется стандартизованный набор достаточно простых свойств ПС, однозначно интерпретируемых разработчиками. Такие свойства называют примитивами качества ПС.
Функциональность (functionality) — это способность ПС выполнять набор функций, удовлетворяющих заданным или подразумеваемым потребностям пользователей. Набор указанных функций определяется во внешнем описании (техническом задании) ПС, т.е. это способность ПО в определенных условиях решать задачи, нужные пользователям. Определяет, что именно делает ПО, какие задачи оно решает.
Функциональность обладает следующими простейшими свойствами: способность к взаимодействию, функциональная пригодность, соответствие стандартам, защищенность, точность.
Способность к взаимодействию (interoperability) — способность взаимодействовать с нужным набором других систем.
Функциональная пригодность (suitability) — способность решать нужный набор задач.
Соответствие стандартам и правилам (compliance) — соответствие ПО имеющимся индустриальным стандартам, нормативным и законодательным актам, другим регулирующим нормам.
Защищенность (security) — свойство, характеризующее способность ПС противостоять преднамеренным или нечаянным деструктивным (разрушающим) действиям пользователя, способность предотвращать неавторизирован-ный (т.е. без указания лица, пытающегося его осуществить) и не разрешенный доступ к данным и программам.
Точность (accuracy) — мера, характеризующая приемлемость величины погрешности в выдаваемых ПС результатах с точки зрения предполагаемого их использования, т.е. способность выдавать нужные результаты.
Надежность (reliability) ПС — это его способность безотказно выполнять определенные функции при заданных условиях в течение заданного периода времени с достаточно большой вероятностью, т.е. поддерживать определенную работоспособность в заданных условиях.
При этом под отказом в ПС понимают проявление в нем ошибки. Таким образом, надежное ПС не исключает наличия в нем ошибок — важно лишь, чтобы эти ошибки при практическом применении этого ПС в заданных условиях проявлялись достаточно редко. Убедиться, что ПС обладает таким свойством можно при его испытании путем тестирования, а также при практическом применении.
При оценке степени надежности ПС следует также учитывать последствия каждого отказа. Некоторые ошибки в ПС могут вызывать лишь некоторые неудобства при его применении, другие могут иметь катастрофические последствия, например, угрожать человеческой жизни. Поэтому для оценки надежности ПС иногда используют дополнительные показатели, учитывающие стоимость (вред) для пользователя каждого отказа.
Надежность обладает следующими простейшими свойствами: зрелость, способность к восстановлению, устойчивость к отказам, соответствие стандартам.
Зрелость (maturity) — величина, обратная частоте отказов ПО. Измеряется средним временем работы без сбоев и величиной, обратной вероятности возникновения отказа за данный период времени.
Устойчивость к отказам (fault tolerance) — способность поддерживать заданный уровень работоспособности при отказах и нарушениях правил взаимодействия с окружением (продолжать корректное функционирование, несмотря на неправильные (ошибочные) входные данные пользователя).
Способность к восстановлению (recoverability) — способность восстанавливать определенный уровень работоспособности и целостность данных после отказа, необходимые для этого время и ресурсы.
Соответствие стандартам надежности (reliability compliance) — соответствие ПО имеющимся индустриальным стандартам, нормативным и законодательным актам, другим регулирующим нормам. Этот атрибут добавлен в 2001 году.
Легкость применения (usability) (удобство использования, практичность) — это характеристики ПС, которые позволяют минимизировать усилия пользователя по подготовке исходных данных, применению ПС и оценке полученных результатов, а также вызывать положительные эмоции определенного или подразумеваемого пользователя.
Легкость применения обладает следующими простейшими свойствами: понятность, удобство обучения, удобство работы, привлекательность, соответствие стандартам удобства использования.
Понятность (understandability) — показатель, обратный усилиям, которые затрачиваются пользователями на восприятие основных понятий ПО и осознание их применимости для решения своих задач.
Удобство обучения (learnability) — показатель, обратный усилиям, затрачиваемым пользователями на обучение работе с ПО.
Удобство работы (operability) — показатель, обратный усилиям, предпринимаемым пользователями для решения своих задач с помощью ПО.
Соответствие стандартам удобства использования (usability compliance) — соответствие ПО имеющимся индустриальным стандартам, нор мативным и законодательным актам, другим регулирующим нормам. Этот атрибут добавлен в 2001.
Эффективность, производительность (efficiency) — это отношение уровня услуг, предоставляемых ПС пользователю при заданных условиях, к объему используемых ресурсов. Это способность ПО при заданных условиях обеспечивать необходимую работоспособность по отношению к выделяемым для этого ресурсам. Эффективность можно определить и как отношение получаемых с помощью ПО результатов к затрачиваемым ресурсам всех типов.
Эффективность обладает следующими простейшими свойствами: временная эффективность, эффективность по ресурсам, соответствие стандартам производительности.
Временная эффективность (time efficiency) — мера, характеризующая способность ПС выполнять возложенные на него функции в течение определенного отрезка времени, а также выдавать ожидаемые результаты и обеспечивать передачу необходимого объема данных за отведенное время.
Эффективность по ресурсам (resource efficiency) — мера, характеризующая способность ПС решать нужные задачи с использованием определенных объемов и видов ресурсов: оперативная, долговременная память, сетевые соединения, устройства ввода и вывода, пр.
Соответствие стандартам производительности (efficiency compliance) — соответствие ПО имеющимся индустриальным стандартам, нормативным и законодательным актам, другим регулирующим нормам. Этот атрибут добавлен в 2001.
Сопровождаемость (maintainability) — это характеристики ПС, которые позволяют минимизировать усилия по внесению изменений для устранения в нем ошибок и по его модификации в соответствии с изменяющимися потребностями пользователей.
С данным критерием связаны примитивы качества, касающиеся, как изучения ПО, так и модифицируемости.
Изучаемостъ — это характеристики ПС, которые позволяют минимизировать усилия по изучению и пониманию программ и документации ПС. Модифицируемость — это характеристики ПС, которые позволяют автоматически настраивать на условия применения ПС или упрощают внесение в него вручную необходимых изменений и доработок.
Сопровождаемость обладает следующими простейшими свойствами: анализируемость, удобство внесения изменений, стабильность, удобство проверки, соответствие стандартам удобства сопровождения.
Анализируемость (analyzability) или удобство проведения анализа — это удобство проведения анализа ошибок, дефектов и недостатков, а также удобство анализа необходимости изменений и их возможных последствий.
Удобство внесения изменений (changeability) — это показатель, обратный трудозатратам на выполнение необходимых изменений.
Стабильность (stability) — это показатель, обратный риску возникновения неожиданных эффектов при внесении необходимых изменений.
Удобство проверки (testability) — это показатель, обратный трудозатратам на проведение тестирования и других видов проверки того, что внесенные изменения привели к нужным результатам.
Соответствие стандартам удобства сопровождения (maintainability compliance) — соответствие ПО имеющимся индустриальным стандартам, нормативным и законодательным актам, другим регулирующим нормам. Этот атрибут добавлен в 2001.
Мобильность (переносимость) (portability) — это способность ПС быть перенесенным из одной среды (окружения) в другую, включая организационные, аппаратные и программные аспекты окружения.
Мобильность обладает следующими простейшими свойствами: адаптируемость, удобство установки, способность к сосуществованию, удобство замены, соответствие стандартам переносимости.
Адаптируемость (adaptability) — способность ПО приспосабливаться к различным окружениям без проведения для этого действий, помимо заранее предусмотренных.
Удобство установки (installability) — способность ПО быть установленным или развернутым в определенном окружении.
Способность к сосуществованию (coexistence) — способность ПО сосуществовать с другими программами в общем окружении, деля с ними ресурсы.
Удобство замены (replaceability) другого ПО данным — возможность применения данного ПО вместо других программных систем для решения тех же задач в определенном окружении.
Соответствие стандартам переносимости (portability compliance) — соответствие ПО имеющимся индустриальным стандартам, нормативным и законодательным актам, другим регулирующим нормам. Этот атрибут добавлен в 2001.
Функциональность и надежность являются обязательными критериями качества ПС. Остальные критерии используются в зависимости от потребностей пользователей в соответствии с требованиями к ПС.
Характеристики и атрибуты качества согласно ГОСТ Р ИСО/МЭК 9126-93 показаны на рисунке 1.11.
Оценка и контроль качества программного обеспечения
Проблемой оценки качества промышленной продукции занимается ква-лиметрия — наука, устанавливающая группы показателей качества, определяющая методы получения количественных значений показателей качества и методы определения уровня качества различных образцов промышленной продукции. В области программирования единый общепринятый подход к оценке качества ПО отсутствует.
Функциональность
Переносимость
Способность к взаимодействию Функциональная пригодно с ть> X Соответствие стандартам / Защищенность /
f Адаптируемость
Удобство замены Способность к сосуществованию Соответствие стандартам
Удобство установки
Способность к востановлению Устойчивость к отказам Соответствие стандартам
Стиль оформления текста модуля определяет использование отступов, пропусков строк и комментариев, облегчающих понимание программы.
Как правило, пропуски строк и комментарии используют для визуального разделения частей модуля, например:
WrileLn (’ Количество отрезков отрицательно’);
for і: = 0 to n-1 do S: = S + Len [ij;
Для таких языков, как Pascal, C# и Java и др., использование отступов позволяет прояснить структуру программы, обычно дополнительный отступ обозначает вложение операторов языка, например:
for і: = 1 to n do
for j: = 1 to т do
if a[ij]>amax then amax: = a [ij];
Контрольные вопросы
- 1.1 Что такое программа, программное обеспечение, алгоритм?
- 1.2 Что такое программирование, сопровождение программы, программный продукт, технология программирования?
- 1.3 Охарактеризуйте прикладное программное обеспечение.
- 1.4 Охарактеризуйте системное программное обеспечение.
- 1.5 Охарактеризуйте инструментальное программное обеспечение.
- 1.6 Что такое CASE-технология?
- 1.7 Что такое жизненный цикл программного обеспечения?
- 1.8 Перечислите основные этапы разработки программного обеспечения.
- 1.9 Как представляется структура ЖЦ ПО по стандарту ГОСТ Р ИСО/МЭК 12207-2010?
- 1.10 Охарактеризуйте каскадную модель ЖЦ.
- 1.11 Охарактеризуйте спиральную модель ЖЦ.
- 1.12 Как изменяется жизненный цикл программного обеспечения при использовании CASE-технологий?
- 1.13 Понятие качества ПО.
- 1.14 Охарактеризуйте критерий качества функциональность.
- 1.15 Охарактеризуйте критерий качества надежность.
- 1.16 Охарактеризуйте критерий качества легкость применения.
- 1.17 Охарактеризуйте критерий качества эффективность.
- 1.18 Охарактеризуйте критерий качества сопровождаемость.
- 1.19 Охарактеризуйте критерий качества мобильность.
- 1.20 Оценка и контроль качества ПО.
- 1.21 Стиль оформления ПО.
Источник: bstudy.net
программа должна обладать следующими свойствами: 1). упорядоченная последовательность команд, реализуемость заданного алгоритма 2). системность, дискретность, понятность 3). дискретность, массовость, понятность, результативность 4). однозначность, дискретность, точность, понятность, результативность, массовость 5). однозначность, дискретность, точность, понятность, результативность
Не знаю, причем тут «понятность» — это очень субъективное понятие, сильно зависящее от уровня подготовки читающего текст программы. «Точность» тоже под вопросом, поскольку большинство алгоритмов сами по себе не обладают некоей абсолютной точностью, а программы — суть запись алгоритма на некоем языке, доступном компилятору. Также, на мой взгляд, тут не перечислены некоторые иные важные свойства программы. Но в наибольшей степени на ответ, который тут может считаться «правильным», претендует 4) однозначность, дискретность, точность, понятность, результативность, массовость.
Источник: znanija.site
Алгоритм. Свойства алгоритма
Теперь покажем, что конкретный алгоритм обладает этими свойствами. В качестве примера, возьмем алгоритм, изображенный на рис. 1 в виде блок-схемы [6].
Приведенный алгоритм проверяет правильность расстановки скобок, если скобки расставлены правильно – то каждой закрывающей скобке предшествует соответствующая открывающая, а каждой открывающей соответствует закрывающая.
Суть алгоритма заключается в подсчете глубины вложенности скобок друг в друга. Если в какой-то момент глубина получает значение меньше нуля – то скобки расставлены неправильно. Если просмотрены все символы строки, но счетчик не равен нулю – то в строке есть не закрытые скобки (расставлены неправильно). В противном случае скобки расставлены правильно.
Можно сказать, что алгоритм обладает свойством дискретности, так как весь алгоритм разбит на отдельные части (на блок-схеме это хорошо видно).
Доказать детерминированность алгоритма, достаточно сложно, например, когда алгоритм содержит части, которые выполняются параллельно, но не будем сейчас на этом останавливаться. Скажем, что в данном случае программа является детерминированной, т.к. не содержит фрагментов, зависящих от времени выполнения, т.е. сколько бы мы не тестировали алгоритм на одной и той же строке результат не изменится.
Чтобы показать результативность алгоритма, в данном случае достаточно заметить, что любой путь из начальной вершины в конечную содержит блок вывода результата. Перед блоком «конец» алгоритм содержит лишь 2 альтернативные ветви, каждая из которых выводит некоторый результат.
Алгоритм обладает свойством массовости, т.к. исходными данными для него может быть любая конечная последовательность символов. Алгоритм не обладал бы этим свойством, если бы работал лишь ограниченном наборе исходных данных, например на строках «()» и «())», но на остальных наборах не работал или работал не правильно.
Проверить свойство правильности алгоритма достаточно просто, для этого можно взять несколько примеров исходных данных, для которых результат очевиден и протестировать алгоритм на них, но доказать правильность алгоритма достаточно сложно. Доказательство правильности называется верификацией и явно выходит за рамки этой статьи.
В этой статье мы разобрались с тем, что такое алгоритм и какими основными свойствами он должен обладать. К теме алгоритмов я обязательно вернусь в будущих статьях.
- Скиена С. Алгоритмы. Руководство по разработке. 2-е изд.: Пер. с англ. — СПб.: БХВ-Петербург. 2011. — 720 с.: ил.
- ГОСТ 19781-74. Единая система программной документации. Термины и определения. Утв. пост. Госкомстата № 2051 от 08.05.08.
- Семененко В. А., Скуратович Э.К. Информатика и вычислительная техника: Учебное пособие. — М.: МГИУ, 2006. — 272 с
- Paul E. B. Dictionary of Algorithms, Data Structures, and Problems. [Электронный ресурс]/ PaulE.B. – режим доступа: https://xlinux.nist.gov/dads/HTML/algorithm.html. Дата обращения: 07.05.2017.
- Елабуга: изд-во ЕГПУ, 2009.- 72 с. 97 . Лизунова Е.М. Теория алгоритмов. Лекции 2007
- ГОСТ 19.701-90. ЕСПД. Схемы алгоритмов, программ, данных систем. Условные обозначения и правила выполнения
- Обзор литературы по алгоритмам
Источник: pro-prof.com