- •Общая характеристика технологии программных средств.
- •Принципиальная схема разработки программных средств. (Технология, процесс создания).
- •Способы описания алгоритмов.
- •Описание алгоритма с помощью таблиц решения.
- •Технология системного проектирования программных средств. Принципиальная схема разработки.
- •Современные методы и средства разработки прикладных программных средств.
- •Характеристики качества программного обеспечения.
- •Языки программирования.
- •Надёжность программного обеспечения.
- •Показатели надёжности.
- •Факторы, определяющие надёжность по.
- •Стандартизация. Дисциплина и творчество программирования.
- •Виды программ и программных документов.
- •Виды программных документов.
- •Эксплуатационные документы.
- •Классификация документов.
- •Работы, выполняемые на стадии «Эскизный проект».
- •Структурное программирование.
- •Терминология и обозначения.
- •Очевидно, что g и h являются простыми программами, иначе f была бы не простой.
- •Число управляющих линий в блоке h удовлетворяет соотношению:
- •Графическая иерархическая документация (гид).
- •Простейшие пути повышения качества программ.
- •Классификация ошибок.
- •Сквозной структурный контроль.
- •Стиль программирования и качества программ.
- •Case – технологии.
- •Моделирование данных.
- •Что дает применение case-средств?
- •Средства реализации case-технологий.
- •Общая характеристика case-средства
- •Особенности рабочего интерфейса
- •Начало работы с проектом в среде
- •Разработка диаграммы вариантов использования в среде Rational Rose.
- •Разработка диаграммы классов в среде
- •Диаграмма классов
- •Разработка диаграммы состояний в среде Rational Rose.
- •Разработка диаграммы последовательности в среде Rational Rose.
- •Разработка диаграммы кооперации в среде Rational Rose.
- •Разработка диаграммы компонентов в среде Rational Rose.
- •Разработка диаграммы развёртывания в среде Rational Rose.
- •Практические примеры диаграмм.
- •Актеры.
- •Диаграмма классов (основы)
- •Ассоциации
- •Заказ от одного клиента
- •Полезные советы по использованию диаграмм классов
- •Диаграмма взаимодействия
- •Диаграмма кооперации
- •Диаграмма кооперации
- •Диаграмма пакетов
- •Диаграмма состояний
- •Верификация программ.
- •Восходящее тестирование, нисходящее тестирование.
- •Методы тестирования компонентов.
- •Структура коллектива программистов.
- •Общая структура коллектива, работающего над крупным проектом.
- •Трудовые затраты по видам работ (человеко/месяц).
Терминология и обозначения.
Теория программирования строится на основе таких разделов математики как теория множеств и теория графов. Используя базовые положения этих разделов, определим функцию как множество упорядоченных пар
f = {(x1, y1), (x1, y1), .....},
таких, что если
(xi, yi) є f, (xj, yj) є f и (xi = xj), то (yi = yj)
Соотношение (x, y) є f равносильно соотношению y = f(x), где x – аргумент, f – функция, y – значение функции.
Множество первых элементов упорядоченных пар функции называется областью функции. Область f = {x1, x2, .....}
Множество вторых элементов упорядоченных пар функции называется образом функции. Образ f = {y1, y2, .....}
Если функция это множество, то имеет смысл применять термин пустая функция, подфункция, разбиение функции и т.д., получающийся из терминов теории множеств, замены слова «множество» словом «функция».
На виду с заданными функциями в виде (1) удобно задавать правила для вычисления второго элемента пары, если задан первый.
f = {x, y} y = x3 – x x є {1, 2, ..., 100}
Введя следующее определение программы, будем задавать программу как конечное число функций
Σ = {f1, f2, f3, ...}
Каждую функцию называют командой. Каждая функция имеет свою конечную область (входные данные) и конечный образ (выходные данные).
|
x |
f |
|
|
y |
Программа является одним из правил для вычисления её функции состояния.
Классическим способ представления программ являются схемные записи и логические схемы, которые легко отображать в графическую форму, получившую название граф-схем.
Графическое представление программы имеет широкое применение благодаря её важному преимуществу – наглядности. Граф-схема представляет собой граф, состоящий из вершин, соединённых направленными стрелками – дугами.
Различают следующие типы вершин:
Операторная или
функциональная
Начальная
Условная или предикатная
Конечная
Дуги определяют последовательность выполнения действий предписываемых вершинам, таким образом, что действие соответствует вершине, из которой стрелка исходит. Можно рассматривать граф-схему без начальной и конечной вершины.
Очевидно, граф-схема является направленным графом, и к ней применяются такие понятия как путь, цикл.
Каждая операторная вершина сопоставляется некоторому вычислительному оператору, осуществляющему преобразование значений переменных.
А условная вершина сопоставляется некоторому условию (предикату), который может быть либо истинным (Т), либо ложным (F).
Некоторые из граф-схем выделяют в качестве стандартных управляющих структур.
Граф-схему можно рассматривать как графическое представления выполнения и взаимосвязи операторов, которые наполняются конкретным содержимым при сопоставлении конкретных функций с операторными вершинами, а предикатов с условными вершинами. При этом в зависимости от сложности функций, связываемых с функциональными вершинами. Различают два вида граф-схем:
операторные схемы;
блок-схемы.
В операторной каждой функциональной вершине соответствует несложное преобразование программных переменных, которое, как правило, записывается внутри прямоугольника.
Блок-схема отображает программу на более высоком уровне, т.е. в ней операторные вершины сопоставляются с функциями и процедурами, каждая из которых может представляться отдельной блок-схемой. Операторные вершины в блок-схеме называют также блоками.
Программа называется простой, если её граф-схема удовлетворяет следующим двум условиям:
у неё один вход и один выход;
через каждую её вершину проходит хотя бы один путь от входа к выходу.
От представления программы иногда удобно перейти к её аналитическому описанию. Если программа является структурированной, это можно сделать следующим способом:
С каждой стандартной управляющей структурой связываем запись, в которой на первом месте указывается название (метка) графа управления, а дальше, в фиксированном для данного графа порядке, перечисляются предикаты, функции и множества состояний данных, относящихся соответственно к предикатным функциональным вершинам и стрелками управляющей структуры.
Запись заключается в круглые скобки и элементы записи разделяют запятыми. Такая запись называется формулой программирования.
-
x
f
y
g
Z
X – входные данные
( THEN, f, g, x, y, Z)
(IF-THEN-ELSE, P, f, g, x, S, R, u, v, w)
Можно не перечислять множество данных.
Рассматривая большую программу, можно выделить в ней подграфы достаточно простые и понятные по структуре. При этом всё множество граф-схем делится на 2 класса:
класс: к нему относятся графы, которые допускаю выделение подграфов с одним входом и выходом (рис.1) или после выполнения тождественных преобразований (рис.2).
Рис. 1.
Рис. 2.
класс: к нему относятся граф-схемы, к которым не удаётся найти ни каких тождественных преобразований для возможности их изменения.
Критерий, по которому можно отнести программу к тому или иному классу, даётся в следующей теореме (теорема о разложимости):
Граф-схема разложима на элементы, соответствующие простым программам, тогда и только тогда, когда она не содержит в себе замкнутого контура с двумя или более точками выхода.
Однако существуют пути выделения структурных единиц и в таких схемах. Для этой цели необходимо ввести в рассмотрение возможность оперирования с данными, не входящими в пространство данных самой задачи. Дополнительные операции сводятся к реализации и проверке «флажков» («флажки» – произвольные проверочные условия, позволяющие изменить путь прохождения программы, не изменяя входные и выходные данные).
Одна из возможных реализаций этой идеи состоит в следующем: в дополнение к функциям и предиката исходной программы вводятся новые функции Г, П, Ф и предикат τ, которые добавляют значения Т – «истина», F – «ложь», и удаляют и выделяют эти значения во множестве входных данных.
Эти новые функции и предикат позволяют конструировать управляющую логику программы.
Теорема о структурировании:
Всякая программа эквивалентна программе, формула которой содержит не более трёх управляющих структур THEN, IF-THEN-ELSE, DO-UNTIL, дополнительные функции Г, П, Ф и предикат τ.
Для доказательства теоремы рассмотрим и докажем простую лемму.
Задаём следующие условия:
в простой программе число операторных вершин = α
число условных вершин = β
число объединяющих вершин = γ
число соединяющих эти вершины управляющих линий = δ
Лемма: в простой программе справедливо соотношение β=γ, δ=α+3β+1
Управляющие линии |
вход |
Операторные вершины |
Условные вершины |
Объединяющие вершины |
выход |
Общее число |
Число концов (входящих) |
- |
α |
β |
2γ |
1 |
α + β + 2γ + 1 |
Число концов (исходящих) |
1 |
α |
2β |
γ |
- |
α + 2β + γ + 1 |
Очевидно, что число концов входящих равно числу концов исходящих и оба этих числа должны совпадать с числом соединяющих линий:
δ = α + β + 2γ + 1 = α + 2β + γ + 1 => β = γ =>
=> δ = α + 2β + β + 1 = α + 3β + 1 => лемма доказана.
Доказательство теоремы о структурировании.
Будем доказывать теорему путём индукции по числу управляющих линий в простой программе.
Считать, что исходная программа f простая.
Рассмотрим 3 варианта.
I. Первая вершина – условная.
Е сли первая вершина условная, то блок-схема программы f обобщенно может быть представлена так (рис.1). Учитывая утверждение леммы, что β = γ для любой простой программы, введя объединяющую вершину и разобьём оставшуюся часть на составляющие программы g и h.