- •Понятие по: программа, программный комплекс, программный продукт, системный программный продукт.
- •Философия развития по. Тенденция развития по.
- •Инженерия по. Тенденции затрат на по.
- •Профессиональные и этические требования к специалистам по по. Основные проблемы, стоящие перед специалистами по по.
- •Управление качеством по и работа менеджеров по качеству.
- •Стандарт iso 9000 и управление качеством.
- •Вероятностные методы в оценке качества по.
- •Стандарты на продукцию и процесс разработки по.
- •Стандарты на техническую документацию.
- •Измерение показателей по. Характеристики качественного по.
- •Показатели программного продукта.
- •Объектно-ориентированные показатели.
- •Обзор моделей создания по.
- •Каскадная модель. Достоинства и недостатки каскадной модели.
- •Эволюционная модель. Два подхода к реализации эволюционного метода.
- •Формальная разработка систем.
- •Разработка по на основе ранее созданных компонентов.
- •Модель Миллса. Экстремальное программирование.
- •Спиральная модель разработки. Спиральная модель жизненного цикла разработки по
- •Спецификация по. Основные этапы.
- •Этапы процесса проектирования.
- •Управление проектами. Отличие программных проектов от технических.
- •Планирование проекта. График работ.
- •Анализ рисков.
- •Современный подход к проектированию по. V-цикл проектирования и разработки по.
- •Организация групп программистов.
- •Планирование проекта. План проекта. Контрольные метки этапов работ. График работ. Временные и сетевые диаграммы.
- •Методы проектирования.
- •Программирование и отладка.
- •Объектно-ориентированный анализ и проектирование (ооа/ооп). Методология объектно-ориентированного моделирования. Понятие объекта.
- •Сложные объекты. Использование объектной технологии. Объекты м классы объектов в uml. Взаимодействие между объектами.
- •Моделирование классов и отношений.
- •Пятиэтапный процесс тестирования. Альфа-тестирование, бетта-тестирование.
- •Эволюция программных систем.
- •Разработка по на основе визуального моделирования. Case – средства для разработки по. Ibm Rational & Rational Rhapsody.
- •Стандарты, регламентирующие Жизненный цикл по и процессы разработки.
- •Rup. Фазы и дисциплины унифицированного процесса.
- •Анализ требований на фазе начало up. Артефакты начальной фазы.
- •Стандарт uml 2.2.
- •Этапы проектирования ис с применением uml.
- •Диаграммы прецендентов.
- •Диаграммы классов.
- •Диаграмма объектов.
- •Диаграммы взаимодействия.
- •Метод ecm (Enterprise Component Modeling) в uml. Опишите игру в кости с помощью uml-diagram.
- •Методы верификации объектно-ориентированных программ.
- •Метод тестирования программ.
- •Организация проведения тестирования. Классификация ошибок.
- •Требования к покрытию критичных приложений тестами.
Программирование и отладка.
Отла́дка — этап разработки компьютерной программы, на котором обнаруживают, локализуют и устраняют ошибки. Чтобы понять, где возникла ошибка, приходится :
узнавать текущие значения переменных;
выяснять, по какому пути выполнялась программа.
Существуют две взаимодополняющие технологии отладки.
Использование отладчиков — программ, которые включают в себя пользовательский интерфейс для пошагового выполнения программы: оператор за оператором, функция за функцией, с остановками на некоторых строках исходного кода или при достижении определённого условия.
Вывод текущего состояния программы с помощью расположенных в критических точках программы операторов вывода — на экран, принтер, громкоговоритель или в файл. Вывод отладочных сведений в файл называется журналированием.
Место отладки в цикле разработки программы
Типичный цикл разработки, за время жизни программы многократно повторяющийся, выглядит примерно так:
Программирование — внесение в программу новой функциональности, исправление ошибок в имеющейся.
Тестирование (ручное или автоматизированное; программистом, тестером или пользователем; «дымовое», в режиме чёрного ящика или модульное…) — обнаружение факта ошибки.
Воспроизведение ошибки — выяснение условий, при которых ошибка случается. Это может оказаться непростой задачей при программировании параллельных процессов и при некоторых необычных ошибках, известных как гейзенбаги.
Отладка — обнаружение причины ошибки.
Инструменты отладки
Отладчик представляет из себя программный инструмент, позволяющий программисту наблюдать за выполнением исследуемой программы, останавливать и перезапускать её, прогонять в замедленном темпе, изменять значения в памяти и даже, в некоторых случаях, возвращать назад по времени.
Также полезными инструментами в руках программиста могут оказаться:
Профилировщики. Они позволят определить сколько времени выполняется тот или иной участок кода, а анализ покрытия позволит выявить неисполняемые участки кода.
API логгеры позволяют программисту отследить взаимодействие программы и Windows API при помощи записи сообщений Windows в лог.
Дизассемблеры позволят программисту посмотреть ассемблерный код исполняемого файла
Сниферы помогут программисту проследить сетевой трафик генерируемой программой
Сниферы аппаратных интерфейсов позволят увидеть данные которыми обменивается система и устройство.
Логи системы.
Использование языков программирования высокого уровня, таких как Java, обычно упрощает отладку, поскольку содержат такие средства как обработка исключений, сильно облегчающие поиск источника проблемы. В некоторых низкоуровневых языках, таких как ассемблер, ошибки могут приводить к незаметным проблемам — например, повреждениям памяти или утечкам памяти, и бывает довольно трудно определить что стало первоначальной причиной ошибки. В этих случаях, могут потребоваться изощрённые приёмы и средства отладки.
Инструменты, снижающие потребность в отладке
Другое направление — сделать, чтобы отладка нужна была как можно реже. Для этого применяются:
Контрактное программирование — чтобы программист подтверждал другим путём, что ему на выходе нужно именно такое поведение программы. В языках, в которых контрактного программирования нет, используется самопроверка программы в ключевых точках.
Модульное тестирование — проверка поведения программы по частям.
Статический анализ кода — проверка кода на стандартные ошибки «по недосмотру».
Высокая культура программирования, в частности, паттерны проектирования, соглашения об именовании и прозрачное поведение отдельных блоков кода — чтобы объявить себе и другим, каким образом должна вести себя та или иная функция.
Широкое использование проверенных внешних библиотек.