- •0Министерство образования тверской области
- •Практическое занятие 1
- •Теоретический материал
- •Порядок выполнения работы
- •Задания
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 2
- •Теоретический материал
- •Порядок выполнения работы
- •Задания
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 3
- •Теоретический материал
- •Порядок выполнения работы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 4
- •Порядок выполнения работы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 5
- •Теоретический материал
- •Порядок выполнения работы
- •Варианты прикладных задач:
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 6
- •Теоретический материал
- •Порядок выполнения работы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 7
- •Теоретический материал
- •Порядок выполнения работы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 8
- •Порядок выполнения работы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 9
- •Теоретический материал
- •Порядок выполнения работы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 10
- •Теоретический материал
- •Порядок выполнения работы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 11
- •Порядок выполнения работы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 12
- •Теоретический материал
- •Порядок выполнения работы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 13
- •Теоретический материал
- •1.1. Эквивалентное разбиение
- •Порядок выполнения работы
- •Варианты заданий:
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 14
- •Теоретический материал
- •Общие характеристики качества программного средства
- •Длина программы
- •4. Объем программы
- •Потенциальный объем V*
- •Порядок выполнения работы
- •Практическое занятие 15
- •Порядок выполнения работы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 16
- •Порядок выполнения работы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 17
- •Порядок выполнения работы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 18
- •Порядок выполнения работы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 22
- •Теоретический материал
- •Теоретический материал
- •Порядок выполнения работы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 23
- •Теоретический материал
- •Порядок выполнения работы
- •Одномерные массивы
- •Двумерные массивы (матрицы)
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 24
- •Теоретический материал
- •Порядок выполнения работы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 25
- •Теоретический материал
- •Карандаш и кисть
- •Вывод текста
- •Методы вычерчивания графических примитивов
- •Ломаная линия
- •Окружность и эллипс
- •Прямоугольник
- •Многоугольник
- •Вывод иллюстраций
- •Битовые образы
- •Мультипликация
- •Метод базовой точки
- •Использование битовых образов
- •Загрузка битового образа из ресурса программы
- •Создание файла ресурсов
- •Подключение файла ресурсов
- •Просмотр "мультика"
- •Порядок выполнения
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 26
- •Теоретический материал порядок выполнения
- •Контрольные вопросы
- •Список использованной литературы
Общие характеристики качества программного средства
Функциональность программного средства (functionality) - совокупность свойств ПС, определяемая наличием и конкретными особенностями набора функций, способных удовлетворять заданные или подразумеваемые потребности качества наряду с ее надежностью как технической системы.
Удобство использования программного средства (usability) - совокупность свойств ПС, характеризующая усилия, необходимые для его использования, и оценку результатов его использования заданным кругом пользователей ПС.
Эффективность программного средства (efficiency) - совокупность свойств ПС, характеризующая аспекты его уровня пригодности, которые связаны с характером и временем использования ресурсов, необходимых при заданных условиях функционирования.
Примечание: правильнее эту характеристику называть производительностью (performance); тогда как эффективность дожна также зависеть от затрат на создание и внедрение ПС.
Сопровождаемость программного средства (maintainability) - совокупность свойств ПС, характеризующая усилия, которые необходимы для его модификации. Модификация, может осуществляться для устранения дефектов, усовершенствования ПС или его адаптации к изменениям в условиях функционирования, a также в составе и особенностях требуемых функций.
Мобильность программного средства (portability) - совокупность свойств ПС, характеризующая приспособленность для переноса из одной среды функционирования в другие.
Надежность программного средства (reliability) - совокупность свойств, характеризующая способность программного средства сохранять заданный уровень пригодности в заданных условиях в течение заданного интервала времени.
Корректность или правильность подразумевает соответствие проверяемого объекта некоторому эталонному объекту или совокупности формализованных эталонных характеристик и правил. Корректность программы наиболее полно определяется степенью ее соответствия предъявляемым к ней формализованным требованиям - программной спецификации.
Если надежность программы - свойство, заложенное при ее изготовлении и проявляющееся при эксплуатации программы во времени (поэтому без длительного наблюдения нельзя сделать заключения о надежности программы), то корректность может быть проверена в статике на этапе разработки программы.
Сложность программ рассматривается в трех аспектах:
сложность процесса разработки программ;
сложность программы как объекта разработки (статическая);
сложность выполнения программы (динамическая) – учитывает ресурсы, необходимые для ее выполнения.
Трудоемкость - совокупные затраты труда на создание или использование программы.
Различают трудоемкость на этапе проектирования программ и трудоемкость изучения и модификации программ при их сопровождении.
На этапе проектирования основные затраты составляет трудоемкость создания программ заданной сложности и корректности. Трудоемкость зависит от квалификации специалистов, технологии проектирования, степени автоматизации разработки, испытаний и т.д. Трудоемкость изучения и модификации программ при сопровождении определяется степенью документированности программ, уровнем языка программирования, структур-ностью их построения и другими факторами, связанными с удобством анализа ПС и внесения изменений. Этот критерий влияет на длительность жизни программ. Целесообразность и длительность использования, модернизации и переноса программ сохраняются до тех пор, пока не станет рентабельной новая разработка.
Критерии качества программ являются показателями, позволяющими на основе количественных оценок группы характеристик программ устанавливать их пригодность в целом для той или иной цели. Изменение доминирующей цели в зависимости от этапов жизненного цикла программ приводит к изменению состава критериев качества программ и степени их важности при анализе.
Для количественной оценки показателей качества ПИ выполняется сбор метрик, являющихся числовыми оценками параметров программы.
В зависимости от характеристик и особенностей показателя качества применяются различные виды метрик и шкал для их измерения.
Первый вид метрик, которому соответствует интервальная шкала, характеризуется реально измеряемыми физическими показателями, например
временем выполнения программы,
числом маршрутов в программе,
числом таблиц в базе данных,
объемом программы и т.д.
Свойства, описываемые такими параметрами, численно представляются наиболее полно, с возможными градациями в пределах точности измерения показателей.
Второй вид метрик (порядковая шкала) позволяет ранжировать некоторые характеристики путем сравнения с опорными значениями. Для объекта измерения устанавливается приоритетность признаков. Различают абсолютные и относительные порядковые метрики, первые из которых показывают больше или меньше значение данного параметра программы по сравнению с опорным, а второй – во сколько раз больше или меньше. Математические преобразования с такими показателями более ограничены, чем у первого вида метрик.
Третий вид метрик (номинальная или категорийная шкала) характеризует только наличие рассматриваемого свойства или признака у программы без учета градации по численным значениям. Например: наличие у программы структурированности, гибкости, простоты освоения и т.д.
Разнообразие возможных критериев и факторов, от которых зависит качество программ на различных этапах, усложняет их использование. Поэтому целесообразно провести классификацию критериев, выделить функциональные и конструктивные критерии качества программ и упорядочить их по этапам жизненного цикла.
Функциональные критерии являются специализированными и отражают специфику областей применения и степень соответствия функций, выполняемых программой, ее целевому назначению.
Для программ управления в них входят
показатели точности, диапазоны изменения параметров,
время реакции на запрос или выполнения программы,
адаптивность к внешним воздействиям и т.д.
В системах автоматизации обработки информации функциональные показатели отражают
номенклатуру и объем данных,
время обработки простых и сложных запросов,
разнообразие функций доступа к данным и редактирования.
Функциональные критерии в том или ином виде характеризуют эффект от использования программ в конкретных целях с учетом затрат на их создание.
Конструктивные критерии более инвариантны к целевому назначению и основным функциям программы, характеризуют общие свойства программ и позволяют сравнивать качество программ разного назначения. К ним относятся:
трудоемкость, сложность программ,
надежность функционирования,
степень использования ресурсов ЭВМ,
корректность и т.д.
Конструктивные критерии зависят не от области применения, а от этапа жизненного цикла программы (ЖЦП). На различных этапах ЖЦП рекомендуется использовать разные критерии:
Критерии этапа разработки
Трудоемкость ( статическая сложность )
Корректность ( правильность ) программы
Критерии этапа эксплуатации ПП
Функциональность
Производительность ( ресурсоемкость )
Надежность
Критерии этапа сопровождения
Трудоемкость
Понимаемость программы
Производительность программы
Надежность
Классификация видов сложности программных продуктов. Метрические характеристики программ по М.Холстеду
Трудоемкость разработки ПП может оцениваться двумя способами:
по интегральным характеристикам сложности, которые определяются по внешним параметрам программы, не учитывающим ее внутреннюю структуру (подход «черного ящика»);
по структурным характеристикам сложности, учитывающим внутреннюю структуру программы и зависящим от сложности маршрутов (потоков) управления, сложности потоков данных или специальных свойств графа управления (подход «белого ящика»).
Динамическая (или вычислительная) сложность характеризует процесс выполнения программы и имеет три взаимосвязанных составляющих:
временную – определяется временем выполнения программы или временем ее реакции на запрос пользователя;
программную – определяется составом и способом взаимодействия процедур или модулей, образующих программу, а также возможностью их размещения в кеш-памяти, основной памяти или на диске;
информационную – определяется сложностью организации данных и доступа к ним, а также возможностью их размещения в кеш-памяти, основной памяти или на диске.
Одной из интересных интегральных систем оценивания не только сложности, но и качества программ в целом является система метрик, предложенная Холстедом.
Измеримые свойства алгоритмов
Если задана реализация алгоритма на некотором языке можно идентифицировать все операнды, определенные как переменные или константы, используемые в этой реализации. Аналогично можно идентифицировать все операторы, определенные как символы или комбинации символов, влияющие на значение или на порядок операндов. Исходя из идентификации операторов и операндов, можно определить ряд измеримых категорий, обязательно присутствующих в любой версии любого алгоритма. Они определяются метриками, с помощью которых могут быть получены основные характеристики качества программ.
В состав измеримых свойств любого представления алгоритма (или программы) могут быть включены следующие метрические характеристики
1 - число простых (уникальных) операторов появляющихся в данной реализации
2 - число простых (уникальных) операндов появляющихся в данной реализации
N1 - общее число всех операторов появляющихся в данной реализации
N2 - общее число всех операндов появляющихся в данной реализации
f1j - число вхождений j-го оператора где j = 123 ... 1
f2j - число вхождений j-го операнда где j = 123 ... 2.
Отправляясь от этих основных метрических характеристик для программы, удобно определить:
словарь = 1 + 2
и длину N N = N1 + N2
реализации программы.
В соответствии с данными определениями должны выполняться следующие три соотношения
Рассмотрим пример вычисления введенных метрик для программы, реализующей широко известный алгоритм Евклида нахождения наибольшего общего делителя (НОД) двух целых чисел. Возможные варианты программы на языках Паскаль приведены в таблице.
Программа на Паскале
|
Function GCD (a,b: integer): integer; Label L1, L2; Var G, R : integer; Begin If (a=0) then L1: begin GCD := b; return end; If (b=0) then Begin GCD := a; return end; L2: G := a/b; R := a - b*G; If (R=0) GOTO L1; a :=b; b:=R; GOTO L2; End. |
Результаты подсчета числа типов операторов и операндов и их общего количества сведены в таблицу. При подсчете использовались следующие соображения
В отношении классификации операторов интуитивно ясно что символы
= - знак присваивания
= - знак равенства (или знак присваивания в программе на Си)
-- - знак вычитания
/ - знак деления
* - знак умножения
соответствуют их обычному определению
Оператор |
I |
F1i |
Операнд |
J |
F2j |
; |
1 |
14 |
GCD |
1 |
2 |
:= |
2 |
6 |
G |
2 |
2 |
= |
3 |
3 |
R |
3 |
3 |
() или begin end |
4 |
6 |
A |
4 |
5 |
If |
5 |
3 |
B |
5 |
6 |
/ |
6 |
1 |
0 |
6 |
3 |
* |
7 |
1 |
|
|
|
- |
8 |
1 |
|
|
|
GOTO L1 |
9 |
1 |
|
|
|
GOTO L2 |
10 |
1 |
|
|
|
Function GCD |
11 |
1 |
|
|
|
Return |
12 |
2 |
|
|
|
Пара состоящая из открывающих и закрывающих скобок ( ) { } классифицируется как один оператор группировки Поскольку пара слов Begin End выполняет такую же группирующую функцию она классифицируется как такой же оператор Метки L1 и L2 - не переменные и не константы поэтому они не являются операндами Следовательно, они должны быть операторами или их составными частями Комбинация GO TO и метки L1 определяет ход выполнения программы путем задания для нее счетчика или указателя кода эта комбинация классифицируется как один оператор Неиспользуемая метка трактуется всего лишь как комментарий поэтому ее присутствие в программе необязательно Ограничитель (точка с запятой) также определяет ход выполнения программы (простым продвижением счетчика) что позволяет классифицировать точку с запятой как оператор По той же причине все управляющие структуры например IF, IF ... THEN ... ELSE, DO ... WHILE, классифицируются как операторы Указатель вызова функции или оператор процедуры также являются операторами. Помимо того, возможность задания помеченных участков и введение новых функций устраняют какие-либо ограничения на рост величины 1 (числа типов операторов) которые в противном случае могли бы быть наложены набором команд машины или разработкой языка
Соответственно, измеримые метрики программы на Паскале будут равны
η1
=
12; N1
= 40; η2
= 6; N2
= 21; η
= 18; N
= N1
+ N2
=
61;
58,53
