- •1. Понятие структур данных и алгоритмов
- •3. Системы счисления. Непозиционные/позиционные системы счисления. Изображение чисел в позиционной системе счисления. Перевод чисел из одной системы счисления в другую.
- •8. Битовые типы
- •2.7.1. Физическая структура указателя
- •17. Записи.
- •21. Операции логического уровня над статическими структурами. Сортировка
- •22. Характерные особенности полустатических структур
- •23. Стеки Логическая структура стека
- •4.2.2. Машинное представление стека и реализация операций
- •24. Очереди fifo
- •25. Деки
- •4.4.2. Деки в вычислительных системах
- •26. Строки. Логическая структура строки
- •4.5.3. Представление строк в памяти.
- •27. Связное представление данных в памяти
- •28. Графы
- •29. Деревья Основные определения
- •30. Бинарные деревья.
- •31. Основные операции над деревьями.
- •Процессы разработки программ
- •V-образный жизненный цикл;
- •Процессы и документы при разработке пс
V-образный жизненный цикл;
Спиральный жизненный цикл;
Экстремальное программирование.
Особенность каскадного жизненного цикла состоит в том, что переход к следующему этапу происходит только тогда, когда полностью завершены все работы предыдущего этапа. То есть сначала полностью готовятся все требования к системе, затем по ним полностью готовятся все требования к программному обеспечению, полностью разрабатывается архитектура системы и так далее до тестирования.
V-образный жизненный цикл. В качестве своеобразной "работы над ошибками" классической каскадной модели стала применяться модель жизненного цикла, содержащая процессы двух видов: Основные процессы разработки и Процессы верификации, представляющие собой цепь обратной связи по отношению к основным процессам.
Оба рассмотренных выше типа ЖЦ предполагают, что заранее известны все требования пользователей. Это нереально, поэтому появилось решение, исправляющее основной недостаток V-образного ЖЦ - предположение о том, что на каждом этапе разрабатывается очередное полное описание системы.
Этим решением стала спиральная модель жизненного цикла.
Основная идея ЖЦ экстремального программирования - максимальное укорачивание длительности одного этапа жизненного цикла и тесное взаимодействие с заказчиком.
По сути, на каждом этапе происходит реализация и тестирование одной функции системы, после завершения которых система сразу передается заказчику на проверку или эксплуатацию.
Основная проблема данного подхода – согласованность интерфейсов между модулями, реализующими эту функцию.
На самом деле модель ЖЦ состоит из четырёх процессов:
Основной процесс разработки. Сказано выше.
Процесс верификации - процесс, направленный на проверку корректности разрабатываемой системы и определения степени ее соответствия требованиям заказчика.
Процесс управления разработкой - отдельная дисциплина. Классическая схема - иерархическая пирамида подчиненности, в которой каждый нижестоящий менеджер отвечает за разработку определенной части системы.
Вспомогательные (поддерживающие) процессы обеспечивают своевременное создание всего, что может понадобиться разработчику или конечному пользователю. (Подготовка пользовательской документации, подготовка приемо-сдаточных тестов, управление конфигурациями и изменениями, взаимодействие с заказчиком и т.д.)
Стандарты организации работ. Требования, предъявляемые к организации работы, необходимой для выпуска качественной ПС, оформлены в виде стандартов качества. Наиболее часто цитируемая и известная группа стандартов качества - серия стандартов ISO 9000. В дополнение к ним существует стандарт, содержащий требования к жизненному циклу разработки ПО - ISO 12207. В госструктурах СНГ используются стандарты серии ГОСТ 34.
Основная цель процесса верификации - доказательство того, что результат разработки соответствует предъявленным к нему требованиям. В состав задач процесса верификации входит последовательная проверка того, что в программной системе:
Общие требования к ПС, предназначенные для программной реализации, корректно переработаны в спецификацию требований высокого уровня к комплексу программ, удовлетворяющих исходным системным требованиям;
Требования высокого уровня правильно переработаны в архитектуру ПО и в спецификации требований к функциональным компонентам низкого уровня, которые удовлетворяют требованиям высокого уровня;
Спецификации требований к функциональным компонентам ПО, расположенным между компонентами высокого и низкого уровня, удовлетворяют требованиям более высокого уровня;
Архитектура ПО и требования к компонентам низкого уровня корректно переработаны в удовлетворяющие им исходные тексты программных и информационных модулей;
Исходные тексты программ и соответствующий им исполняемый код не содержат ошибок.
Тестирование - процесс выполнения программы с целью обнаружения ошибки.
Тестовые данные - входы, которые используются для проверки системы.
Тестовая ситуация (test case) - входы для проверки системы и предполагаемые выходы в зависимости от входов, если система работает в соответствии со спецификацией требований.
Хорошая тестовая ситуация - та ситуация, которая обладает большой вероятностью обнаружения пока еще необнаруженной ошибки.
Удачный тест - тест, который обнаруживает пока еще необнаруженную ошибку.
Ошибка - действие программиста на этапе разработки, приводящее к тому, что в программном обеспечении содержится внутренний дефект, который в процессе работы программы может привести к неправильному результату.
Отказ - непредсказуемое поведение системы, приводящее к неожидаемому результату, которое могло быть вызвано дефектами, содержащимся в ней.
Валидация программной системы - доказательство того, что в результате разработки системы мы достигли тех целей, которые планировали достичь благодаря ее использованию. Иными словами, валидация - это проверка соответствия системы ожиданиям заказчика. Тестирование отвечает на вопрос "Как это сделано?" или "Соответствует ли поведение разработанной программы требованиям?". Верификация - "Что сделано?" или "Соответствует ли разработанная система требованиям?". Валидация - "Сделано ли то, что нужно?" или "Соответствует ли разработанная система ожиданиям заказчика?".