Технологии программирования
Шрифт:
• На тестирование расходуется основная часть средств и времени проекта.
• При разработке любой программы или системы тестирование отбирает большую часть времени и денег. Учитывая это, необходимо определить не очень большое количество тестов, обеспечивающих высокую вероятность обнаружения тех или иных ошибок.
• Аксиомы тестирования определяют основные цели и принципы тестирования.
• Если из текста исключить отладочные печати, то существенно усложнится сопровождение.
• Существуют два крайних подхода к проектированию тестов: стратегия "черного ящика" и стратегия "белого ящика". Бесполезно следовать только одному подходу. Необходимо строить стратегию тестирования
• При проектировании многомодульных программ используется восходящее тестирование (автономное тестирование нижних модулей, не вызывающих других модулей) и нисходящее тестирование (применение заглушек нижних уровней). Но у каждого из них есть свои достоинства и недостатки. Возможны также варианты:
— модифицированный нисходящий метод — согласно этому методу каждый модуль автономно тестируется перед включением в программу, собираемую сверху вниз;
— метод большого скачка — каждый модуль тестируется автономно, далее модули просто интегрируются в готовую программную систему;
— метод сандвича — по этому методу реализация и тестирование ведутся одновременно сверху и снизу, и два этих процесса встречаются в заранее намеченной временной точке;
— модифицированный метод сандвича — нижние модули тестируются строго снизу вверх, а модули верхних модулей сначала тестируются автономно, а затем собираются нисходящим методом. Этот метод апробирован при создании ОС.
• Существует деление тестирования на публичное и приватное. Часто используются оба способа: сначала программа проходит приватное тестирование, а затем, когда все крупные "проколы" уже выявлены, начинается ее публичное тестирование, чтобы собрать отзывы широкого круга пользователей.
Контрольные вопросы
1. Назовите основные аксиомы тестирования.
2. В чем преимущество отладочной печати?
3. Какие свойства программного обеспечения оказывают наибольшее влияние на процесс обнаружения ошибок при тестировании?
4. Для чего нужны эмпирические модели? Как производится их анализ?
5. Какова связь между процессами тестирования и проектирования?
6. В чем достоинства и недостатки восходящего и нисходящего проектирования? Ответ обосновать на примере конкретной программы.
7. Какой тест максимально быстро обнаружит зацикливание?
8. Выделите несколько основных критериев при выборе параметров тестирования.
Глава 12
МЕНЕДЖМЕНТ ПРОГРАММНЫХ РАЗРАБОТОК
12.1. УПРАВЛЕНИЕ РАЗРАБОТКОЙ ПРОГРАММНЫХ СИСТЕМ
Управление разработкой программных систем (software management) — это деятельность, направленная на обеспечение необходимых условий для работы коллектива разработчиков программного обеспечения (ПО), на планирование и контроль деятельности этого коллектива с целью обеспечения требуемого качества ПО, выполнения сроков и бюджета разработки ПО. Часто эту деятельность называют также управлением программным проектом (software project management). Здесь под программным проектом (software project) понимают всю совокупность работ, связанную с разработкой ПО, а ход выполнения этих работ называют развитием программного проекта (software project progress).
К необходимым условиям работы коллектива относят помещения, аппаратно-программные средства разработки, документацию и материально-финансовое обеспечение. Планирование и контроль предполагают разбиение всего процесса разработки
Хотя виды деятельности по управлению разработкой ПО могут быть весьма разнообразными, в зависимости от специфики разрабатываемого ПО и организации работ по его созданию можно выделить некоторые общие процессы (виды деятельности) по управлению разработкой ПО:
— составление плана-проспекта по разработке ПО;
— планирование и составление расписаний по разработке ПО;
— управление издержками по разработке ПО;
— текущий контроль и документирование деятельности коллектива по разработке ПО;
— подбор и оценка персонала коллектива разработчиков ПО.
Составление плана-проспекта по разработке ПО включает формулирование предложений о том, как выполнять разработку ПО. Прежде всего должно быть зафиксировано, для кого разрабатывается ПО:
• для внешнего заказчика;
• для других подразделений той же организации;
• является инициативной внутренней разработкой.
В плане-проспекте должны быть установлены общие очертания работ по созданию ПО и оценена стоимость разработки, а также предоставляемые для разработки ПО материально-финансовые ресурсы и временные ограничения. Кроме того, он должен включать обоснование, какого рода коллективом должно разрабатываться ПО (специальной организацией, отдельной бригадой и т. п.). И наконец, должны быть сформулированы необходимые технологические требования (включая, возможно, и выбор подходящей технологии программирования).
Планирование и составление расписаний по разработке ПО — это деятельность, связанная с распределением работ между исполнителями и по времени их выполнения в рамках намеченных сроков и имеющихся ресурсов.
Управление издержками по разработке ПО — это деятельность, направленная на обеспечение подходящей стоимости разработки в рамках выделенного бюджета. Она включает оценивание стоимости разработки проекта в целом или отдельных его частей, контроль выполнения бюджета, выбор подходящих вариантов его расходования. Эта деятельность тесно связана с планированием и составлением расписаний в течение всего периода выполнения проекта. Основными источниками издержек являются затраты на аппаратное оборудование (hardware), вербовку и обучение персонала, оплату труда разработчиков.
Текущий контроль и документирование деятельности коллектива по разработке ПО — это непрерывный процесс слежения за ходом развития проекта, сравнения действительных состояния и издержек с запланированными, а также документирования различных аспектов развития проекта. Этот процесс помогает вовремя обнаружить затруднения и предсказать возможные проблемы в развитии проекта.
Подбор и оценка персонала коллектива разработчиков ПО — это деятельность, связанная с формированием коллектива разработчиков ПО. Имеющийся в распоряжении штат разработчиков далеко не всегда будет подходящим по квалификации и опыту работы для данного проекта. Поэтому приходится частично вербовать подходящий персонал и частично организовывать дополнительное обучение имеющихся разработчиков. В любом случае в формируемом коллективе хотя бы один его член должен иметь опыт разработки программных средств (систем), сопоставимых с ПО, которое требуется разработать. Это поможет избежать многих простых ошибок в развитии проекта.