- •Технология программирования. Качество программных систем.
- •Аспекты качества оценки программных систем.
- •Стадии разработки программного обеспечения.
- •Внедрение:
- •Разработка спецификаций.
- •Разработка спецификаций методом структурного анализа.
- •Разработка спецификаций оперативно-графическим методом (hipo).
- •Документирование программного обеспечения.
- •Проектирование систем.
- •Определение основных компонентов системы.
- •Определение потоков данных.
- •Определение процессов.
- •Методы разработки данных.
- •Графические диаграммы (граф-диаграммы)
- •Диаграммы Варнье-Орра.
- •Функциональные схемы.
- •Проектирование программ.
- •Группы методов проектирования программ:
- •Метод нисходящего проектирования.
- •Пошаговое уточнение.
- •Модульная структура программ.
- •Монолитно-модульная структура.
- •Последовательно-модульная структура.
- •Модульно-иерархическая структура.
- •Модульно-хаотическая структура.
- •Технологический цикл конструирования программной системы (пс): три процесса.
- •Модель анализа:
- •Этап проектирования
- •Этап кодирования
- •Этап проектирования
- •Проверенная и объединённая пс
- •Особенности этапа проектирования.
- •Предварительное
- •Детальное
- •Интерфейсное
- •Структурирование систем.
- •Управление
- •Моделирование управления.
- •Модель централизованного управления.
- •Главная
- •Обработчик событий и
- •Прерывания
- •Обработчик
- •Процесс
- •Декомпозиция подсистем на модули. Модульность.
- •Характеристики модуля.
- •Последовательная связность.
- •Коммуникативная связность.
- •Модуль отчёт о средней зарплате
- •Процедурная связность.
- •Модуль вычисления средних значений
- •Модуль вычисления средних значений
- •Временная связность.
- •Модуль инициализировать систему
- •Логическая связность.
- •По совпадению.
- •Сцепление модулей.
- •Сложность программной системы.
- •Программная документация.
- •Средства проектирования прикладных программ.
- •Графическое построение схем алгоритмов и программ.
- •Разработка схем алгоритмов и программ с использованием конкретного языка программирования.
- •Использование специальных языков проектирования программ, псевдокодов.
- •Реализация программ.
- •Программирование на языках высокого уровня:
- •Программирование с защитой от ошибок.
- •Структурное программирование.
- •Программирование в стандартизированном стиле.
- •Основные принципы стандартизации стиля программирования:
- •Правила размещения фрагментов исходного текста.
- •Правила составления комментариев.
- •Основное правило составления пояснительных комментариев.
- •Правило выбора имён.
- •Правило обеспечения наглядности логической структуры.
- •Нисходящее программирование.
- •Методы проверки программ:
- •Тестирование программного обеспечения.
- •Тестирование элементов.
- •Тестирование интеграций.
- •Нисходящее тестирование интеграций.
- •Возможные шаги процесса нисходящей интеграции:
- •Восходящие тестирования интеграций.
- •Сравнение нисходящего и восходящего тестирования.
- •Тестирование правильности.
- •Системное тестирование.
- •Основные типы системных тестов.
- •Тестирование восстановления.
- •Тестирование безопасности.
- •Стрессовое тестирование.
- •Тестирование производительности.
- •Аксиомы тестирования.
- •Отладка.
- •Общая схема сопровождения по.
Аксиомы тестирования.
Хорош тот тест, для которого высока вероятность обнаружить ошибку, а не тот, который демонстрирует правильную работу программы.
Одна из самых сложных проблем при тестировании – решить, когда надо закончить.
Невозможно тестировать свою собственную программу. Тестирование выполняет внешняя группа. Комплексное тестирование выполняется независимой группой.
Необходимая часть любого теста – описание ожидаемых результатов.
Избегать невоспроизводимых тестов.
Необходимо готовить тесты как для правильных, так и для неправильных входных данных. Последние лучше обнаруживают ошибки.
Надо детально изучать результаты каждого теста.
По мере увеличения числа ошибок обнаруженных, растет и относительная вероятность существования в ней необнаруженных ошибок.
Тестирование поручают самым способным программистам.
Тестируемость – это ключевая задача программного обеспечения. Сложность тестирования программы зависит от её структуры и качества проектирования.
Никогда не изменяйте программу, чтобы облегчить её тестирование, т.к. в этом случае программист будет тестировать другую программу.
Отладка.
Отладка – это локализация и устранение ошибок. Является следствием успешного тестирования. Процессу отладки предшествует выполнение некоторого теста, результат которого оценивается, регистрируются несоответствия между ожидаемым результатом и реальным. Возможны два исхода процесса отладки:
Причина найдена, исправлена, уничтожена.
Причина не найдена.
Для проверки причины разрабатывается дополнительный тест, помогающий проверить предположение, т.е. запускается итерационный процесс коррекции ошибки.
Способы проявления ошибок:
Программа завершается нормально, но выдает неверный результат.
Программа зависает.
Программа завершается по прерыванию.
Программа завершается, выдает ожидаемые результаты, но хранимые данные испорчены.
Симптомы ошибок:
постоянные;
мерцающие;
пороговые;
отложенные, проявляются после выявления маскирующих ошибок.
Две группы методов отладки:
Аналитические – базируются на анализе выходных данных тестов.
Экспериментальные – базируются на использовании вспомогательных средств отладки (трассировка процесса, вспомогательная печать), позволяющие уточнить характер поведения программы при тех или иных исходных данных.
Общая стратегия отладки:
обратное прохождение от замеченного симптома ошибки к исходным аналогам (месту в программе, где ошибка совершена).
Цель отладки:
найти оператор программы, при исполнении которого правильные аргументы приводят к неправильным результатам. Данное прослеживание организуется в зависимости от методов отладки.
В аналитических методах на основе логических заключений о поведении программы. Цель: шаг за шагом уменьшить область программы, подозреваемую в наличии ошибки.
Преимущество аналитических методов:
Исходная программа остается без изменений.
В экспериментальных методах для прослеживания выполняется:
выдача значений переменных в указанных точках;
трассировка переменных;
трассировка потоков управления (имен вызываемых процедур, меток на которые передается управление).
Преимущество экспериментальных методов:
– основная рутинная работа по анализу процесса вычислений перекладывается на компьютер.
Недостаток экспериментальных методов:
– в программу вносятся изменения, при исключении которых могут появиться ошибки.
Сопровождение программного обеспечения (СПО).
СПО – это такая работа, которая включает внесение необходимых изменений в программе и поддержание уже готового программного обеспечения в рабочем состоянии.
Затраты по стадиям жизненного цикла ПО.
Обнаружение ошибок по стадиям жизненного цикла ПО.
Затраты на устранение ошибок по стадиям.
Деятельность сопровождаемого программиста распадается на три этапа:
Усовершенствование в процессе сопровождения (внесение изменений в ПО в соответствии с интересами заказчика = 60% всего времени сопровождения).
Адаптация в процессе сопровождения. Приспособление программного обеспечения к изменившимся условиям работы системы (повысить точность) = 18%.
Коррекция в процессе сопровождения (чистое исправление ошибок ПО) = 17% .