- •1. Роль ПО и компьютеров в производстве, социальной жизни и науке.
- •2. Инженерия ПО
- •3. Проблемы разработки ПО и пути их решения
- •4. Характеристики качества ПО
- •5. Факторы, влияющие на качество ПО
- •6. Системный подход к разработке ПО. Временной и "пространственный " аспекты системного подхода
- •7. Этапы жизненного цикла ПО. Каскадная модель жизненного цикла ПО.
- •8. Конструирование ПО
- •9. Стандарты по разработке ПО. Виды и значение стандартов, требования стандартов
- •10. Три группы процессов создания ПО
- •11. Жизненный цикл ПО и процессы верификации.
- •12. Тестирование, верификация, валидация. Различие в понятиях. V образная модель жизненного цикла ПО
- •13. Спиральная модель ЖЦ ПО.
- •14. «Тяжелые и легкие» технологии разработки ПО. Экстремальное (ХР) программирование
- •16. Виды документов, выпускаемых на ПО по этапам разработки системы.
- •17. Итеративный характер проектирования ПО. Стадии проектирования.
- •19. CASE технологии разработки ПО.
- •20. Технология Ration Rose,UML
- •21. Структура системы, иерархия управления и структура ПО
- •22. Цикличность решения задач управления в системах с ЦВМ
- •23. Временная диаграмма работы системы. Представления работы ПО СТС в виде набора «сечений», выполняемых последовательно.
- •24. Представление работы ПО СТС в виде набора параллельных процессов.
- •25. Задачи и процессы. Контекст процесса
- •26. Обобщенная схема возможных вариантов совместного использования информации взаимодействующими процессами
- •Закон Амдела
- •28. Критический ресурс ЦВМ. Основное правило защиты ресурсов ЦВМ
- •29. Синхронизация процессов
- •Взаимное исключение процессов. Использование мьютексов
- •30. Задача синхронизации «Читатели-писатели»
- •Задачи синхронизации. «Обедающие философы»
- •31. Технология синхронизации ПО. Система Intel Thread Checker (ITC) и типы обнаруживаемых ею ошибок.
- •32. Конструирование ПО
- •33. Минимизация сложности ПО. Стандартные приемы в конструировании
- •35. Особенности конструирования программ для встроенных ЦВМ критических систем. Фиксированное распределение памяти
- •36. Проектирование снизу-вверх и проектирование сверху-вниз. Программные заглушки и их использование
- •37. Основные понятия структурного подхода к проектированию ПО.
- •Основные понятия объектно - ориентированного подхода (ООП) к конструированию ПО.
- •38. Мультиагентные технологии
- •39. Классы реального мира предметной области и искусственные объекты. Чрезмерно большие и неправильно названные классы
- •40. Эвристические приемы конструирования методов, предотвращение дублирования кода
- •41. Сокрытие информации. Две категории секретов программ.
- •Избыточное распространение информации в программе
- •Опасность использования глобальных переменных
- •45. Сопряжение между модулями. Критерии оценки сопряжения. Виды сопряжения
- •46. Эталоны для контроля работы ПО
- •47. Низкоуровневые средства обнаружения ошибочного функционирования ПО
- •Исключительные ситуации (Исключения)
- •48. Выбор способа обработки некорректных входных данных
- •49. Способы обработки возможных ошибок
- •50. Утверждения и общие принципы их использования
- •51. Стратегии безопасности. Три уровня реакции ПО на обнаруженную ошибку. Отказоустойчивые системы
- •54. Ошибки ПО, отладка и тестирование ПО.
- •55. Анализ обнаруживаемых в ПО ошибок и важность его проведения
- •Классификация ошибок ПО
- •56. Статическая отладка и динамическая отладка
- •Функциональная отладка
- •57. Принцип «белого» и «черного» ящика при динамической отладке ПО.
- •58. Структурная динамическая отладка
- •59. Автономная отладка (АО) и комплексная отладка (КО) ПО
- •60. Тестовое окружение ПО. Драйверы и заглушки.
- •61. Последовательность действий при отладке ПО.
- •Принципы выделения маршрутов для отладки.
- •62. Приближенный метод оценки числа вариантов для отладки ПО для «широкого графа» программы. Графы деревья, как модели структуры ПО
- •63. Регулярное дерево и устойчивость его структурного параметра
- •64. Контроль отлаженности ПО в процессе отладки.
- •67. Метод наименьших квадратов для аппроксимации экспериментальных данных
11. Жизненный цикл ПО и процессы верификации.
Верификация ПО – процесс определения выполняет ли ПО предъявляемые к нему требования. Верификация является неотъемлемой частью разработки ПО и в конечном итоге обеспечивает отсутствие ошибок в работе ПО, под которыми мы будем понимать невыполнение ПО заданных функций с определенными характеристиками качества, оговоренных в нормативно технических документах.
Артефактами проекта будем называть продукты проекта, порождаемые в нем в процессе разработки конечного продукта – ПО. Верификация – это последовательный процесс, проходящий через все процессы разработки, а не разовая операция. Однократный контроль качества уже конечного продукта, например, при тестировании – это неправильная практика. Она в большинстве случаев приводит к большому объему переделок и доработок в конце разработки, когда они стоят дорого. При этом возможна ситуация, когда программа внешне сделана правильно и работает без ошибок, но делает не то, что надо.
Эти ошибки в алгоритме возникают часто при передаче требований от одного разработчика другому. Давно замечено, что ошибки часто возникают «на стыках» между людьми, совместно работающими в одном проекте, при неточных и неполных формулировках, взаимном недопонимании и неполной передаче ими информации друг другу. Рис 3 хорошо иллюстрирует этот процесс
Поэтому и нужна верификация, как процесс контроля однозначности интерпретации артефактов и результатов «на стыках», в процессе которой необходимо проверять соответствие одних, создаваемых в ходе инженерной разработки артефактов – технологических процессов, документов, моделей, программного кода другим, созданным ранее, и используемым в качестве исходных данных для проверяемых. Этот последовательный процесс начинается с ТЗ на систему или ТЗ на ПО.
Верификация также определяет соответствие процессов разработки, документов, ПО стандартам.
В частности, верификация определяет соответствие между нормами стандартов, описанием требований – техническим заданием на ПО, проектными решениями и архитектурой ПО, полученным кодом ПО пользовательской документацией. Тестирование ПО, отмеченное как этапы жизненного цикла, являются также методом верификации. Но одним тестированием верификация не исчерпывается Верификация должна проводиться для всех артефактов, создаваемых при разработке ПО.
При этом организационными артефактами являются структура работ, план-графики работ, планы обеспечения качества, планы испытаний, описание системы качества, описания процессов и процедур выполнения отдельных работ.
12. Тестирование, верификация, валидация. Различие в понятиях. V образная модель жизненного цикла ПО
Тестирование часто трактуется, как проверка правильности программной реализации. При другой форме организации работ, когда разработчик программы и алгоритма – одно и то же лицо тестирование ПО -
процесс, охватывающий и проверку алгоритма с использованием модели внешней среды.
14
Действительно, для организации работ, когда разработку ПО ведет конечный пользователь, тестирование ПО - это конечно не только проверка правильности программной реализации заданного алгоритма функционирования. Проверяется также и сам алгоритм с точки зрения правильного выполнения всех задач системы, с точки зрения отсутствия алгоритмических ошибок.
Для организации работ, когда ПО разрабатывается в рамках аутсортинга разработчиком ПО, не являющимся разработчиком системы, разработчик ПО действительно может придерживаться позиции проверки только правильности программной реализации, уповая на правильность полученного ТЗ. Обнаружение алгоритмических ошибок может вызывать у него затруднения. В этих случаях верификация артефактов проекта ПО совместно с разработчиком системы и её заказчиком весьма актуальна.
Верификация – более общее понятие. Оно последовательно определяет соответствует ли программный код требованиям проектных спецификаций. Ряд стандартов подразумевает, что тестирование – заключительная часть процесса верификации.
Валидацияопределяет соответствует ли система требованиям заказчика, т.е. охватывает и проверку правильности проектных спецификаций.
V образная модель жизненного цикла ПО содержит процессы двух видов: основные процессы разработки(левая ветвь) и процессы верификации(правая ветвь), являющиеся обратными связями к основным процессам. Укрупненно можно эти процессы отобразить на схеме рис.2.
Основными методами верификации кроме динамического тестирования ПО путем его исполнения на ЦВМ являются:
экспертизы, проводимые одновременно двумя разработчиками двух документов - предшествующим и последующим. Техника проведения таких экспертиз специально разработана. Часто процесс
[Введите текст]
верификации принимает форму согласования обоими разработчиками этих документов (артефактов).
статический анализ кода с проверкой правил корректности его написания,
формальные методы анализа правильности моделей программ, записанных на специальных
языках моделирования, обеспечивающих этот процесс.
Впоследнем случае доказанная правильность модели программы не говорит о правильности самой программы. Поэтому последний метод несмотря на давние и широкие обсуждения в практике программирования распространения не получил .
Рис3. Иллюстрация к вопросу правильности передачи информации между разработчиками и заказчиком.
16
13. Спиральная модель ЖЦ ПО.
Для некоторого типа программных систем первоначальные требования, к которым недостаточно определены, итеративный процесс разработки ставится во главу угла. В этом случае даже желательно переходить к следующему этапу, перечень которых примерно тот же, не завершив текущий. При этом имея ввиду, что недостающую работу можно выполнить при следующей итерации.
Главная задача как можно быстрее достичь работоспособного ПО, активизируя тем самым процесс уточнения и дополнения требований. Это так называемая спиральная модель ЖЦ ПО, изображенная на рис. 4.
Эта схема ЖЦ ПО для торопливых разработчиков и для ПО, некачественные первые версии которого допустимы по функциональному назначению ПО. В действительности «тяжелые технологии» разработки по каскадному жизненному циклу также имеют итеративный характер проектирования ПО по стадиям формирования требований, технических предложений, эскизного проекта и т.п., предусмотренных при проектировании СТС соответствующими стандартами проектирования.
Эти технологии ориентированны на средний уровень квалификации программистов, требуют документирования всех работ, детального и долгосрочного планирования и в глазах многих являются избыточно усложненными.
[Введите текст]