Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Липаев В.В. Программная инженерия

.pdf
Скачиваний:
720
Добавлен:
02.05.2014
Размер:
10.14 Mб
Скачать

Лекция 4. Системное проектирование программных средств

В результате в иерархических структурах ПС образуются два потока взаимодействий между компонентами разных уровней: сверху вниз — координирующие и управляющие воздействия верхних уровней и снизу вверх — информация о состоянии и реализации предписанных сверху функций компонентами нижних уровней. Координируемые компоненты обычно имеют некоторую автономность поведения и подготовки локаль­ ных решений. Степень автономности компонентов и интенсивность коор­ динирующих воздействий устанавливаются в результате компромисса при выделении числа и размеров иерархических уровней. Взаимодействие компонентов в пределах уровня целесообразно максимально ограничи­ вать, что позволяет упростить общее координирование компонентов и проводить его только по вертикали.

Менее наглядными являются иерархия данных, обрабатываемых

ПС, и их взаимодействие с программными компонентами. Функциональ­ ная иерархия данных отражается расстоянием между расчетом или изме­ нением переменной и ее использованием, или условной длительностью хранения неизменяемых значений переменной. Взаимодействие двух про­ граммных модулей может осуществляться так, что некоторые переменные используются только этими модулями. Такие обменные переменные име­ ют более широкую область применения и должны храниться все время, пока не будут вызваны взаимодействующие модули. Ряд переменных и массивов используется многими модулями и группами программ в комп­ лексе — это глобальные переменные. Они характеризуются наиболее ши­ роким использованием и соответствуют высшему иерархическому уров­ ню среди данных.

Анализ концепции, требований технического задания и технико-эконо­ мических оценок должен позволять выполнить предварительное струк­ турное проектирование ПС и оценку вычислительных ресурсов, необ­ ходимых для решения основных функциональных задач. Повышению эффективности структурирования могут значительно способствовать за­ имствование из предыдущих проектов спецификаций прототипов, версий и отдельных компонентов ПС. Для обеспечения системного проектирова­ ния на этом этапе большое значение имеют графические методы визуали­ зации технических решений и логического контроля проекта.

Характеристики внешней среды применения ПС и особенности реа­ лизующей ЭВМ в значительной степени определяют архитектуру и струк-

120

4.3. Структурное проектирование сложных программных средств

туру применяемой операционной системы, средств контроля и организа­ ции вычислительного процесса. При разработке версий ПС для некоторой прикладной области целесообразно выбирать и унифицировать внешний интерфейс и операционную систему. Это обеспечивает многократное ис­ пользование одних и тех же организующих программ, дисциплинирует структурное построение версий ПС и способствует унификации межмо­ дульного интерфейса. Переход на новую операционную систему, так же как и переход на реализующую ЭВМ другого типа, может привести к необходимости некоторого изменения структурного построения ПС и базы данных. Это способно повлиять на возможность использования готовых компонентов, а следовательно, и на эффективность всей разработки.

Учет возможности изменений — это принцип, который более все­ го отличает программное средство от большинства других типов промыш­ ленных продуктов. Во многих случаях структура ПС разрабатывается, когда требования заказчика к нему осознаны не полностью. Позже, при детализации и после поставки, ПС должно развиваться на основе откликов заказчика и пользователей, поскольку обнаруживаются новые требования, а старые уточняются. В дополнение к этому программный продукт часто встраивается в среду, которая воздействует на него, и это воздействие генерирует новые требования, которые не были изначально известны. Та­ ким образом, возможности изменений — это принцип, который следует использовать при системном проектировании структуры для достижения способности к ее развитию — эволюционности структуры ПС.

Повторная применимость — является еще одним качеством струк­ туры программного продукта, на которое заметно воздействует принцип возможности изменений. Компонент является многократно применимым, если он может быть непосредственно использован для производства ново­ го продукта или версии. На практике компонент может претерпеть неко­ торые изменения прежде, чем будет использован повторно. Отсюда мно­ гократное использование можно рассматривать как эволюционность сис­ темной структуры ПС на уровне компонентов. Если можно предвидеть изменения контекста, в который будет встроен программный компонент, то и компонент можно спроектировать таким образом, что изменения бу­ дут им учтены.

