
- •Вопрос 1. Понятие технологии программирования.
- •Вопрос 2. Жизненный цикл программы.
- •Реализация
- •Вопрос 3. Постановка задачи. Оценка осуществимости.
- •Вопрос 4. Планирование.
- •Вопрос 5. Управление.
- •Вопрос 6. Тестирование и обеспечение качества.
- •Вопрос 7. Групповая разработка, управление версиями.
- •Вопрос 8. Организация коллектива разработчиков.
- •Вопрос 9. Документирование.
- •Вопрос 10. Сопровождение.
- •Вопрос 11. Управление качеством. Стандарты iso 9000, cmm, spice.
- •Вопрос 12. Case-средства.
- •Use case (описание словами всех интерфейсов – случаев использования). Диаграмма функций
- •Диаграмма объектов.
- •Диаграмма классов.
- •Конвертер из sdl в объектный программный код
- •Вопрос 13. Реинжиниринг программных систем.
- •Часть II. Технология программирования встроенных систем реального времени
- •Вопрос 14(1). Понятие встроенной системы реального времени.
- •Вопрос 15(2). Инструментальная и целевая эвм.
- •Вопрос 16(3). Комплекс вычислительных средств, сбои и отказы.
- •Вопрос 17(4). Работы с временными интервалами.
- •Вопрос 18(5). Организация вычислительного процесса.
- •Вопрос 19(6). Технология rtst.
- •Вопрос 20(7). Технология Real. Статическая модель.
- •Вопрос 21(8). Технология Real. Динамическая модель.
Вопрос 4. Планирование.
При планировании полезно строить сетевой график. Дуги – работы (вместе с длительностью), вершины – промежуточные состояния (в вершина написаны действия в совершенном виде – «оборудование закуплено», «коллектив сформирован»). На таком графике видна последовательность работ, их длительность.
Критический путь – самый длинный путь от начала до конца.
Все ветви должны быть равнонагружены (хотя это тоже плохо – нет резерва).
Если
сроки срываются, то либо увеличивать
ресурсы, либо раздвигать сроки.
Планирование неразрывно связано с управлением.
Добавлять людей, деньги («стимулирование»). //У МикроМягких же за срыв сроков лишают премии весь коллектив.
Кроме сетевого графика можно также строить диаграмму Ганта:
-По вертикали выписываем работы, по горизонтали – сроки, ставим промежутки исполнения – удобно смотреть, что должно быть завершено в настоящий момент, какие работы идут. //Диаграмма Ганта более удобна при управлении, чем при планировании.
Управление должно быть постепенным, регулярным. Должен быть запас ресурсов.
Если горит работа на критическом пути, то надо сокращать сроки на последующие работы (увеличивать технологии производства).
//Основа всего – ТЕХНИЧЕСКАЯ ВООРУЖЕННОСТЬ
Вопрос 5. Управление.
Управление – целенаправленная деятельность по достижению некоторой цели.
При управлении полезно использовать сетевой график, построенный при планировании. Дуги – работы (вместе с длительностью), вершины – промежуточные состояния (в вершина написаны действия в совершенном виде – «оборудование закуплено», «коллектив сформирован»). На таком графике видна последовательность работ, их длительность.
Критический путь – самый длинный путь от начала до конца.
Все ветви должны быть равнонагружены (хотя это тоже плохо – нет резерва).
Если сроки срываются, то либо увеличивать ресурсы, либо раздвигать сроки.
Планирование неразрывно связано с управлением.
Добавлять людей, деньги («стимулирование»). //У МикроМягких же за срыв сроков лишают премии весь коллектив.
Кроме сетевого графика можно также строить диаграмму Ганта:
-По вертикали выписываем работы, по горизонтали – сроки, ставим промежутки исполнения – удобно смотреть, что должно быть завершено в настоящий момент, какие работы идут. //Диаграмма Ганта более удобна при управлении, чем при планировании.
Управление должно быть постепенным, регулярным. Должен быть запас ресурсов.
Если горит работа на критическом пути, то надо сокращать сроки на последующие работы (увеличивать технологии производства).
//Основа всего – ТЕХНИЧЕСКАЯ ВООРУЖЕННОСТЬ
Вопрос 6. Тестирование и обеспечение качества.
Программирование – конструктивный процесс, требует высокой квалификации, неточность (оптимистичность).
Тестирование – деструктивный процесс, низкая квалификация, дотошность (пессимистичность).
Для чего нужно тестирование:
повышает качество продукта ( его стоимость)
тестирование – процесс исполнения с целью нахождения ошибок
Хороший тест – с большой вероятностью находит ошибку.
Как тестировать:
тестирование не должно проводиться авторами исходных текстов
должна быть конкуренция между программистами и тестировщиками (писать с минимальным числом ошибок, тестировать с начала работ)
должно проверяться и ошибочное поведение (сообщения об ошибках должны быть осмысленными)
вероятность ошибки пропорциональна числу уже найденных ошибок
всегда чётко должен быть оговорен конечный результат
Обычно малые фрагменты программы содержат большое количество ошибок.
Виды тестирования:
чёрный ящик (без просмотра исходного текста)
белый ящик
test-coverage – покрытие тестами возможных вариантов.
модульное тестирование
комплексное тестирование
получасовое тестирование
Quality assurance (оценка качества)
Отдельная группа, которой запрещено заниматься разработкой, общаться с разработчиками.
QA:
эргономика
по документации выполнить установку
тестирование
эффективность (время запуска, скорость работы)
QA должна быть как придирчивый пользователь.
Developers – (программа) – QA – (программный продукт) – users
Если QA нашла ошибки, страдают разработчики.
Если недовольны пользователи, страдает QA.