Главная » Мануалы

1 2 3 4 ... 32

проектирование

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

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



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

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

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

Цели, задачи и содержание книги очень подробно изложены в авторском предисловии, дающем читателю возможность получить вполне объективное представление о существе рассматриваемых в книге проблем и предлагаемых методов их решения. Монография носит многоплановый характер, однако ее стержневая идея состоит в том, чтобы вооружить разработчиков, не имеющих большого практического опыта создания систем, необ-* ходимыми инструментальными и изобразительными средствами, которые могут обеспечить коллективу, работающему над единым проектом, должный уровень качества разработок.

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



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

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

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

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

Е. К. Масловский



предисловие

Автор книги преследует несколько целей:

1. Дать широкой читательской аудитории построенное по ние-ходящему принципу вводное описание средств языка Ада, ориентированных на проектирование систем.

2. Показать и проиллюстрировать конкретными примерами полезную в практическом смысле графическую символику проектов, выполняемых средствами языка Ада, с тем чтобы она могла использоваться на различных уровнях системного проектирования:

для концептуального представления принципов организации систем;

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

как возможную основу средств автоматизированного проектирования систем, для описания и реализации которых применяется язык Ада.

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

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



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

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

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

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

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



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

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

Подход к процессу проектирования, развиваемый автором, был подсказан работами Э. Иодана, Л. Константина и Дж. Майерса в области структурного проектирования.

Что же касается графической символики для систем, проектируемых средствами языка Ада, то она возникла естественным образом как результат попыток применения и доходчивого объяснения понятий этого языка. В таких случаях всегда оказывалось, что обсуждение удобнее всего было проводить на основе рисунков, изображаемых на доске или бумаге. Детали предложенной символики разработаны автором этой книги, но основной принцип условных обозначений подсказан в какой-то мере нотацией, которая используется фирмой Intel для описа-

) Термин кисс-принцип (KlSS-principle) представляет собой аббревиатуру английских слов Keep It Simple Stupid (Делай проще, глупец!), - Прим ред.



ния принципов работы микропроцессора iAPX432 с языком Ада, а также символикой, применяемой Г. Бушем при толковании понятий этого языка. Идея использования графической системы обозначений возникла благодаря успешному применению и развитию структурных графов Хансена в параллельном Паскале, которому посвящена более ранняя книга автора, написанная с Б. Боуденом.

Графическая система обозначений обеспечивает конкретное однозначное эскизное отображение необходимых свойств разрабатываемых Ада-программ. Такие эскизы являются удобным инструментом сжатого стенографического описания как программ, так и систем, проектируемых средствами языка Ада.

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

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

Традиционно сложная проблема организации параллельных процессов рассматривается в книге на примерах, относящихся



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

Излагаемый в книге материал охватывает как вопросы конструирования систем технического назначения, так и сам процесс проектирования; основные проблемы и принципы, касающиеся тех и других аспектов, рассматриваются не на абстрактном уровне, а в контексте конкретных примеров.

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

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

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



ные схемы будущих программ в символической нотации, а именно это и есть логический уровень проектирования систем.

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

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

Изложенные в книге идеи прошли проверку в учебной аудитории в рамках нескольких курсов лекций для студентов старших курсов и аспирантов факультета системотехники и вычислительной техники Карлтонского университета, а также слушателей краткосрочных курсов университетской ассоциации и промышленных кругов. В ходе этой преподавательской работы, начавшейся в 1980 г., идеи автора претерпевали изменения, обновлялись и совершенствовались.

Книга состоит из трех частей. Части I и II являются вводными и должны быть доступны для читателей с минимальной начальной подготовкой. Первая из них содержит введение в предмет, обоснование актуальности рассматриваемых вопросов и обзор языка Ада как средства проектирования систем. Во второй части дается введение в логическое проектирование с использованием языка Ада, излагаются методы наглядного описания систем и иллюстрируется их применение на многочисленных простых примерах. В части III принципы логического проектирования рассматриваются более подробно. Сначала

) Сквозной структурный контроль представляет собой организационный механизм объективного первичного анализа документации проектов и текстов программ специалистами, равными по положению, не предусматривающий никаких мер административного воздействия. Концепции сквозного структурного контроля достаточно подробно изложены в книге: Дж. Хьюз, Дж. Мичтом, Структурный подход к программированию, М.; Мир, 1980.Др ж. ред.



Проводится достаточно детальный анализ некоторых свойств языка Ада, которые влияют на организацию процесса проектирования. Затем рассматриваются вопросы модульности, надежности, структуры проектируемых систем на примере разработки подсистемы передачи данных, реализующей простой протокол информационного обмена. В заключение обсуждаются общие проблемы конструирования модульных систем с параллельными процессами и в качестве примера приводится проект, предназначенный для реализации протокола Х.25 в системе с коммутацией пакетов.

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

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

Я хотел бы, кроме того, поблагодарить всех моих студентов, которые терпеливо испытывали на себе все многрчисленные усовершенствования читавшегося курса лекций.

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

Я никогда не сумел бы начать работу над этой книгой без настойчивых советов моего коллеги Арчи Боуэна.

Формированию излагаемых в книге концепций проектирования и реализации систем на протяжении многих лет способствовали обсуждения идей с моими коллегами и студентами, число которых столь велико, что всех их назвать невозможно, но особой признательности заслуживает в этой связи Деннис Мак-Киннон.

Наконец, я хотел бы поблагодарить всех членов моей семьи за то, что они так долго мирились с присутствием Ады в нашем доме.

Р. Дж. Бар



1 2 3 4 ... 32

Яндекс.Метрика