121

Лекция 4. Системное проектирование программных средств

4.4.Проектирование программных модулей

икомпонентов

Сложная система обычно может быть разделена на более простые части — модули. Модульность является важным качеством инженерных процессов и продуктов. Большинство промышленных процессов являются модульными и составлены из комплексов работ, которые комбинируются простыми способами (последовательными или перекрывающимися) для достижения требуемого результата. Главное преимущество модульности заключается в том, что она позволяет применять принцип разделения за­ дач на двух этапах:

при работе с элементами каждого модуля отдельно (игнорируя элементы других модулей);

при работе с общими характеристиками групп модулей и отноше­ ниями между ними с целью объединить их в конкретный, более крупный и сложный компонент.

Если данные этапы выполняются в последовательности, предусмат­ ривающей сначала концентрацию процессов на модулях, а затем — их объединение, то система проектируется снизу вверх. Если сначала систе­ му разбивают на модули, а потом работают над их индивидуальным про­ ектированием, то это — проектирование сверху вниз.

При структурном построении комплексов программ важное значение имеет размер и сложность компонентов для каждого уровня иерархии и соответственно число иерархических уровней для крупных ПС. По прин­ ципам построения, языку описания, размеру и другим характеристикам компонентов в структуре ПС можно выделить иерархические уровни:

программных модулей, оформляемых как законченные компонен­ ты текста программ;

функциональных групп (компонентов) или пакетов программ;

комплексов программ, оформляемых как законченные программ­ ные продукты определенного целевого назначения.

С повышением иерархического уровня увеличивается размер текста программ, реализующих компоненты этого уровня и количество обраба­ тываемых переменных. Одновременно совокупности команд все более спе­ циализируется и снижается возможность повторного применения компо­ нентов в различных комбинациях для решения аналогичных задач.

122

4.4. Проектирование программных модулей и компонентов

Программные модули решают относительно небольшие функцио­ нальные задачи, и каждый реализуется 10—100 операторами языка про­ граммирования. Каждый модуль может использовать на входе около де­ сятка типов переменных. Если для решения небольшой функциональной задачи требуется более 100 операторов, то обычно целесообразно прово­ дить декомпозицию задачи на несколько более простых модулей.

Функциональные группы программ (компоненты) формируются на базе нескольких или десятков модулей и решают достаточно сложные автономные задачи. На их реализацию целесообразно использовать до десятка тысяч строк текста программы. Соответственно возрастают число используемых типов переменных и разнообразие выходных данных. При этом быстро растет число типов переменных, обрабатываемых модулями и локализующихся в пределах одного или нескольких модулей.

Комплексы программ — программные продукты создаются для ре­ шения сложных задач управления и обработки информации. В комплексы объединяются несколько или десятки функциональных групп программ для решения общей целевой задачи системы. Размеры ПС зачастую исчис­ ляются сотнями модулей, десятками и сотнями тысяч операторов. Встре­ чаются ПС, содержащие до двух-трех десятков структурных иерархичес­ ких уровней, построенных из модулей.

Проектирование модулей включает в себя разработку локальных функций и подробных описаний алгоритмов обработки данных; межмо­ дульных интерфейсов; внутренних структур данных; структурных схем передач управления; средств управления в исключительных ситуациях. С их помощью определяются функции: порядок следования отдельных шагов обработки, ситуации и типы данных, вызывающие изменения процесса обработки, а также повторно используемые функции программы. Программ­ ные модули для их многократного использования должны базироваться на унифицированных правилах структурного построения, оформления спе­ цификаций требований и описаний текстов программ и комментариев. Кроме того, целесообразно для каждого проекта директивно ограничивать размеры модулей по числу строк текста с учетом языка программирова­ ния, например, 30-ю или 50-ю операторами (см. лекцию 13).

