- •Лекции по курсу «Технология программирования». Два подхода к разработке программных средств
- •Основные задачи, решаемые при разработке пс
- •Основные понятия и определения, используемые при разработке сложных кп
- •Особенности кп срмв.
- •Основные требования к кп срмв
- •Жизненный цикл сложных кп
- •Каскадная модель жизненного цикла
- •Итеративная модель (Спиральная модель) разработки по
- •Документация на сложные кп
- •Примеры итеративных процессов разработки
- •Виды программ и программных документов
- •Пояснительная записка
- •Техническое задание
- •Стадии разработки
- •Общие требования к программным документам
- •Спецификация
- •Формуляр
- •Текст программы
- •Описание программы
- •Программа и методика испытаний
- •Руководство системного программиста
- •Руководство оператора
- •Типовая структура программы и программного модуля
- •Понятие резидентных и кросс–систем автоматизации
- •Проблемы стандартизации при разработки пс
- •Принципы разработки больших кп
- •Принципы организации коллективов разработчиков кп
- •Тестирование и отладка по
- •Принципы тестирования.
- •Критерии тестирования Критерии «Черного ящика»:
- •Критерии «Белого ящика»:
- •Виды тестирования
- •Основные способы получения эталонов
- •Типичные ошибки при проектировании кп
- •Технологические ошибки
- •Программные ошибки
- •Алгоритмические ошибки
- •Системные ошибки
- •Динамика изменения количества сложныхошибок кп при отладке
- •Определение рациональной длительности отладки
- •Основные принципы отладки
- •Методы отладки
- •Принципы отладки
- •Принципы комплексной отладки и испытаний кп
- •Комплексная отладка
Принципы разработки больших кп
Планирование должно базироваться насостоянии системы в целом и на состоянии ее основных частей, на прогнозирование изменения характеристик при взаимодействии с заказчиком, на оценках развития процессов обнаружения и устранения ошибок программы.
Достигается это путем изучения и обобщения опыта разработки различных как малых, так и больших КП.
Каждый долгосрочный план проектирования должен содержать:
Формулирование общих целей разработки КП и частных целей разработки его подсистем;
Стратегию проектирования(в частности эксперименты по отладке);
Потребности в ресурсах различных видов;
Создание структуры коллектива разработчиков;
Создание технологии управления процессами проведения работ, и координации их взаимодействия.
Формулировка общих целей должна проводиться конкретно, с указанием количественных характеристик КП и их алгоритмов, которые должны быть созданы.На практике этот этап представляется исключительно трудным из-за того что, как правило, до начала разработки, с одной стороны, трудно определить точные объемы работ, а с другой стороны часто отсутствует достаточное понимание предметной области, что в основном связано с трудностями взаимодействия с заказчиком.
Необходимо намечать достижимые пределы по количественным и качественным параметрам КП, а также возможные сроки их достижения.
Стратегия проектирования должна обеспечивать выполнение поставленных задач с минимальными затратами. При этом она определяет:
Принципы и этапы проведения проектирования, опираясь при этом на понятие жизненного цикла.
Последовательность и длительность разработки алгоритмов и программ, учитывая то, что практически ни один проект не завершается в предполагаемые заранее сроки.
|
Случай 1:
5% - функциональная проработка (исследование предметной области);
45% кодирование или написание текста программы (сравнительно большая величина, т.к. приходится исправлять достаточно большое количество грубых ошибок, допущенных при анализе предметной области);
50% отладка.
Случай 2:
35% функциональная проработка (исследование предметной области);
10% кодирование или написание текста программы;
35% отладка.
Для больших и очень больших КП необходимо использовать все доступные средства автоматизации, которые, при этом могут приводить к возникновению дополнительных вспомогательных работ, например к разработке программ автоматической генерации тестов.
В реальных ситуациях второй подход выигрывает очень существенно.
Принципы организации коллективов разработчиков кп
Даже большая группа квалифицированных разработчиков, не организованная структурно в коллектив, в котором определены обязанности и ответственности каждого, не выполнит разработку КП на десятки и сотни тысяч операторов.
Условная оценка производительности труда:
1970 – 0.1 оператор/человек в день;
1980 – 1;
1990 – 5;
Настоящее время – 10.
Это суммарная оценка после завершения проекта с учетом возможных инструментальных разработок, проведения системного анализа, разработки структуры КП.
Для разработки больших и очень больших КП требуется привлечение достаточно большого числа разработчиков, различающихся как по специализации, так и по квалификации.
Опыт показывает, что один и тот же коллектив должен отвечать за конкретные виды разработок, начиная от постановки задач, непосредственного проектирования и разработки, отладки и внедрения, а также обучение пользователей и тп. Иначе невозможно определить ответственность за те или иные этапы работы, за наличие ошибок и их исправление.
Из этого непосредственно следует необходимость организации коллектива разработчиков. Ранее это называлось бригадой программистов.
Принято рассматривать 2 основных варианта построение бригады: «хирургическая бригада» и «производственная бригада»:
Организация «хирургической бригады» строится по следующему принципу:
Главный хирург. Во главе бригады стоит программист исключительно высокой квалификации (главный хирург), который определяет структуру КП, пишет основной код а также готовит основные принципы, вкладывающиеся в документацию;
Заместитель руководителя – решает те же задачи что и руководитель, действуя под его руководством и готовый в любое время его заменить. Основная задача – обсуждение, критика, советы, возможная связь с другими бригадами. Личной ответственности, при наличии руководителя, ни за какую часть программы не несет, но готов. Имеет возможность и квалификацию, чтобы в любой момент времени заместить главного программиста;
Администратор (технический руководитель) – его задачами является согласование и руководство всеми административными вопросами, как внутри, так и вне бригады, связь с заказчиком;
Редактор – его задачами являются критика документации руководителя а также непосредственная работа над документацией, возможно с какими-либо помощниками;
Инструментальщик – опытный системный программист, который разрабатывает и поддерживает системные и инструментальные ПС (тесты, библиотеки, инструментальные средства разработки и т.п.);
Наладчик – человек, готовящий тесты, имитаторы, генераторы тестов, определяет ход тестирования, регистрирует процесс отладки (возможно с помощником.);
Дополнительно имеется 2-3 технических работника: секретарь, библиотекарь, уборщица;
При этом программу, по сути дела, создает очень ограниченное количество людей вплоть до 2-3 человек;
Использование такого подхода организации коллектива разработчиков характерно для создания стабильных состоявшихся КП, когда не требуется постоянное изучение предметной области.
Структуру «производственной бригады» можно представить следующим образом:
Руководитель, как правило администратор - бывший опытный программист (хотя и не обязательно), основными задачами которого являютсяразработка ТЗ, коррекция частных ТЗ, определение тестов и порядков отладки.
Заместитель руководителя - решает те же задачи, что и руководитель, но при этом несет меньшую личную ответственность. В любое время может заменить руководителя.
«Главный инженер» - опытныйдействующий программист и организатор. Задачи – создание структуры всего проекта, организация разработки, возможно решение кадровых вопросов.
Группа системного анализа во главе с руководителем, которая проводит изучение предметной области. Состав группы может «динамически» меняться в зависимости от изменения предметной области.
Группа программистов функциональных программ (также во главе с руководителем) - тесно связана с группой системного анализа. У руководства группы и ее подразделений стоят опытные программисты возможно каждый со своей специализацией. Важно отметить, что в составе этой группы находится, и на практике это бывает всегда, специалисты с разной квалификацией.
Группа программистов – инструментальщиков. Задачи этой группы совпадают с инструментальщиками хирургической бригады. Часто эта группа состоит из 1 человека.
Группа отладчиков во главе с руководителем. Основными задачами ее являются знание предметной области, структуры и особенностей КП в целом и его подсистем, выделение основных задач, которые в основном (и к сожалению), и проверяются. Крайне желательно чтобы члены группы отладчиков не писали никаких кодов, хотя на практике это не всегда достижимо.
Группа технических писателей, которые создают всю программную документацию. Это люди, хорошо разбирающиеся в работе КП, в целях, решаемых комплексом и его реализации и должны быть хорошо ознакомлены с принятыми стандартами. При этом группа может быть весьма ограничена в количестве.
Технический персонал, который включает в себя специалистов по аппаратной части, администраторов, секретарей и т.п.
Подобная организация коллектива характерна для разработки больших и очень больших КП, в особенности при периодическом изменении предметной области.
