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