
- •Технология: понятия, особенности создания программного продукта разработки программного продукта
- •Жизненный цикл программного продукта (жцпп)
- •Каскадная модель жизненного цикла
- •Основные процессы жцпп
- •Вспомогательные принципы жцпп
- •Организационные процессы жцпп
- •Основные этапы работ по созданию программного продукта
- •Единая система программной документации. Общие определения
- •Единая система программной документации. Виды программных документов
- •Единая система программной документации. Стадии разработки
- •Примерная структура организации, занимающаяся разработкой пп
- •Управления качеством разработки пп с помощью системы стандартов iso
- •Обеспечение качества разработки. Модель cmm-sei.
- •Метрики. Роль метрик в процессах разработки пп
- •Метрики и модели cmm-sei. Парадигмы Бейзили
- •Функционально-ориентированные метрики.
- •Эффективные алгоритмы. Оптимизирующие компиляторы
- •Выполнение оценки в ходе руководства проектом. Конструктивная модель стоимости cocomo
- •Основы проектирования программных систем. Особенности этапа проектирования.
- •Структурирование. Методы структурирования прорамм. Декомпозиция подсистем на модули. Модульность.
- •Ошибки программного обеспечения. Ошибки, возникающие на стадии разработки
- •Ошибки программного обеспечения. Виды ошибок.
Функционально-ориентированные метрики.
Функционально-ориентированные метрики косвенно измеряют продукт и процесс его разработки. При этом рассматривается не размер, а функциональность или полезность продукта.
Используется 5 информационных характеристик:
Количество внешних вводов – подсчитываются все вводы пользователя, по которым поступают разные прикладные данные. Вводы должны быть отделены от запросов;
Количество внешних выводов – подсчитываются все выводы, по которым к пользователю поступают результаты, вычисленные программным приложением. В этом контексте выводы означают: отчеты, экраны, распечатки, сообщения об ошибках. Индивидуальные единицы данных внутри отчета не подсчитываются;
Количество внешних запросов – под запросом понимается диалоговый ввод, который приводит к немедленному программному ответу в форме диалогового вывода. При этом диалоговый ввод в приложении не сохраняется, а диалоговый вывод не требует выполнения вычисления. Подсчитываются все запросы, каждый учитывается отдельно;
Количество внутренних логических файлов – подсчитываются все логические файлы, т.е. логические группы данных, которые могут быть частью базы или отдельным файлом;
Количество внешних файлов – подсчитываются все логические файлы из других приложений, на которые ссылаются данные приложения.
Вводы, выводы и запросы относят к категории транзакции.
Транзакция – это элементарный процесс, различаемый пользователем и перемещающий данные между внешней средой и программным приложением.
Каждой из выявленных характеристик ставится в соответствии сложность, для этого характеристике назначается низкий, средний или высокий ранг, затем формируется числовая оценка ранга.
Эффективные алгоритмы. Оптимизирующие компиляторы
Эффективные алгоритмы и их сложность
Под эффективностью мы понимаем использование ресурсов машины. Таким образом, под эффективной программой подразумевается программ, в которой оптимальное сочетание быстродействия и экономичного использования памяти. Считается разумным подходом в программировании – создание программы наилучшими возможными способами, не уделяя особого внимания ее эффективности. Оптимизируем эффективность в случае, когда программа часто используется и если статус данного проекта позволяет выполнить ее модернизацию.
В зависимости от типа программы (часто используемые, производственные, используемые длительное время и программы, написанные не программистами) необходимо установить насколько она должна быть эффективна при эксплуатации.
Оптимизирующие компиляторы
Компиляторы, создающие эффективную объектную программу обычно большие и работаю медленно, в связи с этим на компьютере для создания программы используют два компилятора: один работает быстро, но создает не эффективную программу, он используется для отладки; второй работает медленнее и производит эффективную программу, оптимизируя ее. Компиляторы выбирают ресурс, который нужно оптимизировать (определение размера памяти и время его выполнения и т.д.).
Скорость компилирования на современных компиляторах является большой, но при этом не все модули могут быть охвачены компиляцией. Для эффективности работы компиляторов можно применять различные методы:
давать имена переменных приблизительно одинаковой длины;
по возможности не использовать метки;
эффективность программы зависит от эффективности алгоритма;
Эффективный алгоритм - алгоритм работает быстро, использует мало памяти.
С каждой конкретной задачей связывается число n называемое ее размером и выражающее меру количества входных данных. Время, затрачиваемое на решение задачи, выраженное через значение n, называется временной сложностью алгоритма. Поведение этой характеристики при увеличении размерности задачи, называют асимптотической временной сложностью. Эффективность алгоритма определяется именно асимптотической временной сложностью.
Если алгоритм обрабатывает задачу размера n на время c*n^2, то говорят, что временная сложность алгоритма есть O(n^2), читается сложность порядка n^2.