Основная цель такой унификации — облегчить разработку модулей, обеспечение их качества и тестирования, а также упростить управление их функциями и характеристиками. Эти правила в значительной степени стан-

123

Лекция 4. Системное проектирование программных средств

дартизированы в современных языках программирования. Однако при их применении целесообразно выделять типовые ассоциации операторов и ограничения их использования, а также вводить правила описания текстов программ, комментариев, данных и заголовков модулей, ограничения их размеров и сложности. Эти правила наиболее полно должны соблюдаться при разработке основной массы функциональных программ, подлежащих повторному использованию в модифицируемых версиях программных про­ дуктов. Компоненты организации вычислительного процесса, контроля функционирования, ввода-вывода и некоторые другие могут иметь отли­ чия в правилах структурного построения модулей.

Для обеспечения управляемой модификации и развития конфигура­ ций версий программного продукта важно стандартизировать структуру базы данных, в которой накапливается и хранится исходная, промежуточ­ ная и результирующая информация в процессе функционирования ПС. Ос­ новными компонентами этой структуры являются информационные модули или пакеты данных. В них также целесообразно использовать типовые структуры, ориентированные на эффективную обработку данных в конкрет­ ной проблемной области. Объединение информационных модулей позво­ ляет создавать более сложные структуры данных определенного целевого назначения. Иерархия связей между этими компонентами в некоторой сте­ пени соответствует процессу обработки и потокам данных и относительно слабо связана со структурой программных компонентов в ПС. Структуры информационных модулей целесообразно координировать между собой с учетом цели и места их использования программными компонентами.

Особое значение для качества модулей и компонентов крупных ПС имеет стандартизация структуры ме:н€модульных интерфейсов по пе­ редачам управления и по информации. Эти правила формируются на базе описаний языков программирования или оформляются на основе пра­ вил структурного построения программ и базы данных конкретных проек­ тов ПС. В последнем случае соглашения о связях конкретизируются в макрокомандах межмодульного взаимодействия. Структурное проекти­ рование сложных комплексов программ активно развивается на основе концепции и стандартов открытых систем. Применение стандартов откры­ тых систем следует начинать при создании архитектуры исходных моду­ лей мобильных ПС и БД, а далее неукоснительно использоваться при всех процессах ЖЦ. Во всех случаях создание архитектуры модулей и компо-

124

4.4. Проектирование программных модулей и компонентов

нентов современных сложных систем целесообразно вести с использова­ нием профилей международных стандартов, значительная часть которых обеспечивает мобильность и возможность повторного использования го­ товых программных средств и баз данных (см. лекцию 3).

Основными целями создания и применения концепции, методов и стандартов открытых систем является повышение общей экономичес­ кой эффективности разработки и функционирования систем, а также логи­ ческой и технической совместимости их компонентов, обеспечение мо­ бильности и повторного применения готовых программ и данных. Они реализуют спецификации на интерфейсы, процессы и форматы данных, достаточные для того, чтобы обеспечить:

возможность расширения ПС, а также переноса (мобильность) про­ граммных компонентов и систем, разработанных должным образом, с ми­ нимальными изменениями на широкий диапазон аппаратных и операци­ онных платформ;

совместную работу с другими программными продуктами и систе­ мами на локальных и удаленных платформах;

взаимодействие с пользователями в стиле, облегчающем послед­ ним переход от системы к системе (мобильность пользователей).

Для достижения этих целей развиваются и применяются различные проблемно-ориентированные технологии и комплексы средств автомати­ зации ЖЦ мобильных программ и баз данных, основанные на повторном использовании готовых апробированных модулей, программных компо­ нентов и данных, их эффективном переносе на различные аппаратные и операционные платформы и согласованном взаимодействии в распреде­ ленных информационных системах. Профессионалы в области открытых систем акцентируют усилия на поиске и создании гибкой, способной к наращиванию среды, что базируется на трех направлениях стандарти­ зации в области систем (см. лекцию 2):

