Жизненный цикл ПО САПРНосо вая полость ^Д Сагиттальный разре
Язык, вид спереди Вид спереди ПОЛОСТЬ РТА Носо вая полость ^Д Сагиттальный разре
Язык, вид спереди Вид спереди Жизненный цикл ПО САПР
Программное обеспечение САПР представляет собой сложную программную систему, включающую в себя десятки и сотни компонентов. Создание ПО САПР – трудная научно-техническая задача, для решения которой требуются большие материальные затраты. Так, известны САПР, ПО которых насчитывает более 500 тыс. операторов языка программирования. Разработка такого ПО требует сотен и тысяч человеко-часов. Затраты на разработку и сопровождение ПО составляют подавляющую долю всех затрат на создание и эксплуатацию САПР. Высокая стоимость ПО объясняется низкой скоростью роста производительности труда программистов по сравнению с темпами роста производительности труда в других сферах производства. Средняя производительность труда программистов в организациях, занимающихся промышленной разработкой ПО, составляет 10000–20000 операторов в месяц. В отличие от программ индивидуального пользования, предназначенных для обслуживания только их разработчика, законченный программный продукт: 1) имеет универсальное назначение, ориентирован на применение многими пользователями и в ряде организаций; 2) предназначен для работы в комплексе с другими компонентами ПО; 3) имеет специальные средства модификации и расширения; 4) всесторонне отлажен; 5) описан в тщательно составленной документации. Стоимость программного продукта приблизительно в 9 раз выше стоимости программы индивидуального назначения и с увеличением его сложности растет по квадратичному закону. Для оценки сложности ПО используются два основных показателя: 1) количество операторов; 2) количество и типы взаимосвязей компонентов ПО между собой. Этот показатель более важный, так как именно он определяет эффективность декомпозиции исходной задачи разработки на ряд вложенных подзадач разработки его компонентов. Поэтому, в частности, трудоемкость разработки управляющих программ выше (приблизительно в 4 раза) трудоемкости разработки прикладных программ. С конца 60-х годов, когда очевидным стало противоречие между потребностями общества в системах электронной обработки информации и возможностями создания ПО, началось становление новой научной дисциплины «Методы разработки программного обеспечения». В рамках этой дисциплины предлагается рассматривать цикл жизни (цикл разработки) ПО состоящим из шести основных этапов: 1) анализ требований, предъявляемых к системе; 2) разработка спецификаций на систему; 3) проектирование; 4) кодирование; 5) тестирование; 6) сопровождение и эксплуатация. На рис. 1.1 приведено соотношение временных затрат по этапам цикла жизни ПО.
Этап 1. Анализ требований, предъявляемых к ПО САПР. Основу этих требований составляют требования, перечисленные выше (см. Введение). Они дополняются требованиями заказчика, включающими пространственно-временные ограничения, необходимые функции и возможности, режимы функционирования, требования точности и надежности и т. д., т. е. вырабатывается описание системы с точки зрения пользователя. Эта работа выполняется группой системных аналитиков, конечным результатом деятельности которых должно стать полное и непротиворечивое описание требований к проектируемой системе на языке, понятном разработчикам ПО. На данном этапе выявляются проектные процедуры и операции, автоматизация которых возможна и целесообразна, изучаются особенности математических моделей проектируемых объектов, выбирается или разрабатывается математическое обеспечение. Принимается решение о типах используемых средств разработки, рассматривается возможность использования готовых компонентов ПО. Здесь же решаются вопросы планирования работ, устанавливается их очередность, этапность сдачи подсистем САПР в эксплуатацию. Этап 2. Определение спецификаций на ПО САПР. На этом этапе производится точное описание функций САПР, разрабатываются и утверждаются входные и промежуточные языки, форма выходной информации для каждой из подсистем, описывается возможное взаимодействие с другими программными комплексами, специфицируются средства расширения и модификации ПО, разрабатываются интерфейсы обслуживающих и проектирующих подсистем, решаются вопросы организации базы данных, утверждаются основные алгоритмы. Итогом выполнения данного этапа являются эксплуатационные и функциональные спецификации, содержащие конкретное описание ПО. Разработка спецификаций требует тщательной работы системных аналитиков, постоянно контактирующих с пользователями, в большинстве случаев не способными самостоятельно сформулировать четкие требования к системе. Эксплуатационные спецификации содержат сведения о быстродействии ПО, затратах памяти, требуемых технических средствах, надежности и т. д. Функциональные спецификации определяют функции, которые должна выполнять САПР, т. е. в них определяется, что надо делать, но без указания, как. Спецификации должны быть полными, точными и ясными (понятными). Полная спецификация исключает необходимость получения иных сведений, кроме содержащихся в спецификациях. Точная спецификация не позволяет толковать ее в разных смыслах. Ясная спецификация должна быть легко написана и прочитана как пользователем ПО, так и его разработчиком, причем оба они должны понимать ее совершенно однозначно. Значение спецификаций при создании ПО определяется тремя факторами: 1) спецификации являются заданием на разработку ПО, и строгое их выполнение – закон для разработчика; 2) спецификации используются для проверки готового ПО (выполняет ли оно требуемые функции и в какой степени); 3) спецификации, являясь неотъемлемой частью программной документации, облегчают сопровождение и модификацию ПО. Завершается второй этап цикла жизни подготовкой тестов, на которых будут проводиться испытания при приемке САПР. На подготовленные тестовые данные в дальнейшем не будет оказывать влияние конкретная реализация системы. Этап 3. Проектирование ПО САПР. На этом этапе формируется структура ПО и разрабатываются алгоритмы. Устанавливается состав модулей с разделением их на иерархические уровни на основе изучения схем алгоритмов для типовых задач проектирования. Выбирается структура информационных массивов, составляющих базу данных. Фиксируются межмодульные интерфейсы. Для эффективной реализации данного этапа разработки ПО предложены некоторые методы. Эти методы имеют одну общую цель, реализуемую разными способами, – иерархическое разбиение сложных задач создания ПО на подзадачи меньшей сложности. Результатом работ на этом этапе являются спецификации на отдельные модули, дальнейшая декомпозиция которых на подмодули нецелесообразна. Этап 4. Кодирование модулей. На данном этапе производится программирование модулей на каком-либо алгоритмическом языке, т. е. перевод разработанных алгоритмов на язык программирования. Этот этап менее сложен по сравнению со всеми остальными этапами цикла жизни ПО. Для его реализации широко используется метод структурного программирования. Одна из задач, которую необходимо решить на данном этапе, – обоснованный выбор языков программирования. Этап 5. Тестирование. Тестированием называется процесс проверки ПО (или его компонентов), имеющий целью обнаружение ошибок в ПО. При этом используются тестовые наборы, включающие в себя специально подобранные исходные данные и эталонные результаты. Тестирование включает в себя три шага: автономное, комплексное и системное. При автономном тестировании контролируется каждый компонент ПО изолированно от других на данных, подготовленных его разработчиком. В процессе комплексного тестирования всего ПО выявляются ошибки, связанные с нарушением спецификаций на все ПО САПР, при этом используются тесты, подготовленные на этапе 2. Системное тестирование – испытание ПО САПР на технических средствах и данных пользователя в производственных условиях. Тестирование является составной частью отладки – процесса обнаружения ошибок, их локализации и устранения. Необходимо отметить, что надежность ПО закладывается на более ранних этапах его цикла жизни, правильное тестирование позволяет лишь выявить большинство из относительно немногочисленных вкравшихся ошибок. Повысить надежность плохо спроектированных программ никакое тестирование не способно. Этап 6. Сопровождение. Как показано на диаграмме рис. 1.1, наибольшие затраты в цикле жизни ПО приходятся именно на этап сопровождения. Эти затраты для ПО САПР складываются в основном из затрат: 1) на устранение ошибок, не выявленных на этапе тестирования; 2) на внесение изменений в первоначальную версию ПО, вызванных взаимным недопониманием заказчика и разработчика ПО на первых двух этапах создания ПО; 3) на адаптацию ПО к быстроизменяющимся требованиям к САПР.
Устранение ошибки во время эксплуатации ПО обходится по крайней мере в два раза дороже, чем на этапе тестирования. На рис. 1.2 показана динамика изменения количества обнаруживаемых ошибок в ПО с момента сдачи его в эксплуатацию. Первоначально обнаруживаются наиболее «простые» ошибки, затем некоторое время все идет нормально, но с накоплением опыта и повышением квалификации пользователей САПР, с ее полной загрузкой начинают выявляться наиболее «тонкие» ошибки. И если при проектировании ПО не были приняты соответствующие меры (такие, например, как использование принципа модульности), то оно со временем становится все менее упорядоченным и менее жизнеспособным (верхняя часть заштрихованной области на рис. 1.2.). Одна из проблем сопровождения состоит в том, что даже для «правильно» спроектированного ПО исправление одной ошибки влечет за собой внесение новой ошибки с вероятностью 20–50%. Третья составляющая затрат на сопровождение для ПО САПР наиболее существенна и связана с задачей продления срока эффективной эксплуатации САПР, поскольку изменение технологий промышленного производства и развитие математического обеспечения АП происходят обычно более быстрыми темпами, чем может создаваться ПО новых САПР. Для замедления морального старения ПО САПР предлагают три возможных способа: 1) разработка САПР совместно с разработкой новых промышленных технологий; 2) разработка САПР с учетом прогнозов на будущее; 3) создание САПР, открытых как к новым элементам математического обеспечения, так и по отношению к новым технологиям и предметным областям. Наиболее перспективен третий способ, хотя он и наиболее сложен в реализации. Особенно остро задача сопровождения ПО стоит для САПР, эксплуатируемых в нескольких организациях, поскольку процесс исправления обнаруженных ошибок, включения новых программных компонентов различными пользователями очень скоро приводит к появлению стольких версий ПО, что их учет и контроль становится невозможным. Чтобы этого не происходило, все коррективы и дополнения необходимо вносить только в версию разработчика ПО и передавать ее всем пользователям одновременно через достаточно крупные промежутки времени, называемые периодом обновления. Рассмотренная модель цикла жизни ПО весьма условна. Реальный процесс разработки носит итерационный характер, многие этапы перекрывают друг друга, выполняются параллельно.
|