Технологии программирования
Шрифт:
12.10. РЕАЛИЗАЦИЯ
Обычно на этапе кодирования всплывают все неприятные проблемы, которые только можно себе представить. Чем больше проект, тем больше проблем. Вот почему первые три шага так важны.
Если все из вышеописанных шагов полностью пройдены, то реализация программы значительно упрощается. В идеале все потенциальные узлы и ловушки должны быть предусмотрены и обойдены. Техническая спецификация может и должна быть передана команде программистов, выполняющих непосредственное кодирование, чтобы они могли записывать код, согласно детализированному проекту задачи. Любые проблемы, возникающие на этом этапе, должны отслеживаться программистами
Обзор кода делается программистами — кодировщиками программ на специальной сессии (встрече). Как и на этапе обзора проекта, при обзоре кода "отлавливается" большое количество неточностей и ошибок, выявляются неоптимальные участки программы. Обзор кода позволяет также увидеть различным членам группы разработчиков фактический код, выполненный коллегами по проекту. Поскольку программирование является творческим процессом, то каждый член команды представляет видение одной и той же проблемы по-разному. Кто-то решает данный конкретный вопрос лучше, кто-то хуже. Обзор кода позволяет выявить хуже написанные участки программы и при необходимости переписать их, воспользовавшись советом более опытного члена команды. Также рассмотрение различных приемов, технологий и подходов к программированию позволяет воспользоваться ими для решения предстоящих проблем в последующих проектах. Особенно это полезно для новичков команды, хотя, как известно, "даже старую собаку можно научить новым трюкам".
12.11. СИСТЕМНОЕ ТЕСТИРОВАНИЕ
Стадия тестирования системы начинается, после того как большинство модулей системы уже завершены. Тестирование может состоять из трех отдельных фаз:
— системный тест, или лабораторные испытания;
— опытная эксплуатация;
— приемочный тест.
Альфа-тест (лабораторные испытания). Данная фаза тестирования преследует две цели. Во-первых, этот тест должен подтвердить, что все фрагменты правильно интегрированы в систему. Это позволяет группе тестирования начать полное тестирование всей системы. Обычно используется некоторая однородная технология тестирования для всех компонент системы, позволяющая определить соответствие всех частей определенным, заранее предусмотренным параметрам. Один из путей создания сценариев тестирования — создавать методы тестирования в процессе непосредственного кодирования.
Лабораторное тестирование — последняя возможность разработчиков исправить все обнаруженные ошибки, прежде чем система будет передана конечным пользователям. Бета-тестирование — не та стадия, на которой программисты хотели бы выявлять серьезные сбои разработанной системы, поэтому лабораторное тестирование должно проходить максимально полно. Если альфа-тестирование проведено некачественно, общий процесс тестирования может занять продолжительное время, так как исправление ошибок, выявленных на последующих стадиях тестирования, занимает значительно больше времени из-за невозможности исправления их "на лету". Любые обнаруженные проблемы должны протоколироваться, чтобы хронология проблем и их устранения была доступна при возникновении последующих вопросов о ранее существовавших проблемах.
Желательно, чтобы программное обеспечение не передавалось для опытной эксплуатации, пока все известные проблемы не будут решены. В действительности программное обеспечение часто выпускается для бета-тестирования с уже найденными, но еще не разрешенными проблемами в связи с нехваткой времени и окончанием сроков разработки проекта. Данное упущение приводит к значительным непредвиденным
Бета-тестирование — это следующая фаза общего тестирования, при которой программное обеспечение поставляется ограниченному кругу конечных пользователей для более жесткого тестирования. Хорошо известно, что пользователи иногда используют программное обеспечение не совсем для тех целей, для которых оно предназначалось. Поэтому они часто могут находить ошибки в тех местах программы, над которыми в течение данного времени проводились лабораторные испытания, не нашедшие никаких нарушений. Это необходимо ожидать и не отрицать возможности возврата к предыдущей фазе — лабораторному тестированию. В данных случаях часто помогают протоколы обнаруженных и фиксированных ошибок.
12.12. ПРИЕМОЧНЫЙ ТЕСТ
Приемочный тест. Приемочный тест становится простой формальностью, если предыдущие стадии тестирования успешно завершены. Используя информацию о том, что все обнаруженные ошибки уже исправлены, приемочный тест просто подтверждает, что никаких новых проблем не обнаружено и программное обеспечение готово для выпуска. Очевидно, что чем больше существует реальных или потенциальных пользователей вашего продукта, тем более важным является приемочный тест. Когда производится промышленное тиражирование и рассылка более трех сотен тысяч дисков, хочется вдвойне удостовериться, что программа написана без ошибок и все явные и неявные проблемы были решены. Конечно, если предыдущие стадии не прошли успешно, то приемочный тест является единственной возможностью предотвратить затраты на изменение и дополнение поставляемого продукта.
12.13. ПОСЛЕРЕАЛИЗАЦИОННЫЙ ОБЗОР
Данный этап — наилучшая возможность осуществить обзор созданного программного обеспечения, прежде чем будет начат новый проект. Типичные вопросы, возникающие после сдачи программного проекта пользователю-заказчику:
• Что мы делали правильно?
• Что мы делали неправильно?
• Какие этапы были наиболее полезными, а какие ненужными?
• Отсутствовало ли что-нибудь на каком-либо этапе разработки, что бы помогло усовершенствовать программный продукт?
12.14. СОПРОВОЖДЕНИЕ ПРОГРАММ
Сопровождение программ — "ложка дегтя" для каждого программиста. Это всегда помеха при начале разработки какого-либо нового проекта, заставляющая отвлекаться от разработки проекта и возвращаться к старым программам и старым проблемам. Ничто не делает сопровождение настолько непривлекательным, как плохо документированный код, недостаточно полное начальное проектирование и отсутствие внешней документации.
Если большинство шагов разработки выполнено правильно, то сопровождение не будет вызывать серьезных проблем, а будет элементарной технической поддержкой и модификацией программного обеспечения.
ВЫВОДЫ
• Разработка программных систем — сложное мероприятие. Можно выделить следующие общие процессы по управлению разработкой ПО: составление плана-проспекта по разработке ПО — планирование и составление расписаний по разработке ПО; управление издержками по разработке ПО; текущий контроль и документирование деятельности коллектива по разработке ПО; подбор и оценка персонала коллектива разработчиков ПО.
• Обычно в организации одновременно разрабатывается несколько программных проектов. Для оптимального качества и скорости работы необходимо верно структурировать управление организацией.