аппаратных и операционных платформ;

методов и технологии обеспечения жизненного цикла прикладных программных средств и баз данных;

интерфейсов компонентов и модулей между собой, с операцион­ ной и внешней средой.

Методы открытых систем обеспечивают эффективные по трудоемко­ сти и качеству структурное проектирование, расширение и перенос гото-

125

Лекция 4. Системное проектирование программных средств

вых программных средств обработки информации и баз данных на различ­ ные аппаратные и операционные платформы. Эти методы можно разде­ лить на три части:

общая концепция и методы непосредственного обеспечения мо­ бильности компонентов программных средств и баз данных в процессе разработки систем за счет унификации интерфейсов с операционной и аппаратной средой;

методы, поддерживающие мобильность компонентов и комплек­ сов программ и данных в распределенных системах и совместимость их взаимодействия с внешней средой;

методы создания текстов программных средств, баз данных и их компонентов на стандартизированных языках программирования высоко­ го уровня, обеспечивающие потенциальную возможность их переноса на различные аппаратные платформы.

Первая группа методов создавалась с ограниченной и определенной целью локализовать и унифицировать интерфейсы программных компо­ нентов между собой, с заранее выделенными операционными системами и с внешней средой. Интерфейсные стандарты являются базой для обеспе­ чения структурного проектирования, свободного перемещения и расшире­ ния программных продуктов и компонентов в различные по архитектуре и функциям операционные окружения и аппаратные платформы. Эти мето­ ды позволяют разделить функциональную часть комплексов программ и их связи с организационным окружением, обеспечивая технологическую, архитектурную и языковую независимость функциональной части про­ грамм и данных. Тем самым они являются базой для реализации концеп­ ции открытости в системах и обеспечивают свободу разработчикам при выборе методов структурного проектирования и языков программиро­ вания для создания компонентов программ и описаний данных. Стандар­ ты этой группы включают группу стандартов POSIX, в которой определе­ ны концепция и функции интерфейсов переносимых операционных сис­ тем, команды управления и сервисные программы, а также расширение для переносимых операционных систем.

Вторая группа методов имеет целью поддержать мобильность про­ граммных продуктов в открытых системах путем унификации их интер­ фейсов с внешней средой. Они обеспечивают совместимость обмена дан­ ными в различных файловых системах и базах данных, унификацию адми-

126

4.4. Проектирование программных модулей и компонентов

нистративного управления и взаимодействия с пользователями, а также методов обеспечения безопасности и защиты информации. Таким образом, создается стандартизированная по интерфейсам внешняя среда на различ­ ных гетерогенных аппаратных платформах, в которую могут эффективно погружаться различные программы, согласованные по интерфейсам с эти­ ми стандартами. Стандарты этой группы регламентируют функции и про­ цессы, поддерживающие взаимодействие с внешней средой:

концепции и архитектуру визуализации информации для взаимо­ действия с пользователями и ее представления в базовых системах графи­ ческого отображения;

архитектуру, интерфейсы, базовые процессы и языки управления файловыми системами и базами данных, обеспечивающими их совмести­ мость и унификацию в сложных системах;

административное управление локальными и распределенными ком­ понентами систем в процессе решения функциональных задач обработки информации.

Третья группа методов создавалась в значительной степени незави­ симо от первой и второй. Эти методы преследуют цель унифицировать тексты программных модулей, компонентов и описания данных, создавае­ мых для различных аппаратных платформ при любой их архитектуре, независимо от операционной и внешней среды. Первоначальное огромное число языков программирования (свыше 200), каждый из которых имел несколько диалектов, в результате сократилось до 6—10 массовых языков, ограниченных стандартами, не допускающими диалектов. Создание со­ временных модулей и компонентов ПС и БД поддерживается методами и инструментальными средствами технологий, методами тестирования и ат­ тестации программ и их интерфейсов, а также стандартизированным со­ ставом и содержанием документации на программы и базы данных. Эти методы и средства обеспечивают необходимое качество модулей и компо­ нентов сложных ПС и БД. В результате обеспечена мобильность функцио­ нальной части текстов программ, однако они могут требовать доработок интерфейсов для сопряжения с новой средой аппаратного и операционно­ го окружения систем.

