Программное обеспечение (ПО) вычислительных систем (ВС) становится все более значительным, сложным и опасным и его все труднее разрабатывать, но в то же время ПО все время упрощается, уменьшается в размерах, все легче поддается управлению и его все легче разрабатывать.
С одной стороны, возрастают требования к программному обеспечению, связанные с усовершенствованием и усложнением операционных систем, аппаратных средств и интерфейса пользователя и с необходимостью внедрения современных информационных технологий, в первую очередь, сетевых. Внутреннее устройство программ в связи с этим становится все более сложным, и возрастают требования к их надежности.
С другой стороны, накапливается и обобщается опыт разработки ПО, появляются все более гибкие и мощные методологии и средства, поддерживающие все этапы разработки ПО. Развивается методология визуального программирования и совершенствуются языки программирования. Совершенствование аппаратных средств ускоряет процессы компиляции, а также позволяет зачастую не беспокоиться об эффективности создаваемых программ.
Характеристики качества ПО
Цель дисциплины «Методология разработки программного обеспечения» – научить студентов основным принципам конструирования программного обеспечения, ознакомить с концепциями, методологиями разработки, тестирования и документирования программного обеспечения.
Программное обеспечение как промышленная продукция
Основные понятия
Принято выделять семь видов обеспечения вычислительных систем:
Из всех видов обеспечении программное обеспечение (ПО) занимает особое место, поскольку основная доля затрат на оснащение и эксплуатацию ВС приходится именно на ПО. Определим такие основные понятия, как программа, программный комплекс, программная система, программный продукт и программное обеспечение.
Под программой будем понимать:
1) совокупность кода и данных, пригодных для исполнения процессорам (исполняемая программа);
2) самостоятельный компонент относительно небольшого размера, предназначенный для решения локальной задачи (программа как компонент системы).
Программный комплекс или программная система — это совокупность согласованно работающих программ под общим управлением, предназначенная для решения сложной задачи или ряда взаимосвязанных задач.
Прошедший испытания программный комплекс, полностью готовый для продажи (поставки) и снабженный всей необходимой документацией, называется программным продуктам (изделием) или программным средством.
Программное обеспечение — наиболее общее понятие, под которым понимают программы, программные системы или продукты в совокупности или по отдельности, в зависимости от контекста использования этого термина.
Будем условно делить программные продукты на небольшие, средние и крупные. Объем исходного текста небольших программ составляет несколько сот операторов языка высокого уровня, средних — до десятков тысяч и крупных — до миллиона.
Во многих случаях программы создаются в единственном экземпляре для решения частных исследовательских задач, для ускорения вычислений, моделирования процессов и т.д. Такие программы не имеют массового применения и доступны только тем, кто их разработал. Они являются объектами научно-технического творчества и только в исключительных случаях становятся промышленными изделиями.
Лекция № 1. Основные понятия и характеристики качества программного обеспечения
Совершенно иным классом программ являются полновесные программные средства, которые в настоящее время принято квалифицировать как продукцию производственно-технического назначения. В этом качестве программные продукты являются непосредственной производительной силой и не отличаются от любой другой промышленной продукции.
Создание хорошего программного продукта является весьма трудоемкой задачей, решение которой, как правило, не под силу одному человеку. Программисты-одиночки (“хакеры”) могут обладать гениальным даром к быстрой алгоритмизации и кодированию нетривиальных задач, созданию новых методов и идей программирования, приобретая при этом значительную известность. Однако не в их силах в одиночку решать весь комплекс проблем разработки средних и крупных программных продуктов за приемлемые сроки.
Таким образом, в настоящее время сколько-нибудь значимые продукты создаются коллективами программистов. В таких коллективах в программисте-разработчике ценятся такие качества, как грамотность, дисциплинированность, надежность и коммуникабельность. Под грамотностью понимается знание и понимание передовых методов и средств разработки ПО, их назначения и особенностей, а также умение применять эти знания на практике.
Характеристики качества программного обеспечения
Совокупность свойств ПО, которая образует удовлетворительное для пользователя качество ПС, зависит от условий и характера эксплуатации этого ПО, т.е. от позиции, с которой должно рассматриваться качество этого ПО. Поэтому при описании качества ПО, прежде всего, должны быть фиксированы критерии отбора требуемых свойств ПО. В настоящее время критериями качества ПО (criteria of software quality) принято считать:
Функциональность — это способность ПО выполнять набор функций, удовлетворяющих заданным или подразумеваемым потребностям пользователей. Набор указанных функций определяется во внешнем описании ПО.
Надежность (reliability) ПО — это его способность безотказно выполнять определенные функции при заданных условиях в течение заданного периода времени с достаточно большой вероятностью. При этом под отказом в ПО понимают проявление в нем ошибки. Таким образом, надежное ПО не исключает наличия в нем ошибок — важно лишь, чтобы эти ошибки при практическом применении этого ПО в заданных условиях проявлялись достаточно редко. Убедиться, что ПО обладает таким свойством можно при его испытании путем тестирования, а также при практическом применении. Таким образом, фактически мы можем разрабатывать лишь надежные, а не правильные ПО.
При оценке степени надежности ПО следует также учитывать последствия каждого отказа. Некоторые ошибки в ПО могут вызывать лишь некоторые неудобства при его применении, тогда как другие ошибки могут иметь катастрофические последствия, например, угрожать человеческой жизни. Поэтому для оценки надежности ПО иногда используют дополнительные показатели, учитывающие стоимость (вред) для пользователя каждого отказа.
Легкость применения — это характеристики ПО, которые позволяют минимизировать усилия пользователя по подготовке исходных данных, применению ПО и оценке полученных результатов, а также вызывать положительные эмоции определенного или подразумеваемого пользователя.
Эффективность — это отношение уровня услуг, предоставляемых ПО пользователю при заданных условиях, к объему используемых ресурсов.
Сопровождаемость — это характеристики ПО, которые позволяют минимизировать усилия по внесению изменений для устранения в нем ошибок и по его модификации в соответствии с изменяющимися потребностями пользователей.
Мобильность — это способность ПО быть перенесенным из одной среды (окружения) в другую, в частности, с одной ЭВМ на другую.
Функциональность и надежность являются обязательными критериями качества ПО, причем обеспечение надежности будет красной нитью проходить по всем этапам и процессам разработки ПО. Остальные критерии используются в зависимости от потребностей пользователей в соответствии с требованиями к ПО.
Для конкретизации качества ПО по каждому из критериев используется стандартизованный набор достаточно простых свойств ПО, однозначно интерпретируемых разработчиками. Такие свойства мы будем называть примитивами качества ПО. Некоторые из примитивов могут использоваться по нескольким критериям. Ниже приводится зависимость критериев качества от примитивов качества ПО.
Надежность: завершенность, точность, автономность, устойчивость, защищенность.
Легкость применения: П-документированность, информативность (только применительно к документации по применению), коммуникабельность, устойчивость, защищенность.
Эффективность: временнáя эффективность, эффективность по ресурсам (по памяти), эффективность по устройствам.
Сопровождаемость. С данным критерием связано много различных примитивов качества. Однако их можно распределить по двум группам, выделив два подкритерия качества: изучаемость и модифицируемость.
Изучаемость — это характеристики ПО, которые позволяют минимизировать усилия по изучению и пониманию программ и документации ПО.
Модифицируемость — это характеристики ПО, которые позволяют автоматически настраивать на условия применения ПО или упрощают внесение в него вручную необходимых изменений и доработок.
Изучаемость: С-документированность, информативность (здесь применительно к документации по сопровождению), понятность, структурированность, удобочитаемость.
Модифицируемость: расширяемость, модифицируемость (в узком смысле, как примитив качества), структурированность, модульность.
Мобильность: независимость от устройств, автономность, структурированность, модульность.
Ниже даются определения используемых примитивов качества ПО.
Завершенность (completeness) — свойство, характеризующее степень обладания ПО всеми необходимыми частями и чертами, требующимися для выполнения своих явных и неявных функций.
Точность (accuracy) — мера, характеризующая приемлемость величины погрешности в выдаваемых программами ПО результатах с точки зрения предполагаемого их использования.
Автономность (self-containedness) — свойство, характеризующее способность ПО выполнять предписанные функции без помощи или поддержки других компонент программного обеспечения.
Устойчивость (robustness) — свойство, характеризующее способность ПО продолжать корректное функционирование, несмотря на неправильные (ошибочные) входные данные.
Защищенность (defensiveness) — свойство, характеризующее способность ПО противостоять преднамеренным или нечаянным деструктивным (разрушающим) действиям пользователя.
Информативность (accountability) — свойство, характеризующее наличие в составе ПО информации, необходимой и достаточной для понимания назначения ПО, принятых предположений, существующих ограничений, входных данных и результатов работы отдельных компонент, а также текущего состояния программ в процессе их функционирования.
Временнáя эффективность (time efficiency) — мера, характеризующая способность ПО выполнять возложенные на него функции в течение определенного отрезка времени.
Эффективность по ресурсам (resource efficiency) — мера, характеризующая способность ПО выполнять возложенные на него функции при определенных ограничениях на используемые ресурсы (используемую память).
Эффективность по устройствам (device efficiency) — мера, характеризующая экономичность использования устройств машины для решения поставленной задачи.
С-документировапнность (documentation) — свойство, характеризующее с точки зрения наличия документации, отражающей требования к ПО и результаты различных этапов разработки данной ПО, включающие возможности, ограничения и другие черты ПО, а также их обоснование.
Понятность (understandability) — свойство, характеризующее степень, в которой ПО позволяет изучающему его лицу понять его назначение, сделанные допущения и ограничения, входные данные и результаты работы его программ, тексты этих программ и состояние их реализации.
Структурированность (structuredness) — свойство, характеризующее программы ПО с точки зрения организации взаимосвязанных их частей в единое целое определенным образом (например, в соответствии с принципами структурного программирования).
Удобочитаемость (readability) — свойство, характеризующее легкость восприятия текста программ ПО (отступы, фрагментация, форматированность).
Расширяемость (augmentability) — свойство, характеризующее способность ПО к использованию большего объема памяти для хранения данных или расширению функциональных возможностей отдельных компонент.
Модифицируемость (modifiability) — мера, характеризующая ПО с точки зрения простоты внесения необходимых изменений и доработок на всех этапах и стадиях жизненного цикла ПО.
Модульность (modularity) — свойство, характеризующее ПО с точки зрения организации его программ из таких дискретных компонент, что изменение одной из них оказывает минимальное воздействие на другие компоненты.
Независимость от устройств (device independence) — свойство, характеризующее способность ПО работать на разнообразном аппаратном обеспечении (различных типах, марках, моделях ЭВМ).
Разработка программного средства завершается его аттестацией. Аттестация программного средства — это авторитетное подтверждение его качества. Как правило, для аттестации создается комиссия экспертов. Эта комиссия проводит приемо-сдаточные испытания программного средства с целью получения необходимой информации для оценки его качества. При этом оцениваются только установленные критерии качества и примитивы качества.
Источник: megalektsii.ru
28. Характеристики качества программного обеспечения (стандарт iso)
[1061-1998 IEEE Standard for Software Quality Metrics Methodology] Качество программного обеспечения — это степень, в которой ПО обладает требуемой комбинацией свойств .
[ISO 8402:1994 Quality management and quality assurance] Качество программного обеспечения — это совокупность характеристик ПО, относящихся к его способности удовлетворять установленные и предполагаемые потребности.
Характеристики качества ПО
Функциональность (Functionality) — определяется способностью ПО решать задачи, которые соответствуют зафиксированным и предполагаемым потребностям пользователя, при заданных условиях использования ПО. Т.е. эта характеристика отвечает за то, что ПО работает исправно и точно, функционально совместимо, соответствует стандартам отрасли и защищено от несанкционированного доступа.
Надежность (Reliability) – способность ПО выполнять требуемые задачи в обозначенных условиях на протяжении заданного промежутка времени или указанное количество операций. Атрибуты данной характеристики – это завершенность и целостность всей системы, способность самостоятельно и корректно восстанавливаться после сбоев в работе, отказоустойчивость.
Удобство использования (Usability) – возможность легкого понимания, изучения, использования и привлекательности ПО для пользователя.
Эффективность (Efficiency) – способность ПО обеспечивать требуемый уровень производительности в соответствие с выделенными ресурсами, временем и другими обозначенными условиями.
Удобство сопровождения (Maintainability) – легкость, с которой ПО может анализироваться, тестироваться, изменяться для исправления дефектов, для реализации новых требований, для облегчения дальнейшего обслуживания и адаптироваться к именующемуся окружению.
Портативность (Portability) – характеризует ПО с точки зрения легкости его переноса из одного окружения (software/hardware) в другое.
Модель качества программного обеспечения
На данный момент наиболее распространена и используется многоуровневая модель качества программного обеспечения, представленная в наборе стандартов ISO 9126. На верхнем уровне выделено 6 основных характеристик качества ПО, каждую из которых определяют набором атрибутов, имеющих соответствующие метрики для последующей оценки (см. рис. 1).
Рис.1 – Модель качества программного обеспечения (ISO 9126-1)
29. Характеристики качества программного обеспечения (гост).
ГОСТ ИСО 9126-93
Качество программного обеспечения может быть оценено следующими характеристи- ками:
4.1 Функциональные возможности(Functionality) Набор атрибутов, относящихся к сути набора функций и их конкретным свойствам. Функциями являются те, которые реализуют установленные или предполагаемые потребности: Примечания
1 Данный набор атрибутов характеризует то, что программное обеспечение выполняет для удовлетворения потребностей̆, тогда как другие наборы, главным образом, характеризуют, когда и как это выполняется.
4.2 Надежность(Reliability) Набор атрибутов, относящихся к способности программного обеспечения сохранять свой уровень качества функционирования при установленных условиях за установленный̆ период времени. Примечания 1 Износ или старение программного обеспечения не происходит. Ограничения надежности проявляются из-за ошибок в требованиях, проекте и реализации.
Отказы из-за этих ошибок зависят от способа использования программного обеспечения и ранее выбранных версий программ. 2 В определении ИСО 8402 «надежность» — «способность элемента выполнять требуемую функцию». В настоящем стандарте функциональная .возможность является только одной из характеристик качества программного обеспечения. Поэтому определение надежности расширено до «сохранения своего уровня качества функционирования» вместо «выполнения требуемой функции» (см. также 3.4).
4.3 Практичность(Usability) Набор атрибутов, относящихся к объему работ, требуемых для использования и индивидуальной̆ оценки такого использования определенным или предполагаемым кругом пользователей̆. Примечания 1 «Пользователи» могут интерпретироваться как большинство непосредственных пользователей инте-рактивного программного обеспечения. Круг пользователей может включать операторов, конечных пользо-вателей и косвенных пользователей, на которых
влияет данное программное обеспечение или которые за-висят от его использования. Практичность должна рассматриваться во всем разнообразии условий эксплуа-тации пользователем, которые могут влиять на программное обеспечение, включая подготовку к использо-ванию и оценку результатов.
2 Практичность, определенная в данном стандарте как конкретный набор атрибутов программной про-дукции, отличается от определения с точки зрения эргономики, где рассматриваются как составные части практичности другие характеристики, такие как эффективность и неэффективность.
4.4 Эффективность(Efficiences) Набор атрибутов, относящихся к соотношению между уровнем качества функциониро- вания программного обеспечения и объемом используемых ресурсов при установленных условиях. Примечание — Ресурсы могут включать другие программные продукты, технические средства, материа-лы (например бумага для печати, гибкие диски) и услуги эксплуатирующего, сопровождающего или об-служивающего персонала.
4.5 Сопровождаемость(Maintainability) Набор атрибутов, относящихся к объему работ, требуемых для проведения конкретных изменений (модификаций). Примечание — Изменение может включать исправления, усовершенствования или адаптацию программ-ного обеспечения к изменениям в окружающей обстановке, требованиях и условиях функционирования.
4.6 Мобильность(Portability) Набор атрибутов, относящихся к способности программ-ного обеспечения быть перенесенным из одного окружения в другое. Примечание — Окружающая обстановка может включать организационное, техническое или программное окружение.
Источник: studfile.net
Основные характеристики качества программного обеспечения
Программные системы (ПС) – это сложные системы, поэтому к ним следует применять общие методы исследования и проектирования сложных систем. Поэтому, ПС характеризуется, прежде всего конкретными функциональными показателями качества или показателями назначения, номенклатура и значение которых определяются целями и областью применения программ. Наиболее общее качество программ – эффективность использования – отражает, прежде всего, назначение и выполняемые функции. Функциональные показатели характеризуют эффект от использования программ, с учетом затрат на их создание.
ПС характеризуются также конструктивными показателями качества, номенклатура которых почти не зависит от назначения и области использования программ. Эти показатели характеризуют любые программы и позволяют сопоставлять по показателям качества программы разного назначения.
Оцениваемые характеристики ПС группируются по трем этапам жизненного цикла программ: проектирование, эксплуатация, сопровождение. Всего различают четыре этапа жизненного цикла программ (рис.12): системный анализ, в ходе которого определяется назначение и основные функциональные характеристики, оцениваются затраты и возможная эффективность применения; проектирование программ включает разработку структуры ПС, программирование отладку модулей, испытание и внедрение для постоянной эксплуатации программ; эксплуатация программ; сопровождение программ состоит в развитии функциональных возможностей, повышение эксплуатационных характеристик системы, тиражирование программного комплекса. Показатели качества ПС и методы их определения, группируются по последним трем этапам (рис.13). Это не единственная модель показателей качества ПС, в работах [8,1] предложены другие системы показателей, но приводимая на рис.13 модель обладает упорядоченностью и позволяет ранжировать показатели.
Показатели качества представляют собой измеряемые характеристики в виде некоторой функции. Описать единый показатель невозможно, так как в зависимости от этапа, в жизненном цикле ПС, от
Рис.12. Схема жизненного цикла программных систем
![]() |
Рис.13. Схема показателей качества программных систем
задач использования и целей анализа, от характера внешних условий и т.д. доминирующим становится один или несколько показателей.
Для измерения и численной оценки показателей качества применяют метрики. В зависимости от особенностей показателя качества, применяются различные виды метрик.
Первый вид метрик характеризуют числовые параметры, которые измеряются относительными величинами или реально измеряемыми физическими показателями, например, их временем наработки на отказ, число маршрутов в программе и т.д. Второй вид метрик (порядковая шкала) позволяет ранжировать некоторые характеристики путем сравнения с опорными значениями. Математические преобразования с такими показателями более ограничены, чем при первом виде метрик. Третий вид метрик (номинальная или категорийная шкала) характеризует только наличие рассматриваемого свойства, например, наличие гибкости.
Все конструктивные показатели качества ПС делятся на основные и вспомогательные (влияющие на значение основных) показатели. Основные показатели показаны на рис.13, а вспомогательные в табл.2.
Такое деление предназначено для выделения минимального числа показателей, которые чаще всего целесообразно анализировать, как наиболее важные характеристики качества. Это деление условно и поэтому показатели можно переводить из основных во вспомогательные и наоборот.
4.3. Показатели качества этапа проектирования программных систем
Сложность проектирования конкретизуется и становится измеримым при установлении связи этого понятия с конкретными ресурсами, необходимыми для решения задачи. В табл.3, приведены различные показатели сложности программ, из которых этап проектирования характеризуют п.1-3. Эти показатели выбраны по тому, что они являются имитирующими ресурсами для проектирования любого изделия, в том числе и ПС.
Сложность проектирования ПС часто называют статистической сложностью. Её целесообразно анализировать на базе трех специфических компонент: сложность программных модулей, сложность структуры комплекса, сложность структуры данных (рис.14).
Сложность программных модулей оценивается сложностью внутренней структуры и функций программных модулей и интегрально по внешним статистическим характеристикам модулей. Эти показания с различных позиций связывают значения сложности с трудоемкостью разработки модуля.
Таблица 2. Вспомогательные показатели качества.
Этапы жизненного цикла | ||
Проектирование | Эксплуатация | Сопровождение |
1. Структурная упорядоченность программ и данных | 1. Корректность постановки задач | 1. Структурная упорядоченность ПС и данных |
2. Степень стандартизации структуры модулей и переменных | 2. Полнота и точность спецификаций | 2. Степень стандартизации структуры модулей и переменных |
3. Документированность ПС | 3. Уровень языков программирования | 3. Документированность для модификаций |
4. Методическая обеспеченность технологии проектирования | 4. Полнота тестирования программ | 4. Уровень языков программирования |
5. Степень комплексной автоматизации технологии проектирования | 5. Степень помехозащищенности программ | 5. Степень комплексной автоматизации технологии проектирования |
6. Уровень языков спецификаций, программирования и отладки | 6. Документированность для эксплуатации | 6. Обеспеченность контроля изменений версий и распространения копий |
7. Квалификация специалистов и методы организации работ |
Структурная сложность модулей определятся числом взаимодействующих компонент, числом связей между компонентами и сложностью их взаимодействия. Разнообразие поведения модуля и связей входных и результирующих данных в значительной степени определяются набором маршрутов, по которым исполняется модуль, т.е. сложность программного модуля связана не с размером программы по числу команд, а с числом отдельных маршрутов его исполнения.
Маршруты возможной обработки данных должны быть достаточно полно проверены при создании программы и тем самым определяют сложность её разработки. Проверка в логических системах должна осуществляться по всем маршрутам по конечным и промежуточным решениям. Для этого строится граф программы, по которому формируется полное множество маршрутов. Пример определения полного множества маршрутов показан на рис.15.
Замечание: вследствие быстрого роста структурной сложности при увеличении числа условных вершин целесообразно ограничивать размер программных модулей.
Статическая сложность модулей основывается на определении внешних измеряемых характеристик программных модулей. Первая характеристика – это интеллектуальная сложность создаваемого программного модуля.
(1)
где V – объем текста программы в битах; V * — потенциальный объем описания программ – это объем наиболее компактного текста программы для фиксированного алгоритма, написанного на языке самого высокого уровня.
Выражение (1) может быть представлено в виде
,
где l — показатель уровня языка используемой системы программирования (см. табл.4).
Вторая характеристика статистической сложности модулей – это трудоемкость разработки программы.
,
где S – интенсивность анализа и принятия решений программистом, измеряемая числом символов, которые различает программист в секунду (S≈18).
Сложность структуры ПС и связей между модулями по передаче управления и по обмену информацией определяется степенью взаимодействия модулей и регулярностью структуры межмодульных связей. Следует отметить, что программный модуль – это замкнутая компонента ПС. Автономность модулей достигается путем максимального ослабления взаимосвязей между модулями при одновременном усилии
Таблица 3. Значения показателей сложности программных систем
Показатель сложности | Уровень сложности | ||||
простой | средней сложности | сложный | сверх-сложный | ||
1. | Трудоемкость создания, чел. — годы | 0,1 | 1-10 | 10 3 -10 4 | |
2. | Длительность разработки, годы | 0,1-0,5 | 1-2 | 2-5 | 3-10 |
3. | Количество разрабатывающих специалистов, чел | 1-2 | 3-10 | 10-100 | 100-1000 |
4. | Длинна программы, операторов | 10 3 | 10 4 | 10 5 | 10 6 -10 7 |
5. | Количество модулей, шт. | 1-3 | 10-10 2 | 10 3 | 10 4 -10 5 |
6. | Количество обрабатываемых переменных, типов | 10 2 -10 3 | 10 4 -10 5 | 10 6 -10 8 | |
7. | Длительность решения варианта задачи, ч. | 10 -2 -10 -1 | 10 2 -10 3 | ||
Допустимое время отклика, с. | 10 6 -10 4 | 10 3 -10 2 | 10-0,1 | 10 -2 -10 -4 |
Таблица 4. Значения показателя уровня языка l
Язык программирования | Уровень языка l |
PL-1 | 1,53 |
Алгол | 1,21 |
Фортран | 1,14 |
Ассемблер | 0,88 |
Рис.14. Виды сложности проектирования.
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Рис.15. Пример графа программы (а) и полного множества маршрутов в этом графе (б)
связей компонент программы внутри модуля. Благодаря этому существенно снижается сложность структуры ПС и взаимодействия модулей за счет некоторого повышения сложности внутренней структуры модулей. В результате возникает оптимизационная задача минимизация совокупной сложности ПС с учетом внутренней сложности модулей и сложности модульных связей.
Наименьшая структурная сложность ПС достигается при минимальных межмодульных связей как по управлению, так и по информации. Степень связей по управлению определяется числом вариантов возможных вызовов данного модуля от других модулей. Сцепление модулей по информации производится путем обращения к массивам данных, которые используются двумя большим числом модулей, и обращение к каждой единицы информации следует рассматривать как внешнюю информационную связь. При расчете сложности ПС следует учитывать все связи по управлению и информации. Сложность управляющих связей компонент ПС определяется по формуле:
где М – множество индексов модулей ПС; — переменная, учитывающая связь i-го модуля с j-ым;
— переменная, учитывающая связь j-го модуля с i-ым;
и
могут принимать либо значения 1, если связь есть, либо 0, если связи нет.
Следует отметить, что при таком определении сложности каждая управляющая связь учитывается дважды: в вызывающем и в вызываемом модуле.
Полное количество информационных связей в ПС равно:
где G – множество индексов информационных единиц (переменные, которые передаются в модуль как формальные параметры, также являются информационными единицами); — переменная, учитывающая использование k-ой информационной единице в i-ом модуле;
— переменная, учитывающая формирование k-ой инфор-мационной единице в i-ом модуле:
Управляющие и информационные связи, описываются матрицами связей.
Статистические характеристики сложности ПС позволяют не учитывать детали структуры комплексов программ и особенности межмодульных связей. За основную единицу, характеризующую сложность ПС, принято число модулей.
Сложность структуры данных определяется количеством и структурой переменных и информационных единиц, регулярностью их размещения в массивах и сложностью доступа к этим переменным.
Корректность программ и степень адекватности их функциональных возможностей, поставленным целям и техническим заданиям является, важнейшим критерием в процессе разработки и испытаний ПС. Понятие корректности или правильности, подразумевает соответствие проверяемой ПС эталону, которому должна она соответствовать. Эти показатели, определяются техническим заданием на ПС и спецификациям на ее компоненты. Различают следующие виды корректности ПС:
• корректность текстов программ, синтаксическая и семантическая. Корректность текстов определяется степенью соответствия исходных программ формализованным правилам этих языков. Многие некорректности этих типов выявляются автоматически в процессе трансляции исходных текстов программ;
• корректность программных модулей структурная и функциональная, которая в свою очередь делится на детерминированную и стохастическую. Структурная корректность модулей заключается в соответствии их структуры общим правилам структурного программирования и корректным правилам оформления и внутреннего построения программных модулей. Функциональная корректность модулей определяется корректностью обработки исходных данных и получения результатов. В зависимости от функциональных задач корректность модуля может оцениваться детерминировано по полностью определенным наборам эталонных значений или стохастически при задании эталонов распределениями случайных величин;
• корректность данных структурная и функциональная (иначе, корректность значений). Структурная корректность данных определяется правилами их структурирования и упорядочивания. Эти правила могут быть достаточно полно формализованы без учета конкретных особенностей функционирования программ. Функциональная корректность данных связана в основном с конкретизацией их содержания в процессе исполнения программ, а так же при подготовке данных;
• корректность ПС структурная и функциональная. Структурная корректность определяется правилами структурного, модульного построения ПС и общими правилами организации межмодульных связей. Проверка структурной корректности может быть в значительной мере проверена автоматически.
Функциональная корректность ПС трудно формализуется вследствие большого количества возможных эталонных значений и распределений. Для программ реального времени различают детерминированную, стохастическую и динамическую корректность. Детерминированная корректность характеризует соответствие исходных и результирующих данных исполняемых программ эталонным значениям. Стохастическая корректность характеризуется соответствием распределений результирующих случайных величин заданным эталонным распределениям при соответствующих распределениях исходных данных. Динамическая корректность характеризует соответствие изменяющихся во времени результатов исполнения программ эталонными данными.
Метрики корректности программных модулей весьма разнообразны и довольно полно представлены в [8].
Трудоемкость разработки ПС зависит от квалификации специалистов, технологии проектирования, степени автоматизации разработки и испытаний. При измерении трудоемкости могут применятся обычные экономические показатели.
Источник: studopedia.org