Л Е К Ц И Я 5

ТЕХНИКО-ЭКОНОМИЧЕСКОЕ ОБОСНОВАНИЕ ПРОЕКТОВ ПРОГРАММНЫХ СРЕДСТВ

5.1. Цели и процессы технико-экономического обоснования проектов программных средств

Выбор и формирование требований к функциональной пригоднос­ ти ПС — наиболее ответственная, стратегическая задача начальных эта­ пов технико-экономического обоснования проекта программного продукта, системного проектирования и всего последующего развития его жизнен­ ного цикла. Жизненный цикл ПС можно разделить на две части, суще­ ственно различающиеся экономическими особенностями процессов и ресурсов, характеристиками и влияющими на них факторами. В первой части ЖЦ ПС производятся системный анализ, проектирование, разра­ ботка, тестирование и испытания базовой версии программного продукта. Номенклатура работ, их трудоемкость, длительность и другие экономи­ ческие характеристики на этих этапах ЖЦ существенно зависят от харак­ теристик объекта, технологии и инструментальной среды разработки. Осо­ бенно важно учитывать возможное возрастание суммарных затрат при завышении требований к качеству программного продукта. Как и для дру­ гих видов промышленной продукции, улучшение качества комплексов программ обычно достигается не пропорциональным, а более значитель­ ным возрастанием требуемых для этого ресурсов. Сокращение этой по­ требности в ресурсах часто возможно только за счет принципиального изменения и совершенствования технологии проектирования и разработки.

128

5.1. Цели и процессы технико-экономического обоснования проектов...

Ориентирами для оценивания необходимых ресурсов трудоемкос­ ти, длительности и числа специалистов по крупным этапам работ при создании сложных ПС высокого качества могут служить данные, приве­ денные ниже в п. 5.2—5.4. Максимум трудоемкости и числа специалистов приходится на этапы программирования и тестирования компонентов, когда привлекается основная масса программистов-кодировщиков для разработ­ ки компонентов ПС. При активном использовании и совершенствовании технологий системного анализа и проектирования происходит перерас­ пределение всех видов затрат в сторону увеличения трудоемкости началь­ ных этапов разработки. Это дает значительное снижение использования совокупных ресурсов для всего проекта. Менее изучены распределения необходимых ресурсов по этапам работ, с учетом реализации требуемых конкретных характеристик качества ПС. Опубликованные данные и зави­ симости для различных классов ПС позволяют прогнозировать совокуп­ ные затраты и другие основные технико-экономические показатели (ТЭП), планы и графики работ вновь создаваемых проектов программных про­ дуктов.

Вторая часть ЖЦ, отражающая эксплуатацию, сопровождение, мо­ дификацию, управление конфигурацией и перенос ПС на иные платфор­ мы, в меньшей степени зависит по величине требуемых ресурсов от функ­ циональных характеристик объекта и среды разработки. Номенклатура работ на этих этапах более или менее определенная, но их трудоемкость и длительность могут сильно варьироваться, в зависимости от массовости и других внешних факторов распространения и применения конкретных вер­ сий программного продукта. Успех ПС у пользователей и на рынке, а также будущий процесс развития версий трудно предсказать, и он не свя­ зан напрямую с экономическими параметрами процессов разработки ПС. Определяющими становятся потребительские характеристики продукта, а их экономические особенности с позиции разработчиков и вложенные ресурсы на очередную версию отходят на второй план (см. первую часть ЖЦ).

Вследствие этого в широких пределах могут изменяться трудоем­ кость и число специалистов, необходимое для поддержки этих этапов ЖЦ. Это затрудняет статистическое обобщение ТЭП различных проектов и прогнозирование на их основе аналогичных характеристик новой разра-

129