1. Компьютерные вирусы и способы борьбы с ними.
Прежде всего вирус - это программа. Вирус обладает 2 основными свойствами:"1. Проникает в систему без ведома пользователя, 2. сам копируется.
Вирус - программа, обладающая способностью к самовоспроизведению. Такая способность является единственным средством, присущим всем типам вирусов. Но не только вирусы способны к самовоспроизведению. Любая операционная система и еще множество программ способны создавать собственные копии. Копии же вируса не только не обязаны полностью совпадать с оригиналом, но и могут вообще с ним не совпадать!
Вирус не может существовать в «полной изоляции»: сегодня нельзя представить себе вирус, который не использует код других программ, информацию о файловой структуре или даже просто имена других программ. Причина понятна: вирус должен каким-нибудь способом обеспечить передачу себе управления.
Классификация вирусов. В настоящее время известно более 5000 программных вирусов, их можно классифицировать по следующим признакам:
- среде обитания;
- способу заражения среды обитания;
- воздействию;
- особенностям алгоритма.
От среды обитания вирусы можно разделить на сетевые, файловые, загрузочные и файлово-загрузочные. Сетевые вирусы распространяются по различным компьютерным сетям. Файловые вирусы внедряются главным образом в исполняемые модули, т. е. В файлы, имеющие расширения СОМ и ЕХЕ. Файловые вирусы могут внедряться и в другие типы файлов, но, как правило, записанные в таких файлах, они никогда не получают управление и, следовательно, теряют способность к размножению. Загрузочные вирусы внедряются в загрузочный сектор диска (Boot-сектор) или в сектор, содержащий программу загрузки системного диска (Master Boot Record). Файлово-загрузочные вирусы заражают как файлы, так и загрузочные сектора дисков.
По способу заражения вирусы делятся на резидентные и нерезидентные. Резидентный вирус при заражении компьютера оставляет в оперативной памяти свою резидентную часть, которая потом перехватывает обращение операционной системы к объектам заражения и внедряется в них. Резидентные вирусы находятся в памяти и являются активными вплоть до выключения или перезагрузки компьютера. Нерезидентные вирусы не заражают память компьютера и являются активными ограниченное время.
По степени воздействия вирусы можно разделить на следующие виды:
- неопасные, не мешающие работе компьютера, но уменьшающие объем свободной оперативной памяти и памяти на дисках, действия таких вирусов проявляются в каких-либо графических или звуковых эффектах.
- опасные вирусы, которые могут привести к различным нарушениям в работе компьютера.
- очень опасные, воздействие которых может привести к потере программ, уничтожению данных, стиранию информации в системных областях диска.
По особенностям алгоритма вирусы трудно классифицировать из-за большого разнообразия. Простейшие вирусы - паразитические, они изменяют содержимое файлов и секторов диска и могут быть достаточно легко обнаружены и уничтожены. Можно отметить вирусы-репликаторы, называемые червями, которые распространяются по компьютерным сетям, вычисляют адреса сетевых компьютеров и записывают по этим адресам свои копии. Известны вирусы-невидимки, называемые стелс-вирусами, которые очень трудно обнаружить и обезвредить, так как они перехватывают обращения операционной системы к пораженным файлам и секторам дисков и подставляют вместо своего тела незараженные участки диска. Наиболее трудно обнаружить вирусы-мутанты, содержащие алгоритмы шифровки-расшифровки, благодаря которым копии одного и того же вируса не имеют ни одной повторяющейся цепочки байтов. Имеются и так называемые квазивирусные или «троянские» программы, которые хотя и не способны к самораспространению, но очень опасны, так как, маскируясь под полезную программу, разрушают загрузочный сектор и файловую систему дисков.
Основные виды вирусов и схемы их функционирования.
Среди всего разнообразия вирусов можно выделить следующие основные группы: загрузочные; файловые; файлово-загрузочные.
Загрузочные вирусы.
При загрузке компьютера с винчестера первой берет на себя управление программа начальной загрузки в MBR (Master Boot Record - главная загрузочная запись). Если ваш жесткий диск разбит на несколько разделов, то лишь один из них помечен как загрузочный (boot). Программа начальной загрузки в MBR находит загрузочный раздел винчестера и передает управление на программу начальной загрузки этого раздела. Код последней совпадает с кодом программы начальной загрузки, содержащейся на обычных дискетах, а соответствующие загрузочные секторы отличаются только таблицами параметров. Таким образом, на винчестере имеются два объекта атаки загрузочных вирусов - программа начальной загрузки в MBR и программа начальной загрузки в бот -секторе загрузочного диска.
Файловые вирусы.
Пусть у нас имеется инфицированный исполняемый файл. При запуске такого файла вирус получает управление, производит некоторые действия и передает управление «хозяину» (хотя еще неизвестно, кто в такой ситуации хозяин).
Какие же действия выполняет вирус? Он ищет новый объект для заражения - подходящий по типу файл, который еще не заражен (в том случае, если вирус «приличный», а то попадаются такие, что заражают сразу, ничего не проверяя). Заражая файл, вирус внедряется в его код, чтобы получить управление при запуске этого файла. Кроме своей основной функции - размножения, вирус вполне может сделать что-нибудь замысловатое (сказать, спросить, сыграть) - это уже зависит от фантазии автора вируса. Если файловый вирус резидентный, то он установится в память и получит возможность заражать файлы и проявлять прочие способности не только во время работы зараженного файла. Заражая исполняемый файл, вирус всегда изменяет его код - следовательно, заражение исполняемого файла всегда можно обнаружить. Но, изменяя код файла, вирус не обязательно вносит другие изменения: он не обязан менять длину файла неиспользуемые участки кода не обязан менять начало файла
Наконец, к файловым вирусам часто относят вирусы, которые «имеют некоторое отношение к файлам», но не обязаны внедряться в их код. Рассмотрим в качестве примера схему функционирования вирусов известного семейства Dir-ll. Нельзя не признать, что появившись в 1991 г., эти вирусы стали причиной настоящей эпидемии чумы в России. Рассмотрим модель, на которой ясно видна основная идея вируса. Информация о файлах хранится в каталогах. Каждая запись каталога включает в себя имя файла, дату и время создания, некоторую дополнительную информацию, номер первого кластера файла и т.н. резервные байты. Последние оставлены «про запас» и самой MS-DOS не используются.
При запуске исполняемых файлов система считывает из записи в каталоге первый кластер файла и далее все остальные кластеры. Вирусы семейства Dir-ll производят следующую «реорганизацию» файловой системы: сам вирус записывается в некоторые свободные секторы диска, которые он помечает как сбойные. Кроме того, он сохраняет информацию о первых кластерах исполняемых файлов в резервных битах, а на место этой информации записывает ссылки на себя.
Таким образом, при запуске любого файла вирус получает управление (операционная система запускает его сама), резидентно устанавливается в память и передает управление вызванному файлу.
Загрузочно-файловые вирусы.
Мы не станем рассматривать модель загрузочно-файлового вируса, ибо никакой новой информации вы при этом не узнаете. Но здесь представляется удобный случай кратко обсудить крайне «популярный» в последнее время загрузочно-файловый вирус OneHalf, заражающий главный загрузочный сектор (MBR) и исполняемые файлы. Основное разрушительное действие - шифрование секторов винчестера. При каждом запуске вирус шифрует очередную порцию секторов, а зашифровав половину жесткого диска, радостно сообщает об этом. Основная проблема при лечении данного вируса состоит в том, что недостаточно просто удалить вирус из MBR и файлов, надо расшифровать зашифрованную им информацию. Наиболее «смертельное» действие - просто переписать новый здоровый MBR. Главное - не паникуйте. Взвесьте все спокойно, посоветуйтесь со специалистами.
Полиморфные вирусы.
Большинство вопросов связано с термином «полиморфный вирус». Этот вид компьютерных вирусов представляется на сегодняшний день наиболее опасным. Объясним же, что это такое.
Полиморфные вирусы - вирусы, модифицирующие свой код в зараженных программах таким образом, что два экземпляра одного и того же вируса могут не совпадать ни в одном бите.
Такие вирусы не только шифруют свой код, используя различные пути шифрования, но и содержат код генерации шифровщика и расшифровщика, что отличает их от обычных шифровальных вирусов, которые также могут шифровать участки своего кода, но имеют при этом постоянный код шифровальщика и расшифровщика.
Полиморфные вирусы - это вирусы с самомодифицирующимися расшифровщиками. Цель такого шифрования: имея зараженный и оригинальный файлы вы все равно не сможете проанализировать его код с помощью обычного дизассемблирования. Этот код зашифрован и представляет собой бессмысленный набор команд. Расшифровка производится самим вирусом уже непосредственно во время выполнения. При этом возможны варианты: он может расшифровать себя всего сразу, а может выполнить такую расшифровку «по ходу дела», может вновь шифровать уже отработавшие участки. Все это делается ради затруднения анализа кода вируса.
Программы обнаружения и защиты от вирусов
Для обнаружения, удаления и защиты от компьютерных вирусов разработано несколько видов специальных программ, которые позволяют обнаруживать и уничтожать вирусы. Такие программы называются антивирусными. Различают следующие виды антивирусных программ:
- программы-детекторы
- программы-доктора или фаги
- программы-ревизоры
- программы-фильтры
- программы-вакцины или иммунизаторы
Программы-детекторы осуществляют поиск характерной для конкретного вируса сигнатуры в оперативной памяти и в файлах и при обнаружении выдают соответствующее сообщение. Недостатком таких антивирусных программ является то, что они могут находить только те вирусы, которые известны разработчикам таких программ.
Программы-доктора или фаги, а также программы-вакцины не только находят зараженные вирусами файлы, но и «лечат» их, т.е. удаляют из файла тело программы-вируса, возвращая файлы в исходное состояние. В начале своей работы фаги ищут вирусы в оперативной памяти, уничтожая их, и только затем переходят к «лечению» файлов. Среди фагов выделяют полифаги, т.е. программы-доктора, предназначенные для поиска и уничтожения большого количества вирусов. Наиболее известные из них: Aidstest, Scan, Norton AntiVirus, Doctor Web.
Учитывая, что постоянно появляются новые вирусы, программы-детекторы и программы-доктора быстро устаревают, и требуется регулярное обновление версий.
Программы-ревизоры относятся к самым надежным средствам защиты от вирусов. Ревизоры запоминают исходное состояние программ, каталогов и системных областей диска тогда, когда компьютер не заражен вирусом, а затем периодически или по желанию пользователя сравнивают текущее состояние с исходным. Обнаруженные изменения выводятся на экран монитора. Как правило, сравнение состояний производят сразу после загрузки операционной системы. При сравнении проверяются длина файла, код циклического контроля (контрольная сумма файла), дата и время модификации, другие параметры. Программы-ревизоры имеют достаточно развитые алгоритмы, обнаруживают стелс-вирусы и могут даже очистить изменения версии проверяемой программы от изменений, внесенных вирусом. К числу программ-ревизоров относится широко распространенная в России программа Adinf.
Программы-фильтры или «сторожа» представляют собой небольшие резидентные программы, предназначенные для обнаружения подозрительных действий при работе компьютера, характерных для вирусов. Такими действиями могут являться:
- попытки коррекции файлов с расширениями СОМ, ЕХЕ изменение атрибутов файла
- прямая запись на диск по абсолютному адресу запись в загрузочные сектора диска
- загрузка резидентной программы
При попытке какой-либо программы произвести указанные действия «сторож» посылает пользователю сообщение и предлагает запретить или разрешить соответствующее действие. Программы-фильтры весьма полезны, так как способны обнаружить вирус на самой ранней стадии его существования до размножения. Однако, они не «лечат» файлы и диски. Для уничтожения вирусов требуется применить другие программы, например фаги. К недостаткам программ-сторожей можно отнести их «назойливость»(например, они постоянно выдают предупреждение о любой попытке копирования исполняемого файла), а также возможные конфликты с другим программным обеспечением. Примером программы-фильтра является программа Vsafe, входящая в состав пакета утилит MS DOS.
Вакцины или иммунизаторы - это резидентные программы, предотвращающие заражение файлов. Вакцины применяют, если отсутствуют программы-доктора, «лечащие» этот вирус. Вакцинация возможна только от известных вирусов. Вакцина модифицирует программу или диск таким образом, чтобы это не отражалось на их работе, а вирус будет воспринимать их зараженными и поэтому не внедрится. В настоящее время программы-вакцины имеют ограниченное применение.
Основные меры по защите от вирусов
Для того, чтобы не подвергнуть компьютер заражению вирусами и обеспечить надежное хранение информации на дисках, необходимо соблюдать следующие правила:
1. оснастите свой компьютер современными антивирусными программами, например Aidstest, Doctor Web, и постоянно возобновляйте их версии
2. перед считыванием с дискет информации, записанной на других компьютерах, всегда проверяйте эти дискеты на наличие вирусов, запуская антивирусные программы своего компьютера
3. при переносе на свой компьютер файлов в архивированном виде проверяйте их сразу же после разархивации на жестком диске, ограничивая область проверки только вновь записанными файлами
4. периодически проверяйте на наличие вирусов жесткие диски компьютера, запуская антивирусные программы для тестирования файлов, памяти и системных областей дисков с защищенной от записи дискеты, предварительно загрузив операционную систему с защищенной от записи системной дискеты всегда защищайте свои дискеты от записи при работе на других компьютерах, если на них не будет производится запись информации обязательно делайте архивные копии на дискетах ценной для вас информации не оставляйте в кармане дисковода А дискеты при включении или перезагрузке операционной системы, чтобы исключить заражение компьютера загрузочными вирусами используйте антивирусные программы для входного контроля всех исполняемых файлов, получаемых из компьютерных сетей
5. для обеспечения большей безопасности применения Aidstest и Doctor Web необходимо сочетать с повседневным использованием ревизора диска Adinf
2. Создание модели нарушителя и оценка риска потерь от действий персонала.
Построение модели угроз и модели нарушителя
Термины "модель угроз" и "модель нарушителя" являются стандартными для профессиональной и около профессиональной литературы по безопасности. Не вникая в их точное определение, рассмотрим практическое приложение данных понятий к разработке комплекса мер по обеспечению безопасности реального объекта.
Прежде всего, необходимо понять, что угрозы существуют постоянно. Среди окружающих людей всегда найдутся такие, кто рассматривает ваше имущество как свою законную добычу, а некоторые из них даже готовы подавить ваше сопротивление, если вы не захотите его отдать. Уровень опасности, исходящей от потенциальных и действующих правонарушителей, никак не зависит от ваших усилий по обеспечению безопасности. Уровень преступности, характерный для места расположения вашего объекта, является результатом общественных отношений, сложившихся в данном районе. Поэтому и воспринимать криминальную угрозу следует как объективную реальность — на вас нападут. Обязательно. И только от вашей подготовленности зависит, к каким результатам приведет это нападение.
Есть еще ряд постоянно существующих опасностей. Они связаны с ограниченной надежностью технических средств, которыми оборудован объект. Прежде всего, это пожары. Любое устройство, питающееся электроэнергией или использующее топливо, может при неправильном функционировании самовозгореться. Также следует учитывать возможности аварии трубопроводов газа, воды (в том числе теплоцентрали — горячая вода под высоким давлением может нанести ущерб не меньший, чем огонь) и конструкций здания (редко, но бывает).
Следующая группа угроз — это технические неисправности. Отказ любого элемента инженерной инфраструктуры может привести к частичному или полному прекращению работы объекта в целом. Кроме того, неправильная работа или отказ одних устройств может вызвать повреждение других. Например, если в зимних условиях отключается электропитание насосов, перекачивающих воду в системе отопления, то через некоторое время вода, застоявшаяся в трубах, охладится до точки замерзания и разорвет их.
Нельзя исключать из числа угроз и несчастные случаи, как специфически связанные с работой на объекте, так и общего характера, а также возможность проявления приступов заболеваний и последствий неправильного образа жизни.
Все объекты подвержены влиянию стихийных сил. Для любого места расположения объекта обычно доступны усредненные данные о погодных условиях и максимальных значениях скорости ветра, уровня паводка и т.п. Учет природных факторов должен проводиться двояко: как угроз объекту защиты в целом и как условий, даже в случае крайних значений которых должно быть обеспечено функционирование ИСБ объекта.
Отдельно следует рассмотреть угрозы информационной безопасности. Обычно этот термин применяется к информационным системам (ИС) предприятий и объектам, оборудованным такими системами. Корпоративные ИС снабжаются подсистемой информационной безопасности (ПИБ), для построения которой выполняется отдельная серьезная разработка. Не рассматривая подробно построение ПИБ, отметим следующее:
современные ПИБ стыкуются с ИСБ и обмениваются с ней информацией;
центральная часть ИСБ строится на базе средств вычислительной техники и может рассматриваться как особо выделенный сегмент ИС предприятия;
средства ИСБ и находящаяся в них информация о защищаемом объекте нуждаются в защите собственным сегментом ПИБ.
Кроме угроз ИС и компьютерной части ИСБ, возможны и другие угрозы информационной безопасности объекта. К ним относятся утечки и преднамеренный сбор информации:
об объекте и предприятии, к которому он принадлежит;
о лицах, работающих или присутствующих на объекте;
о хранимых ценностях и имуществе;
о прочих предметах, являющихся потенциальными целями преступного посягательства.
При создании модели нарушителя и оценке риска потерь от действий персонала необходимо дифференцировать всех сотрудников по их возможностям доступа к системе и, следовательно, по потенциальному ущербу от каждой категории пользователей. Например, оператор или программист автоматизированной банковской системы может нанести несравненно больший ущерб, чем обычный пользователь, тем более непрофессионал.
По технической оснащенности и используемым методам и средствам нарушители подразделяются на:
· применяющих пассивные средства (средства перехвата без модификации компонентов системы);
· использующих только штатные средства и недостатки систем защиты для её преодоления (несанкционированные действия с использованием разрешенных средств);
· применяющих методы и средства активного воздействия (модификация и подключение дополнительных технических средств, подключение к каналам передачи данных, внедрение программных закладок и использование специальных инструментальных и технологических программ).
Приведенная классификация предусматривает, прежде всего, знания и постоянное их пополнение о характеристиках технических и программных средств ведения разведки и обеспечения доступа к информации.
Незаконные действия нарушитель может осуществлять:
· в разное время (в процессе функционирования АС, во время работы компонентов системы, во время плановых перерывов в работе АС, в нерабочее время, в перерывы для обслуживания и ремонта и т.п.);
· с разных мест (из-за пределов контролируемой зоны АС; внутри контролируемой зоны АС, но без доступа в выделенные для размещения компонентов АС помещения; внутри выделенных помещений, но без доступа к техническим средствам АС; с доступом к техническим средствам АС и с рабочих мест конечных пользователей; с доступом в зону данных, архивов и т.п.; с доступом в зону управления средствами обеспечения безопасности АС).
Учет места и времени действий злоумышленника также позволит конкретизировать его возможности по доступу к информационным ресурсам и учесть их для повышения качества системы защиты информации.
Определение значений возможных характеристик нарушителей в значительной степени субъективно. Модель нарушителя, построенная с учетом особенностей конкретной предметной области и технологии обработки информации, может быть представлена перечислением нескольких вариантов его облика.
Для того, чтобы разработанная модель нарушителя приносила пользу в решении проблем информационной безопасности, а не была простой формальностью, она должна быть строго адаптирована к конкретному объекту информационной защиты. Кроме того, каждый блок модели нарушителя должен иметь продолжение как в виде причинно-следственных связей между отдельными блоками, так и в виде детализации информации, содержащейся в каждом блоке. Такая детализация предполагает построение цепочек предполагаемых последствий наступления тех или иных заключений относительно облика нарушителя.
Наличие совокупности моделей действий нарушителя может быть полезной с точки зрения прогнозирования возможных событий во всем разнообразии складывающихся ситуаций, предотвращения действий нарушителя, построения надежной системы защиты информации, использования современных средств интеллектуальной поддержки для управления системой защиты.
Среди ограничения и предположения о характере действий возможных нарушителей могут быть следующие:
· работа по подбору кадров и специальные мероприятия затрудняют возможность создания коалиций нарушителей, т.е. объединения (сговора) и целенаправленных действий по преодолению подсистемы защиты двух и более нарушителей;
· нарушитель, планируя попытки НСД, скрывает свои несанкционированные действия от других сотрудников;
НСД может быть следствием ошибок пользователей, администраторов, эксплуатирующего и обслуживающего персонала, а также недостатков принятой технологии обработки информации и т.д.
Для того, чтобы разработанная модель нарушителя приносила пользу в решении проблем информационной безопасности, а не была простой формальностью, она должна быть строго адаптирована на конкретный объект информационной защиты. Кроме того, каждый элемент модели нарушителя должен иметь продолжение как в виде причинно-следственных связей между отдельными элементами, так и в виде детализации информации, содержащейся в каждом из них. Такая детализация предполагает построение цепочек предполагаемых последствий наступления тех или иных заключений относительно облика нарушителя.
Построение причинно - следственных связей между элементами модели и цепочек предполагаемых последствий требует знаний в области социально-психологических аспектов деятельности нарушителя, в области техники промышленного шпионажа, возможностей средств информационной защиты и целого ряда других, неразрывно связанных с проблемой защиты информации.
3. Система зашиты программных средств от копирования и исследования Под системой защиты от несанкционированного использования и копирования (защиты авторских прав, или просто защиты, от копирования) понимается комплекс программных или программно-аппаратных средств, предназначенных для усложнения или запрещения нелегального распространения, использования и (или) изменения программных продуктов и иных информационных ресурсов. Термин «нелегальное» здесь понимается как производимое без согласия правообладателя. Нелегальное изменение информационного ресурса может потребоваться нарушителю для того, чтобы измененный им продукт не подпадал под действие законодательства о защите авторских прав.Под надежностью системы защиты от несанкционированного копирования понимается ее способность противостоять попыткам изучения алгоритма ее работы и обхода реализованных в нем методов защиты. Очевидно, что любая программная или программно-аппаратная система защиты от копирования может быть преодолена за конечное время, так как процессорные команды системы защиты в момент своего исполнения присутствуют в оперативной памяти компьютера в открытом виде. Также очевидно, что надежность системы защиты равна надежности наименее защищенного из ее модулей.Выделим принципы создания и использования систем защиты от копирования.1. Учет условий распространения программных продуктов:− распространение дистрибутивных файлов на магнитных носителях через сеть торговых агентов или через сеть Интернет с последующей установкой самим пользователем, который при этом пытаться копировать дистрибутивные магнитные диски, исследовать алгоритм работы системы защиты при помощи специальных программных средств (отладчиков и дисассемблеров), пытаться нарушить условия лицензионного соглашения и установить продукт на большем числе компьютеров, пытаться смоделировать алгоритм работы системы защиты для изготовления аналогичного варианта дистрибутивных файлов и распространения их от своего имени;− установка программного продукта официальным представителем правообладателя, при котором пользователь может пытаться нарушить условия лицензионного соглашения или исследовать алгоритм работы системы защиты;− приобретение и использование программного продукта лицами или организациями, не заинтересованными в его нелегальном распространении среди их коммерческих конкурентов — в этом случае возможны только попытки несанкционированного использования продукта другими лицами;− приобретение программного продукта только для снятия с него системы защиты.2. Учет возможностей пользователей программного продукта по снятию с него системы защиты (наличие достаточных материальных ресурсов, возможность привлечения необходимых специалистов и т.п.).3. Учет свойств распространяемого программного продукта (предполагаемого тиража, оптовой и розничной цены, частоты обновления, специализированное™ и сложности продукта, уровня послепродажного сервиса для легальных пользователей, возможности применения правовых санкций к нарушителю и др.).4. Оценка возможных потерь при снятии защиты и нелегальном использовании.5. Учет особенностей уровня знаний и квалификации лиц, снимающих систему защиты.6. Постоянное обновление использованных в системе защиты средств.При добавлении к программному продукту системы его защиты от копирования возможен выбор уже имеющейся системы, что минимизирует издержки на установку системы защиты. Однако имеющаяся система защиты от копирования будет более легко сниматься с программного продукта (в силу ее пристыкованности к нему, см. подразд. 1.5), а также может оказаться несовместимой с защищаемой программой и имеющимся у пользователя программно-аппаратным обеспечением. Поэтому более целесообразной является разработка специализированной системы защиты от копирования конкретного программного продукта, что, однако, более заметно увеличит затраты на его производство.Основные требования, предъявляемые к системе защиты от копирования:- обеспечение некопируемости дистрибутивных дисков стандартными средствами (для такого копирования нарушителю по требуется тщательное изучение структуры диска с помощью специализированных программных или программно-аппаратных средств);- обеспечение невозможности применения стандартных отладчиков дополнительных действий над машинным кодом программы без применения специализированных программно-аппаратных средств (нарушитель должен быть специалистом высокой квалификации);- обеспечение некорректного дисассемблирования машинного кода программы стандартными средствами (нарушителю потребуется использование или разработка специализированных дисассемблеров);- обеспечение сложности изучения алгоритма распознавания индивидуальных параметров компьютера, на котором установлен программный продукт, и его пользователя или анализа применяемых аппаратных средств защиты (нарушителю будет сложно эмулировать легальную среду запуска защищаемой программы).Выделим основные компоненты системы защиты программных продуктов от несанкционированного копирования:- модуль проверки ключевой информации (некопируемой метки на дистрибутивном диске, уникального набора характеристик компьютера, идентифицирующей информации для легального пользователя) — может быть добавлен к исполнимому коду защищаемой программы по технологии компьютерного вируса, в виде отдельного программного модуля или в виде отдельной функции проверки внутри защищаемой программы;- модуль защиты от изучения алгоритма работы системы защиты;- модуль согласования с работой функций защищаемой программы в случае ее санкционированного использования;- модуль ответной реакции в случае попытки несанкционированного использования (как правило, включение такого модуля в состав системы защиты нецелесообразно по морально-этическим соображениям).Методы, затрудняющие считывание скопированной информацииСоздание копий программных средств для изучения или несанкционированного использования осуществляется с помощью устройств вывода или каналов связи.Одним из самых распространенных каналов несанкционированного копирования является использование накопителей на съемных магнитных носителях. Угроза несанкционированного копирования информации блокируется методами, которые могут быть распределены по двум группам:- методы, затрудняющие считывание скопированной информации;- методы, препятствующие использованию информации.Методы из первой группы основываются на придании особенностейпроцессу записи информации, которые не позволяют считывать полученную копию на других накопителях, не входящих в защищаемую КС. Таким образом, эти методы направлены на создание совместимости накопителей только внутри объекта. В КС должна быть ЭВМ, имеющая в своем составе стандартные и нестандартные накопители. На этой ЭВМ осуществляется ввод (вывод) информации для обмена с другими КС, а также переписывается информация со стандартных носителей на нестандартные, и наоборот. Эти операции осуществляются под контролем администратора системы безопасности. Такая организация ввода-вывода информации существенно затрудняет действия злоумышленника не только при несанкционированном копировании, но и при попытках несанкционированного ввода информации.Все средства исследования ПО можно разбить на 2 класса: статические и динамические. Первые оперируют исходным кодом программы как данными и строят ее алгоритм без исполнения, вторые же изучают программу, интерпретируя ее в реальной или виртуальной вычислительной среде. Отсюда следует, что первые являются более универсальными в том смысле, что теоретически могут получить алгоритм всей программы, в том числе и тех блоков, которые никогда не получат управления. Динамические средства могут строить алгоритм программы только на основании конкретной ее трассы, полученной при определенных входных данных. Поэтому задача получения полного алгоритма программы в этом случае эквивалентна построению исчерпывающего набора текстов для подтверждения правильности программы, что практически невозможно, и вообще при динамическом исследовании можно говорить только о построении некоторой части алгоритма. Методы защиты программ от исследования.Для защиты программ от исследования необходимо применять методы защиты от исследования файла с ее исполняемым кодом, хранящемся на внешнем носителе, а также методы защиты исполняемого кода, загружаемого в оперативную память для выполнения этой программы.В первом случае защита может быть основана на шифровании секретной части программы, а во втором - на блокировании доступа к исполняемому коду программы в оперативной памяти со стороны отладчиков. Кроме того, перед завершением работы защищаемой программы должен обнуляться весь ее код в оперативной памяти. Это предотвратит возможность несанкционированного копирования из оперативной памяти дешифрованного исполняемого кода после выполнения защищаемой программы.Таким образом, защищаемая от исследования программа должна включать следующие компоненты:• инициализатор;• зашифрованную секретную часть;• деструктор (деициниализатор).Инициализатор должен обеспечивать выполнение следующих функций:• сохранение параметров операционной среды функционирования (векторов прерываний, содержимого регистров процессора и т.д.);• запрет всех внутренних и внешних прерываний, обработка которых не может быть запротоколирована в защищаемой программе;• загрузка в оперативную память и дешифрование кода секретной части программы;• передача управления секретной части программы.Секретная часть программы предназначена для выполнения основных целевых функций программы и защищается шифрованием для предупреждения внесения в нее программной закладки.Деструктор после выполнения секретной части программы должен выполнить следующие действия:• обнуление секретного кода программы в оперативной памяти;• восстановление параметров операционной системы (векторов прерываний, содержимого регистров процессора и т.д.), которые были установлены до запрета неконтролируемых прерываний;• выполнение операций, которые невозможно было выполнить при запрете неконтролируемых прерываний;• освобождение всех незадействованных ресурсов компьютера и завершение работы программы.Для большей надежности инициализатор может быть частично зашифрован и по мере выполнения может дешифровать сам себя. Дешифроваться по мере выполнения может и секретная часть программы. Такое дешифрование называется динамическим дешифрованием исполняемого кода. В этом случае очередные участки программ перед непосредственным исполнением расшифровываются, а после исполнения сразу уничтожаются.Для повышения эффективности защиты программ от исследования необходимо внесение в программу дополнительных функций безопасности, направленных на защиту от трассировки. К таким функциям можно отнести:• периодический подсчет контрольной суммы области оперативной памяти, занимаемой защищаемым исходным кодом; сравнение текущей контрольной суммы с предварительно сформированной эталонной и принятие необходимых мер в случае несовпадения;• проверку количества занимаемой защищаемой программой оперативной памяти; сравнение с объемом, к которому программа адаптирована, и принятие необходимых мер в случае несоответствия;• контроль времени выполнения отдельных частей программы;• блокировку клавиатуры на время отработки особо секретных алгоритмов.Для защиты программ от исследования с помощью дизассемблеров можно использовать и такой способ, как усложнение структуры самой программы с целью запутывания злоумышленника, который дизассемблирует эту программу. Например, можно использовать разные сегменты адреса для обращения к одной и той же области памяти. В этом случае злоумышленнику будет трудно догадаться, что на самом деле программа работает с одной и той же областью памяти.
4. TCP/IP и модель OSI (модель взаимодействия открытых систем)
Основы TCP/IP
Термин "TCP/IP" обычно обозначает все, что связано с протоколами TCP и IP. Он охватывает целое семейство протоколов, прикладные программы и даже саму сеть. В состав семейства входят протоколы UDP, ARP, ICMP, TELNET, FTP и многие другие. TCP/IP - это технология межсетевого взаимодействия, технология internet. Сеть, которая использует технологию internet, называется "internet". Если речь идет о глобальной сети, объединяющей множество сетей с технологией internet, то ее называют Internet.
Модуль IP создает единую логическую сеть
Архитектура протоколов TCP/IP предназначена для объединенной сети, состоящей из соединенных друг с другом шлюзами отдельных разнородных пакетных подсетей, к которым подключаются разнородные машины. Каждая из подсетей работает в соответствии со своими специфическими требованиями и имеет свою природу средств связи. Однако предполагается, что каждая подсеть может принять пакет информации (данные с соответствующим сетевым заголовком) и доставить его по указанному адресу в этой конкретной подсети. Не требуется, чтобы подсеть гарантировала обязательную доставку пакетов и имела надежный сквозной протокол. Таким образом, две машины, подключенные к одной подсети могут обмениваться пакетами.
Когда необходимо передать пакет между машинами, подключенными к разным подсетям, то машина-отправитель посылает пакет в соответствующий шлюз (шлюз подключен к подсети также как обычный узел). Оттуда пакет направляется по определенному маршруту через систему шлюзов и подсетей, пока не достигнет шлюза, подключенного к той же подсети, что и машина-получатель; там пакет направляется к получателю. Объединенная сеть обеспечивает датаграммный сервис.
Проблема доставки пакетов в такой системе решается путем реализации во всех узлах и шлюзах межсетевого протокола IP. Межсетевой уровень является по существу базовым элементом во всей архитектуре протоколов, обеспечивая возможность стандартизации протоколов верхних уровней.
Структура связей протокольных модулей
Логическая структура сетевого программного обеспечения, реализующего протоколы семейства TCP/IP в каждом узле сети internet, изображена на рисунке. Прямоугольники обозначают обработку данных, а линии, соединяющие прямоугольники, - пути передачи данных. Горизонтальная линия внизу рисунка обозначает кабель сети Ethernet, которая используется в качестве примера физической среды; "o" - это трансивер. Знак "*" - обозначает
IP-адрес, а "@" - адрес узла в сети Ethernet (Ethernet-адрес). Понимание этой логической структуры является основой для понимания всей технологии internet. В дальнейшем мы будем часто ссылаться на эту схему.
Терминология
Введем ряд базовых терминов, которые мы будем использовать в дальнейшем.
Драйвер - это программа, непосредственно взаимодействующая с сетевым адаптером. Модуль - это программа, взаимодействующая с драйвером, сетевыми прикладными программами или другими модулями. Драйвер сетевого адаптера и, возможно, другие модули, специфичные для физической сети передачи данных, предоставляют сетевой интерфейс для протокольных модулей семейства TCP/IP.
Название блока данных, передаваемого по сети, зависит от того, на каком уровне стека протоколов он находится. Блок данных, с которым имеет дело сетевой интерфейс, называется кадром; если блок данных находится между сетевым интерфейсом и модулем IP, то он называется IP-пакетом; если он - между модулем IP и модулем UDP, то - UDP-датаграммой; если между модулем IP и модулем TCP, то - TCP-сегментом (или транспортным сообщением); наконец, если блок данных находится на уровне сетевых прикладных процессов, то он называется прикладным сообщением.
Эти определения, конечно, несовершенны и неполны. К тому же они меняются от публикации к публикации. Более подробные определения можно найти в RFC-1122, раздел 1.3.3.
Потоки данных
Рассмотрим потоки данных, проходящие через стек протоколов, изображенный на рис.1. В случае использования протокола TCP (Transmission Control Protocol - протокол управления передачей), данные передаются между прикладным процессом и модулем TCP. Типичным прикладным процессом, использующим протокол TCP, является модуль FTP (File Transfer Protocol протокол передачи файлов). Стек протоколов в этом случае будет FTP/TCP/IP/ENET. При использовании протокола UDP (User Datagram Protocol - протокол пользовательских датаграмм), данные передаются между прикладным процессом и модулем UDP. Например, SNMP (Simple Network Management Protocol - простой протокол управления сетью) пользуется транспортными услугами UDP. Его стек протоколов выглядит так: SNMP/UDP/IP/ENET.
Модули TCP, UDP и драйвер Ethernet являются мультиплексорами n x 1. Действуя как мультиплексоры, они переключают несколько входов на один выход. Они также являются демультиплексорами 1 x n. Как демультиплексоры, они переключают один вход на один из многих выходов в соответствии с полем типа в заголовке протокольного блока данных (рис.2).
Когда Ethernet-кадр попадает в драйвер сетевого интерфейса Ethernet, он может быть направлен либо в модуль ARP (Address Resolution Protocol адресный протокол), либо в модуль IP (Internet Protocol - межсетевой протокол). На то, куда должен быть направлен Ethernet-кадр, указывает значение поля типа в заголовке кадра.
Если IP-пакет попадает в модуль IP, то содержащиеся в нем данные могут быть переданы либо модулю TCP, либо UDP, что определяется полем "протокол" в заголовке IP-пакета.
Если UDP-датаграмма попадает в модуль UDP, то на основании значения поля "порт" в заголовке датаграммы определяется прикладная программа, которой должно быть передано прикладное сообщение. Если TCP-сообщение попадает в модуль TCP, то выбор прикладной программы, которой должно быть передано сообщение, осуществляется на основе значения поля "порт" в заголовке TCP-сообщения.
Мультиплексирование данных в обратную сторону осуществляется довольно просто, так как из каждого модуля существует только один путь вниз. Каждый протокольный модуль добавляет к пакету свой заголовок, на основании которого машина, принявшая пакет, выполняет демультиплексирование.
Данные от прикладного процесса проходят через модули TCP или UDP, после чего попадают в модуль IP и оттуда - на уровень сетевого интерфейса.
Хотя технология internet поддерживает много различных сред передачи данных, здесь мы будем предполагать использование Ethernet, так как именно эта среда чаще всего служит физической основой для IP-сети. Машина на рис.1 имеет одну точку соединения с Ethernet. Шестибайтный Ethernet-адрес является уникальным для каждого сетевого адаптера и распознается драйвером.
Машина имеет также четырехбайтный IP-адрес. Этот адрес обозначает точку доступа к сети на интерфейсе модуля IP с драйвером. IP-адрес должен быть уникальным в пределах всей сети Internet.
Работающая машина всегда знает свой IP-адрес и Ethernet-адрес.
Работа с несколькими сетевыми интерфейсами
Машина может быть подключена одновременно к нескольким средам передачи данных. На рис.3 показана машина с двумя сетевыми интерфейсами Ethernet. Заметим, что она имеет 2 Ethernet-адреса и 2 IP-адреса.
Из представленной схемы видно, что для машин с несколькими сетевыми интерфейсами модуль IP выполняет функции мультиплексора n x m и демультиплексора m x n (рис.4).
Таким образом, он осуществляет мультиплексирование входных и выходных данных в обоих направлениях. Модуль IP в данном случае сложнее, чем в первом примере, так как может передавать данные между сетями. Данные могут поступать через любой сетевой интерфейс и быть ретранслированы через любой другой сетевой интерфейс. Процесс передачи пакета в другую сеть называется ретрансляцией IP-пакета. Машина, выполняющая ретрансляцию, называется шлюзом. [1]
Международная Организация по Стандартам (International Standards Organization, ISO) разработала модель, которая четко определяет различные уровни взаимодействия систем, дает им стандартные имена и указывает, какую работу должен делать каждый уровень. Эта модель называется моделью взаимодействия открытых систем (Open System Interconnection, OSI) или моделью ISO/OSI.
В модели OSI (рис. П.1) средства взаимодействия делятся на семь уровней: прикладной, представительный, сеансовый, транспортный, сетевой, канальный и физический. Каждый уровень имеет дело с одним определенным аспектом взаимодействия сетевых устройств.
Рис. П.1. Модель взаимодействия открытых систем ISO/OSI
Физический уровень
Физический уровень (Physical layer) имеет дело с передачей битов по. физическим каналам связи, таким, например, как коаксиальный кабель, витая пара, оптоволоконный кабель или цифровой территориальный канал. К этому уровню имеют отношение характеристики физических сред передачи данных, такие как полоса пропускания, помехозащищенность, волновое сопротивление и другие. На этом же уровне определяются характеристики электрических сигналов, передающих дискретную информацию, например крутизна фронтов импульсов, уровни напряжения или тока передаваемого сигнала, тип кодирования, скорость передачи сигналов. Кроме этого, здесь стандартизуются типы разъемов и назначение каждого контакта.
Функции физического уровня реализуются во всех устройствах, подключенных к сети. Со стороны компьютера функции физического уровня выполняются сетевым адаптером или последовательным портом.
Примером протокола физического уровня может служить спецификация 10Base-T технологии Ethernet, которая определяет в качестве используемого кабеля неэкранированную витую пару категории 3 с волновым сопротивлением 100 Ом, разъем RJ-45, максимальную длину физического сегмента 100 метров, манчестерский код для представления данных в кабеле, а также некоторые другие характеристики среды и электрических сигналов.
Канальный уровень
На физическом уровне просто пересылаются биты. При этом не учитывается, что в некоторых сетях, в которых линии связи используются (разделяются) попеременно несколькими парами взаимодействующих компьютеров, физическая среда передачи может быть занята. Поэтому одной из задач канального уровня (Data Link layer) является проверка доступности среды передачи. Другой задачей канального уровня является реализация механизмов обнаружения и коррекции ошибок. Для этого на канальном уровне биты группируются в наборы, называемые кадрами (frames). Канальный уровень обеспечивает корректность передачи кадров, помещая для выделения каждого кадра специальную последовательность бит в его начало и конец, а также вычисляет контрольную сумму, обрабатывая все байты кадра определенным способом и добавляя контрольную сумму к кадру.
В локальных сетях протоколы канального уровня используются компьютерами, мостами, коммутаторами и маршрутизаторами. В компьютерах функции канального уровня реализуются совместными усилиями сетевых адаптеров и их драйверов.
В глобальных сетях, которые в отличие от локальных сетей редко обладают регулярной топологией, канальный уровень обеспечивает обмен сообщениями только между двумя соседними компьютерами, соединенными индивидуальной линией связи. Примерами протоколов «точка-точка» (как часто называют такие протоколы) могут служить широко распространенные протоколы РРР и LAP-B.
Сетевой уровень
Сетевой уровень (Network layer) служит для образования единой транспортной системы, объединяющей несколько сетей, причем эти сети могут использовать совершенно различные принципы передачи сообщений между конечными узлами и обладать произвольной; структурой связей.
Сети соединяются между Собой специальными устройствами, называемыми маршрутизаторами. Маршрутизатор— это устройство, которое собирает информацию о топологии межсетевых соединений и на ее основании пересылает пакеты сетевого уровня в сеть назначения. Для того чтобы передать сообщения сетевого уровня, или, как их принято называть, пакеты (packets), от отправителя, находящегося в одной сети, получателю, находящемуся в другой сети, нужно совершить некоторое количество транзитных передач между сетями. Таким образом, маршрут представляет собой последовательность маршрутизаторов, через которые проходит пакет. Проблема выбора наилучшего пути называется маршрутизацией, и ее решение является одной из главных задач сетевого уровня.
Сетевой уровень решает также задачи согласования разных технологий, упрощения адресации в крупных сетях и создания надежных и гибких барьеров на пути нежелательного трафика между сетями.
Примерами протоколов сетевого уровня являются протокол межсетевого взаимодействия IP стека TCP/IP и протокол межсетевого обмена пакетами IPX стека Novell.
Транспортный уровень
На пути от отправителя к получателю пакеты могут быть искажены или утеряны. Хотя некоторые приложения имеют собственные средства обработки ошибок, существуют и такие, которые предпочитают сразу иметь дело с надежным соединением. Работа транспортного уровня (Transport layer) заключается в том, чтобы обеспечить приложениям или верхним уровням стека — прикладному и сеансовому — передачу данных с той степенью надежности, которая им требуется. Модель OSI определяет пять классов услуг, предоставляемых транспортным уровнем. Эти виды услуг отличаются качеством: срочностью, возможностью восстановления прерванной связи, наличием средств мультиплексирования нескольких соединений между различными прикладными протоколами через общий транспортный протокол, а главное — способностью к обнаружению и исправлению ошибок передачи, таких как,, искажение, потеря и дублирование пакетов.
Как правило, все протоколы, начиная с транспортного уровня и выше, реализуются программными средствами конечных узлов сети — компонентами их сетевых операционных систем. В качестве примера .транспортных протоколов можно привести протоколы TCP и UDP стека TCP/IP и протокол SPX стека Novell.
Сеансовый уровень
Сеансовый уровень (Session layer) обеспечивает управление диалогом для того, чтобы фиксировать, какая из сторон является активной в настоящий момент, а также предоставляет средства синхронизации. Последние позволяют вставлять контрольные точки в длинные передачи, чтобы в случае отказа можно было вернуться назад к последней контрольной точке вместо того, чтобы начинать все с начала. На практике немногие приложения используют сеансовый уровень, и он редко реализуется в виде отдельных протоколов, хотя функции этого уровня часто объединяют с функциями прикладного уровня и реализуют в одном протоколе.
Уровень представления
Уровень представления (Presentation layer) имеет дело с формой представления передаваемой по сети информации, не меняя при этом ее содержания. За счет уровня представления информация, передаваемая прикладным уровнем одной системы, всегда будет понятна прикладному уровню в другой системе. С помощью средств данного уровня протоколы прикладных уровней могут преодолеть синтаксические различия в представлении данных или же различия кодов символов, например кодов ASCII и EBCDIC. На этом уровне может выполняться-; шифрование и дешифрирование данных, благодаря которому секретность 'обмена данными обеспечивается сразу для всех прикладных служб. Примером такого протокола является протокол Secure Socket Layer (SSL), который обеспечивает секретный обмен сообщениями для протоколов прикладного уровня стека TCP/IP.
Прикладной уровень
Прикладной уровень (Application layer) — это в действительности прости *на6ер разнообразных протоколов, с помощью которых пользователи сети получают доступ к разделяемым ресурсам, таким как файлы, принтеры или гипертекстовые Web-страницы, а также организуют свою совместную работу, например с помощью протокола электронной почты. Единица данных, которой оперирует Прикладной уровень, обычно называется сообщением (message).
Существует очень большое разнообразие служб прикладного уровня. Приведем в качестве примеров протоколов прикладного уровня хотя бы несколько наиболее распространенных реализаций файловых служб: NCP в операционной системе Novell NetWare, 8MB в Microsoft Windows NT, NFS, FTP и TFTP, входящие в стек TCP/IP.
Модель OSI представляет хотя и очень важную, но только одну из многих моделей коммуникаций. Эти модели и связанные с ними стеки протоколов могут отличаться количеством уровней, их функциями, форматами сообщений, сервисами, предоставляемыми на верхних уровнях и прочими параметрами.
5. Криптографические методы защиты информации.
Криптография - это наука о способах шифрования информации с целью ее защиты от посторонних пользователей. В настоящее время криптография является одним из основных методов обеспечения конфиденциальности и целостности данных.
Использование методов криптографической защиты позволяет не только шифровать информацию, но и Построить и организовать проверку значений хэш-функций Разработать механизм цифровой подписи Создать систему генерации, распределения, хранения, использования, уничтожения и восстановления криптографических ключей.
Современные методы шифрования обычно разделяют на два наиболее общих типа:
Симметричное или классическое шифрование.
Впервые математически этот метод был описан Клодом Шенноном. В целом Этот метод можно представить следующим образом. Существует функция шифрования, осуществляющая преобразование открытого текста в зашифрованный (например, F: X®Y), и существует функция дешифрования, выполняющая обратную процедуру (например, F-1: X®Y).
Исходные данные с помощью ключа преобразуются таким образом, что из полученного шифртекста невозможно извлечь ни исходный текст, ни ключ. Однако, зная ключ, легко можно вычислить исходный текст. В надежных алгоритмах шифрования криптографическая стойкость основывается на содержании ключа в тайне, а не на содержании в тайне самого алгоритма криптографического преобразования.
Наиболее широко распространенным алгоритмом симметричного шифрования является DES (Data Encryption Standard), разработанный IBM в 1976 году и рекомендованный Национальным бюро стандартов США к использованию в открытых секторах экономики.
В России также существует стандарт на алгоритм шифрования. Это - ГОСТ 28147-89 "Системы обработки информации. Защита криптографическая. Алгоритм криптографического преобразования". Основной особенностью Российского стандарта является высокая стойкость криптографического алгоритма. Она основывается на использовании 256-битного ключа.
Алгоритмы симметричного шифрования обеспечивают высокую скорость шифрования и простоту аппаратной и программной реализации. Однако им присущи и весьма принципиальные недостатки. Для их успешного применения необходимо решить проблему надежной доставки ключей каждому абоненту, т.е. нужен секретный канал для передачи каждого ключа. Кроме того, зависимость числа ключей от числа абонентов является квадратичной, что при большом количестве пользователей делает неэффективной работу службы генерации ключей из-за низкой скорости обработки огромного количества информации.
Асимметричное шифрование или шифрование с открытым ключем
Для решения вышеперечисленных проблем симметричного шифрования предназначены системы с асимметричным шифрованием, или шифрованием с открытым ключом, которые используют свойства функций с секретом, разработанных Диффи и Хеллманом.
В таких криптосистемах не требуется передача секретного ключа между абонентами, участвующими в обмене защищаемой информацией. Суть разработанного подхода заключается в том, что в обмене защищаемыми документами каждый абонент использует пару взаимосвязанных ключей - открытый и секретный. Отправитель подписываемого документа передает получателю открытый ключ. Он может это сделать любым несекретным способом или поместить ключ в общедоступный справочник. При помощи открытого ключа получатель проверяет подлинность получаемой информации. Секретный ключ, при помощи которого подписывалась информация, хранится в тайне от всех.
Таким образом, решаются две проблемы: нет нужды в секретной доставке ключа (так как при помощи открытого ключа нельзя расшифровать сообщения, для этого же открытого ключа зашифрованные, и, следовательно, перехватывать открытый ключ нет смысла); отсутствует также квадратичная зависимость числа ключей от числа пользователей - для п пользователей требуется 2п ключей.
Первым алгоритмом шифрования, разработанным на принципах асимметричного шифрования, является RSA.
Хэш-функция
Примером шифрования в целях аутентификации (установлении подлинности автора и документа) является шифрование с помощью односторонней функции (one-way) по-другому именуемой хэш-функцией (hash function). Хэш-функция, примененная к шифруемым данным, дает в результате значение, состоящее из фиксированного небольшого числа байт, которое передается вместе с исходным сообщением. Получатель сообщения, зная, какая хэш-функция была применена для получения этого результата, заново вычисляет его, используя незашифрованную часть сообщения. Если полученный и вычисленный результаты совпадают, значит, содержимое сообщения не было подвергнуто никаким изменениям.
Построение хэш-функций является трудной задачей, так как функции такого рода должны удовлетворять нескольким условиям. Во-первых, по результату, вычисленному с помощью данной функции, должно быть не возможно вычислить исходное сообщение. Во-вторых, должна отсутствовать возможность существования двух разных сообщений, для которых с помощью данной функции могли быть вычислены одинаковые результаты.
Помимо обеспечения целостности сообщений, хэш-функция может быть использована в качестве цифровой подписи для аутентификации передаваемого документа.
Цифровая подпись
Цифровая подпись (digital signature) - это способ проверки целостности содержимого сообщения и подлинности его отправителя. Реализуется с использованием асимметричных шрифтов, хэш-функций и передаваемой информации, самой подписи и пары ключей, что делает невозможным подтверждение подписи при изменении хотя бы одного из элементов.
Отправитель вычисляет хэш-функцию сообщения, шифрует ключом и отправляет вместе с письмом. Получатель, приняв сообщение, расшифровывает ее открытым ключом отправителя. Кроме того, получатель сам вычисляет хэш-функцию принятого сообщения и сравнивает с расшифрованным. Если результаты совпадают, то подпись является подлинной. В противном случае либо изменено содержание сообщения, либо подпись подделана. Таким образом гарантируется неизменность документа и авторство подписи.
Подробно о криптосистемах, алгоритмах шифрования, цифровой подписи и многом другом, можно прочитать в приведенных ниже книгах и публикациях.
6. Аппаратура локальных сетей. Виды, назначение.
Аппаратура локальных сетей обеспечивает реальную связь между абонентами. Выбор аппаратуры имеет важнейшее значение на этапе проектирования сети, так как стоимость аппаратуры составляет наиболее существенную часть от стоимости сети в целом, а замена аппаратуры связана не только с дополнительными расходами, но зачастую и с трудоемкими работами. К аппаратуре локальных сетей относятся:
- кабели для передачи информации;
- разъемы для присоединения кабелей;
- согласующие терминаторы;
- сетевые адаптеры;
- репитеры;
- трансиверы;
- концентраторы;
- мосты;
- маршрутизаторы;
- шлюзы.
О первых трех компонентах сетевой аппаратуры уже говорилось в предыдущих главах. Сейчас мы остановимся на функциях остальных компонентов.
Сетевые адаптеры (они же контроллеры, карты, платы, интерфейсы, NIC -Network Interface Card) - это основная часть аппаратуры локальной сети, без которой сеть невозможна. Назначение сетевого адаптера - сопряжение компьютера (или другого абонента) с сетью, то есть обеспечение обмена информацией между компьютером и каналом связи в соответствии с принятыми правилами обмена. Именно они выполняют функции нижних уровней модели OSI. Как правило, сетевые адаптеры выполняются в виде платы, вставляемой в слоты расширения системной магистрали (шины) компьютера (чаще всего ISA или PCI). Плата сетевого адаптера обычно имеет также один или несколько внешних разъемов для подключения к ней кабеля сети.
Все функции сетевого адаптера делятся на магистральные и сетевые. К магистральным относятся те функции, которые осуществляют обмен адаптера с магистралью (системной шиной) компьютера (то есть опознание своего магистрального адреса, пересылка данных в компьютер и из компьютера, выработка сигнала прерывания компьютера и т.д.). Сетевые функции обеспечивают общение адаптера с сетью.
Рис. Плата сетевого адаптера
Для нормальной работы платы адаптера в составе компьютера необходимо правильно установить ее основные параметры:
базовый адрес порта ввода/вывода (то есть начальный адрес зоны адресов, по которым компьютер будет общаться с адаптером);
номер используемого прерывания (то есть номер линии запроса, по которой адаптер будет сообщать компьютеру о необходимости обмена с ним);
базовые адреса буферной и загрузочной памяти (то есть начальные адреса зон адресов памяти, входящей в состав адаптера, по которым компьютер будет общаться с данной памятью).
Эти параметры могут выбираться на плате адаптера с помощью устанавливаемых пользователем перемычек (джамперов) или переключателей, но могут задаваться и программно с помощью специальной программы инициализации адаптера, поставляемой вместе с платой (в так называемых Jumperless-адаптерах). При выборе всех параметров (адресов и номеров прерываний) необходимо следить, чтобы они отличались от тех, которые заняты другими устройствами компьютера (как системными, так и дополнительно подключенными). Современные сетевые адаптеры часто поддерживают режим Plug-and-Play, то есть не нуждаются в настройке параметров со стороны пользователя, настройка в них осуществляется автоматически при включении питания компьютера.
К основным сетевым функциям адаптеров относятся следующие:
• гальваническая развязка компьютера и кабеля локальной сети (для этого обычно используется передача сигналов через импульсные трансформаторы);
преобразование логических сигналов в сетевые и обратно; кодирование и декодирование сетевых сигналов;
опознание принимаемых пакетов (выбор из всех приходящих пакетов тех, которые адресованы данному абоненту); преобразование параллельного кода в последовательный при передаче и обратное преобразование при приеме; буферирование передаваемой и принимаемой информации в буферной памяти адаптера; организация доступа к сети в соответствии с принятым методом управления обменом; подсчет контрольной суммы пакетов при передаче и приеме. Как правило, все сетевые функции выполняются специальными микросхемами высокой степени интеграции, что позволяет снизить стоимость адаптера и уменьшить площадь его платы.
Некоторые адаптеры позволяют реализовать функцию удаленной загрузки, то есть поддерживать работу в сети бездисковых компьютеров, загружающих свою операционную систему прямо из сети. Для этого в состав таких адаптеров включается постоянная память с соответствующей программой загрузки. Правда, не все сетевые программные средства поддерживают данный режим работы.
Если сетевой адаптер может работать с несколькими типами кабеля, то еще одним настраиваемым параметром может быть выбор типа кабеля. Например, на плате адаптера может находиться группа переключателей, перекоммутирующих нужные цепи для того или иного типа кабеля.
Все остальные аппаратные средства локальных сетей (кроме адаптеров) имеют вспомогательный характер, и без них часто можно обойтись Трансиверы, или приемопередатчики (от английского TRANsmitter + reCEIVER), служат для передачи информации между адаптером и кабелем сети или между двумя сегментами (частями) сети. Трансиверы усиливают сигналы, преобразуют их уровни или преобразуют сигналы в другую форму (например, из электрической в световую и обратно). Трансиверами также часто называют встроенные в адаптер приемопередатчики.
Рис. 4.4. Соединение репитером двух сегментов сети
Репитеры, или повторители (repeater), выполняют более простую функцию, чем трансиверы. Они не преобразуют ни уровни сигналов, ни их вид, а только восстанавливают ослабленные сигналы (их амплитуду и форму), приводя их форму к исходному виду. Цель такой ретрансляции сигналов состоит в увеличении длины сети (рис. 4.4). Однако часто репитеры выполняют и некоторые другие функции, например гальваническую развязку соединяемых сегментов. В любом случае, как репитеры, так и трансиверы не производят никакой информационной обработки проходящих через них сигналов.
Концентраторы (hub), как следует из их названия, служат для объединения в единую сеть нескольких сегментов сети. Концентраторы можно разделить на пассивные и активные.
Пассивные, или репитерные, концентраторы представляют собой собранные в едином конструктиве несколько репитеров. Они выполняют те же функции, что и репитеры (рис. 4.5). Преимущество подобных концентраторов по сравнению с отдельными репитерами только в том, что все точки подключения собраны в одном месте, что упрощает реконфигурацию сети, контроль за ней и поиск неисправностей. К тому же все репитеры в данном случае питаются от единого качественного источника питания.
Пассивные концентраторы иногда вмешиваются в обмен, помогая устранять некоторые явные ошибки обмена.
Рис. 4.5. Структура репитерного концентратора
Активные концентраторы выполняют более сложные функции, чем пассивные, например, они могут преобразовывать информацию и протоколы обмена. Правда, это преобразование очень простое. Примером активных концентраторов могут служить коммутирующие или переключающие концентраторы (switching hub), коммутаторы. Они передают из одного сегмента сети в другой сегмент не все пакеты, а только те, которые действительно адресованы компьютерам из другого сегмента. При этом сам пакет коммутатором не принимается. Это приводит к снижению интенсивности обмена в сети вследствие разделения нагрузки, так как каждый сегмент работает только со своими пакетами.
Мосты (bridge), маршрутизаторы (router) и шлюзы (gateway) служат для объединения в единую сеть нескольких разнородных сетей с разными протоколами обмена нижнего уровня, в частности, с разными форматами пакетов, разными методами кодирования, разной скоростью передачи и т.д. В результате их применения сложная и неоднородная сеть, содержащая в себе самые разные сегменты, с точки зрения пользователя выглядит обычной сетью - то есть обеспечивается «прозрачность» сети для протоколов высокого уровня. Естественно, мосты, маршрутизаторы и шлюзы гораздо сложнее и дороже, чем концентраторы, так как от них требуется довольно сложная обработка информации. Реализуются они на базе компьютеров, подключенных к сети с помощью сетевых адаптеров. По сути, это специализированные абоненты (узлы) сети.
Мосты - наиболее простые устройства, служащие для объединения сетей с разными стандартами обмена, например Ethernet и Arcnet, или нескольких сегментов (частей) одной и той же сети, например Ethernet (рис. 4.6). В последнем случае мост служит только для разделения нагрузок сегментов, повышая тем самым производительность сети в целом. В отличие от коммутирующих концентраторов, мосты принимают поступающие пакеты целиком и в случае необходимости производят их простейшую обработку.
Рис. 4.6. Включение моста
Маршрутизаторы выполняют более сложную функцию, чем мосты. Их главная задача - выбор для каждого пакета оптимального маршрута для избегания чрезмерной нагрузки отдельных участков сети и обхода поврежденных участков. Они применяются, как правило, в сложных разветвленных сетях, имеющих несколько маршрутов между отдельными абонентами. Маршрутизаторы не преобразуют протоколы нижних уровней, поэтому они соединяют только сегменты одноименных сетей. Существуют также гибридные маршрутизаторы (brouter), представляющие собой гибрид моста и маршрутизатора. Они выделяют пакеты, которым нужна маршрутизация, и обрабатывают их как маршрутизаторы, а для остальных пакетов служат обычными мостами.
Шлюзы — это устройства для соединения совершенно различных сетей с сильно отличающимися протоколами, например для соединения локальных сетей с большими компьютерами или с глобальными сетями. Это самые дорогие и редко применяемые сетевые устройства.
Если обратиться к модели OSI, то можно считать, что репитеры и репи-терные концентраторы связывают сети или сегменты на первом уровне, мосты - на втором уровне, маршрутизаторы — на третьем уровне, а шлюзы - на более высоких уровнях (на 4,5,6 и 7). Соответственно, репитеры выполняют функции (не все, а только некоторые) первого уровня, мосты реализуют функции второго уровня (на первом уровне и частично на втором у них работают сетевые адаптеры), маршрутизаторы - третьего уровня, а шлюзы должны выполнять функции всех уровней.
7. Стандартные локальные сети.
Стандартные сети обеспечивают большой диапазон допустимых размеров сети, допустимого количества абонентов сети и, что не менее важно, большой диапазон цен на аппаратуру.
· Сети Ethernet и Fast Ethernet
· Сеть Token-Ring
· Сеть Arcnet
· Сеть FDDI
· Ceть lOOVG-AnyLAN
· Сверхвысокоскоростные сети
Сети Ethernet и Fast Ethernet
За время, прошедшее с появления первых локальных сетей, было разработано несколько сотен самых разных сетевых технологий, однако заметное распространение получили всего несколько сетей, что связано прежде всего с поддержкой этих сетей известными фирмами и с высоким уровнем стандартизации принципов их организации. Далеко не всегда стандартные сети имеют рекордные характеристики, обеспечивают наиболее оптимальные режимы обмена, но большие объемы выпуска их аппаратуры и, следовательно, ее невысокая стоимость обеспечивают им огромные преимущества. Немаловажно и то, что производители программных средств также в первую очередь ориентируются на самые распространенные сети. Поэтому пользователь, выбирающий стандартные сети, имеет полную гарантию совместимости аппаратуры и программ.
В настоящее время тенденция уменьшения количества типов используемых сетей все усиливается. Дело в том, что увеличение скорости передачи в локальных сетях до 100 и даже до 1000 Мбит/с требует применения самых передовых технологий, проведения серьезных и дорогих научных исследований. Естественно, это могут позволить себе только крупнейшие фирмы, которые, конечно же, поддерживают свои стандартные сети и их более совершенные разновидности. К тому же большинство потребителей уже установило у себя какие-то сети и вовсе не желает сразу и полностью заменять все сетевое оборудование на другое, пусть даже в чем-то лучшее. Поэтому в ближайшем будущем вряд ли стоит ожидать принятия принципиально новых стандартов.
На рынке имеются стандартные локальные сети всех возможных топологий, так что выбор у пользователей имеется. Стандартные сети обеспечивают большой диапазон допустимых размеров сети, допустимого количества абонентов сети и, что не менее важно, большой диапазон цен на аппаратуру. Но проблема выбора той или иной сети все равно остается непростой. Ведь в отличие от программных средств, заменить которые совсем не трудно, выбранная аппаратура обычно служит многие годы, так как ее замена ведет не только к большим затратам средств, но и к необходимости перекладки кабелей, а то и к пересмотру всей системы компьютерных средств фирмы. Поэтому ошибки в выборе аппаратуры гораздо дороже ошибок в выборе программных средств.
Мы остановимся в данной главе на основных особенностях аппаратуры наиболее популярных локальных сетей, что, как мы надеемся, поможет читателю сделать правильный выбор.
Наибольшее распространение среди стандартных сетей .получила сеть Ethernet. Впервые она появилась в 1972 году (разработчиком выступила известная фирма Xerox). Сеть оказалась довольно удачной, и вследствие этого ее в 1980 году поддержали такие крупнейшие фирмы, как DEC и Intel (объединение этих фирм, поддерживающих Ethernet, назвали DIX по первым буквам их названий). Стараниями этих фирм в 1985 году сеть Ethernet стала международным стандартом, ее приняли крупнейшие международные организации по стандартам: комитет 802 IEEE (Institute of Electrical and Electronic Engineers) и ЕСМА (European Computer Manufacturers Association).
Стандарт получил название IEEE 802.3 (по-английски читается как «eight oh two dot three»). Он определяет множественный доступ к моноканалу типа «шина» с обнаружением конфликтов и контролем передачи, то есть с уже упоминавшимся методом доступа CSMA/CD. Вообще-то надо сказать, что этому стандарту удовлетворяют и некоторые другие сети, так как он не очень сильно детализирован. В результате сети стандарта IEEE 802.3 нередко несовместимы между собой как по конструктивным, так и по электрическим характеристикам. Основные характеристики стандарта IEEE 802.3 следующие: топология — шина, среда передачи - коаксиальный кабель, скорость передачи - 10 Мбит/с, максимальная длина — 5 км, максимальное количество абонентов — до 1024, длина сегмента сети - до 500 м, количество абонентов на одном сегменте — до 100, метод доступа -CSMA/CD, передача узкополосная, то есть без модуляции (моноканал).
Строго говоря, между стандартами IEEE 802.3 и Ethernet существуют небольшие отличия, но о них обычно предпочитают не вспоминать.
Сеть Ethernet сейчас наиболее популярна в мире (более 70 миллионов абонентов сети в 1996 году, свыше 100 миллионов абонентов в 1997 году, или более 80% рынка), и нет сомнения, что таковой она и останется в ближайшие годы. Этому в немалой степени способствовало то, что с самого начала все характеристики, параметры, протоколы сети были открыты для всех, в результате чего огромное число производителей во всем мире стали выпускать аппаратуру Ethernet, полностью совместимую между собой.
В классической сети Ethernet применяется 50-омный коаксиальный кабель двух видов (толстый и тонкий). Однако в последнее время (с начала 90-х годов) все большее распространение получает версия Ethernet, использующая в качестве среды передачи витые пары. Определен также стандарт для применения в сети оптоволоконного кабеля. В стандарты были внесены соответствующие добавления. В 1995 году появился стандарт на более быструю версию Ethernet, работающую на скорости 100 Мбит/с (так называемый Fast Ethernet, стандарт IEEE 802.3u), использующую в качестве среды передачи витую пару или оптоволоконный кабель. Появилась и версия на скорость 1000 Мбит/с (Gigabit Ethernet, стандарт IEEE 802.3z).
Помимо стандартной топологии «шина» применяются также топологии типа «пассивная звезда» и «пассивное дерево». При этом предполагается использование репитеров и пассивных (репитерных) концентраторов, соединяющих между собой различные части (сегменты) сети (рис. 5.1). В качестве сегмента может также выступать единичный абонент. Коаксиальный кабель используется для шинных сегментов, а витая пара и оптоволоконный кабель — для лучей пассивной звезды (для присоединения к концентратору одиночных компьютеров). Главное - чтобы в полученной в результате топологии не было замкнутых путей (петель). Фактически получается, что абоненты соединены в физическую шину, так как сигнал от каждого из них распространяется сразу во все стороны и не возвращается назад (как в кольце). Максимальная длина кабеля всей сети в целом (максимальный путь сигнала) теоретически может достигать 6,5 км, но практически не превышает 2,5 км.
В сети Fast Ethernet не предусмотрена физическая топология «шина», используется только «пассивная звезда» или «пассивное дерево». К тому же в Fast Ethernet гораздо более жесткие требования к предельной длине сети. Ведь при увеличении в 10 раз скорости передачи и сохранении формата пакета его минимальная длина становится в десять раз короче (5,12 икс против 51,2 мкс в Ethernet). Допустимая величина двойного времени прохождения сигнала по сети уменьшается в 10 раз.
Рис. 5.1. Топология сети Ethernet
Для передачи информации в сети Ethernet применяется стандартный код Манчестер-П. При этом один уровень сигнала нулевой, а другой - отрицательный, то есть постоянная составляющая сигнала не равна нулю. При отсутствии передачи потенциал в сети нулевой. Гальваническая развязка осуществляется аппаратурой адаптеров, репитеров и концентраторов. При этом приемопередатчик сети гальванически развязан от остальной аппаратуры с помощью трансформаторов и изолированного источника питания, а с кабелем сети соединен напрямую.
Рис. 5.2. Структура пакета сети Ethernet, (цифры показывают количество байт)
Доступ к сети Ethernet осуществляется по случайному методу CSMA/ CD, обеспечивающему полное равноправие абонентов. В сети используются пакеты переменной длины со структурой, представленной на рис. 5.2. Длина кадра Ethernet (то есть пакета без преамбулы) должна быть не менее 512 битовых интервалов, или 51,2 мкс (именно такова предельная
величина двойного времени прохождения в сети). Предусмотрена индивидуальная, групповая и широковещательная адресация.
В пакет Ethernet входят следующие поля:
· Преамбула состоит из 8 байт, первые семь из которых представляют собой код 10101010, а последний восьмой — код 10101011. В стандарте IEEE 802.3 этот последний байт называется признаком начала кадра (SFD - Start of Frame Delimiter) и образует отдельное поле пакета.
· Адрес получателя (приемника) и адрес отправителя (передатчика) включают по 6 байт и строятся по стандарту, описанному в разделе 3.2. Эти адресные поля обрабатываются аппаратурой абонентов.
· Поле управления (L/T - Length/Type) содержит информацию о длине поля данных. Оно может также определять тип используемого протокола. Принято считать, что если значение этого поля не больше 1500, то оно определяет длину поля данных. Если же его значение больше 1500, то оно определяет тип кадра. Поле управления обрабатывается программно.
· Поле данных должно включать в себя от 46 до 1500 байт данных. Если пакет должен содержать менее 46 байт данных, то поле данных дополняется байтами заполнения. Согласно стандарту IEEE 802.3, в структуре пакета выделяется специальное поле заполнения (pad data - незначащие данные), которое может иметь нулевую длину, когда данных достаточно (больше 46 байт).
· Поле контрольной суммы (FCS — Frame Check Sequence) содержит 32-разрядную циклическую контрольную сумму пакета (CRC) и служит для проверки правильности передачи пакета.
Таким образом, минимальная длина кадра (пакета без преамбулы) составляет 64 байта (512 бит). Именно эта величина определяет максимально допустимую двойную задержку распространения сигнала по сети в 512 битовых интервалов (51,2 мкс для Ethernet, 5,12 мкс для Fast Ethernet). Стандарт предполагает, что преамбула может уменьшаться при прохождении пакета через различные сетевые устройства, поэтому она не учитывается. Максимальная длина кадра равна 1518 байтам (12144 бита, то есть 1214,4 мкс для Ethernet, 121,44 мкс для Fast Ethernet). Это важно для выбора размера буферной памяти сетевого оборудования и для оценки общей загруженности сети.
Для сети Ethernet, работающей на скорости 10 Мбит/с, стандарт определяет четыре основных типа среды передачи информации:
· 10BASE5 (толстый коаксиальный кабель);
· 10 BASE2 (тонкий коаксиальный кабель);
· 1OBASE-T (витая пара);
· 10BASE-FL (оптоволоконный кабель).
Обозначение среды передачи включает в себя три элемента: цифра «10» означает скорость передачи 10 Мбит/с, слово BASE означает передачу в основной полосе частот (то есть без модуляции высокочастотного сигнала), а последний элемент означает допустимую длину сегмента: «5» — 500 метров, «2» - 200 метров (точнее, 185 метров) или тип линии связи: «Т» -витая пара (от английского «twisted-pair»), «F» - оптоволоконный кабель (от английского «fiber optic»).
Точно так же для сети Ethernet, работающей на скорости 100 Мбит/с (Fast Ethernet) стандарт определяет три типа среды передачи:
· 100BASE-T4 (счетверенная витая пара);
· 100BASE-TX (сдвоенная витая пара);
· 100BASE-FX (оптоволоконный кабель).
Здесь цифра «100» означает скорость передачи 100 Мбит/с, буква «Т» означает витую пару, буква «F» — оптоволоконный кабель. Типы 1OOBASE-ТХ и 100BASE-FX иногда объединяют под именем 100BASE-X, а 100BASE-T4 и 100BASE-TX - под именем 100BASE-T.
Подробнее особенности аппаратуры Ethernet, а также алгоритма управления обменом CSMA/CD и алгоритма вычисления циклической контрольной суммы (CRC) будут рассмотрены далее в специальных разделах книги. Здесь же мы только отметим, что сеть Ethernet не отличается ни рекордными характеристиками, ни оптимальными алгоритмами, она уступает по ряду параметров другим стандартным сетям. Но благодаря мощной поддержке, высочайшему уровню стандартизации, огромным объемам выпуска технических средств, Ethernet резко выделяется среди других стандартных сетей, и поэтому любую другую сетевую технологию принято сравнивать именно с Ethernet.
Сеть Token-Ring
Сеть Token-Ring была предложена фирмой IBM в 1985 году (первый вариант появился в 1980 году). Назначением Token-Ring было объединение в сеть всех типов компьютеров, выпускаемых IBM (от персональных до больших). Уже тот факт, что ее поддерживает фирма IBM, крупнейший производитель компьютерной техники, говорит о том, что ей необходимо уделить особое внимание. Но не менее важно и то, что Token-Ring является в настоящее время международным стандартом IEEE 802.5. Это ставит данную сеть на один уровень по статусу с Ethernet.
Фирма IBM сделала все для максимально широкого распространения своей сети: была выпущена подробная документация вплоть до принципиальных схем адаптеров. В результате многие фирмы, например 3COM, Novell, Western Digital, Proteon приступили к производству адаптеров. Кстати, специально для этой сети, а также для другой сети IBM PC Network была разработана концепция NetBIOS. Если в разработанной ранее сети PC Network программы NetBIOS хранились во встроенной в адаптер постоянной памяти, то в сети Token-Ring уже применялась эмулирующая NetBIOS программа, что позволяло более гибко реагировать на особенности конкретной аппаратуры, поддерживая при этом совместимость с программами более высокого уровня.
По сравнению с аппаратурой Ethernet аппаратура Token-Ring оказывается заметно дороже, так как использует более сложные методы управления обменом, поэтому распространена сеть Token-Ring значительно меньше. Однако ее применение становится оправданным, когда требуются большие интенсивности обмена (например, при связи с большими компьютерами) и ограниченное время доступа.
Рис. 5.3. Звездно-кольцевая топология сети Token-Ring
Сеть Token-Ring имеет топологию «кольцо», хотя внешне она больше напоминает «звезду». Это связано с тем, что отдельные абоненты (компьютеры) присоединяются к сети не прямо, а через специальные концентраторы или многостанционные устройства доступа (MSAU или MAU -Multistation Access Unit). Поэтому физически сеть образует звездно-кольцевую топологию (рис. 5.3). В действительности же абоненты объединяются все-таки в кольцо, то есть каждый из них передает информацию одному соседнему абоненту, а принимает информацию от другого соседнего абонента.
Концентратор (MAU) при этом только позволяет централизовать задание конфигурации, отключение неисправных абонентов, контроль за работой сети и т.д. (рис. 5.4). Для присоединения кабеля к концентратору применяются специальные разъемы, которые обеспечивают постоянство замкнутости кольца даже при отключении абонента от сети. Концентратор в сети может быть и единственным, в этом случае в кольцо замыкаются только абоненты, подключенные к нему.
Рис. 5.4. Соединение абонентов сети Token-Ring в кольцо с помощью концентратора (MAU)
В каждом кабеле, соединяющем адаптеры и концентратор (адаптерные кабели, adapter cable), находятся на самом деле две разнонаправленные линии связи. Такими же двумя разнонаправленными линиями связи, входящими в магистральный кабель (path cable), объединяются между собой в кольцо различные концентраторы (рис. 5.5), хотя для этой же цели может также использоваться и единственная однонаправленная линия связи (рис. 5.6).
Рис. 5.5. Объединение концентраторов двунаправленной линией связи
Рис. 5.6. Объединение концентраторов однонаправленной линией связи
Конструктивно концентратор представляет собой автономный блок с восемью разъемами для подключения абонентов (компьютеров) с помощью адаптерных кабелей и двумя (крайними) разъемами для подключения к другим концентраторам с помощью специальных магистральных кабелей (рис. 5.7). Существуют настенный и настольный варианты концентратора.
Несколько концентраторов могут конструктивно объединяться в группу, кластер (cluster), внутри которого абоненты также соединены в единое кольцо. Применение кластеров позволяет увеличивать количество абонентов, подключенных к одному центру (например, до 16, если в кластер входит два концентратора).
Рис. 5.7. Концентратор Token-Ring (8228 MAU)
В качестве среды передачи в сети IBM Token-Ring сначала применялась витая пара, но затем появились варианты аппаратуры для коаксиального кабеля, а также для оптоволоконного кабеля в стандарте FDDI. Витая пара применяется как неэкранированная (UTP), так и экранированная (STP).
Основные технические характеристики сети Token-Ring следующие.
· Максимальное количество концентраторов типа IBM 8228 MAU - 12.
· Максимальное количество абонентов в сети - 96.
· Максимальная длина кабеля между абонентом и концентратором — 45 м.
· Максимальная длина кабеля между концентраторами -45м.
· Максимальная длина кабеля, соединяющего все концентраторы - 120м.
· Скорость передачи данных - 4 Мбит/с и 16 Мбит/с.
Все приведенные характеристики относятся к случаю неэкранированной витой пары. В случае применения другой среды передачи характеристики сети могут отличаться. Например, при использовании экранированной витой пары количество абонентов может быть увеличено до 260 (вместо 96), длина кабеля - до 100 м (вместо 45), количество концентраторов -до 33, а полная длина кольца, соединяющего концентраторы - до 200 м. Оптоволоконный кабель позволяет увеличивать длину кабеля до 1 км.
Как видим, сеть Token-Ring уступает сети Ethernet как по допустимому размеру сети, так и по максимальному количеству абонентов. Что касается скорости передачи, то в настоящее время ведется разработка версий Token-Ring на скорость 100 Мбит/с и на 1000 Мбит/с. Фирма IBM вовсе не собирается отказываться от своей сети, рассматривая ее как достойного конкурента Ethernet.
Для передачи информации в Token-Ring используется вариант кода Ман-честер-П. Как и в любой звездообразной топологии, никаких дополнительных мер по электрическому согласованию и внешнему заземлению не требуется.
Для присоединения кабеля к сетевому адаптеру используется внешний 9-контактный разъем типа DIN. Так же, как и адаптеры Ethernet, адаптеры Token-Ring имеют на своей плате переключатели или перемычки для настройки адресов и прерываний системной шины. Если сеть Ethernet можно построить только на адаптерах и кабеле, то для сети Token-Ring обязательно нужно приобретать концентраторы. Это также увеличивает стоимость аппаратуры Token-Ring.
В то же время в отличие от Ethernet сеть Token-Ring лучше держит большую нагрузку (больше 30-40%) и обеспечивает гарантированное время доступа. Это крайне необходимо, например, в сетях производственного назначения, в которых задержка реакции на внешнее событие может привести к серьезным авариям.
В сети Token-Ring используется классический маркерный метод доступа, то есть по кольцу постоянно циркулирует маркер, к которому абоненты могут присоединять свои пакеты данных. Отсюда следует такое важное достоинство данной сети, как отсутствие конфликтов, но отсюда же следуют такие недостатки, как необходимость контроля за целостностью маркера и зависимость функционирования сети от каждого из абонентов (в случае неисправности абонент обязательно должен быть исключен из кольца).
Для контроля за целостностью маркера используется один из абонентов (так называемый активный монитор). Его аппаратура ничем не отличается от остальных, но его программные средства следят за временными соотношениями в сети и формируют в случае необходимости новый маркер. Активный монитор выбирается при инициализации сети, им может быть любой компьютер сети. Если активный монитор по какой-то причине выходит из строя, то включается специальный механизм, посредством которого другие абоненты (запасные мониторы) принимают решение о назначении нового активного монитора.
Рис. 5.8. Формат маркера сети Token-Ring
Маркер представляет собой управляющий пакет, содержащий всего три байта (рис. 5.8): байт начального разделителя (SD - Start Delimiter), байт управления доступом (АС - Access Control) и байт конечного разделителя (ED - End Delimiter). Начальный разделитель и конечный разделитель представляют собой не просто последовательность нулей и единиц, а содержат импульсы специального вида. Благодаря этому данные разделители нельзя спутать ни с какими другими байтами пакетов. Четыре бита разделителя представляют собой нулевые биты в принятой кодировке, а четыре других бита не соответствуют коду Манчестер-П: в течение двух битовых интервалов удерживается один уровень сигнала, а в течение двух остальных — другой уровень. В результате такой сбой синхронизации легко выявляется приемником.
Рис. 5.9. Формат байта управления доступом
Байт управления разделен на четыре поля (рис. 5.9): три бита приоритета, бит маркера, бит монитора и три бита резервирования. Биты приоритета позволяют абоненту присваивать приоритет своим пакетам или маркеру (приоритет может быть от 0 до 7, причем 7 соответствует наивысшему приоритету, а 0 — наинизшему). Абонент может присоединить к маркеру свой пакет только тогда, когда его собственный приоритет такой же или выше приоритета маркера. Бит маркера определяет, присоединен ли к маркеру пакет (единица соответствует маркеру без пакета, нуль - маркеру с пакетом). Бит монитора, установленный в единицу, говорит о том, что данный маркер передан активным монитором. Биты резервирования позволяют абоненту зарезервировать свое право на дальнейший захват сети, то есть, так сказать, занять очередь на обслуживание. Если приоритет абонента выше, чем текущее значение поля резервирования, он может записать туда свой приоритет вместо прежнего.
Формат пакета Token-Ring представлен на рис. 5.10. Помимо начального и конечного разделителей, а также байта управления доступом, в пакет входят также байт управления пакетом, сетевые адреса приемника и передатчика, данные, контрольная сумма и байт состояния,пакета.
Рис. 5.10. Формат пакета сети Token-Ring (длина полей дана в байтах)
Назначение полей пакета следующее:
· Начальный разделитель (SD) является признаком начала пакета.
· Байт управления доступом (АС) имеет то же назначение, что и в маркере.
· Байт управления пакетом (FC - Frame Control) определяет тип пакета (кадра).
· Шестибайтовые адреса отправителя и получателя пакета имеют стандартный формат, описанный в разделе 3.2.
· Поле данных включает в себя передаваемую информацию или информацию управления обменом.
· Поле контрольной суммы представляет собой 32-разрядную циклическую контрольную сумму пакета (CRC).
· Конечный разделитель является признаком конца пакета. Кроме того, он определяет, является ли данный пакет промежуточным или заключительным в последовательности передаваемых пакетов, а также содержит признак ошибочности пакета (для этого выделены специальные биты).
· Байт состояния пакета говорит о том, что происходило с данным пакетом: был ли он принят и скопирован в память приемника. По нему отправитель пакета узнает, дошел ли пакет по назначению и без ошибок или его надо передавать заново.
Отметим, что больший допустимый размер передаваемых данных в одном пакете по сравнению с сетью Ethernet может стать решающим фактором для увеличения производительности сети. Теоретически для скорости передачи 16 Мбит/с длина поля данных может достигать даже 18 Кбайт, что очень важно при передаче больших объемов данных. Но даже при скорости 4 Мбит/с благодаря маркерному методу доступа сеть Token-Ring часто обеспечивает большую фактическую скорость передачи, чем более быстрая сеть Ethernet (10 Мбит/с), особенно при больших нагрузках (свыше 30—40%), когда заметно сказывается несовершенство метода CSMA/CD, который в этом случае тратит много времени на разрешение повторных конфликтов.
Помимо маркера и обычного пакета, в сети Token-Ring может передаваться специальный управляющий пакет, служащий для прерывания передачи. Он может быть послан в любой момент и в любом месте потока данных. Пакет этот состоит всего из двух однобайтовых полей — начального и конечного разделителей описанного формата.
Интересно, что в более быстрой версии Token-Ring (16 Мбит/с и выше) применяется так называемый метод раннего формирования маркера (ETR -Early Token Release). Он позволяет избежать непроизводительного использования сети в то время, пока пакет данных не вернется по кольцу к своему отправителю. Метод ETR сводится к тому, что сразу после передачи своего пакета, присоединенного к маркеру, любой абонент выдает в сеть новый свободный маркер, то есть все другие абоненты могут начинать передачу своих пакетов сразу же после окончания пакета предыдущего абонента, не дожидаясь, пока он завершит обход всего кольца сети.
Сеть Arcnet
Сеть Arcnet (или ARCnet, от англ. Attached Resource Computer Net) - это одна из старейших сетей. Она была разработана фирмой Datapoint Corporation еще в 1977 году. Международные стандарты на эту сеть отсутствуют, хотя именно она считается родоначальницей метода маркерного доступа. Несмотря на отсутствие стандартов, сеть Arcnet до недавнего времени пользовалась довольно большой популярностью, даже серьезно конкурировала с Ethernet. Большое количество фирм (например, Datapoint, Standard Microsystems, Xircom и др.) производили аппаратуру для сети этого типа, но сейчас производство аппаратуры Arcnet практически прекращено.
Среди основных достоинств сети Arcnet можно назвать высокую надежность и гибкость, простоту диагностики аппаратных неисправностей, меньшие по сравнению с Ethernet ограничения на общую длину сети (на обычном тонком коаксиальном кабеле), а также сравнительно низкую стоимость адаптеров. Из недостатков сети наиболее существенным является низкая скорость передачи информации (всего лишь 2,5 Мбит/с).
Для передачи информации в сети Arcnet используется довольно редкий код, в котором логической единице соответствуют два импульса в течение битового интервала, а логическому нулю - один импульс. Очевидно, что такой код относится к самосинхронизирующимся, но он требует еще большей пропускной способности кабеля, чем даже Манчестер-П.
В качестве топологии сеть Arcnet использует шину (Arcnet-BUS) и пассивную звезду (Arcnet-STAR). Они показаны на рис 5.11 и 5.12.
Рис. 5.11. Топология сети Arcnet типа «шина»
Рис. 5.12. Топология сети Arcnet типа «пассивная звезда»
Оборудование для топологии «шина» практически ничем не отличается от аналогичного, применяемого в сети Ethernet на тонком коаксиальном кабеле (10ВASE2). Здесь точно так же используются Т-коннекторы и BNC-разъемы, а также терминаторы с заземлением и без него. Единственное, но важное отличие состоит в том, что в данном случае кабель должен быть с волновым сопротивлением 93 Ом, например, марки RG-62A/U, а не 50-омным, как в Ethernet. Соответственно 93-омными должны быть и согласующие терминаторы. Несмотря на большое сходство оборудования, кабельные системы Ethernet и Arcnet несовместимы между собой, и в случае перехода, например, с Arcnet на Ethernet, все кабели придется проложить заново. В связи с резким сокращением выпуска сетей Arcnet эта задача становится довольно актуальной для тех, кто ориентировался на эту сеть.
В случае топологии «пассивная звезда» (или «пассивное дерево», то есть при нескольких концентраторах, объединенных между собой) применяются концентраторы двух типов: активные (которые ретранслируют принимаемые сигналы перед передачей другим абонентам) и пассивные (без ретрансляции). Концентраторы рассчитаны на 4, 8, 16 и 32 канала. 4-ка-нальные концентраторы обычно выполняются в виде платы расширения для компьютера, 8- и 16-канальные — как правило, в виде отдельных конструктивных блоков с собственными источниками питания, что определяет их значительно большую стоимость.
Активные концентраторы используются также и при создании топологии шина. В этом случае к каждому порту концентратора подключается сегмент шины с несколькими абонентами (не более 8). Минимальное расстояние между абонентами в шине составляет 1 м. Отметим, что для топологий шина и звезда применяются различные адаптеры (правда, существуют и адаптеры с возможностью работы как в шине, так и в звезде).
Основные технические характеристики сети Arcnet следующие.
· Среда передачи - коаксиальный кабель, витая пара.
· Максимальная длина сети - 6 км.
· Максимальная длина кабеля от абонента до пассивного концентратора - 30 м.
· Максимальная длина кабеля от абонента до активного концентратора - 600 м.
· Максимальная длина кабеля между активным и пассивным концентраторами - 30 м.
· Максимальная длина кабеля между активными концентраторами — 600 метров.
· Максимальное количество абонентов в сети1 - 255.
· Максимальное количество абонентов на шинном сегменте — 8.
· Максимальная длина сегмента - 300 м.
· Скорость передачи данных - 2,5 Мбит/с.
При создании сложных топологий необходимо следить, чтобы задержка распространения сигналов в сети не превышала 30 мкс. Максимальное затухание сигнала в кабеле на частоте 5 МГц не должно превышать 11 дБ.
Как видим, Arcnet уступает Ethernet по допустимому количеству абонентов сети, но в реальности любая сеть довольно редко объединяет больше сотни абонентов.
В сети Arcnet используется маркерный метод доступа (метод передачи права), но он несколько отличается от применяемого в сети Token-Ring. Ближе всего этот метод к тому, который предусмотрен в стандарте IEEE 802.4. Последовательность действий абонентов при данном методе следующая:
1. Абонент, желающий передавать, ждет прихода маркера.
2. Получив маркер, он посылает запрос на передачу приемнику информации (то есть спрашивает, готов ли приемник принять его пакет).
3. Приемник, получив запрос, посылает ответ (то есть подтверждает свою готовность).
4. Получив подтверждение готовности, передатчик посылает свой пакет.
5. Получив пакет, приемник посылает подтверждение приема пакета.
6. Передатчик, получив подтверждение приема пакета, посылает маркер следующему абоненту.
Таким образом, в данном случае пакет передается только тогда, когда есть уверенность в готовности приемника принять его. Это существенно увеличивает надежность передачи. Так же, как и в случае Token-Ring, конфликты в Arcnet полностью исключены. Как и любая маркерная сеть, Arcnet хорошо держит нагрузку и гарантирует величину времени доступа к сети (в отличие от Ethernet). Другое дело, что невысокая пропускная способность сети (2,5 Мбит/с) в принципе не позволяет передавать больших потоков информации, но для небольших сетей, тем более с разовыми случайными передачами, этого часто и не требуется. Отметим также, что маркер передается в данном случае по логическому кольцу, хотя физическая топология сети не кольцевая, а шинная.
Размер пакета сети Arcnet составляет 0,5 Кб. Помимо данных в него входят также 8-битные адреса приемника и передатчика и 16-битная циклическая контрольная сумма (CRC).
Адаптеры сети Arcnet чаще всего выпускаются в виде плат расширения компьютера. Точно так же, как и адаптеры других сетей, перед установкой в компьютер они требуют настройки: выбора адресов портов и номера прерывания. Помимо этой общей настройки на каждой плате адаптера Arcnet необходимо с помощью переключателей или перемычек установить свой собственный сетевой адрес (всего их может быть 255, так как последний, 256-ой адрес применяется в сети для режима широкого вещания).
Существовали варианты сети Arcnet, рассчитанные на скорость передачи 20 Мбит/с, но они не получили широкого распространения
Сеть FDDI
Сеть FDDI (от английского Fiber Distributed Data Interface, оптоволоконный распределенный интерфейс данных) - это одна из новейших разработок стандартов локальных сетей. Стандарт FDDI, предложенный Американским национальным институтом стандартов ANSI (спецификация ANSI X3T9.5), изначально ориентировался на высокую скорость передачи (100 Мбит/с) и на применение перспективного оптоволоконного кабеля (длина волны света - 850 нм). Поэтому в данном случае разработчики не были стеснены рамками стандартов, ориентировавшихся на низкие скорости и электрический кабель.
Выбор оптоволокна в качестве среды передачи определил такие преимущества новой сети, как высокая помехозащищенность, максимальная секретность передачи информации и прекрасная гальваническая развязка абонентов. Высокая скорость передачи, которая в случае оптоволоконного кабеля достигается гораздо проще, позволяет решать многие задачи, недоступные менее скоростным сетям, например, передачу изображений в реальном масштабе времени. Кроме того, оптоволоконный кабель легко решает проблему передачи данных на расстояние нескольких километров без ретрансляции, что позволяет строить гораздо большие по размерам сети, охватывающие даже целые города и имеющие при этом все преимущества локальных сетей (в частности, низкий уровень ошибок). И хотя к настоящему времени аппаратура FDDI не получила еще широкого распространения, ее перспективы очень неплохие.
За основу стандарта FDDI был взят метод маркерного доступа, предусмотренный международным стандартом IEEE 802.5 Token-Ring. Небольшие отличия от этого стандарта определяются необходимостью обеспечить высокую скорость передачи информации на большие расстояния. Топология сети FDDI - это кольцо, причем применяется два разнонаправленных оптоволоконных кабеля, что позволяет в принципе использовать полнодуплексную передачу информации с удвоенной эффективной скоростью в 200 Мбит/с (при этом каждый из двух каналов работает на скорости 100 Мбит/с). Применяется и звездно-кольцевая топология с концентраторами, включенными в кольцо.
Основные технические характеристики сети FDDI следующие.
· Максимальное количество абонентов сети — 1000.
· Максимальная протяженность кольца сети - 20 км.
· Максимальное расстояние между абонентами сети - 2 км.
· Среда передачи - многомодовый оптоволоконный кабель (возможно применение электрической витой пары).
· Метод доступа - маркерный.
· Скорость передачи информации — 100 Мбит/с (200 Мбит/с для дуплексного режима передачи).
Как видим, FDDI имеет большие преимущества по сравнению со всеми рассмотренными ранее сетями. Даже сеть Fast Ethernet, имеющая такую же пропускную способность 100 Мбит/с, не может сравниться с FDDI по допустимым размерам сети и допустимому количеству абонентов. К тому же маркерный метод доступа FDDI обеспечивает в отличие от CSMA/CD гарантированное время доступа и отсутствие конфликтов при любом уровне нагрузки.
Отметим, что ограничение на общую длину сети в 20 км связано не с затуханием сигналов в кабеле, а с необходимостью ограничения времени полного прохождения сигнала по кольцу для обеспечения предельно допустимого времени доступа. А вот максимальное расстояние между абонентами (2 км при многомодовом кабеле) определяется как раз затуханием сигналов в кабеле (оно не должно превышать 11 дБ). Предусмотрена также возможность применения одномодового кабеля, и в этом случае расстояние между абонентами может достигать 45 километров, а полная длина кольца - 100 километров.
Имеется и реализация FDDI на электрическом кабеле (CDDI — Copper Distributed Data Interface или TPDDI - Twisted Pair Distributed Data Interface). При этом используется кабель категории 5 с разъемами RJ-45. Максимальное расстояние между абонентами в этом случае должно быть не более 100 м. Стоимость оборудования сети на электрическом кабеле в несколько раз меньше. Но эта версия сети уже не имеет столь очевидных преимуществ перед своими конкурентами, как изначальная FDDI.
Ceть lOOVG-AnyLAN
Сеть lOOVG-AnyLAN - это одна из последних разработок высокоскоростных локальных сетей, недавно появившаяся на рынке. Она разработана фирмами Hewlett-Packard и IBM и соответствует стандарту IEEE 802.12, так что уровень ее стандартизации достаточно высокий. Главными достоинствами ее являются большая скорость обмена, сравнительно невысокая стоимость аппаратуры (примерно вдвое дороже по сравнению с наиболее популярной сетью Ethernet 10BASE-T), централизованный метод управления обменом без конфликтов и совместимость на уровне пакетов с популярными сетями Ethernet и Token-Ring. В названии сети цифра 100 соответствует скорости 100 Мбит/с, буквы VG обозначают дешевую витую пару категории 3 (Voice Grade), a AnyLAN (любая сеть) обозначает то, что сеть совместима с двумя самыми распространенными сетями.
Основные технические характеристики сети lOOVG-AnyLAN следующие.
· Скорость передачи - 100 Мбит/с.
· Топология - звезда с возможностью наращивания.
· Метод доступа - централизованный, бесконфликтный (Demand Priority - с запросом приоритета).
· Среда передачи - счетверенная неэкранированная витая пара (кабели UTP категории 3,4 или 5), сдвоенная витая пара (кабель UTP категории 5), сдвоенная экранированная витая пара (STP), а также оптоволоконный кабель. Сейчас в основном распространена счетверенная витая пара.
· Максимальная длина кабеля между концентратором и абонентом и между концентраторами - 100 м (для UTP кабеля категории 3), 150 м (для UTP кабеля категории 5 и экранированного кабеля), 2 км (для оптоволоконного кабеля).
Таким образом, параметры сети 100VG-AnyLAN довольно близки к параметрам сети Fast Ethernet. Однако главное преимущество Fast Ethernet -это полная совместимость с наиболее распространенной сетью Ethernet (в случае lOOVG-AnyLAN для этого обязательно требуется коммутатор или мост). В то же время, централизованное управление lOOVG-AnyLAN, исключающее конфликты и гарантирующее предельную величину времени доступа (чего не предусмотрено в сети Ethernet), также нельзя сбрасывать со счетов.
Пример структуры сети lOOVG-AnyLAN показан на рис. 5.18.
Рис. 5.18. Структура сети 10OVG-AnyLAN
Сеть lOOVG-AnyLAN состоит из центрального (основного) концентратора уровня 1, к которому могут подключаться как отдельные абоненты, так и концентраторы уровня 2, к которым в свою очередь подключаются абоненты и концентраторы уровня 3. При этом сеть может иметь не более трех таких уровней. Получается, что максимальный размер сети может составлять 600 метров для неэкранированной витой пары.
В отличие от неинтеллектуальных концентраторов других сетей (например, Ethernet), концентраторы сети lOOVG-AnyLAN - это интеллектуальные контроллеры, которые управляют всем доступом к сети. Для этого они непрерывно контролируют запросы, поступающие на все порты. Концентраторы принимают все приходящие пакеты и отправляют их только тем абонентам, которым они адресованы. Однако никакой обработки информации они не производят, то есть в данном случае получается все-таки не настоящая (активная) звезда, но и не пассивная звезда.
Каждый из концентраторов может быть настроен на работу с форматами пакетов Ethernet или пакетов Token-Ring. При этом концентраторы всей сети должны работать с пакетами только какого-нибудь одного формата. Для связи с сетями Ethernet и Token-Ring необходимы мосты, но мосты довольно простые.
Концентраторы имеют один порт верхнего уровня (для присоединения его к концентратору более высокого уровня) и несколько портов нижнего уровня (для присоединения абонентов). В качестве абонента может выступать компьютер (рабочая станция), сервер, мост, маршрутизатор, коммутатор, а также другой концентратор.
Каждый порт концентратора может быть установлен в один из двух возможных режимов работы.
· Нормальный режим предполагает пересылку абоненту, присоединенному к порту, тольк о пакетов, адресованных лично ему.
· Мониторный режим предполагает пересылку абоненту, присоединенному к порту, всех пакетов, приходящих на концентратор. Этот режим позволяет одному из абонентов контролировать работу всей сети в целом (выполнять функцию мониторинга).
Метод доступа к сети lOOVG-AnyLAN довольно типичен для сетей с топологией «звезда» и состоит в следующем.
Каждый желающий передавать абонент посылает концентратору свой запрос на передачу. Концентратор циклически прослушивает всех абонентов по очереди и дает право передачи абоненту, следующему по порядку за тем, который закончил передачу. То есть величина времени доступа гарантирована. Но этот простейший алгоритм усложнен в сети lOOVG-AnyLAN, так как запросы могут иметь два уровня приоритета:
· нормальный уровень приоритета используется для обычных приложений;
· высокий уровень приоритета используется для приложений, требующих быстрого обслуживания.
Запросы с высоким уровнем приоритета обслуживаются раньше, чем запросы с нормальным приоритетом. Если приходит запрос высокого приоритета, то нормальный порядок обслуживания прерывается, и после окончания приема текущего пакета обслуживается запрос высокого приоритета. Если таких высокоприоритетных запросов несколько, то возврат к нормальной процедуре обслуживания происходит только после полной обработки всех этих запросов. При этом концентратор следит за тем, что-
бы не была превышена установленная величина гарантированного времени доступа. Если высокоприоритетных запросов слишком много, то запросы с нормальным приоритетом автоматически переводятся им в ранг высокоприоритетных. Таким образом, даже низкоприоритетные запросы не будут ждать своей очереди слишком долго.
Концентраторы более низких уровней также анализируют запросы абонентов, присоединенных к ним, и в случае необходимости пересылают их запросы к концентратору более высокого уровня. За один раз концентратор более низкого уровня может передать концентратору более высокого уровня не один пакет (как обычный абонент), а столько пакетов, сколько абонентов присоединено к нему.
Сверхвысокоскоростные сети
Быстродействие сети Fast Ethernet, других сетей, работающих на скорости в 100 Мбит/с, в настоящее время удовлетворяет требованиям большинства задач, но в ряде случаев даже его оказывается недостаточно. Особенно это касается тех ситуаций, когда необходимо подключать к сети современные высокопроизводительные серверы или строить сети с большим количеством абонентов, требующих высокой интенсивности обмена. Например, все более широко применяется сетевая обработка трехмерных динамических изображений. Скорость компьютеров непрерывно растет, они обеспечивают все более высокие темпы обмена с внешними устройствами. В результате сеть может оказаться наиболее слабым местом системы, и ее пропускная способность будет основным сдерживающим фактором в увеличении быстродействия.
Работы по достижению скорости передачи в 1 Гбит/с (1000 Мбит/с) ведутся в последние годы довольно интенсивно в нескольких направлениях. Однако, скорее всего, наиболее перспективной окажется сеть Gigabit Ethernet. Это связано прежде всего с тем, что переход на нее окажется наиболее безболезненным, самым дешевым и психологически приемлемым. Ведь сеть Ethernet и ее более быстрая версия Fast Ethernet сейчас далеко опережают всех своих конкурентов по объему продаж и распространенности в мире.
Сеть Gigabit Ethernet — это естественный, эволюционный путь развития концепции, заложенной в стандартной сети Ethernet. Естественно, она наследует и все недостатки своих прямых предшественников, например, негарантированное время доступа к сети. Однако огромная пропускная способность приводит к тому, что загрузить сеть до тех уровней, когда этот фактор становится определяющим, довольно трудно. Зато сохранение преемственности позволяет довольно просто соединять сегменты Ethernet, Fast Ethernet и Gigabit Ethernet в единую сеть и, самое главное, переходить к новым скоростям постепенно, вводя гигабитные сегменты только на самых напряженных участках сети. (К тому же далеко не везде такая высокая пропускная способность действительно необходима.) Если же говорить о конкурирующих гигабитных сетях, то их применение может потребовать полной замены сетевой аппаратуры, что сразу же приведет к огромным затратам средств.
В сети Gigabit Ethernet сохраняется все тот же хорошо зарекомендовавший себя в предыдущих версиях метод доступа CSMA/CD, используются те же форматы пакетов (кадров) и те же размеры, то есть никакого преобразования протоколов в местах соединения с сегментами Ethernet и Fast Ethernet не потребуется. Единственно, что нужно, - это согласование скоростей обмена. Поэтому главной областью применения Gigabit Ethernet станет в первую очередь соединение концентраторов Ethernet и Fast Ethernet между собой.
С появлением сверхбыстродействующих серверов и распространением наиболее совершенных персональных компьютеров класса «high-end» преимущества Gigabit Ethernet будут становиться все более явными. Отметим, что 64-разрядная системная магистраль PCI, ставшая уже фактическим стандартом, вполне достигает требуемой для такой сети скорости передачи данных.
Работы по сети Gigabit Ethernet ведутся с 1995 года. В 1998 году принят стандарт, получивший наименование IEEE 802.3z. Разработкой занимается специально созданный альянс (Gigabit Ethernet Alliance), в который, в частности, входит такая известная фирма, занимающаяся сетевой аппаратурой, как 3Com.
Переход на такую огромную скорость передачи не столь прост, как может показаться. Для аппаратуры Gigabit Ethernet будут использоваться микросхемы, выполненные по самой современной 0,35-микронной технологии. Только они позволяют добиться требуемого быстродействия. Ожидается разработка 32-разрядного контроллера, имеющего и буферную память на кристалле, содержащем до миллиона логических элементов.
Номенклатура сегментов сети Gigabit Ethernet в настоящее время включает в себя следующие типы:
· 1000ВASE-SX - сегмент на мультимодовом оптоволоконном кабеле с длиной волны светового сигнала 850 нм (длиной до 500 м).
· 1000BASE-LX - сегмент на мультимодовом (длиной до 500 м) и одномодовом (длиной до 2000 м) оптоволоконном кабеле с длиной волны светового сигнала 1300 нм.
· 1000BASE-CX - сегмент на экранированной витой паре (длиной до 25 м).
· 1000BASE-T - сегмент на счетверенной неэкранированной витой паре (длиной до 100 м).
Специально для сети Gigabit Ethernet предложен метод кодирования передаваемой информации 8В/10В, построенный по тому же принципу, что и код 4В/5В сети FDDI. Восьми битам информации, которую нужно передать, ставится в соответствие 10 бит, передаваемых по сети. Этот код позволяет сохранять самосинхронизацию, легко обнаруживать несущую (факт передачи), но не требует удвоения полосы пропускания, как в случае кода Манчестер-П.
Для увеличения 512-битного интервала сети Ethernet, соответствующего минимальной длине пакета, (51,2 икс в сети Ethernet и 5,12 мкс в сети Fast Ethernet), разработаны специальные методы. В частности, минимальная длина пакета увеличена до 512 байт (4096 бит). В противном случае временной интервал 0,512 мкс чрезмерно ограничивал бы предельную длину сети Gigabit Ethernet. Все пакеты с длиной меньше 512 байт расширяются до 512 байт. Это требует дополнительной обработки пакетов.
Предполагается поддерживать передачу в сети Gigabit Ethernet как в полудуплексном режиме (с сохранением метода доступа CSMA/CD), так и в более быстром полнодуплексном режиме (как и в предшествующей сети Fast Ethernet).
Прежде всего Gigabit Ethernet, видимо, найдет применение в сетях, объединяющих компьютеры больших фирм, предприятий, которые располагаются в нескольких зданиях. Она позволит с помощью соответствующих коммутаторов, преобразующих скорости передачи, обеспечить каналы связи с высокой пропускной способностью между отдельными частями сложной сети (рис. 5.21) или линии связи коммутаторов со сверхбыстродействующими серверами (рис. 5.22).
Рис. 5.21. Использование сети Gigabit Ethernet для соединения групп компьютеров
Рис. 5.22. Использование сети Gigabit Ethernet для подключения быстродействующих серверов
Вероятно, в ряде случаев Gigabit Ethernet будет вытеснять оптоволоконную сеть FDDI, которая в настоящее время все чаще используется для объединения в единую сеть нескольких локальных сетей, в том числе, и сетей Ethernet. Правда, FDDI может связывать абонентов, находящихся на гораздо большем расстоянии друг от друга, но по скорости передачи информации Gigabit Ethernet существенно превосходит FDDI.
Нас ждет принципиально важный прорыв в область скоростей передачи, еще недавно казавшихся фантастическими и даже, более того, никому не нужными. А там, возможно, появится и сеть со скоростью 10 000 Мбит/с, ведь такие разработки уже ведутся.
В заключение раздела несколько слов об альтернативном решении сверхбыстродействующей сети. Речь идет о сети с технологией ATM (Asynchronous Transfer Mode). Данная технология используется как в локальных, так и в глобальных сетях. Основная ее идея — передача цифровых, голосовых и мультимедийных данных по одним и тем же каналам. Строго говоря, жесткого стандарта на аппаратуру ATM не предполагает.
Первоначально была выбрана скорость передачи 155 Мбит/с (для настольных систем - 25 Мбит/с), затем - 662 Мбит/с, а сейчас ведутся работы по повышению скорости до 2488 Мбит/с. Как видим, по скорости ATM успешно конкурирует с Gigabit Ethernet. Кстати, появилась ATM раньше, чем Gigabit Ethernet.
В качестве среды передачи информации в локальной сети технология ATM предполагает использование оптоволоконного кабеля и неэкранированную витую пару. Используемые коды - 4В/5В и 8В/10В.
Принципиальное отличие ATM от всех остальных сетей состоит в отказе от привычных пакетов с полями адресации, управления и данных. Вся информация передается упакованной в микропакеты (ячейки, cells) длиной всего лишь в 53 бита. Каждая ячейка имеет идентификатор типа данных (двоичные данные, звук или изображение). Идентификатор позволяет интеллектуальным распределительным устройствам сортировать ячейки и следить за тем, чтобы ячейки передавались в нужной последовательности. Минимальный размер ячеек позволяет осуществлять коррекцию ошибок и маршрутизацию на аппаратном уровне. Он же обеспечивает равномерность всех существующих в сети информационных потоков.
Главный недостаток сетей с технологией ATM состоит в их полной несовместимости ни с одной из существующих сетей. Плавный переход на ATM в принципе невозможен, нужно менять сразу все оборудование, а стоимость его пока что очень высока. Правда, работы по обеспечению совместимости ведутся, снижается и стоимость оборудования, так что перспективы у ATM неплохие. Тем более что задач по передаче изображений по компьютерным сетям становится все больше и больше.
8. Международный стандарт систем качества ISO 9000.
Основополагающая идея ISO 9000 состоит в том, что система качества предполагает построение такой структуры управления производством, которая гарантирует выпуск качественного продукта (в частности, программного обеспечения) в любой момент, пока система действует. Список элементов качества, на которые распространяются требования стандартов ISO 9000: ответственность руководства; система качества; анализ контракта; управление проектированием; управление документацией; закупки продукции; продукция, предоставляемая потребителям; идентификация продукции и ее прослеживаемость; управление процессами; контроль и проведение испытаний; контрольное измерительное и испытательное оборудование; статус контроля и испытаний; управление продукцией, не соответствующей стандарту качества; корректирующие и предупреждающие действия; погрузочно-разгрузочные работы, хранение, упаковка и поставка; регистрация данных о качестве; внутренние проверки качества; подготовка кадров; техническое обслуживание; статистические методы.
Анализ списка указывает, что в нем отражены типичные бизнес-процессы, в той или иной мере имеющие отношение к качеству выпускаемой продукции (в том числе - ПО) . Таким образом, функционально стандарты семейства ISO 9000 связаны с обеспечением качества системы управления производством изделия.
Фирма, занимающаяся производством программного обеспечения, может преуспевать только в том случае, если выпускаемая ею продукция отличается высоким качеством и разработана в соответствии с потребностями пользователей.
Ключевое понятие, - качество, - положено в основу международных стандартов ISO серии 9000. Основополагающая идея ISO 9000 состоит в том, что система качества предполагает построение такой структуры управления производством, которая гарантирует выпуск качественного продукта (в нашем случае, программного обеспечения) в любой момент, пока система действует. Список элементов качества, на которые распространяются требования стандартов ISO 9000:
· Ответственность руководства.
· Система качества.
· Анализ контракта.
· Управление проектированием.
· Управление документацией.
· Закупки продукции.
· Продукция, предоставляемая потребителям.
· Идентификация продукции и ее прослеживаемость.
· Управление процессами.
· Контроль и проведение испытаний.
· Контрольное измерительное и испытательное оборудование.
· Статус контроля и испытаний.
· Управление продукцией, не соответствующей стандарту качества.
· Корректирующие и предупреждающие действия.
· Погрузочно-разгрузочные работы, хранение, упаковка и поставка.
· Регистрация данных о качестве.
· Внутренние проверки качества.
· Подготовка кадров.
· Техническое обслуживание.
· Статистические методы.
Анализ списка указывает, что в нем отражены типичные бизнес-процессы, в той или иной мере имеющие отношение к качеству выпускаемой продукции (в том числе - ПО) . Таким образом, функционально стандарты семейства ISO 9000 связаны с обеспечением качества системы управления производством изделия.
9. Постановка задачи и этапы проектирования программных систем: этапы разработки программных систем, характеристики пользователей и разработчиков.
Для разработки ПО организуется некоторый коллектив. Такую рабочую группу будем называть группой проекта. Определим функциональные обязанности участников этой группы. В состав группы обычно входят следующие специалисты:
руководитель проекта - координирует все действия, организует внешнее и внутреннее взаимодействия группы проекта, обеспечивает соблюдение сроков разработки и качество разрабатываемого ПО и его соответствие требованиям заказчика, несет полную ответственность за результат работ по проекту;
системный аналитик - анализирует требования к системе, разрабатывает концепцию и логику работы системы, составляет технические задания или подобные документы, несет ответственность за соответствие предлагаемых решений требованиям заказчика;
разработчики - реализуют принятые технические задания, отвечают за качество и сроки разрабатываемого кода, за его соответствие техническим заданиям;
дизайнер - участвует в разработке концепции системы, разрабатывает ее пользовательский интерфейс и принимает участие в его реализации, несет ответственность за соблюдение фирменного стиля и требований к реализации пользовательского интерфейса;
тестер - разрабатывает программу тестирования, осуществляет ее и несет ответственность за полноту тестирования готовых модулей и системы в целом;
технический писатель - разрабатывает документацию на проект, несет ответственность за полноту и правильность описания.
Дизайнер, тестер и технический писатель могут в группу постоянно не входить, а работать над несколькими проектами и привлекаться к работе по мере необходимости. В подразделение по разработке ПО, состоящее из нескольких проектных групп, может входить технолог, который разрабатывает, внедряет и поддерживает технологию производства программных продуктов. Для сложных проектов, связанных с активным применением сетевых решений, Internet технологий и т. д. в группу проекта может подключаться специалист по использованию сетей. Кроме непосредственной команды разработчиков проекта, над проектом могут работать и другие специалисты компании: менеджеры, маркетологи.
Фазы, итерации и циклы разработки программных систем. Фаза (phase) - это промежуток времени между двумя важными опорными точками процесса, в которых должны быть достигнуты четко определенные цели, подготовлены те или иные артефакты и принято решение о том, следует ли переходить к следующей фазе. Рациональный Унифицированный Процесс состоит из следующих четырех фаз:
Начало (Inception) - определение бизнес-целей проекта. На этой стадии определяются цели системы и устанавливаются рамки проекта. Анализ целей включает выработку критерия успешности, оценку рисков, необходимых ресурсов и составление плана, в котором отражены основные опорные точки. Нередко создается исполняемый прототип, демонстрирующий реалистичность концепция. В конце начальной фазы еще раз подвергается внимательному изучению весь жизненный цикл проекта и принимается решение, стоит ли начинать полномасштабную разработку.
Исследование (elaboration) - разработка плана и архитектуры проекта в данном этапе стоит задача проанализировать предметную область, выработать прочные архитектурные основы, составить план проекта и устранить наиболее опасные риски. Архитектурные решения должны приниматься тогда, когда стала ясна структура системы в числом, то есть большая часть требовании уже сформулирована, для подтверждения правильности выбора архитектуры создается система, демонстрирующая выбранные принципы в действии и реализующая некоторые наиболее важные прецеденты. В юнце фазы исследования изучаются детально расписанные пели проекта, его рати, выбор архитектуры и методы управления основными рисками, а затем принимается решение о том, надо ли приступать « построению.
Построение (constnjction) - постепенное создание системы. В фазе построения постепенно и итеративно разрабатывается продукт, готовый к внедрению. На этом этапе описываются оставшиеся требования и критерии приемки, проект "обрастает плотью", завершается разработка и тестирование программного комплекса. В конце фазы построения принимается решение о готовности программ, эксплуатационных площадок и пользователей к внедрению.
Внедрение (transMon) - поставка системы конечным пользователям. В фазе внедрения программное обеспечение передается пользователям. После этого часто возникают требующие дополнительной проработки вопросы по настройке системы, исправлению ошибок, ранее оставшихся незамеченными, и окончательному оформлению ряда функций, реализация которых была отложена. Обычно эта стадия воплощения проекта начинается с выпуска бета-версии системы, которая затем замещается коммерческой версией. В конце фазы внедрения делается заключение о том, достигнуты ли цели проекта и надо ли начинать новый цикл разработки. Подводятся итоги работы над проектом и извлекаются уроки, которые помогут улучшить процесс разработки в ходе работы над новым проектом.
Фазы начала и исследования охватывают проектные стадии жизненного цикла процесса разработки; фазы построения и внедрения относятся к производству. Внутри каждой фазы происходит несколько итераций. Итерация (iteration) представляет полный цикл разработки, от выработки требований во время анализа до реализации и тестирования. Итерация - это завершенный этап, в результате которого выпускается версия (для внутреннего или внешнего использования) исполняемого продукта, реализующая часть запланированных функций. Затем эта версия от итерации к итерации наращивается до получения готовой системы. Во время каждой итерации выполняются особые рабочие процессы, хотя в разных фазах основной упор делается на разных работах. В начальной фазе главкой задачей является выработка требований, в фазе исследования -анализ и проектирование, в фазе построения - реализация, а в фазе внедрения - развертывание.
Конечным результатом является выпуск готового продукта. Все фазы и итерации подразумевают определенные затраты усилий на снижение рисков. В конце каждой фазы находится четко определенная опорная точка, где оценивается, в какой мере достигнуты намеченные цели и не следует ли внести в процесс изменения, прежде чем двигаться дальше.
Прохождение через четыре основные фазы называется циклом разработки. Каждый цикл завершается генерацией версии системы. Первый проход через все четыре фазы называют начальным циклом разработки. Если после этого работа над проектом не прекращается, то полученный продукт продолжает развиваться и снова минует те же фазы: начальную, исследования, построения и внедрения. Система таким образом эволюционирует, поэтому все циклы, следующие за начальным, называются эволюционными. Рациональный Унифицированный Процесс состоит из девяти рабочих процессов:
моделирование бизнес-процессов - описывается структура и динамика организации;
разработка требований - описывается основанный на прецедентах метод постановки требований;
анализ и проектирование - описываются различные виды архитектуры системы; реализация - собственно разработка программ, автономное тестирование и интеграция; тестирование - описываются тестовые сценарии, процедуры и метрики для измерения числе ошибок;
развертывание - охватывает конфигурирование поставляемой системы;
управление конфигурацией - управление изменениями и поддержание целостности артефактов проекта;
управление проектом - описывает разные стратегии работы с итеративным процессом; анализ среды - рассматриваются вопросы инфраструктуры, необходимой для разработки системы.
Внутри каждого рабочего процесса сосредоточены связанные между собой артефакты и деятельности. Напомним, что артефакт (artifact) - это некоторый документ, отчет или исполняемая программа, которые производятся, а впоследствии преобразуют или потребляются. Термином деятельность (activity) описываются задачи - обдумывание, выполнение, анализ проекта - которые решаются сотрудниками с целью создания или модификации артефактов, а также способы и рекомендации по решению; этих задач. В число таких способов могут входить и инструментальные средства, позволяющие автоматизировать решение части задач.
С некоторыми из рабочих процессов ассоциированы важные связи между артефактами. Например, модель прецедентов, созданная в ходе выработки требований, конкретизируется в виде проектной модели, являющейся результатом процесса анализа и проектирования, воплощается в модели реализации, которая получена в процессе реализации, и верифицируется моделью тестирования из процесса тестирования.
10. Функции средств проектирования и требования к ним.
Тенденции развития современных информационных технологий приводят к постоянному возрастанию сложности информационных систем (ИС), создаваемых в различных областях экономики. Современные крупные проекты ИС характеризуются, как правило, следующими особенностями:
· сложность описания (достаточно большое количество функций, процессов, элементов данных и сложные взаимосвязи между ними), требующая тщательного моделирования и анализа данных и процессов;
· наличие совокупности тесно взаимодействующих компонентов (подсистем), имеющих свои локальные задачи и цели функционирования (например, традиционных приложений, связанных с обработкой транзакций и решением регламентных задач, и приложений аналитической обработки (поддержки принятия решений), использующих нерегламентированные запросы к данным большого объема);
· отсутствие прямых аналогов, ограничивающее возможность использования каких-либо типовых проектных решений и прикладных систем;
· необходимость интеграции существующих и вновь разрабатываемых приложений;
· функционирование в неоднородной среде на нескольких аппаратных платформах;
· разобщенность и разнородность отдельных групп разработчиков по уровню квалификации и сложившимся традициям использования тех или иных инструментальных средств;
· существенная временная протяженность проекта, обусловленная, с одной стороны, ограниченными возможностями коллектива разработчиков, и, с другой стороны, масштабами организации-заказчика и различной степенью готовности отдельных ее подразделений к внедрению ИС.
Для успешной реализации проекта объект проектирования (ИС) должен быть прежде всего:
адекватно описан,
должны быть построены полные и непротиворечивые функциональные и информационные модели ИС.
Накопленный к настоящему времени опыт проектирования ИС показывает, что это логически сложная, трудоемкая и длительная по времени работа, требующая высокой квалификации участвующих в ней специалистов. Однако до недавнего времени проектирование ИС выполнялось в основном на интуитивном уровне с применением неформализованных методов, основанных на искусстве, практическом опыте, экспертных оценках и дорогостоящих экспериментальных проверках качества функционирования ИС. Кроме того, в процессе создания и функционирования ИС информационные потребности пользователей могут изменяться или уточняться, что еще более усложняет разработку и сопровождение таких систем.
В 70-х и 80-х годах при разработке ИС достаточно широко применялась структурная методология, предоставляющая в распоряжение разработчиков строгие формализованные методы описания ИС и принимаемых технических решений. Она основана на наглядной графической технике: для описания различного рода моделей ИС используются схемы и диаграммы. Наглядность и строгость средств структурного анализа позволяла разработчикам и будущим пользователям системы с самого начала неформально участвовать в ее создании, обсуждать и закреплять понимание основных технических решений. Однако, широкое применение этой методологии и следование ее рекомендациям при разработке конкретных ИС встречалось достаточно редко, поскольку при неавтоматизированной (ручной) разработке это практически невозможно. Действительно, вручную очень трудно разработать и графически представить строгие формальные спецификации системы, проверить их на полноту и непротиворечивость, и тем более изменить. Если все же удается создать строгую систему проектных документов, то ее переработка при появлении серьезных изменений практически неосуществима. Ручная разработка обычно порождала следующие проблемы:
· неадекватная спецификация требований;
· неспособность обнаруживать ошибки в проектных решениях;
· низкое качество документации, снижающее эксплуатационные качества;
· затяжной цикл и неудовлетворительные результаты тестирования.
С другой стороны, разработчики ИС исторически всегда стояли последними в ряду тех, кто использовал компьютерные технологии для повышения качества, надежности и производительности в своей собственной работе (феномен "сапожника без сапог").
Перечисленные факторы способствовали появлению программно-технологических средств специального класса - CASE-средств, реализующих CASE-технологию создания и сопровождения ИС. Термин CASE (Computer Aided Software Engineering) используется в настоящее время в весьма широком смысле. Первоначальное значение термина CASE, ограниченное вопросами автоматизации разработки только лишь программного обеспечения (ПО), в настоящее время приобрело новый смысл, охватывающий процесс разработки сложных ИС в целом. Теперь под термином CASE-средства понимаются программные средства, поддерживающие процессы создания и сопровождения ИС, включая анализ и формулировку требований, проектирование прикладного ПО (приложений) и баз данных, генерацию кода, тестирование, документирование, обеспечение качества, конфигурационное управление и управление проектом, а также другие процессы. CASE-средства вместе с системным ПО и техническими средствами образуют полную среду разработки ИС.
Появлению CASE-технологии и CASE-средств предшествовали исследования в области методологии программирования. Программирование обрело черты системного подхода с разработкой и внедрением языков высокого уровня, методов структурного и модульного программирования, языков проектирования и средств их поддержки, формальных и неформальных языков описаний системных требований и спецификаций и т.д. Кроме того, появлению CASE-технологии способствовали и такие факторы, как:
· подготовка аналитиков и программистов, восприимчивых к концепциям модульного и структурного программирования;
· широкое внедрение и постоянный рост производительности компьютеров, позволившие использовать эффективные графические средства и автоматизировать большинство этапов проектирования;
· внедрение сетевой технологии, предоставившей возможность объединения усилий отдельных исполнителей в единый процесс проектирования путем использования разделяемой базы данных, содержащей необходимую информацию о проекте.
CASE-технология представляет собой методологию проектирования ИС, а также набор инструментальных средств, позволяющих в наглядной форме моделировать предметную область, анализировать эту модель на всех этапах разработки и сопровождения ИС и разрабатывать приложения в соответствии с информационными потребностями пользователей. Большинство существующих CASE-средств основано на методологиях структурного (в основном) или объектно-ориентированного анализа и проектирования, использующих спецификации в виде диаграмм или текстов для описания внешних требований, связей между моделями системы, динамики поведения системы и архитектуры программных средств.
Согласно обзору передовых технологий (Survey of Advanced Technology), составленному фирмой Systems Development Inc. в 1996 г. по результатам анкетирования более 1000 американских фирм, CASE-технология в настоящее время попала в разряд наиболее стабильных информационных технологий (ее использовала половина всех опрошенных пользователей более чем в трети своих проектов, из них 85% завершились успешно). Однако, несмотря на все потенциальные возможности CASE-средств, существует множество примеров их неудачного внедрения, в результате которых CASE-средства становятся "полочным" ПО (shelfware). В связи с этим необходимо отметить следующее:
· CASE-средства не обязательно дают немедленный эффект; он может быть получен только спустя какое-то время;
· реальные затраты на внедрение CASE-средств обычно намного превышают затраты на их приобретение;
· CASE-средства обеспечивают возможности для получения существенной выгоды только после успешного завершения процесса их внедрения.
Ввиду разнообразной природы CASE-средств было бы ошибочно делать какие-либо безоговорочные утверждения относительно реального удовлетворения тех или иных ожиданий от их внедрения. Можно перечислить следующие факторы, усложняющие определение возможного эффекта от использования CASE-средств:
· широкое разнообразие качества и возможностей CASE-средств;
· относительно небольшое время использования CASE-средств в различных организациях и недостаток опыта их применения;
· широкое разнообразие в практике внедрения различных организаций;
· отсутствие детальных метрик и данных для уже выполненных и текущих проектов;
· широкий диапазон предметных областей проектов;
· различная степень интеграции CASE-средств в различных проектах.
Вследствие этих сложностей доступная информация о реальных внедрениях крайне ограничена и противоречива. Она зависит от типа средств, характеристик проектов, уровня сопровождения и опыта пользователей. Некоторые аналитики полагают, что реальная выгода от использования некоторых типов CASE-средств может быть получена только после одно- или двухлетнего опыта. Другие полагают, что воздействие может реально проявиться в фазе эксплуатации жизненного цикла ИС, когда технологические улучшения могут привести к снижению эксплуатационных затрат.
Для успешного внедрения CASE-средств организация должна обладать следующими качествами:
· Технология. Понимание ограниченности существующих возможностей и способность принять новую технологию;
· Культура. Готовность к внедрению новых процессов и взаимоотношений между разработчиками и пользователями;
· Управление. Четкое руководство и организованность по отношению к наиболее важным этапам и процессам внедрения.
Если организация не обладает хотя бы одним из перечисленных качеств, то внедрение CASE-средств может закончиться неудачей независимо от степени тщательности следования различным рекомендациям по внедрению.
Для того, чтобы принять взвешенное решение относительно инвестиций в CASE-технологию, пользователи вынуждены производить оценку отдельных CASE-средств, опираясь на неполные и противоречивые данные. Эта проблема зачастую усугубляется недостаточным знанием всех возможных "подводных камней" использования CASE-средств. Среди наиболее важных проблем выделяются следующие:
· достоверная оценка отдачи от инвестиций в CASE-средства затруднительна ввиду отсутствия приемлемых метрик и данных по проектам и процессам разработки ПО;
· внедрение CASE-средств может представлять собой достаточно длительный процесс и может не принести немедленной отдачи. Возможно даже краткосрочное снижение продуктивности в результате усилий, затрачиваемых на внедрение. Вследствие этого руководство организации-пользователя может утратить интерес к CASE-средствам и прекратить поддержку их внедрения;
· отсутствие полного соответствия между теми процессами и методами, которые поддерживаются CASE-средствами, и теми, которые используются в данной организации, может привести к дополнительным трудностям;
· CASE-средства зачастую трудно использовать в комплексе с другими подобными средствами. Это объясняется как различными парадигмами, поддерживаемыми различными средствами, так и проблемами передачи данных и управления от одного средства к другому;
· некоторые CASE-средства требуют слишком много усилий для того, чтобы оправдать их использование в небольшом проекте, при этом, тем не менее, можно извлечь выгоду из той дисциплины, к которой обязывает их применение;
· негативное отношение персонала к внедрению новой CASE-технологии может быть главной причиной провала проекта.
Пользователи CASE-средств должны быть готовы к необходимости долгосрочных затрат на эксплуатацию, частому появлению новых версий и возможному быстрому моральному старению средств, а также постоянным затратам на обучение и повышение квалификации персонала.
Несмотря на все высказанные предостережения и некоторый пессимизм, грамотный и разумный подход к использованию CASE-средств может преодолеть все перечисленные трудности. Успешное внедрение CASE-средств должно обеспечить такие выгоды как:
· высокий уровень технологической поддержки процессов разработки и сопровождения ПО;
· положительное воздействие на некоторые или все из перечисленных факторов: производительность, качество продукции, соблюдение стандартов, документирование;
приемлемый уровень отдачи от инвестиций в CASE-средства.
11. Жизненный цикл программной системы.
Под жизненным циклом программной системы обычно понимают весь период времени существования программной системы, начинающийся с момента выработки первоначальной концепции системы и кончающийся тогда, когда система морально устаревает. Жизненный цикл традиционно моделируется в виде некоторого числа последовательных этапов.
Обобщенный жизненный цикл можно представить в виде следующей последовательности этапов, которые, в свою очередь, можно также разбить на стадии:
1) планирование разработки - Определяются необходимые действия, планы и организация управления проектом. Определяются меры по обеспечению непрерывного выполнения фаз жизненного цикла.;
2) определение требований к системе;
2.1) выработка требований;
2.2) анализ требований;
3) проектирование системы;
3.1) проектирование архитектуры системы;
3.2) детальное проектирование компонент системы, в т.ч. для программного обеспечения;
3.2.1) общее проектирование программного обеспечения;
3.2.2) проектирование отдельных программных компонент;
4) реализация и тестирование системы;
4.1) создание отдельных компонент системы, в т.ч. для программного обеспечения;
4.1.1) создание отдельных программных модулей;
4.1.2) тестирование отдельных программных модулей;
4.2) тестирование компонент системы, в т.ч. программного обеспечения как единого компонента системы;
4.3) интегрирование отдельных компонент в систему;
5) выпуск системы;
6) эксплуатация системы;
7) завершение разработки.
В литературе описано множество типов жизненных циклов. Среди всего этого разнообразия можно выделить два основных.
Последовательный тип
Данный тип ЖЦ предполагает, что каждая следующая стадия может быть начата только после завершения работ на предыдущей стадии. Он применим когда:
требования к продукту четко определены и не меняются со временем;
имеется достаточно большой опыт реализации подобного рода систем;
время реализации проекта составляет от нескольких месяцев до года.
Реализация проекта по данному типу ЖЦ легко планируется и контролируется. Однако для этого необходимо заранее иметь все требования к продукту. Данный тип ЖЦ не приспособлен к изменениям требований к продукту. Разрабатываемый продукт не может использоваться, пока проект не будет близок к завершению. В реальности в последнее время этот тип жизненного цикла практически никогда не применяется.
Эволюционный тип
Функциональные возможности системы в данном случае наращиваются постепенно. В процессе разработки основные стадии ЖЦ (проектирование, реализация, тестирование) проходятся несколько раз применительно к очередной добавляемой порции возможностей системы.
Данный тип ЖЦ не требует заранее наличия всех требований к системе и позволяет заказчику активно участвовать в ее разработке, что является безусловным плюсом. Недостатки эволюционного типа:
сложность в управлении и контроле выполнения проекта;
сложность оценки затрат на разработку;
риск бесконечного улучшения системы.
Данный тип применим, когда требования к системе плохо определены или будут изменяться, отсутствует достаточный опыт в разработке подобных систем, используются новые технологии и (или) инструментальные средства, в ходе разработки системы необходимо иметь промежуточные версии продукта.
Выбор типа жизненного цикла
Выбор конкретного типа жизненного цикла зависит от ряда субъективных и объективных причин, сопутствующих проекту:
наличия четких и подробных требований к ПО;
ресурсов, имеющихся в наличии для проведения работ по проекту;
наличия и доступности заказчика в процессе разработки;
новизны используемых при разработке технологий и (или) инструментальных средств.
12. Объектно-ориентированный подход: определение физической и логической структуры системы и программы.
Понятие объекта интегрирует в себе представление о данных определенной структуры и допустимых процедурах обработки.
Объект - одно из основных понятий объектно-ориентированных языков программирования. Каждый объект имеет своё имя и является представителем некоторого класса подобных себе объектов. Под классом объектов подразумевается общее описание таких объектов, для которых характерно наличие множества общих свойств и общих действий, которые способны выполнять эти объекты. Существует, например, класс КОМАНДНАЯ КНОПКА - общее описание кнопок в окнах приложений. Кнопки могут быть разных размеров и цветов, иметь разные подписи, но имеют множество общих свойств и событий (например, щелчок мыши по кнопке). Началом работы алгоритма, а, следовательно, и программы, является какое-нибудь событие. Событием (Event) называется характеристика класса объектов, описывающая внешнее воздействие, на которое реагирует объект этого класса во время работы приложения. Объектно-ориентированное программирование основано на следующей идее: программы управляются событиями. Применительно к созданию диалоговых систем это можно пояснить так: после проектирования экранной формы устанавливаются события, и только затем программируются действия, связанные с этими событиями.
Существует два основных способа проектирования программных систем - структурное проектирование, основанное на алгоритмической декомпозиции, и объектно-ориентированное проектирование, основанное на объектно-ориентированной декомпозиции. Разделение по алгоритмам концентрирует внимание на порядке происходящих событий, а разделение по объектам придает особое значение агентам, которые являются либо объектами, либо субъектами действия. Однако нельзя сконструировать сложную систему одновременно двумя способами. Необходимо начать разделение системы либо по алгоритмам, либо по объектам, а затем, используя полученную структуру, попытаться рассмотреть проблему с другой точки зрения.
Алгоритмическую декомпозицию можно представить как обычное разделение алгоритмов, где каждый модуль системы выполняет один из этапов общего процесса. При объ-ектно-ориентированной декомпозиции каждый объект обладает своим собственным поведением и каждый из них моделирует некоторый объект реального мира. С этой точки зрения объект является вполне осязаемой вещью, которая демонстрирует вполне определенное поведение. Объекты что-то делают, и мы можем, послав им сообщение, попросить их выполнить некоторые операции.
Основные идеи объектно-ориентированного подхода опираются на следующие положения:
- Программа представляет собой модель некоторого реального процесса, части реального мира.
- Модель реального мира или его части может быть описана как совокупность взаимодействующих между собой объектов.
- Объект описывается набором параметров, значения которых определяют состояние объекта, и набором операций (действий), которые может выполнять объект.
- Взаимодействие между объектами осуществляется посылкой специальных сообщений от одного объекта к другому. Сообщение, полученное объектом, может потребовать выполнения определенных действий, например, изменения состояния объекта.
- Объекты, описанные одним и тем же набором параметров и способные выполнять один и тот же набор действий представляют собой класс однотипных объектов.
Объектно-ориентированные системы более гибки и проще эволюционируют со временем, потому что их схемы базируется на устойчивых промежуточных формах. Объектная декомпозиция существенно снижает риск при создании сложной программной системы, так как она развивается из меньших систем, в которых мы уже уверены.
Объектная декомпозиция помогает нам разобраться в сложной программной системе, предлагая нам разумные решения относительно выбора подпространства большого пространства состояний.
В объектно-ориентированном анализе существует четыре основных типа моделей: динамическая, статическая, логическая и физическая. Через них можно выразить результаты анализа и проектирования, выполненные в рамках любого проекта. Эти модели в совокупности семантически достаточно богаты и универсальны, чтобы разработчик мог выразить все заслуживающие внимания стратегические и тактические решения, которые он должен принять при анализе системы и формировании ее архитектуры. Кроме того, эти модели достаточно полны, чтобы служить техническим проектом реализации практически на любом объектно-ориентированном языке программирования.
Фактически все сложные системы можно представить одной и той же канонической формой - в виде двух ортогональных иерархий одной системы: классов и объектов. Каждая иерархия является многоуровневой, причем в ней классы и объекты более высокого уровня построены из более простых. Какой класс или объект выбран в качестве элементарного, зависит от рассматриваемой задачи. Объекты одного уровня имеют четко выраженные связи, особенно это касается компонентов структуры объектов. Внутри любого рассматриваемого уровня находится следующий уровень сложности. Структуры классов и объектов не являются независимыми: каждый элемент структуры объектов представляет специфический экземпляр определенного класса. Объектов в сложной системе обычно гораздо больше, чем классов. С введением структуры классов в ней размещаются общие свойства экземпляров классов.
13. Объектно-ориентированная декомпозиция и анализ системы.
Алгоритммеская декомпозищя — это способ решения проблемы с функциональной точки зрения. При алгоритмической декомпозиции все внимание сосредоточено на том, какие преобразования необходимо выполнить над данными без учета их семантической связи.
Объектно-ориентировенная декомпозиция — это способ решения проблемы с объектной точки зрения. Употребляя 00 декомпозицию, внимание пользователя фокусируется на конкретном объекте. Дополнительно устанавливаются логические и семантические связи между объектами, их поведением.
Объект — это самодостаточный программный модуль, который абстрактно описьвает физическую или логическую сущность реального мира. Он скрывает (инкапсулирует) детали своей реализации и имеет общедоступный интерфейс.
Объекты являются автономными программными модулями, которым присуши некоторое состояние на данный момент и определенное поведение. Состояние объекта—это его внутренние, то есть закрытые, данные и скрытые детали его реализации. Общедоступный интерфейс формирует поведение объекта. Он определяет, что объект может делать. Интерфейс реализован как набор функций, называемых методами. На схеме 3.1 в общем виде изображены два объекта—А и В. У каждого есть некоторые закрытые данные и общедоступный интерфейс. В этом примере объект А вызывает метод интерфейса объекта В. В общем случае объекты обмениваются сообщениями, вызывая методы друг друга.
Объект включает в себя функции и данные, на которые эти функции воздействуют. Функции и данные, благодаря такой организации, связаны семантически. Поскольку все объекты в 00 системе имеют семантическую связь, общая структура такой системы является более гибкой и ясной по сравнению с традиционными способами организации.
14. Основные понятия абстрагирования, типизации, наследования и иерархии объектов.
Абстрагирование - это выделение таких существенных характеристик объекта, которые отличают его от всех других видов объектов и таким образом чётко определяются особенности данного объекта с точки зрения дальнейшего его рассмотрения. Абстрагирование позволяет отделить самые существенные особенности поведения от несущественных. Абстракция определяет существенные характеристики некоторого объекта, которые отличают его от всех других видов объектов и четко очерчивает концептуальную границу объекта с точки зрения наблюдателя.
Выделяют целый спектр абстракций:
Абстракция сущности - Объект представляет собой полезную модель некой сущности в предметной области;
Абстракция поведения - Объект состоит из обобщенного множества операций;
Абстракция виртуальной машины - Объект группирует операции, которые либо вместе используются более высоким уровнем управления, либо сами используют некоторый набор операций более низкого уровня;
Произвольная абстракция - Объект включает в себя набор операций, не имеющих друг с другом ничего общего.
Мы стараемся строить абстракции сущности, так как они прямо соответствуют сущностям предметной области.
Типизация - ограничение предъявляемых классу объектов, препятствующих взаимозамене различных классов и в большинстве случаев сильно сужающих возможность такой замены. Концепция типизации строится на понятии абстрактных типов данных. Тип - точное определение свойств строения или поведения, которое присуще некоторой совокупности объекта. Часто термины ``тип'' и ``класс'' считают эквивалентными. Более точно сказать, что класс реализует тип. Типизация позволяет выполнять описание абстракций т. о., что реализуется поддержка проектных решений на уровне языка программирования.
В тоже время объектно-ориентированные языки программирования могут быть: строго типизированными, нестрого типизированными и совсем не типизированными, что позволяет говорить о типизации, как о второстепенном элементе. Сильно типизированные языки - это такие языки, в которых все выражения проводят проверку на соответствие типов. C++ поддерживает сильную типизацию. Различают статическую типизацию (раннее связывание) и динамическую типизацию (позднее связывание). Разделение имеет отношение ко времени, когда имена связывают с типами: статическая - во время компиляции; динамическая - во время исполнения программы.
Полиморфизм возникает на стыке принципов наследования и динамических связей. Это свойство является самым существенным в объектно-ориентированном программировании. Полиморфизм отличает объектно-ориентированное проектирование от более традиционных методов с использованием абстрактных типов данных.
Наследование- в объектно-ориентированном программировании - свойство объекта, заключающееся в том, что характеристики одного объекта (объекта-предка) могут передаваться другому объекту (объекту-потомку) без их повторного описания. Наследование упрощает описание объектов. Наследование — возможность создания родительских объектов и новых дочерних объектов, наследующих свойства родительских объектов. Возможно также множественное наследование, при котором класс наследует свойства нескольких родительских объектов. На наследовании основаны система задания типов данных, дескрипторная графика и многие другие приемы программирования.
Иерархия - ранжированная (упорядоченная) система абстракций. Основными видами иерархических структур, применительно к сложным системам, является структура классов (иерархия "is -а") и структура объектов (иерархия "part of). Принцип наследования позволяет упростить выражения абстракции, делая проект менее громоздким и более выразительным.
Наследование - это такая иерархичность абстракций, в которой подклассы наследуют строение от одного или нескольких суперклассов. В подклассе, кроме того, могут быть определены дополнительные атрибуты и методы. Суперклассы отражают наиболее общие, а подклассы более специализированные абстракции. Поэтому о наследовании говорят, как об иерархии "обобщение специализации". Различают случаи простого и множественного наследования. В первом случае подкласс может определяться только на основе одного суперкласса, во втором случае
суперклассов может быть несколько. Если в языке или системе поддерживается единичное наследование классов, набор классов образует древовидную иерархию. При поддержании множественного наследования классы связаны в ориентированный граф с корнем, называемый решеткой классов.
Иерархия по составу определяет отношения агрегирования. Более высокий уровень представляет те абстракции, которые используют в своём составе другие классы.
Принципы абстрагирования, ограничение доступа, иерархии конкурируют между собой. Принцип наследования требует открыть доступ к состоянию и к функциям объекта для производных объектов.
15. Преимущества объектного подхода.
Необходимо явно разделять две категории объектно-ориентированного подхода: объектно-ориентированное программирование (т.е. методика составления текстов программ на объектно-ориентированном языке) и объектно-ориентированный анализ и проектирование (т.е. создание проектов систем и описание предметной области в терминах объектно-ориентированного подхода - классов, атрибутов, методов).
Сегодня ни у кого не возникает сомнения в том, что объектно-ориентированное программирование является наиболее прогрессивной технологией разработки программных систем. Преимущества этого подхода рассматриваются ниже.
Объектно-ориентированный анализ, как средство описания предметной области и объектно-ориентированное проектирование как способ создания высокоуровневых проектов сегодня подвергается критике. Одним из результатов этой критики является создание Универсального языка
Моделирования - UML (Unified Modeling Language), который подробно рассматривается в данном пособии. В рамках данного пособия, которое посвящено в основном методам проектирования объектно-ориентированных систем рассматриваются именно достоинства таких систем, т.е. проекты являются уже техническими, они описывают не структуру предметной области, а структуру объектно-ориентированной программы. Опыт авторов данного пособия показывает, что создание крупных проектов (таких для которых важнейшей задачей является описание предметной области, и для которых невозможно найти человека, понимающего эту предметную область в целом) требует использования традиционных технологий, т.к. они более понятны большому кругу неспециалистов и они более адекватно рассматривают именно проблемы предметной области.
Преимущества объектно-ориентированного подхода
Сокращение числа возможных ошибок. Типичные ошибки при решении различных задач:
Несогласованные параметры подпрограмм
Часто может наблюдаться передача в подпрограмму разных параметров, несогласованных друг с другом. Пусть есть подпрограмма, выводящая на экран матрицу А размером N х М. Ее заголовок может быть таким: procedure ShowMatrix( A: TMatrix; N,M : integer);
при вызове подпрограммы, за счет ошибки программиста, N и М могут не соответствовать реальному размеру матрицы. Ёта задача решается за счет инкапсуляции, когда N и М включаются в качестве атрибутов в матрицу.
Несогласованное изменение атрибутов
Пусть у матрицы есть поля данных, характеризующих текущий размер матрицы. Если метод вставки элемента не учитывает возможное изменение размера матрицы, то может сложиться такая ситуация, когда содержимое матрицы и поля данных N М не будут соответствовать друг
ДРУГУ-
Повторное использование. Предполагается какой-либо вариант многократного использования уже существующего проекта или его части в новом проекте. Повторное использование можно разделить на две категории:
повторного использования существующего кода для решения модифицированной задачи
повторное использование и для решения других задач в данной предметной области
В обоих случаях объектно-ориентированный подход дает преимущества. За счет использования классов легко модифицировать существующие элементы без изменения уже готовых.
16. Методы и механизмы защиты компьютерных сетей с помощью аппаратных и программных средств.
Аппаратные средства защиты.
К аппаратным средствам защиты информации относятся самые различные по принципу действия, устройству и возможностям технические конструкции, обеспечивающие пресечение разглашения, защиту от утечки и противодействие несанкционированному доступу к источникам конфиденциальной информации,
Аппаратные средства защиты информации применяются для решения следующих задач:
- проведение специальных исследований технических средств обеспечения производственной деятельности на наличие возможных каналов утечки информации,
- выявление каналов утечки информации на разных объектах и в помещениях,
- локализация каналов утечки информации;
- поиск и обнаружение средств промышленного шпионажа;
- противодействие несанкционированному доступу к источникам конфиденциальной информации и другим действиям.
По функциональному назначению аппаратные средства могут быть классифицированы на средства обнаружения, средства поиска и детальных измерений, средства активного и пассивного противодействия. При этом по своим техническим возможностям средства защиты информации могут быть общего назначения, рассчитанные на использование непрофессионалами с целью получения предварительных (общих) оценок, и профессиональные комплексы, позволяющие проводить тщательный поиск, обнаружение и прецизионные измерения всех характеристик средств промышленного шпионажа.
Программы и данные, загружаемые в ОЗУ, нуждаются в защите, гарантирующей их от несанкционированного доступа. Часто используются биты четности, ключи, постоянная специальная память. При считывании из ОЗУ необходимо, чтобы программы не могли быть уничтожены несанкционированными действиями пользователей или вследствие выхода аппаратуры из строя. Отказы должны своевременно выявляться и устраняться, чтобы предотвратить исполнение искаженной команды ЦП и потери информации.
Для предотвращения считывания оставшихся после обработки данных в ОЗУ применяется специальная схема стирания. В этом случае формируется команда на стирание ОЗУ и указывается адрес блока памяти, который должен быть освобожден от информации. Эта схема записывает нули или какую-нибудь другую последовательность символов во все ячейки данного блока памяти, обеспечивая надежное стирание ранее загруженных данных.
Аппаратные средства защиты применяются и в терминалах пользователей. Для предотвращения утечки информации при подключении незарегистрированного терминала необходимо перед выдачей запрашиваемых данных осуществить идентификацию (автоматическое определение кода или номера) терминала, с которого поступил запрос. В многопользовательском режиме этого терминала идентификации его недостаточно. Необходимо осуществить аутентификацию пользователя, то есть установить его подлинность и полномочия. Это необходимо и потому, что разные пользователи, зарегистрированные в системе, могут иметь доступ только к отдельным файлам и строго ограниченные полномочия их использования.
Для идентификации терминала чаще всего применяется генератор кода, включенный в аппаратуру терминала, а для аутентификации пользователя — такие аппаратные средства, как ключи, персональные кодовые карты, персональный идентификатор, устройства распознавания голоса пользователя или формы его пальцев. Но наиболее распространенными средствами аутентификации являются пароли, проверяемые не аппаратными, а программными средствами опознавания.
Аппаратные средства защиты информации — это различные технические устройства, системы и сооружения, предназначенные для защиты информации от разглашения, утечки и несанкционированного доступа.
Программные средства защиты.
Это система специальных программ, включаемых в состав ПО, реализующих функции защиты информации.
Сферы программной защиты:
1.защита данных:
-Сохранение конфиденциальности;
-Сохранение целостности
2.защитапрограмм:
-обеспечение качества обработки данных
-наиболее уязвимые для злоумышленника
-явл. КТ
Средства программной защиты:
1) Средства собственной защиты. Элементы защиты, присущие самому программному обеспечению или сопровождающие его продажу и препятствующие незаконным действиям;
2) Средства защиты в составе вычислительной системы. Средства защиты аппаратуры, дисков и штатных устройств. При использовании таких средств операционная среда, в отличие от штатного режима, постоянно изменяется, поскольку выполнение программ зависит от определенных действий, специальных мер предосторожности и условий, гарантирующих защиту;
3) Средства защиты с запросом информации. Требуют для своей работы ввода дополнительной информации с целью идентификации полномочий пользователей;
4) Средства активной защиты. Инициируются при возникновении особых обстоятельств:
- вводе неправильного пароля;
- указании неправильной даты или времени при запуске программ;
- попытках доступа к информации без разрешения и тому подобное;
5) Средства пассивной защиты. Направлены на предостережение, контроль, поиск улик и доказательств с целью создания обстановки неотвратимого раскрытия преступления.
Программные средства защиты имеют следующие разновидности специальных программ:
- идентификация технических средств, задач, массивов и пользователей;
- определение прав технических средств, задач и пользователей;
- контроль работы технических средств и пользователей;
- регистрация работы средств и пользователей при обработке закрытой информации;
- уничтожение информации в ЗУ после завершения работы;
- сигнализация о несанкционированных действиях;
- вспомогательных программ защиты различного назначения (контроль работы механизма защиты, автоматическое проставление грифа).
Идентификация технических средств и файлов, осуществляемая программно, делается на основе анализа регистрационных номеров различных компонентов и объектов информационной системы и сопоставления их со значениями адресов и паролей, хранящихся в защитном устройстве системы управления.
17. Классификация угроз безопасности.
Угроза информационной безопасности – потенциально возможное событие, действие, процесс или явление, которое может привести к нанесению ущерба. Воспринимать угрозу следует как объективную реальность - угрозы существуют постоянно. Уровень опасности, исходящей от потенциальных и действующих злоумышленников, никак не зависит от усилий по обеспечению безопасности. От подготовленности зависит, только ущерб к которому приведет реализация угрозы. Классифицировать угрозы информационной безопасности можно по нескольким критериям:
по базовым свойствам информации:
-доступность;
-целостность;
-конфиденциальность.
по компонентам ИС, на которые угрозы нацелены:
-данные;
-программа;
-аппаратура;
-поддерживающая инфраструктура.
по возникновению:
-по способу осуществления:
-случайные;
-преднамеренные;
-естественные;
-искусственные.
по расположению источника угроз
-внутренние;
-внешние.
По способу осуществления, угрозы делятся на естественные и искусственные, случайные и преднамеренные.
Естественные угрозы – угрозы, вызванные воздействием на АС и её элементы объективно-физического процесса или стихийно-природного явления, независящего от человека. К угрозам естественного характера следует отнести аварийные ситуации, которые могут возникнуть на объекте размещения автоматизированной системы.
Искусственные – угрозы, вызванные деятельностью человека.
Случайные угрозы (непреднамеренные) - угрозы безопасности, происхождение которых не связано с преднамеренными действиями злоумышленника и реализуются в случайные моменты времени. К данному классу угроз относятся случайные нарушения сотрудниками установленных регламентов сбора, обработки и передачи информации, а также требований безопасности информации, и другие действия сотрудников, приводящие к несанкционированному распространению сведений ограниченного доступа, потере или модификации ценной информации, нарушению работоспособности или доступности отдельных элементов АС
Преднамеренные угрозы – это угрозы безопасности, в основе которых лежит злой умысел человека (корыстные стремления). Данный класс угроз очень динамичен и постоянно пополняется. На даны момент, основной преднамеренной угрозой является - несанкционированный доступ к информации. По данным некоторых источников, он составляет 60 – 75 % от числа всех преднамеренных угроз.
По расположению источника, угрозы делятся на внутренние и внешние.
Внутренние угрозы - угрозы исходящие от действий сотрудников (пользователей), допущенных к работе с АС, или сотрудников (администраторов и технического персонала), отвечающих за функционирование и обслуживание программного и аппаратного обеспечения, технических средств защиты.
Внешние угрозы – угрозы связанные с противоправной деятельностью преступных групп или отдельных лиц, не имеющих доступа к АС.
18. Методы защиты компьютерной информации от нарушения целостности и конфиденциальности.
1. Секретность, -используется шифрование которое делает информацию недоступной для посторонних объектов, недостаток очень медленно.2. Целостность - изменение информации. Используется цифровая подпись.
Конфиденциальность данных. Конфиденциальность обеспечивает защиту от несанкционированного получения информации.
Целостность информации – точность, достоверность и полнота информации, на основе которой принимаются решения и ее защищенность от возможных непреднамеренных и злоумышленных искажений.
Огромным преимуществом для конфиденциальности информации обладают криптографические методы защиты данных. Их применение позволят не нарушить конфиденциальность документа даже в случае его попадания в руки стороннего лица. Не стоит забывать, что любой криптографический алгоритм обладает таким свойством как криптостокойсть, т.е. и его защите есть предел. Нет шифров, которые нельзя было бы взломать - это вопрос только времени и средств. Те алгоритмы, которые еще несколько лет назад считались надежными, сегодня уже успешно демонстративно взламываются. Поэтому для сохранения конфиденциальности убедитесь, что за время, потраченное на взлом зашифрованной информации, она безнадежно устареет или средства, потраченные на ее взлом, превзойдут стоимость самой информации.
Кроме того, не стоит забывать об организационных мерах защиты. Какой бы эффективной криптография не была, ничто не помешает третьему лицу прочитать документ, например, стоя за плечом человека, который имеет к нему доступ. Или расшифровать информацию, воспользовавшись ключом который валяется в столе сотрудника.
Криптография - наука о способах преобразования (шифрования) информации с целью ее защиты от незаконных пользователей (разработка шифров).
Шифрование — это способ изменения сообщения или другого документа, обеспечивающее искажение (сокрытие) его содержимого. (Кодирование – это преобразование обычного, понятного, текста в код. При этом подразумевается, что существует взаимно однозначное соответствие между символами текста(данных, чисел, слов) и символьного кода – в этом принципиальное отличие кодирования от шифрования. Часто кодирование и шифрование считают одним и тем же, забывая о том, что для восстановления закодированного сообщения, достаточно знать правило подстановки(замены). Для восстановления же зашифрованного сообщения помимо знания правил шифрования, требуется и ключ к шифру. Ключ понимается нами как конкретное секретное состояние параметров алгоритмов шифрования и дешифрования. Знание ключа дает возможность прочтения секретного сообщения. Впрочем, как вы увидите ниже, далеко не всегда незнание ключа гарантирует то, что сообщение не сможет прочесть посторонний человек.). Шифровать можно не только текст, но и различные компьютерные файлы – от файлов баз данных и текстовых процессоров до файлов изображений
Идея шифрования состоит в предотвращении просмотра истинного содержания сообщения(текста, файла и т.п.) теми , у кого нет средств его дешифрования. А прочесть файл сможет лишь тот, кто сможет его дешифровать.
Криптосистема - семейство выбираемых с помощью ключа обратимых преобразований, которые преобразуют защищаемый открытый текст в шифрограмму и обратно.
Желательно, чтобы методы шифрования обладали минимум двумя свойствами:
- законный получатель сможет выполнить обратное преобразование и расшифровать сообщение;
- криптоаналитик противника, перехвативший сообщение, не сможет восстановить по нему исходное сообщение без таких затрат времени и средств, которые сделают эту работу работу нецелесообразной.
По характеру использования ключа известные криптосистемы можно разделить на два типа: симметричные (одноключевые, с секретным ключом) и несимметричные (с открытым ключом).
В симметричных криптосистемах и для шифрования, и для дешифрования используется один и тот же ключ.
В системах с открытым ключом используются два ключа - открытый и закрытый, которые математически связаны друг с другом. Информация шифруется с помощью открытого ключа, который доступен всем желающим, а расшифровывается с помощью закрытого ключа, известного только получателю сообщения.
В первом случае в шифраторе отправителя и дешифраторе получателя используется один и тот же ключ. Шифратор образует шифр-текст, который является функцией открытого текста, конкретный вид функции шифрования определяется секретным ключом. Дешифратор получателя сообщения выполняет обратное преобразования аналогичным образом. Секретный ключ хранится в тайне и передается отправите- лем сообщения получателя по каналу, исключающему перехват ключа криптоаналитиком противника. На практике обычно используют два общих принципа шифрования: рассеивание и перемешивание. Рассеивание заключается в распространении влияния одного символа открытого текста на много символов шифртекста: это позволяет скрыть статистические свойства открытого текста. Развитием этого принципа является распространение влияния одного символа ключа на много символов шифрограммы, что позволяет исключить восстановление ключа по частям. Перемешивание состоит в использовании таких шифрующих преобразований, которые исключают восстановление взаимосвязи статистических свойств открытого и шифрованного текста. Распространенный способ достижения хорошего рассеивания состоит в использовании составного шифра, который может быть реализован в виде некоторой последовательности простых шифров, каждый из которых вносит небольшой вклад в значительное суммарное рассеивание и перемешивание. В качестве простых шифров чаще всего используют простые подстановки и перестановки.
В криптосистемах с открытым ключом в алгоритмах шифрования и дешифрования используются разные ключи, каждый из которых не может быть получен из другого (с приемлемыми затратами). Один ключ используется для шифрования, другой - для дешифрования. Основной принцип систем с открытым ключом основывается на применении односторонних или необратимых функций и односторонних функций с лазейкой (потайным ходом).
Вычисление ключей осуществляется получателем сообщений, который оставляет у себя тот ключ, который он будет потом использовать (то есть секретный ключ). Другой ключ он высылает отправителю сообщений - открытый ключ - не опасаясь его огласки. Пользуясь этим открытым ключом, любой абонент может зашифровать текст и послать его получателю, который сгенерировал данный открытый ключ. Все используемые алгоритмы общедоступны. Важно то, что функции шифрования и дешифрования обратимы лишь тогда, когда они обеспечиваются строго взаимосвязанной парой ключей (открытого и секретного), а открытый ключ должен представлять собой необратимую функцию от секретного ключа.
19. Классификация компьютерных сетей. Отличительные признаки, краткие характеристики.
Компьютерная (вычислительная) сеть — совокупность компьютеров и терминалов, соединенных с помощью каналов связи в единую систему, удовлетворяющую требованиям распределенной обработки данных.
Искусственные и реальные сети
По способу организации сети подразделяются на реальные и искусственные.
Искусственные сети (псевдосети) позволяют связывать компьютеры вместе через последовательные или параллельные порты и не нуждаются в дополнительных устройствах. Иногда связь в такой сети называют связью по нуль-модему (не используется модем). Само соединение называют нуль-модемным. Искусственные сети используются когда необходимо перекачать информацию с одного компьютера на другой. MS-DOS и windows снабжены специальными программами для реализации нуль-модемного соединения.
Основной недостаток - низкая скорость передачи данных и возможность соединения только двух компьютеров.
Реальные сети позволяют связывать компьютеры с помощью специальных устройств коммутации и физической среда передачи данных.
Основной недостаток - необходимость в дополнительных устройствах.
Все многообразие компьютерных сетей можно классифицировать по группе признаков:
1) Территориальная распространенность;
2) Ведомственная принадлежность;
3) Скорость передачи информации;
4) Тип среды передачи;
5) Топология;
6) Организация взаимодействия компьютеров.
По территориальной распространенности
По территориальной распространенности сети могут быть локальными, глобальными, и региональными.
Локальные - это сети, перекрывающие территорию не более 10 м2
Региональные - расположенные на территории города или области
Глобальные на территории государства или группы государств, например, всемирная сеть Internet.
Термин "корпоративная сеть" также используется в литературе для обозначения объединения нескольких сетей, каждая из которых может быть построена на различных технических, программных и информационных принципах.
Локальные сети являются сетями закрытого типа, доступ к ним разрешен только ограниченному кругу пользователей, для которых работа в такой сети непосредственно связана с их профессиональной деятельностью. Глобальные сети являются открытыми и ориентированы на обслуживание любых пользователей.
Ведомственная принадлежность
По принадлежности различают ведомственные и государственные сети.
Ведомственные принадлежат одной организации и располагаются на ее территории.
Государственные сети - сети, используемые в государственных структурах.
По скорости передачи
По скорости передачи информации компьютерные сети делятся на низко-, средне- и высокоскоростные.
низкоскоростные (до 10 Мбит/с),
среднескоростные (до 100 Мбит/с),
высокоскоростные (свыше 100 Мбит/с);
По типу среды передачи
По типу среды передачи сети разделяются на:
проводные –коаксиальные, на витой паре, оптоволоконные
беспроводные - с передачей информации по радиоканалам, в инфракрасном диапазоне.
Топологии компьютерных сетей
Узел сети представляет собой компьютер, либо коммутирующее устройство сети.
Ветвь сети - это путь, соединяющий два смежных узла.
Узлы сети бывают трёх типов:
оконечный узел - расположен в конце только одной ветви;
промежуточный узел - расположен на концах более чем одной ветви;
смежный узел - такие узлы соединены по крайней мере одним путём, не содержащим никаких других узлов.
Способ соединения компьютеров в сеть называется её топологией
Одноранговые и иерархические сети
С точки зрения организации взаимодействия компьютеров, сети делят на одноранговые и с выделенным сервером.
Одноранговые сети
Все компьютеры одноранговой сети равноправны. Любой пользователь сети может получить доступ к данным, хранящимся на любом компьютере.
Одноранговые сети могут быть организованы с помощью таких операционных систем, как windows'3.11, Novell Netware Lite. Указанные программы работают как с DOS, так и с windows. Одноранговые сети могут быть организованы также на базе всех современных 32-разрядных операционных систем - windows 9xME2k, windows NT workstation версии, OS/2) и некоторых других.
Достоинства одноранговых сетей:
1. Наиболее просты в установке и эксплуатации.
2. Операционные системы DOS и windows обладают всеми необходимыми функциями, позволяющими строить одноранговую сеть.
Недостатки:
В условиях одноранговых сетей затруднено решение вопросов защиты информации. Поэтому такой способ организации сети используется для сетей с небольшим количеством компьютеров и там, где вопрос защиты данных не является принципиальным.
Иерархические сети
В иерархической сети при установке сети заранее выделяются один или несколько компьютеров, управляющих обменом данных по сети и распределением ресурсов. Такой компьютер называют сервером.
Любой компьютер, имеющий доступ к услугам сервера называют клиентом сети или рабочей станцией.
Сервер в иерархических сетях - это постоянное хранилище разделяемых ресурсов. Сам сервер может быть клиентом только сервера более высокого уровня иерархии. Поэтому иерархические сети иногда называются сетями с выделенным сервером.
Серверы обычно представляют собой высокопроизводительные компьютеры, возможно, с несколькими параллельно работающими процессорами, с винчестерами большой емкости, с высокоскоростной сетевой картой (100 Мбит/с и более).
Иерархическая модель сети является наиболее предпочтительной, так как позволяет создать наиболее устойчивую структуру сети и более рационально распределить ресурсы.
Также достоинством иерархической сети является более высокий уровень защиты данных.
К недостаткам иерархической сети, по сравнению с одноранговыми сетями, относятся:
1. Необходимость дополнительной ОС для сервера.
2. Более высокая сложность установки и модернизации сети.
3. Необходимость выделения отдельного компьютера в качестве сервера
Две технологии использования сервера
Различают две технологии использования сервера: технологию файл-сервера и архитектуру клиент-сервер.
В первой модели используется файловый сервер, на котором хранится большинство программ и данных. По требованию пользователя ему пересылаются необходимая программа и данные. Обработка информации выполняется на рабочей станции.
В системах с архитектурой клиент-сервер обмен данными осуществляется между приложением-клиентом и приложением-сервером. Хранение данных и их обработка производится на мощном сервере, который выполняет также контроль за доступом к ресурсам и данным. Рабочая станция получает только результаты запроса. Разработчики приложений по обработке информации обычно используют эту технологию.
20. История создания Internet.
Сеть ARPANET была разработана и развернута в 1969 году компанией "Bolt, Beranek and Newman" (BBN) по заказу Агентства передовых исследовательских проектов (ARPA) министерства обороны США в целях создания системы надежного обмена информацией между компьютерами, а также (что явилось одной из главных целей) для отработки методов поддержания связи в случае ядерного нападения. Слово "надежно" предполагало весьма жесткое условие: выход из строя любых составляющих системы (т. е. компьютеров и соединяющих их линий связи) не должен сказаться на бесперебойности обмена информацией между остальными компьютерами. ARPANET позволяла каждому из своих компьютеров связываться с любым другим даже при условии выхода из строя существенной части элементов сети.
Основатели ARPANET первоначально позволяли ученым только войти в систему и запустить программу на удаленном компьютере. Скоро к этим возможностям прибавились передача файлов, электронная почта и списки рассылки, обеспечившие общение исследователей, интересовавшихся одной и той же областью науки и техники. Вследствие развития ARPANET проявился Интернет.
В 1982 году на смену первым протоколам ARPANET пришли новые стандарты: стандарт "Transmission Control Protocol", описывающий способ разбиения информационного сообщения на пакеты и их передачи, и "Internet Protocol", управляющий адресацией в сети. Эти мощные протоколы были предложены еще в 1974 году Робертом Кэном, одним из основных разработчиков ARPANET, и ученым-компьютерщиком Винтоном Серфом. Разработчики из Америки, Англии и Скандинавии начали создавать IP-программы для всех мыслимых типов компьютеров. При поддержке ARPA (Агентства передовых исследовательских проектов) были разработаны протоколы межсетевого обмена для разнообразных сетей. Практическим следствием этого стала возможность обмена информацией между компьютерами различных изготовителей. Это привлекло университеты и многочисленные правительственные учреждения, которые исторически имели парк разнотипной техники и теперь получали возможность обмениваться информацией.
В 1983 году Агентство связи министерства обороны США приняло решение об использовании протоколов TCP/IP (Transmission Control Protocol/Internet Protocol) на всех узловых машинах ARPANET. Таким образом, был установлен стандарт, согласно которому могла развиваться сеть Internet. С этого момента стало возможно добавлять шлюзы и подсоединять к ней новые сети, оставляя первоначальное ядро неизменным. В этом же году начальная ARPANET была разделена на сеть MILNET, предназначавшуюся для использования в военных целях, и ARPANET, ориентированную на продолжение исследований в сетевой области. Сама ARPANET прекратила свое существование в июне 1990 года, а ее функции постепенно перешли к более разветвленной структуре Internet.
Internet - глобальная компьютерная сеть, охватывающая весь мир. Сегодня Internet имеет около 15 миллионов абонентов в более чем 150 странах мира. Ежемесячно размер сети увеличивается на 7-10%. Internet образует как бы ядро, обеспечивающее связь различных информационных сетей, принадлежащих различным учреждениям во всем мире, одна с другой.
Если ранее сеть использовалась исключительно в качестве среды передачи файлов и сообщений электронной почты, то сегодня решаются более сложные задачи распределенного доступа к ресурсам. Около трёх лет назад были созданы оболочки, поддерживающие функции сетевого поиска и доступа к распределенным информационным ресурсам, электронным архивам. Вначале ничто не предвещало, что Internet станет общедоступной компьютерной сетью[1]. Как и многие другие великие идеи, "сеть сетей" возникла из проекта, предназначавшегося совершенно для других целей. Ее прародительницей стала сеть ARPANET, разработанная и развернутая в 1969 г. компанией Bolt, Beranek, and Newman (BBN) no заказу Агентства передовых исследовательских проектов (ARPA) Министерства обороны США. ARPANET объединяла учебные заведения, военные организации и их подрядчиков. Она была создана с целью помочь исследователям в обмене информацией, а также (что явилось одной из главных целей) для отработки методов поддержания связи в случае ядерного нападения. Основатели ARPANET первоначально позволяли ученым только войти в систему и запустить программу на удаленном компьютере. Скоро к этим возможностям прибавились передача файлов, электронная почта и списки рассылки, обеспечившие общение исследователей, интересовавшихся одной и той же областью науки и техники. Но по мере роста ARPANET развивались и другие сети, и вскоре стала очевидной потребность в новых средствах связи.
Для организации межсетевых соединений необходим соответствующий протокол. Протокол - это набор договоренностей, который определяет обмен данными между различными программами. Протоколы задают способы передачи сообщений и обработки ошибок в сети, а также позволяют разрабатывать стандарты, не привязанные к конкретной аппаратной платформе. Все параметры - от скорости передачи данных до методов адресации при транспортировке отдельных сообщений - задаются протоколами, используемыми в данной конфетной сети.
В Internet базовым протоколом служит TCP/IP (Transmission Confrol Protocol/Internet Protocol). IP отвечает за адресацию сетевых узлов, a TCP обеспечивает доставку сообщений по нужному адресу. Эти мощные протоколы были предложены в 1974 г. Робертом Кэном (Robert Капп), одним из основных разработчиков ARPANET, и ученым-компьютерщиком Винтоном Серфом (Vinton С. Cert). Society и вице-президентом CNRI. Следует иметь в виду, что TCP/IP не единственный протокол, пригодный для объединения различных сетей. Internet в ныне превратилась в многопротокольную сеть, интегрирующую другие стандарты. Основные среди них - стандарты взаимодействия открытых систем (OSI). Предложенные Международной организацией по стандартизации (ISO) протоколы OSI получили широкое распространение в Европе. Системы, основанные на других протоколах, тоже подключаются к Internet через шлюзы. Например, BITNET - это сеть, которая использует для передачи данных свои собственные стандарты, однако, по крайней мере частично, она доступна через шлюзы из Internet.
В Internet нет единого пункта подписки или регистрации; вместо этого вы контактируете с поставщиком услуг, который предоставляет вам доступ к сети через местный компьютер. Последствия такой децентрализации с точки зрения доступности сетевых ресурсов также весьма значительны. Среду передачи соединения в Internet нельзя рассматривать только как паутину проводов или оптоволоконных линий. Оцифрованные данные пересылаются через маршрутизаторы, которые соединяют сети и с помощью сложных алгоритмов выбирают наилучшие маршруты для информационных потоков. Передача данных может осуществляться по телефонным линиям, обычным или выделенным, по спутниковой связи, через микроволновые радиоканалы, оптоволоконные кабели. Между двумя сетями тоже может быть установлено коммутируемое соединение для передачи данных, а по окончании этой передачи - разъединено.
- Выделенная линия работает следующим образом: с её помощью устанавливается постоянное соединение, которое всегда позволяет передать поток информации от одного компьютера к другому. Выделенные линии для транспортировки цифровых данных отличаются скоростью -от 2,5 Кбит/с до 45 Мбит/с. Линия Т1 обеспечивает скорость передачи 1,544 Мбит/с, а линия ТЗ еще быстрее - 45 Мбит/с.
Микроволновое оборудование позволяет соединять сети без проводов, переправляя данные с помощью передатчика на приемную антенну. Между двумя соединяющимися пунктами стоят повторители (репитеры), задача которых принять сигнал, усилить его и передать на следующую станцию; расстояние между станциями может меняться в зависимости от ландшафта, так как микроволновая связь действует в пределах прямой видимости.
• Спутниковая связь. Расположенные на геосинхронных орбитах на высоте 22 500 миль над экватором, спутники связи обладают преимуществами при сверхбольших расстояниях. Ретрансляторы на борту спутников получают сигналы от наземных станций и передают их на Землю. В качестве приемной антенны используются терминалы сверхмалой апертуры - VSAT.
Исключительно полезными средствами Internet предоставляемыми пользователям являются FTP и Telnet.
Передача файлов с одного компьютера на другой - одно из самых удобных новшеств, принесенных сетевой революцией. Она основывается на протоколе передачи файлов, или FTP(File Transmission Protocol). Доступ к материалам, переведенным в разряд общедоступных, осуществляется через процедуру под названием "анонимный FTP", позволяющую вам регистрироваться на удаленных компьютерах и использовать источники информации в тех каталогах, которые открыли для общего доступа администраторы систем.
Удаленный доступ (иначе называемый Telnet) дает возможность подключиться к удаленному компьютеру и работать с ним в интерактивном режиме. С помощью Telnet можно входить в библиотечные каталоги университетов и искать любую информацию. Удаленный компьютер будет откликаться на ваши команды, а ваш собственный - работать как простой терминал. Во многих случаях системы на базе меню, установленные на удаленных машинах, делают интерактивный сеанс работы интуитивным
21. Классификация локальных сетей.
Локальные вычислительные сети подразделяются на два кардинально различающихся класса: одноранговые (одноуровневые или Peer to Peer) сети и иерархические (многоуровневые).
Одноранговые сети.
Одноранговая сеть представляет собой сеть равноправных компьютеров, каждый из которых имеет уникальное имя (имя компьютера) и обычно пароль для входа в него во время загрузки ОС. Имя и пароль входа назначаются владельцем ПК средствами ОС. Одноранговые сети могут быть организованы с помощью таких операционных систем, как LANtastic, Windows'3.11, Novell NetWare Lite. Указанные программы работают как с DOS, так и с Windows. Одноранговые сети могут быть организованы также на базе всех современных 32-разрядных операционных систем - Windows'95 OSR2, Windows NT Workstation версии, OS/2) и некоторых других.
Иерархические сети.
В иерархических локальных сетях имеется один или несколько специальных компьютеров - серверов, на которых хранится информация, совместно используемая различными пользователями. Сервер в иерархических сетях - это постоянное хранилище разделяемых ресурсов. Сам сервер может быть клиентом только сервера более высокого уровня иерархии. Поэтому иерархические сети иногда называются сетями с выделенным сервером. Серверы обычно представляют собой высокопроизводительные компьютеры, возможно, с несколькими параллельно работающими процессорами, с винчестерами большой емкости, с высокоскоростной сетевой картой (100 Мбит/с и более). Компьютеры, с которых осуществляется доступ к информации на сервере, называются станциями или клиентами. ЛКС классифицируются по назначению:
Сети терминального обслуживания. В них включается ЭВМ и периферийное оборудование, используемое в монопольном режиме компьютером, к которому оно подключается, или быть общесетевым ресурсом.
Сети, на базе которых построены системы управления производством и учрежденческой деятельности. Они объединяются группой стандартов МАРЯОР. В MAP описываются стандарты, используемые в промышленности. ТОР описывают стандарты для сетей, применяемых в офисных сетях.
Сети, которые объединяют системы автоматизации, проектирования. Рабочие станции таких сетей обычно базируются на достаточно мощных персональных ЭВМ, например фирмы Sun Microsystems.
Сети, на базе которых построены распределенные вычислительные системы.
По классификационному признаку локальные компьютерные сети делятся на кольцевые, шинные, звездообразные, древовидные; по признаку скорости - на низкоскоростные (до 10 Мбит/с), среднескоростные (до 100 Мбит/с), высокоскоростные (свыше 100 Мбит/с); по типу метода доступа - на случайные, пропорциональные, гибридные; по типу физической среды передачи - на витую пару, коаксиальный или оптоволоконный кабель, инфракрасный канал, радиоканал.
22 Структура Internet.
Internet представляет собой глобальную компьютерную сеть. Само ее название означает "между сетей". Это сеть, соединяющая отдельные сети.
Логическая структура internet представляет собой некое виртуальное объединение, имеющее свое собственное информационное пространство.
Internet обеспечивает обмен информацией между всеми компьютерами, которые входят в сети, подключенные к ней. Тип компьютера и используемая им операционная система значения не имеют. Соединение сетей обладает возможностями. С собственного компьютера любой абонент internet может передавать сообщения в другой город, просматривать каталог библиотеки Конгресса в Вашингтоне, знакомиться с картинами последней выставке в музее Метрополитен в Нью-Йорке, участвовать в конференции IEEE и даже в играх с абонентами сети из разных стран. Internet предоставляет в распоряжение своих пользователей множество всевозможных ресурсов.
Основные ячейки internet- локальные вычислительные сети. Это значит, что internet непросто устанавливает связь между отдельными компьютерами, а создает пути соединения для крупных единиц - групп компьютеров. Если некоторая локальная сеть непосредственно подключена к internet, то каждая рабочая станция этой сети может подключаться к internet. Существуют также компьютеры, самостоятельно подключенные к internet. Они называются хост - компьютерами (host - хозяин ). Каждый подключенный к сети компьютер имеет свой адрес, по которому его может найти абонент из любой точки света.
Для подключения локальных сетей к INTERNET используются различные средства. Важной особенностью internet является то, что она, объединяя различные сети, не создает при этом никакой иерархии - все компьютеры, подключенные к сети, равноправны.
ИНТЕРНЕТ - это всемирная информационная компьютерная сеть, которая объединяет в единое целое множество компьютерных сетей и отдельных компьютеров, предоставляющих обширную информацию в общее пользование и не является коммерческой организацией. Компьютер пользователя с помощью линии связи подключается к компьютеру провайдера, который, в свою очередь подключен к другому компьютеру сети и т.д. Информация в сети хранится как на компьютерах провайдера, так и на специальных компьютерах, которые называются информационными серверами. Компьютеры, к которым подключаются многие другие компьютеры называют серверами. Провайдером называется организация, через которую рядовые компьютеры подключаются к глобальной сети. Существуют 2 способа передачи информации между компьютерами:
С помощью носителей информации: магнитных дисков и магнитных лент, оптических дисков и т.д.(недостатки - медленный и неудобный).
С помощью линий связи: локальных или глобальных.
Принципы соединения множества компьютеров в сеть:
Компьютеры должны быть соединены с помощью линий связи.
Для подключения линий связи к компьютерам используются специальные электронные устройства.
На каждом компьютере устанавливаются программы для совместной работы в сети.
В качестве линии связи можно использовать:
Коаксиальный кабель - только для локальных сетей, Телефонную линию,
Волоконно - оптический кабель,
Радиосвязь, в том числе через спутники.
Сравнение телефонных и выделенных линий
Телефонные линии
Выделенные линии
Достоинства
Есть практически в каждом жилом доме.
Дешевые.
Высокая скорость передачи информации.
Компьютеры соединены между собой 24 часа в сутки.
Отсутствие помех при передачи информации.
Недостатки
Скорость передачи информации зависит от типа и характеристик модемов, установленных у пользователя и у провайдера.
Компьютер подключается на ограниченное время (как и для телефонного разговора между людьми).
Есть помехи при передаче информации. Эффективность соединения определяется качеством телефонной линии.
Есть в некоторых организациях и в ограниченном числе жилых домов.
Дорогие.
В настоящее время для рядовых пользователей самым популярным способом подключения к глобальной компьютерной сети является подключение с помощью телефонной линии.
Так как при наборе телефонного номера для установки связи двух абонентов на АТС происходит переключение (коммутация - другими словами) линии связи, то телефонные линии часто называют коммутируемыми.
Для подсоединения линий связи к компьютерам необходимо использовать специальные электронные устройства:
сетевые платы (сетевые адаптеры),
модемы - только при подключении через телефонную линию.
Назначение этих устройств - преобразовывать информацию, поступающую от компьютера, в электрический, радио или световой сигнал для передачи его по линиям связи и для обратного преобразования при поступлении сигнала из сети - в компьютер.
Модем
МОДЕМ (от слов МОдулятор и ДЕМодулятор, которые описывают основные функции модема) осуществляет преобразование информации из цифровой (в компьютере) в аналоговую ( например, в телефонной линии) - модуляция и наоборот - демодуляция. Модем ведет себя самостоятельно:
сам набирает заказанный номер,
может дозваниваться,
снимает трубку при звонке, если ему звонит другой модем,
может принимать и посылать факсы (тогда он - факс-модем),
некоторые модемы работают в режиме автоответчика, записывая принятые голосовые сообщения в файлы на диске.
23. Взаимодействие Internet и других сетей(понятие POP)
Post Office Protocol (POP) - протокол доставки почты пользователю из почтового ящика почтового сервера РОР. Многие концепции, принципы и понятия протокола POP выглядят и функционируют подобно SMTP. Команды POP практически идентичны командам SMTP, отличаясь в некоторых деталях. На рис.7 изображена модель клиент-сервер по протоколу POP. Сервер POP находится между агентом пользователя и почтовыми ящиками.
Назначение протокола РОРЗ
Ранее почтовые сообщения большинства сетей доставлялись непосредственно от одного компьютера к другому. И если пользователь часто менял рабочие компьютеры или один компьютер принадлежал нескольким пользователям, существовали определенные проблемы. В наши дни общепринята доставка сообщения не на компьютеры пользователя, а в специальные почтовые ящики почтового сервера организации, который круглосуточно работает (включен).
Описание протокола РОРЗ
Конструкция протокола РОРЗ обеспечивает возможность пользователю обратиться к своему почтовому серверу и изъять накопившуюся для него почту. Пользователь может получить доступ к РОР-серверу из любой точки доступа к Интернет. При этом он должен запустить специальный почтовый агент (UA), работающий по протоколу РОРЗ, и настроить его для работы со своим почтовым сервером. Итак, во главе модели POP находится отдельный персональный компьютер, работающий исключительно в качестве клиента почтовой системы (сервера). Подчеркнем также, что сообщения доставляются клиенту по протоколу POP, а посылаются по-прежнему при помощи SMTP. То есть на компьютере пользователя существуют два отдельных агента-интерфейса к почтовой системе - доставки (POP) и отправки (SMTP). Разработчики протокола РОРЗ называет такую ситуацию "раздельные агенты" (split UA). Концепция раздельных агентов кратко обсуждается в спецификации РОРЗ.
В протоколе РОРЗ оговорены три стадии процесса получения почты: авторизация, транзакция и обновление. После того как сервер и клиент РОРЗ установили соединение, начинается стадия авторизации. На стадии авторизации клиент идентифицирует себя для сервера. Если авторизация прошла успешно, сервер открывает почтовый ящик клиента и начинается стадия транзакции. В ней клиент либо запрашивает у сервера информацию (например, список почтовых сообщений), либо просит его совершить определенное действие (например, выдать почтовое сообщение). Наконец, на стадии обновления сеанс связи заканчивается. В табл.7 перечислены команды протокола РОРЗ, обязательные для работающей в Интернет реализации минимальной конфигурации.
24. Функции и механизмы защиты, реализуемые протоколами уровней модели ISO/OSI.
физический уровень
Ниже приведены основные рекомендации, позволяющие снизить вероятность эксплуатации кабельной системы компьютерной сети предприятия злоумышленником.
Рекомендуемая конфигурация физических связей в компьютерной сети предприятия - «звезда», при этом для подключения каждого узла выделен отдельный кабельный сегмент. В качестве среды передачи используется восьмижильный медный кабель типа «витая пара» либо оптоволокно.
Для подключения критически важных для предприятия серверов используют два кабельных сегмента - основной и резервный.
Прокладка сетевого кабеля осуществляется в скрытой проводке, либо в закрываемых кабель-каналах с возможностью опечатывания не срываемыми наклейками - «стикерами».
Кабельные сегменты, используемые для подключения всех узлов компьютерной сети, должны быть сконцентрированы на одной коммутационной панели.
В начальной конфигурации топологии физических связей должно быть исключено совместное использование среды передачи любой парой узлов сети. Исключение составляет связь с «узел-коммутатор».
Управление конфигурацией физических связей между узлами осуществляется только на коммутационной панели.
7. Коммутационная панель смонтирована в запираемом коммутационном шкафу. Доступ в помещение коммутационного шкафа строго ограничен и контролируется службой безопасности предприятия.
На рисунке 1 приведены рекомендации по построению компьютерной сети на физическом уровне.
Рисунок 1. Рекомендации по построению компьютерной сети на физическом уровне.
Особый класс сред передачи составляет беспроводная среда передачи или радиочастотный ресурс. При построении компьютерных сетей предприятий в настоящее время широко применяется технология RadioEthernet. Топология физических связей сетей, построенных по этому принципу, - либо «точка-точка», либо «звезда». Особенность организации беспроводных сетей передачи данных, построенных с использованием технологии RadioEthernet, предполагает наличие у злоумышленника полного доступа к среде передачи. Злоумышленник, обладающий радиосетевым адаптером в состоянии без труда организовать прослушивание радиосети передачи данных. Парализовать работу такой сети можно при условии наличия у злоумышленника излучателя, работающего 2ГГц-овом в диапазоне частот и обладающего более высокими по сравнению с излучателями атакуемой радиосети мощностными характеристиками.
Рекомендации по защите радиосетей передачи данных.
Служба безопасности должна обеспечить строгое ограничение физического доступа персонала предприятия и полное исключение доступа посторонних на площадки монтажа приемного и излучающего оборудования радиосетей передачи данных. Доступ на площадки должен контролироваться службой безопасности предприятия.
Прокладка высокочастотного кабеля должна быть выполнена скрытым способом либо в коробах с последующим опечатыванием коробов «стикерами».
Длина высокочастотного кабельного сегмента должна быть минимальной.
Доступ в помещения с радиомодемами, радиомостами и станциями, оснащенными радиосетевыми адаптерами должен строго контролироваться службой безопасности предприятия.
Администратор сети должен детально документировать процедуры настройки радиомодемов, радиомостов и станций, оснащенных радиосетевыми адаптерами.
Администратор сети должен регулярно менять реквизиты авторизации для удаленного управления этими устройствами.
Администратор сети должен выделить отдельный адресный пул для администрирования этих устройств по сети.
Администратор сети должен отключить неиспользуемые функции радиомодемов, радиомостов и станций, оснащенных радиосетевыми адаптерами.
Администратор должен активировать функции радиомодема или радиомоста обеспечивающие «тунелирование» и криптографическую защиту передаваемых и принимаемых сообщений.
10. Администратор должен контролировать доступ к радиомодемам, радиомостам и станциям, оснащенным радиоадаптерами со стороны узлов компьютерной сети предприятия. Один из возможных способов контроля - использование межсетевого экрана.
канальный уровень
Ниже приведены рекомендации, следование которым позволяет дополнительно защитить компьютерную сеть предприятия средствами канального уровня.
Администратор службы безопасности должен вести инвентаризационную ведомость соответствия аппаратных и сетевых адресов всех узлов сети предприятия.
Службой безопасности, совместно с отделом информационных технологий, должна быть разработана политика защиты компьютерной сети средствами канального уровня, определяющая допустимые маршруты передачи кадров канального уровня. Разработанная политика должна запрещать связи типа «один-ко-многим», не обоснованные требованиями информационной поддержки деятельности предприятия. Политикой также должны быть определены рабочие места, с которых разрешено конфигурирование средств коммутации канального уровня.
Средства коммутации канального уровня, используемые в компьютерной сети предприятия, должны быть настраиваемыми и обеспечивать разграничение доступа между узлами сети в соответствии с разработанной политикой. Как правило, такие средства поддерживают технологию VLAN, позволяющую в рамках одного коммутатора выделить группы аппаратных адресов и сформировать для них правила трансляции кадров.
Администратор сети должен выполнить настройку подсистемы управления VLAN коммутатора, и других подсистем, необходимых для реализации разработанной политики защиты. В обязанности администратора входит также отключение неиспользуемых подсистем коммутатора.
Администратор сети должен регулярно контролировать соответствие конфигураций коммутаторов разработанной политике защиты.
Администратор сети должен вести мониторинг сетевой активности пользователей с целью выявления источников аномально высокого количества широковещательных запросов.
Служба безопасности должна контролировать регулярность смены реквизитов авторизации администратора в подсистемах управления коммутаторами.
Служба безопасности должна контролировать регулярность выполнения администратором мероприятий, связанных с мониторингом сети, осуществлением профилактических работ по настройке коммутаторов, а также созданием резервных копий конфигураций коммутаторов.
Служба безопасности должна обеспечить строгий контроль доступа в помещения, в которых расположены коммутаторы и рабочие станции, с которых разрешено управление коммутаторами.
На рисунке 2 приведен пример формализованной политики защиты компьютерной сети средствами канального уровня.
В центре схемы находится управляемый коммутатор, обеспечивающий реализацию правил политики безопасности. Атрибуты коммутатора перечислены в верхней части блока, а его операции (функции) в нижней. Узлы сети сгруппированы по функциональному признаку. Пример записи правил фильтрации трафика управляемым коммутатором приведен с права в соответствующей нотации.
Рисунок 2. Пример формализованной записи политики защиты компьютерной сети средствами канального уровня.
сетевой уровень
Использование в компьютерной сети протоколов сетевого уровня является необходимым условием для обеспечения взаимодействия между узлами сетей с различными канальными протоколами. Сетевые протоколы позволяют преодолеть ограничения, накладываемые спецификациями канального уровня. Например, позволяют объединить компьютерную сеть предприятия с сетью интернет-провайдера с использованием телефонных сетей общего пользования. Сделать это только средствами канальных протоколов достаточно сложно. Кроме того, объединение двух различных по назначению сетей с использованием мостов крайне отрицательно сказывается на уровне защищенности объединяемых сетей. В большинстве случаев администратор и служба безопасности предприятия не могут полностью проинвентаризировать узлы подключаемой сети, и, следовательно, формализовать правила обмена кадрами канального уровня.
Второй важный аспект использования протоколов сетевого уровня — это разграничение доступа к ресурсам внутри сети предприятия, использующей только один стандарт канального уровня. Использование для этой цели протоколов сетевого уровня весьма эффективно даже для сетей, построенных с использованием только одного стандарта канального уровня. Проблема совместимости в таких сетях не актуальна, и поэтому полезные свойства сетевых протоколов можно использовать для защиты от воздействия на сеть злоумышленника. Одним из таких свойств является использование протоколами сетевого уровня раздельной схемы адресации сети (т.е. группы компьютеров) и отдельно взятого узла этой группы. В частности адрес протокола сетевого уровня IP состоит из двух частей — номера сети, и номера узла. При этом максимально возможное количество узлов в сети или ее адресное пространство определяется значением сетевой маски или (ранее, до введения бесклассовой маршрутизации CIDR) классом сети.
Данную особенность адресации могут использовать как администратор сети, так и злоумышленник. Одной из задач администратора сети и сотрудников службы безопасности является защита адресного пространства сети от возможности его использования злоумышленником. Частично эту функцию выполняют механизмы маршрутизации, реализованные модулями протокола сетевого уровня. Т.е. осуществление обмена между узлами сетей с различными номерами невозможно без предварительной настройки локальных таблиц маршрутизации узлов этих сетей, либо без внесения изменений в конфигурацию маршрутизатора, осуществляющего обмен пакетами (пакетом называется блок данных, с которым работает протокол сетевого уровня).
Однако почти всегда в адресном пространстве сети остается часть адресов, не занятых в настоящий момент и поэтому доступных для эксплуатации злоумышленником. Это объясняется форматом представления номера сети и номера узла IP-протокола. Количество узлов в сети — это всегда 2n, т.е. 4,8,16,32,64 и т.д. Реальное же количество узлов не бывает таким. Кроме того, администратор всегда стремится зарезервировать адресное пространство для новых узлов. Именно этот резерв может и будет использован злоумышленником для осуществления атак на функционирующие узлы компьютерной сети.
Решение проблемы очевидно — нужно использовать все адресное пространство и не дать злоумышленнику возможности захватить адреса неиспользуемых узлов. Одним из способов является применение службы мониторинга сети и поддержки виртуальных узлов в резервном диапазоне адресов. Данная служба постоянно использует свободное адресное пространство сети, создавая собственные виртуальные хосты (новые виртуальные хосты создаются сразу после отключения от сети реально функционирующих доверенных узлов). Таким образом, служба подменяет собой отсутствующие в настоящий момент рабочие станции, серверы, маршрутизаторы и т.д.
транспортный уровень
Использование свойств транспортных протоколов создает наиболее эффективную преграду деятельности злоумышленника. Здесь для защиты используются признаки, содержащиеся в заголовках сегментов (сегмент - блок данных с которыми работает транспортный протокол) транспортного протокола. Этими признаками являются тип транспортного протокола, номер порта и флаг синхронизации соединения.
Реализация политики защиты средствами транспортного уровня осуществляется с помощью межсетевых экранов (firewall). Межсетевой экран - это специализированное программное обеспечение, реализующее фильтрацию трафика в соответствии с правилами политики защиты сети средствами транспортного уровня. Как правило, данное программное обеспечение функционирует на платформе маршрутизатора, управляющего информационными потоками узлов различных сетей.
25. Реляционные СУБД. Табличное представление данных.
Реляционная база данных - это совокупность отношений, содержащих всю информацию, которая должна храниться в БД.
Реляционная СУБД — СУБД, управляющая реляционными базами данных.
Понятие реляционный (англ. relation — отношение) связано с разработками известного английского специалиста в области систем баз данных Эдгара Кодда (Edgar Codd).
Эти модели характеризуются простотой структуры данных, удобным для пользователя табличным представлением и возможностью использования формального аппарата алгебры отношений и реляционного исчисления для обработки данных.
Реляционная модель ориентирована на организацию данных в виде двумерных таблиц. Каждая реляционная таблица представляет собой двумерный массив и обладает следующими свойствами:
- каждый элемент таблицы — один элемент данных
- все столбцы в таблице однородные, то есть все элементы в столбце имеют одинаковый тип (числовой, символьный и т. д.)
- каждый столбец имеет уникальное имя
- одинаковые строки в таблице отсутствуют
- порядок следования строк и столбцов может быть произвольным
Базовыми понятиями реляционных СУБД являются: 1) атрибут 2) отношения 3) кортеж
Табличное представление данных. Структура реляционной таблицы определена составом её столбцов - полей, тип данных, свойства.
Каждая таблица состоит из однотипных строк и имеет уникальное имя.
Строки имеют фиксированное число полей (столбцов) и значений (множественные поля и повторяющиеся |руппы недопустимы). Иначе говоря, в каждой позиции таблицы на пересечении строки и столбца всегда имеется в точности одно значение или ничего.
Строки таблицы обязательно отличаются друг от друга хотя бы единственным значением, что позволяет однозначно идентифицировать любую строну такой таблицы.
Столбцам таблицы однозначно присваиваются имена, и в каждом из них размещаются однородные значения данных {даты, фамилии, целые числа или денежные суммы}.
Полное информационное содержание базы данных представляется в виде явных значений данных и такой метод представления является единственным. В частности, не существует каких-либо специальных "связей" или указателей, соединяющих одну таблицу с другой Так, связи между строкой с БП = 2 таблицы "Блюда" на рис, 3.2 и строкой с ПР = 7 таблицы продукты ^ля приготовления Харчо нужен Рис), представляется не с помощью указателей, а благодаря существованию а таблице "Состав" строки, в которой номер блюда равен 2, а номер продукта - 7.
При выполнении операций с таблицей ее строки и столбцы можно обрабатывать в любом порядке безотносительно к юс информационному содержанию. Этому способствует наличие имен таблиц и их столбцов, а также возможность выделения любой их строки или любого набора строк с указанными признаками {например, рейсов с пунктам назначения "Париж" и временем прибытия до 12 часов).
26. Информационное моделирование предметной области. Модель сущность-связь. Понятия сущность, атрибут, отношение. Схема данных и ER диаграммы.
Под моделью предметной области понимается некоторая система, имитирующая структуру или функционирование исследуемой предметной области и отвечающая основному требованию – быть адекватной этой области.
Предварительное моделирование предметной области позволяет сократить время и сроки проведения проектировочных работ и получить более эффективный и качественный проект. Без проведения моделирования предметной области велика вероятность допущения большого количества ошибок в решении стратегических вопросов, приводящих к экономическим потерям и высоким затратам на последующее перепроектирование системы. Вследствие этого все современные технологии проектирования ИС основываются на использовании методологии моделирования предметной области.
К моделям предметных областей предъявляются следующие требования:
· формализация, обеспечивающая однозначное описание структуры предметной области;
· понятность для заказчиков и разработчиков на основе применения графических средств отображения модели;
· реализуемость, подразумевающая наличие средств физической реализации модели предметной области в ИС;
· обеспечение оценки эффективности реализации модели предметной области на основе определенных методов и вычисляемых показателей.
Чаще всего используется этапах проектирования. Эта модель состоит из 4-х компонентов, каждый компонент имеет некоторое графическое обозначение:
1) тип сущности
2) тип связи (ставится м/у 2-мя типами сущности)
3) кардинальные числа (должны показывать max-й, реальный размер связи)
4) атрибуты
2 вида: 1) все атрибуты с форматами их заполнения; 2) выносятся атрибуты с указаниями их характеристик.
Сущность - любой различимый объект (объект, который мы можем отличить от другого), информацию о котором необходимо хранить в базе данных. Сущностями могут быть люди, места, самолеты, рейсы, вкус, цвет и т.д. Необходимо различать такие понятия, как тип сущности и экземпляр сущности. Понятие тип сущности относится к набору однородных личностей, предметов, событий или идей, выступающих как целое. Экземпляр сущности относится к конкретной вещи в наборе. Например, типом сущности может быть ГОРОД, а экземпляром - Москва, Киев и т.д.
Типы связи:
1) один к одному (обозначается 1 : 1 ). Это означает, что в такой связи сущности с одной ролью всегда соответствует не более одной сущности с другой ролью. В рассмотренном нами примере это связь "руководит", поскольку в каждом отделе может быть только один начальник, а сотрудник может руководить только в одном отделе. Данный факт представлен на следующем рисунке, где прямоугольники обозначают сущности, а ромб - связь. Так как степень связи для каждой сущности равна 1, то они соединяются одной линией.
2) один ко многим ( 1 : n ). В данном случае сущности с одной ролью может соответствовать любое число сущностей с другой ролью. Такова связь ОТДЕЛ-СОТРУДНИК. В каждом отделе может работать произвольное число сотрудников, но сотрудник может работать только в одном отделе. Графически степень связи n отображается "древообразной" линией, так это сделано на следующем рисунке.
Данный рисунок дополнительно иллюстрирует тот факт, что между двумя сущностями может быть определено несколько наборов связей.
Здесь также необходимо учитывать класс принадлежности сущностей. Каждый сотрудник должен работать в каком-либо отделе, но не каждый отдел (например, вновь сформированный) должен включать хотя бы одного сотрудника. Поэтому сущность "ОТДЕЛ" имеет обязательный, а сущность "СОТРУДНИК" необязательный классы принадлежности.
3) многие ко многим ( n : n ). В этом случае каждая из ассоциированных сущностей может быть представлена любым количеством экземпляров. Пусть на рассматриваемом нами предприятии для выполнения каждого контракта создается рабочая группа, в которую входят сотрудники разных отделов. Поскольку каждый сотрудник может входить в несколько (в том числе и ни в одну) рабочих групп, а каждая группа должна включать не менее одного сотрудника, то связь между сущностями СОТРУДНИК и РАБОЧАЯ_ГРУППА имеет степень n : n.
Атрибут - поименованная характеристика сущности. Его наименование должно быть уникальным для конкретного типа сущности, но может быть одинаковым для различного типа сущностей (например, ЦВЕТ может быть определен для многих сущностей: СОБАКА, АВТОМОБИЛЬ, ДЫМ и т.д.) Атрибуты используются для определения того, какая информация должна быть собрана о сущности, Примерами атрибутов для сущности АВТОМОБИЛЬ являются ТИП. МАРКА, НОМЕРНОЙ ЗНАК, ЦВЕТ и т.д Здесь также существует различие между типом и экземпляром. Тип атрибута ЦВЕТ имеет много экземпляров или значений;
Красный, Синий, Банановый, Белая ночь и т.д.,
однако каждому экземпляру сущности присваивается только одно значение атрибута.
Абсолютное различие между типами сущностей и атрибутами отсутствует. Атрибут является таковым только в связи с типом сущности, В другом контексте атрибут может выступать как самостоятельная сущность. Например, для автомобильного завода цвет - это только атрибут продукта производства, а для лакокрасочной фабрики цает - тип сущности.
Ключ - минимальный набор атрибутов, по значениям которых можно однозначно найти требуемый экземпляр сущности. Минимальность означает, что исключение из набора любого атрибута не позволяет идентифицировать сущность по оставшимся. Для сущности Расписание (п. 12) ключом является атрибут Номер_рейса или набор: Пункт_отправления, Время_вылета и Пункт_назначения (при условии, что из пункта в пункт вылетает в каждый момент времени один самолет)
Связь - ассоциирование двух или более сущностей. Если бы назначением базы данных было только хранение отдельных, не связанных между собой данных, то ее структура могла бы быть очень простой. Однако одно из основных требований к организации базы данных - это обеспечение возможности отыскания одних сущностей по значениям других, для чего необходимо установить между ними определенные связи. А так как в реальных базах данньк нередко содержатся сотни или даже тысячи сущностей, то теоретически между ними может быть установлено более миллиона связей. Наличие такого множества связей и определяет сложность инфологических моделей. 22. Характеристика связей и язык моделирования.
Отношение - в диаграммах сущность-связь - связь двух или нескольких сущностей. Отношение всегда выражается действием. Отношение именуют с помощью глагола. Различают неограниченные, ограниченные и существенно-ограниченные отношения.
Неограниченное отношение - в диаграммах сущность-связь - безусловное отношение, которое существует до тех пор, пока существуют относящиеся к делу сущности.
Ограниченное отношение - в диаграммах сущность-связь - условное отношение между сущностями.
Существенно-ограниченное отношение - в диаграммах сущность-связь - отношение, которое используется, когда соответствующие сущности взаимозависимы в системе.
При построении инфологических моделей можно использовать язык ER-диаграмм (от англ. Entity-Relationship, т.е. сущность-связь). В них сущности изображаются помеченными прямоугольниками, ассоциации - помеченными ромбами или шестиугольниками, атрибуты - помеченными овалами, а связи между ними - ненаправленными ребрами, над которыми может проставляться степень связи (1 или буква, заменяющая слово "много") и необходимое пояснение.
Цель моделирования данных состоит в обеспечении разработчика ИС концептуальной схемой базы данных в форме одной модели или нескольких локальных моделей, которые относительно легко могут быть отображены в любую систему баз данных.
Наиболее распространенным средством моделирования данных являются диаграммы "сущность-связь" (ER-диаграммы). С их помощью определяются важные для предметной области объекты (сущности), их свойства (атрибуты) и отношения друг с другом (связи). ER-диаграммы непосредственно используются для проектирования реляционных баз данных.
27. Определение сущности, ключевые и не ключевые атрибуты; взаимосвязи сущностей, связи 1:1, 1:N, M:N; зависимые и независимые сущности, родительские и дочерние сущности; графическое представление.
Сущность - любой различимый объект (объект, который мы можем отличить от другого), информацию о котором необходимо хранить в базе данных. Сущностями могут быть люди, места, самолеты, рейсы, вкус, цвет и т.д. Необходимо различать такие понятия, как тип сущности и экземпляр сущности. Понятие тип сущности относится к набору однородных личностей, предметов, событий или идей, выступающих как целое. Экземпляр сущности относится к конкретной вещи в наборе. Например, типом сущности может быть ГОРОД, а экземпляром - Москва, Киев и т.д.
Каждая сущность должна обладать некоторыми свойствами:
· каждая сущность должна иметь уникальное имя, и к одному и тому же имени должна всегда применяться одна и та же интерпретация. Одна и та же интерпретация не может применяться к различным именам, если только они не являются псевдонимами;
· сущность обладает одним или несколькими атрибутами, которые либо принадлежат сущности, либо наследуются через связь;
· сущность обладает одним или несколькими атрибутами, которые однозначно идентифицируют каждый экземпляр сущности;
· каждая сущность может обладать любым количеством связей с другими сущностями модели.
Таблица, или объект, состоит из столбцов. Таким образом, атрибуты — это столбцы в таблице базы данных.
Ключевые атрибуты — это элементы, благодаря которым осуществляется связь между Объектами (таблицами). А неключевые атрибуты — это элементы, которые не связаны с другими объектами (таблицами) базы данных.
Ключевые атрибуты могут быть двух различных типов: основные и неосновные. Основные ключевые атрибуты всегда находятся над разделительной линией; они являются определяющими атрибутами (идентификаторами) данного объекта. Если атрибут является ключевым, но не относится к идентификаторам, то он находится под разделительной линией. Такой ключевой атрибут называется неосновным.
Если элемент связан с ключевым атрибутом из другой таблицы, то он называется внешним ключом.
Типы связи:
1) один к одному (обозначается 1 : 1 ). Это означает, что в такой связи сущности с одной ролью всегда соответствует не более одной сущности с другой ролью. В рассмотренном нами примере это связь "руководит", поскольку в каждом отделе может быть только один начальник, а сотрудник может руководить только в одном отделе. Данный факт представлен на следующем рисунке, где прямоугольники обозначают сущности, а ромб - связь. Так как степень связи для каждой сущности равна 1, то они соединяются одной линией.
2) один ко многим ( 1 : n ). В данном случае сущности с одной ролью может соответствовать любое число сущностей с другой ролью. Такова связь ОТДЕЛ-СОТРУДНИК. В каждом отделе может работать произвольное число сотрудников, но сотрудник может работать только в одном отделе. Графически степень связи n отображается "древообразной" линией, так это сделано на следующем рисунке.
Данный рисунок дополнительно иллюстрирует тот факт, что между двумя сущностями может быть определено несколько наборов связей.
Здесь также необходимо учитывать класс принадлежности сущностей. Каждый сотрудник должен работать в каком-либо отделе, но не каждый отдел (например, вновь сформированный) должен включать хотя бы одного сотрудника. Поэтому сущность "ОТДЕЛ" имеет обязательный, а сущность "СОТРУДНИК" необязательный классы принадлежности.
3) многие ко многим ( n : n ). В этом случае каждая из ассоциированных сущностей может быть представлена любым количеством экземпляров. Пусть на рассматриваемом нами предприятии для выполнения каждого контракта создается рабочая группа, в которую входят сотрудники разных отделов. Поскольку каждый сотрудник может входить в несколько (в том числе и ни в одну) рабочих групп, а каждая группа должна включать не менее одного сотрудника, то связь между сущностями СОТРУДНИК и РАБОЧАЯ_ГРУППА имеет степень n : n.
Различают независимые, зависимые и ассоциированные сущности.
Независимая сущность - в диаграммах сущность-связь - сущность, представляющая независимые данные, которые всегда присутствуют в системе. Отношения с другими сущностями у нее могут отсутствовать.
Зависимая сущность - в диаграммах сущность-связь - сущность, представляющая данные, которые зависят от других сущностей в системе. Зависимая сущность всегда имеет отношения с другими сущностями.
Ассоциированная сущность - в диаграммах сущность-связь - сущность, представляющая данные, которые ассоциируются с отношениями между двумя и более сущностями.
Связь называется идентифицирующей, если экземпляр дочерней сущности идентифицируется через ее связь с родительской сущностью. Атрибуты, составляющие первичный ключ родительской сущности, при этом входят в первичный ключ дочерней сущности. Дочерняя сущность при идентифицирующей связи всегда является зависимой.
Связь называется неидентифицирующей, если экземпляр дочерней сущности идентифицируется иначе, чем через связь с родительской сущностью. Атрибуты, составляющие первичный ключ родительской сущности, при этом входят в состав неключевых атрибутов дочерней сущности.
Идентифицирующая связь изображается сплошной линией; неидентифицирующая - пунктирной линией. Линии заканчиваются точкой со стороны дочерней сущности.
При определении связи происходит миграция атрибутов первичного ключа родительской сущности в соответствующую область атрибутов дочерней сущности.
28. Целостность данных: ограничения на область значений, умолчания, NULL - значения.
Целостность (от англ. integrity - нетронутость, неприкосновенность, сохранность, целостность) - понимается как правильность данных в любой момент времени. Но эта цель может быть достигнута лишь в определенных пределах: СУБД не может контролировать правильность каждого отдельного значения, вводимого в базу данных (хотя каждое значение можно проверить на правдоподобность). Например, нельзя обнаружить, что вводимое значение 5 (представляющее номер дня недели) в действительности должно быть равно 3. С другой стороны, значение 9 явно будет ошибочным и СУБД должна его отвергнуть. Однако для этого ей следует сообщить, что номера дней недели должны принадлежать набору (1,2,3,4,5,6,7).
Поддержание целостности базы данных может рассматриваться как защита данных от неверных изменений или разрушений (не путать с незаконными изменениями и разрушениями, являющимися проблемой безопасности). Современные СУБД имеют ряд средств для обеспечения поддержания целостности (так же, как и средств обеспечения поддержания безопасности).
Ограничение целостности данных — это логическое выражение заданное для базы данных, значение которого всегда должно быть "истина". Для БД, как правило, задается набор ограничений целостности данных. Если значение хотя бы одного логического выражения ограничения целостности данных принимает значение "ложь", то имеет место быть нарушение целостности данных.
Примеры ограничений целостности данных:
· серия и номер паспорта уникальны
· номер автомобиля уникален
· вес, рост, возраст не могут быть отрицательным числом
· индекс в России состоит из 6 цифр
· в одном городе не может быть двух улиц с одинаковым названием
· нельзя удалить клиента, если у него есть хотя бы один платеж
Существует три типа целостности данных: доменная, ссылочная и объектная.
1) Доменная целостность
При задании типа данных определяются правильные значения для отдельно взятого столбца. Это называется доменной целостностью. Домен - это множество допустимых значений столбца. В качестве альтернативного метода определения допустимых значений используется свойство NULL, указывающее для данного столбца тип значений. Традиционные для SQL Server методы обеспечения целостности включают в себя наложение условий на домены столбцов с помощью пользовательских типов данных, правил и значений по умолчанию. Для обеспечения целостности также используются ограничения ANSI (значения по умолчанию и ограничения на проверку). Обратите внимание на то, что типы данных и свойство NULL используются всегда, в то время как другие компоненты системы целостности данных применять необязательно.
2) Ссылочная целостность
Ссылочная целостность состоит в, поддержке определенных отношений между строками данных в разных таблицах. Этот тип целостности обеспечивается главным образом декларативными средствами. Следует отметить, что те же условия на данные налагаются с помощью триггеров и других программных средств, однако при этом требуется ручное выполнение многих операций. В SQL Server 2000 для внешних ключей определено два вида каскадных операций: каскадное удаление (новое средство в SQL Server 2000) и запрет операции. Последнее означает, что если попытаться удалить запись о клиенте, для которого заданы использующиеся счета (то есть, в другой таблице есть записи о его счетах), то сервер не выполнит это действие. Если установлена опция каскадного удаления, то при запросе на удаление клиента сервер также удалит из связанных таблиц все записи о его счетах. В предыдущих версиях SQL Server для выполнения каскадного удаления нужно было .запрограммировать соответствующие действия вручную, с помощью триггеров, хранимых процедур или стандартных операторов T-SQL. Появление в SQL Server 2000 декларативных средств каскадного удаления избавляет' разработчика базы данных от большого объема ручной работы.
3) Объектная целостность
Последний тип целостности, рассматриваемый в этом уроке, - объектная целостность. Она определяет возможность добавления уникального идентификатора для каждой строки таблицы. Объектная целостность обеспечивается с помощью уникальных индексов (рассмотрены в прошлом уроке) и средствами декларативной целостности (первичный ключ или ограничение уникальности), которые рассмотрены ниже.
Null-значения
Основное назначение баз данных состоит в том, чтобы хранить и предоставлять информацию о реальном мире. Для представления этой информации в базе данных используются привычные для программистов типы данных - строковые, численные, логические и т.п. Однако в реальном мире часто встречается ситуация, когда данные неизвестны или не полны. Например, место жительства или дата рождения человека могут быть неизвестны (база данных разыскиваемых преступников). Если вместо неизвестного адреса уместно было бы вводить пустую строку, то что вводить вместо неизвестной даты? Ответ - пустую дату - не вполне удовлетворителен, т.к. простейший запрос "выдать список людей в порядке возрастания дат рождения" даст заведомо неправильных ответ.
Для того чтобы обойти проблему неполных или неизвестных данных, в базах данных могут использоваться типы данных, пополненные так называемым null-значением. Null-значение - это, собственно, не значение, а некий маркер, показывающий, что значение неизвестно.
Таким образом, в ситуации, когда возможно появление неизвестных или неполных данных, разработчик имеет на выбор два варианта.
Первый вариант состоит в том, чтобы ограничиться использованием обычных типов данных и не использовать null-значения, а вместо неизвестных данных вводить либо нулевые значения, либо значения специального вида - например, договориться, что строка "АДРЕС НЕИЗВЕСТЕН" и есть те данные, которые нужно вводить вместо неизвестного адреса. В любом случае на пользователя (или на разработчика) ложится ответственность на правильную трактовку таких данных. В частности, может потребоваться написание специального программного кода, который в нужных случаях "вылавливал" бы такие данные. Проблемы, возникающие при этом очевидны - не все данные становятся равноправны, требуется дополнительный программный код, "отслеживающий" эту неравноправность, в результате чего усложняется разработка и сопровождение приложений.
Второй вариант состоит в использовании null-значений вместо неизвестных данных. За кажущейся естественностью такого подхода скрываются менее очевидные и более глубокие проблемы. Наиболее бросающейся в глаза проблемой является необходимость использования трехзначной логики при оперировании с данными, которые могут содержать null-значения. В этом случае при неаккуратном формулировании запросов, даже самые естественные запросы могут давать неправильные ответы. Есть более фундаментальные проблемы, связанные с теоретическим обоснованием корректности введения null-значений, например, непонятно вообще, входят ли null-значения в домены или нет.
Практически все реализации современных реляционных СУБД позволяют использовать null-значения, несмотря на их недостаточную теоретическую обоснованность. Такую ситуацию можно сравнить с ситуацией, сложившейся в начале века с теорией множеств. Почти сразу после создания Кантором теории множеств, в ней были обнаружены внутренние противоречия (антиномии). Были разработаны более строгие теории, позволяющие избежать этих противоречий (конструктивная теория множеств). Однако в реальной работе большинство математиков пользуется классической теорией множеств, т.к. более строгие теории более ограничены и негибки в применении именно в силу своей большей строгости.
Мнение автора (очень скромное по сравнению с мнением корифеев реляционной теории) состоит в том, что желательно избегать null-значений. Тем не менее, приведем здесь описание трехзначной логики, необходимой для работы с null-значениями.
29. Целостность данных. Первичный ключ, ограничения по связям. Внешний ключ. Бизнес правила.
Целостность (от англ. integrity - нетронутость, неприкосновенность, сохранность, целостность) - понимается как правильность данных в любой момент времени. Но эта цель может быть достигнута лишь в определенных пределах: СУБД не может контролировать правильность каждого отдельного значения, вводимого в базу данных (хотя каждое значение можно проверить на правдоподобность). Например, нельзя обнаружить, что вводимое значение 5 (представляющее номер дня недели) в действительности должно быть равно 3. С другой стороны, значение 9 явно будет ошибочным и СУБД должна его отвергнуть. Однако для этого ей следует сообщить, что номера дней недели должны принадлежать набору (1,2,3,4,5,6,7).
Поддержание целостности базы данных может рассматриваться как защита данных от неверных изменений или разрушений (не путать с незаконными изменениями и разрушениями, являющимися проблемой безопасности). Современные СУБД имеют ряд средств для обеспечения поддержания целостности (так же, как и средств обеспечения поддержания безопасности).
Первичный ключ обозначает поле (столбец) или группу полей таблицы базы данных, значение которого (или комбинация значений которых) используется в качестве уникального идентификатора записи (строки) этой таблицы.
В теории реляционных баз данных таблица представляет собой изначально неупорядоченный набор записей. Единственный способ идентифицировать определённую запись в этой таблице — это указать набор значений одного или нескольких полей, который был бы уникальным для этой записи. Отсюда и происходит понятие первичного ключа — набора полей (атрибутов, столбцов) таблицы, совокупность значений которых определена для любой записи (строки) этой таблицы и различна для любых двух записей.
Первичный ключ в таблице является базовым уникальным идентификатором для записей. Значение первичного ключа используется везде, где нужно указать на конкретную запись. На использовании первичных ключей основана организация связей между таблицами реляционной БД. Чтобы организовать между двумя таблицами связь типа «один к одному» или «один ко многим» в одну из связываемых таблиц добавляют поле (поля), содержащее(ие) значение первичного ключа записи в связанной таблице (такое поле называют внешним ключом). Для организации связи типа «многие ко многим» создают отдельную таблицу (так называемую «таблицу связи» или «таблицу ассоциации»), каждая запись которой содержит первичные ключи двух связанных записей в разных таблицах.
Внешним ключом называется поле таблицы, предназначенное для хранения значения первичного ключа другой таблицы с целью организации связи между этими таблицами.
Пусть имеется таблицы A и B. Таблица A содержит поля a, b, c, d, из которых поле a — первичный ключ. Таблица B содержит поля x, y, z. В поле y содержится значение поля a одной из записей таблицы A. В таком случае поле y и называется внешним ключом таблицы A в таблице B.
Ограничения целостности устанавливают бизнес-правила на уровне базы данных, определяя набор проверок для таблиц системы, Эти проверки автоматически выполняются всякий раз, когда вызываются оператор вставки, модификации или удаления данных в таблице. Если какие-либо ограничения нарушены, операторы отменяются. Другие операторы транзакции остаются в отложенном состоянии и могут фиксироваться или отменяться согласно логике приложения.
30. Хранение данных и организация доступа к данным. Индексные файлы и файлы данных.
Для многих система хранения данных ассоциируется с устройствами хранения и в первую очередь с дисковыми массивами. Действительно, дисковые массивы сейчас — основные устройства хранения данных, однако не стоит забывать, что обработка информации, формирование логической структуры ее хранения (дисковых томов и файловых систем) выполняется на сервере. В процедуры доступа к данным (помимо процессоров и памяти сервера) вовлечены установленные в нем адаптеры, работающие по определенному протоколу, драйверы, обеспечивающие взаимодействие» этих адаптеров с операционной системой, менеджер дисковых томов, файловая система и менеджер памяти ОС и т. д.
Как правило, система хранения данных содержит следующие подсистемы и компоненты: непосредственно устройства хранения (дисковые массивы, ленточные библиотеки), инфраструктуру доступа к устройствам хранения, подсистему резервного копирования и архивирования данных, ПО управления хранением, систему управления и мониторинга.
Индексирование баз данных
Важнейшим элементом любой СУБД является наличие средств ускоренного поиска данных. Этот механизм обычно реализуется введением так называемых индексных файлов с расширением idх и cdx. Один файл базы данных может быть проиндексирован по нескольким полям и иметь любое число индексов. Эти файлы содержат один элемент, так называемый индексный ключ. Этот ключ позволяет отсортировать записи данных в алфавитном, хронологическом или числовом порядке для поля, по которому выполнено индексирование. Допускается индексирование и по логическим полям.
Различают два типа индексных файлов:
· простой индексный файл;
· составной индексный.
1. Простой индексный файл имеет расширение файла IDX и содержит один индексный ключ. Существуют также компактные простые индексные файлы, которые благодаря сжатию данных, занимают приблизительно в шесть раз меньше места по сравнению с обычным индексным файлом.
2. Составной (мультииндексный) файл имеет расширение CDX и может осуществлять управление одновременно несколькими индексными ключами, хранящихся в индексном выражении. Отдельные ключи называются тегами. Каждый тег имеет свое имя.
Составные файлы могут быть двух видов:
· структурный составной файл;
· обычный составной файл.
Структурный составной файл имеет такое же имя файла как и файл базы данных. Данный индексный файл всегда автоматически открывается вместе со своей базой данных. Его нельзя закрыть до ее закрытия, но можно сделать не активным.
Обычный составной файл имеет произвольное имя файла, не совпадающее с именем файла базы данных.
Индексный файл содержит ключи, которые используются для идентификации специфических записей и номеров записей, связанных с ключем. Каждый индексный файл может содержать до 65535 ключей. Индексный файл обеспечивает быстрый способ определения местополо- жения специфических записей в файле данных. Важно понять, что все ключи должны быть строками.
31.Языки описания (ЯРД), манипулирования (ЯМД) и управления доступом к данным (ЯУД)
Языковые средства СУБД, необходимы для описания данных, организации общения и выполнения процедур поиска и различных преобразований данных. Классификация
Схема имеет общий характер и ориентирована на различные СУБД. Однако на каждая СУБД, которая сейчас используется на практике и распространена на рынке программных продуктов, имеет весь набор указанных языковых средств.
Язык описания данных (DDL - Data DeSnrtton Language), предназначен для описания данных на разных уровнях абстракции: внешнем, логическом и внутреннем. Исходя из предложений COOASYL, языки описания данных на логическом (концептуальном) и внутреннем уровнях независимые и разные. Однако а большинстве промышленных СУБД языки не делится на два отдельных языка описания логической и физической организации данных, а существует единый язык, которая еще называется языком описания схем. В известных и широко используемых на практике СУБД семьи 4BASE применяется единый язык описания данных. Он предназначен для представления данных на логическом и физическом уровнях. Этот язык имеет свой синтаксис: например, имя файла не должно превышать восьми символов, а имя поля -десяти; при этом каждое имя может начинаться с буквы, поля календарной даты обозначаются символом D (DATA), символьные поля — С (CHARACTER), числовые — N (NUMERIC), логические — L (LOGICAL), примечаний — М (MEMO).
Описание всех имен, типов и размеров полей сохраняется в памяти вместе с данными; эти структуры в случае необходимости можно просмотреть и исправить. Если логический и физический уровни отделены, то в состав СУБД может входить язык описания сохранения данных В некоторых СУБД используется еще язык описания подсхем, который нужен для описания части БД, которая отражает информационные потребности отдельного пользователя или прикладной программы. В составе СУБД типа dBASE такой язык не используется.
Язык описания данных на внешнем уровне используется для описания требований пользователей и прикладных программ и создания инфологической модели БД. Этот язык не имеет ничего общего с языками программирования. Так, языковым средством.которое используются для мифологического моделирования, шляется обычный вствст пенный язык или его подмножество, в также язык графов и матриц.
Язык манипулирования данными (DML - Data Manipulation Language) используется дли обработки данных, их преобразований и написания программ. OML может быть базовым или автономным.
Базовый язык DML — это один из традиционных языков программирования (BASIC С FORTRAN и др.). Системы, которые используют базовый язык, называют открытыми! Использование базовых языков как языков описания данных сужает «руг пиц, которые могут непосредственно обращаться к БД, поскольку для этого нужно знать язык программирования. В таких случаях для упрощения общения конечных пользователей с БД предполагается язык ведения диалога, который значительно проще для овладения, чем язык программирования.
Язык управления данными DCL (Data Control Language) — это та часть языка SQL, которая позволяет работать с правами пользователей на объекты в базе данных. Присвоение прав Язык SQL позволяет присвоить группе пользователей определенные права на некоторый объект Язык управления данными используется для управления правами доступа к данным и выполнением процедур в многопользовательской среде. Более точно его можно назвать "язык управления доступом". Он состоит из двух основных команд:
GRANT - дать права;
REVOKE - забрать права.
32. Операции реляционной алгебры SELECT (Выборка), PROJECT (проекция), Join(соединение). Внешнее и внутреннее соединение.
Проекция – это операция, которая переносит в результирующее отношение те столбцы исходного отношения, которые указаны в условии операции. X = R[C,A] для R(A,B,C). Результат проекции содержит те столбцы исходного отношения, которые указаны в условии проекции.
На практике очень часто требуется получить некое подмножество столбцов и строк таблицы, т.е. выполнить комбинацию Restriction и Projection. Для этого достаточно перечислить столбцы таблицы и наложить ограничения на строки.
Выборка – это операция, которая переносит в результирующее отношение те строки исходного отношения, которые удовлетворяют условию выборки. Y = R[A=a2]. Результатом выборки являются те строки исходного отношения, которые удовлетворяют условию выборки. Условие выборки проверяется в каждой строке отношения по отдельности и не может охватывать информацию из нескольких строк.
Операция выборки позволяет получить все строки (записи) либо часть строк одной таблицы.
SELECT * FROM country/ Получить все строки таблицы Country
Соединение - Операция соединения использует два исходных отношения и создает одно результирующее отношение. Каждая строчка первого исходного отношения сопоставляется со всеми строками второго исходного отношения. При сопоставлении проверяется условие соединения. Если условие соблюдается, то соответствующие строки двух отношений сцепляются и передаются в результирующее отношение.
Соединение называется натуральным, если: − знак сравнения – равенство; − сравнение происходит по всем парам одноименных атрибутов; − одинаковые имена атрибутов в результате соединения подавляются.
Результатом операции деление является отношение Q(B), содержащее пересечение образов всех строк отношения-делителя, вычисленных на основе отношения-делимого.
Операция соединения позволяет соединять строки из более чем одной таблицы (по некоторому условию) для образования новых строк данных.
Операции соединения подразделяются на два вида - внутренние и внешние. Оба вида соединений задаются в предложении WHERE запроса SELECT с помощью специального условия соединения. Внешние соединения содержат зарезервированное слово "JOIN", в то время как внутренние соединения могут задаваться как без использования такого слова, так и с использованием слова "JOIN".
Связывание производится, как правило, по первичному ключу одной таблицы и внешнему ключу другой таблицы - для каждой пары таблиц. При этом очень важно учитывать все поля внешнего ключа, иначе результат будет искажен. Соединяемые поля могут (но не обязаны!) присутствовать в списке выбираемых элементов. Предложение WHERE может содержать множественные условия соединений. Условие соединения может также комбинироваться с другими предикатами в предложении WHERE.
Внутреннее соединение возвращает только те строки, для которых условие соединения принимает значение true.
Внешнее соединение возвращает все строки из одной таблицы и только те строки из другой таблицы, для которых условие соединения принимает значение true. Строки второй таблицы, не удовлетворяющие условию соединения (т.е. имеющие значение false), получают значение null в результирующем наборе.
Существует два вида внешнего соединения: LEFT JOIN и RIGHT JOIN.
В левом соединении (LEFT JOIN) запрос возвращает все строки из левой таблицы (т.е. таблицы, стоящей слева от зарезервированного словосочетания "LEFT JOIN") и только те из правой таблицы, которые удовлетворяют условию соединения. Если же в правой таблице не найдется строк, удовлетворяющих заданному условию, то в результате они замещаются значениями null.
Для правого соединения - все наоборот.
33 ЯМД. Операции выборки, добавления, обновления, удаления данных.
Язык манипуляции данными (ЯМД) обеспечивает эффективные команды манипуляции сетевой системой базы данных. ЯМД позволяет пользователям выполнять над базой данных операции в целях получения информации, создания отчетов, а также обновления и изменения содержимого записей.
Язык манипуляции данными (DML) используется для получения, вставки и модификации информации в базе данных. Эти команды будут использованны всеми пользователями базы данных во время повседневных операций с базой данных. Давайте обзорно рассмотрим основные команды DML.
INSERT. Команда INSERT в SQL используется для добавления записей в существующую таблицу. Вернёмся к примеру personal_info из предыдущего раздела, давайте представим, что Вашему департаменту по персоналу понадобилось добавить нового работник в нашу базу. Команда тогда будет выгрядеть примерно следующим образом: INSERT INTO personal_info
values('bart','simpson',12345,$45000)
Заметьте, что здесь описаны четыре значения для записи. Они передают в таблицу атрибуты в том порядке , в котором мы их задали: first_name, last_name, employee_id, and salary.
SELECT. Команда SELECT является наиболее часто используемой командой в SQL. Она позволяет пользователям базы данных получать требуемую информацию для себя назад из базы данных. Давайте рассмотрим небольшой пример, опять используем таблицу personal_info нашей базы данных персонала.
Команда, показанная ниже, возвращает всю информацию, содержащуюся внутри таблицы personal_info. Заметьте, что для этого мы используем символ звёздочки. Таким образом, мы как бы имеем в виду "Выбрать всё из таблицы personal_info".
SELECT *
FROM personal_info
В другом случае, пользователь мог бы хотеть ограничить атрибуты (поля), которые возвращаются из базы данных. Для примера, департамент по персоналу может потребовать список last names всех работников компании. следующая SQL команда будет возвращать только эту информацию:
SELECT last_name
FROM personal_info
И в заключение, оператор WHERE может использоваться для ограничения записей, возращаемых вам, по определённому критерию. Например, можно вывести записи по персоналу только для высокооплачиваемых работников. Следующая команда возвращает все данные, хранящиеся в таблице personal_info, которые удоветворяют условию, что зарплата у них больше чем $50,000:
SELECT *
FROM personal_info
WHERE salary > $50000
UPDATE. Команда UPDATE используется для модификации хранящейся в таблице информации, причём как целой кучи, так и индивидуально по одной записи. Каждый год наша компания увеличивает зарплату своим сотрудником на 3% в соответствии увеличения стимости жизни. Следующая команда SQL используется для быстрого выполнения этой операции для всех работниов, хранящихся в базе данных:
UPDATE personal_info
SET salary = salary * 1.03
В другом же случае, наш новый работник Bart Simpson продемонстрировал верх производительности и выполнения своего (так и чешется написать супружеского .) служебного долга. И за это менеджер желает осчатливить его повышением на $5,000. Здесь оператор WHERE служит для выделения только одного Bart'а в качестве повышения зарплаты:
UPDATE personal_info
SET salary = salary + $5000
WHERE employee_id = 12345
DELETE. Команда DELETE вместе с оператором WHERE может удалить запись об этом работнике из таблицы personal_info:
DELETE FROM personal_info
WHERE employee_id = 12345
34. Многопользовательскийрежим. Транзакции. Блокировки. Журнал транзакция.
Основное требование к многопользовательским СУБД - обеспечение непротиворечивости данных в системе, при сохранении максимальной производительности и конкуренции в доступе к данным для пользователей.
Конкуренция в доступе к данным означает, что каждый из пользователей независим от остальных пользователей в потребности обработки данных. Система, во избежание порчи данных, самостоятельно устанавливает очередность работы с данными для пользователей. В случае необходимости пользователи могут ожидать своей очереди для работы с данными. Одной из главной целей многопользовательской СУБД является максимальное уменьшение этого времени ожидания до такой степени, чтобы оно (в идеале) стало незаметным для пользователя.
Кроме того, сервер СУБД должен предотвращать взаимно разрушающие манипуляции с данными нескольких пользователей при их одновременной работе. Например, если система не предусматривает такую возможность, то менеджеры принимающие заказы от клиентов на поставку товара, и выполняющие их резервирование на складе, могут зарезервировать товара больше чем фактически имеется в наличии. В этом случае обеспечен неприятный разговор с клиентом, заказ которого будет впоследствии отменен.
Более неприятная ситуация возможна в банке: если одновременно исполняется несколько клиентских платежных поручений с одного счета, то при неконтролируемом списании с клиентского счета возможен отрицательный остаток, что недопустимо.
Контроль нужен также в системах резервирования билетов на транспорте, чтобы билет на одно и то же место не был продан разными кассирами разным пассажирам.
Несмотря на различия в реализации, серверы СУБД используют общие способы управления данными и доступом к ним.
Транзакции
Многопользовательские системы широко используют понятие транзакций. Транзакция - это логическая единица работы, которая состоит из одного или нескольких SQL-выражений. Группа выражений отмеченных как транзакция рассматривается как единое и неделимое целое. В случае если в одном из выражений обработки данных происходит ошибка, то транзакция отменяется целиком. Таким образом, система возвращается в состояние предшествующее началу транзакции, обеспечивая при этом физическую и логическую непротиворечивость данных.
Например, мы пытаемся модифицировать таблицу при помощи оператора UPDATE. В одном из столбцов этим оператором устанавливается недопустимое значение с точки зрения правил целостности для этой таблицы Срабатывание ограничителя приведет к тому, что сервер СУБД не позволит выполнить такую модификацию и известит нас ошибкой, а механизм контроля транзакций вызывает отмену всего выполняемого выражения и производит откат к предыдущему состоянию таблицы, сохраняя, таким образом, целостность и непротиворечивость данных. В данном примере транзакция работает с одним SQL-выражением. В случае если выражений несколько, то откатывается результат работы всех выражений составляющих единую транзакцию.
Чтобы транзакциями можно было пользоваться, в системе должен быть включен режим регистрации транзакций. После этого система сохраняет информацию о предыдущих состояниях объектов в системе в так называемых журналах транзакций. Журналы транзакций - это специальные файлы, управляемые сервером СУБД, в которых записываются все изменения произошедшие с момента начала транзакций для всех транзакций в системе.
Если происходит явное сохранение изменений в системе (по команде COMMIT) или неявное сохранение изменений (по завершению группы SQL-выражений, формирующих транзакцию или по завершению сеанса пользователя), то все изменения произошедшие с момента начала транзакции вносятся в систему, и информация о данной транзакции удаляется из журнала.
Для облегчения управления системой в режиме регистрации транзакций существует возможность задания так называемых промежуточных точек сохранения. Промежуточная точка сохранения по команде SAVEPOINT явно помечает состояние системы и предоставляет возможность восстановления состояния БД на момент ее сохранения по команде ROLLBACK. В данном случае ROLLBACK откатывает систему к указанной точке. Обычно промежуточных точек сохранения для одного пользователя может быть несколько.
В случае если транзакция по каким-то причинам не может быть завершена, то происходит неявный откат. Его причиной, могут быть, например, ошибка при выполнении одного из SQL-выражений, составляющих транзакцию, или обрыв связи с инициатором транзакции. При этом по информации из журнала восстанавливается предыдущее состояние объектов, которые пыталась модифицировать текущая транзакция, после чего информация о транзакции удаляется из журнала. Откат может быть и явным - по команде ROLLBACK.
Данная схема справедлива для Oracle, где транзакция начинается с выполнением первого оператора, прочие сервера могут работать по-другому. Например в Informix DS, транзакция начинается явно, при помощи команды BEGIN WORK.
В SQL-бочке меда есть своя ложка дегтя. Для всех SQL-серверов использующих журнальный режим регистрации транзакций существует проблема, так называемых "длинных" транзакций. Это транзакции, которые затрагивают очень большой объем данных (сопоставимый с количеством свободного места на дисках) и в этом случае журналы регистрации транзакций могут переполниться. Если их рост ничем неограничен, то они могут израсходовать у ОС всю доступную дисковую память, что не есть хорошо, т.к. операционная система и сервер СУБД в этом случае остаются в непредсказуемом состоянии. Если их рост ограничен, то при переполнении журналов СУБД выдает соответствующую ошибку и операция откатывается. Чтобы избежать таких ситуаций программист должен разделить длинную транзакцию на короткие транзакции.
Блокировки.
Для того чтобы пользователи не искажали взаимно используемые данные, сервер СУБД, при многопользовательской работе, использует механизм блокировок. Блокировки по аналогии с базами данных на основе файлов могут быть как разделяемые, так и исключительные. Блокировки могут устанавливаться как на таблицу целиком, так и на строку в таблице. Аналогично в xBase-технологиях: блокировки могут устанавливаться как на xBase-файл, так и на запись в xBase-файле.
Блокировки связаны с транзакциями. Если выполняется отмена транзакции, то снимаются все связанные с этой транзакцией блокировки.
Многие блокировки выполняются неявно для пользователя, они выставляются, например, операторами UPDATE, INSERT. Существуют явные операторы задания блокировок, например, LOCK TABLE или операторы, имеющие клаузы блокировки, например SELECT : FOR UPDATE. Соответственно есть операторы и для снятия блокировок.
Многие SQL-серверы имеют специальные способы обнаружения и предотвращения взаимных блокировок (deadlocks), которые могут занимать ресурсы СУБД на неопределенное время.
Способы, которыми обеспечиваются блокировки, зависят от реализации сервера, и описываются в его документации. Виды блокировок также зависят от используемого сервера. В Informix существуют, т.н. promotional locks, это означает, что если клиентский процесс не может блокировать в исключительном режиме ресурс, то такая блокировка ставится в очередь и ей предоставляется ресурс после снятия текущей исключительной блокировки другого процесса. Oracle7 так не делает, если он не может установить исключительную блокировку в течение указанного сервером времени, то клиент извещается об ошибке.
35. Безопасность данных и защита от несанкционированного доступа: способы организации. Категории пользователей базы данных. Администратор базы данных.
Несанкционированный доступ - это противоправное преднамеренное овладение конфиденциальной информацией лицом, не имеющим права доступа к охраняемым секретам. Несанкционированный доступ к источникам конфиденциальной информации реализуется различными способами: от инициативного сотрудничества, выражающегося в активном стремлении "продать" секреты, до использования различных средств проникновения к коммерческим секретам. Для реализации этих действий злоумышленнику приходится часто проникать на объект или создавать вблизи него специальные посты контроля и наблюдения - стационарных или в подвижном варианте, оборудованных самыми современными техническими средствами. Если исходить из комплексного подхода к обеспечению информационной безопасности, то такое деление ориентирует на защиту информации как от разглашения, так и от утечки по техническим каналам и от несанкционированного доступа к ней со стороны конкурентов и злоумышленников. Такой подход к классификации действий, способствующих неправомерному овладению конфиденциальной информацией, показывает многогранность угроз и многоаспектность защитных мероприятий, необходимых для обеспечения комплексной информационной безопасности.
Нередко считается, что надежная защита информации осуществляется посредством системы паролей и разграничения прав доступа к данным. Системы разграничения доступа отвечают за вход в информационную систему только тех пользователей, которые имеют доступ к информации. Каждому пользователю, имеющему свой пароль, в системе назначаются определенные полномочия, в соответствии с которыми он может, например, иметь доступ только на чтение информации без права ее модификации, на чтение - запись и т.д. Однако общеизвестно, что пароль можно подсмотреть, похитить, подобрать. Кроме того, пароли, являясь первым шагом на пути к безопасности, используются лишь операционной системой или другими служебными программами, а данные хранятся на дисках в незащищенном виде. Как правило, эффективная технология защиты данных основывается на криптографии. Это означает, что данные должны содержаться в зашифрованном виде, причем ключ шифрования определенным образом должен храниться в электронном ключе, а не на самом компьютере. Это необходимо для того, чтобы ключ, а следовательно и конфиденциальная информация, не был доступен лицу, случайно или умышленно получившему несанкционированный доступ к компьютеру. Для организации легального доступа пользователя к данным в этом случае необходимо наличие электронного ключа. Система защиты должна обеспечить возможность дешифрования данных при их чтении из файла и их шифрования при записи.
Итак, второй шаг в обеспечении безопасного хранения данных - шифрование ценной информации. Однако часто конфиденциальная информация постоянно необходима в повседневной работе. При этом если процесс шифрования медленный и связан с большими сложностями (пользователю необходимо предпринимать множество дополнительных действий, вызывать и закрывать специальные программы), он, скорее всего, просто не будет использоваться. Следовательно, применяемые криптографические методы должны позволять осуществлять шифрование "на лету" ("прозрачное" шифрование). В этом случае данные зашифровываются при записи на диск и расшифровываются при считывании. Участие пользователя в этом процессе сводится к следующему: вызывая информацию на экран, он получает ее уже в расшифрованном виде и работает с ней как с обычными, незашифрованными данными.
По используемому алгоритму шифрования различают системы, использующие какой-либо известный алгоритм шифрования, и системы, использующие алгоритм шифрования собственной разработки.
Очевидно, при выборе системы для защиты данных необходимо отдать предпочтение системе, использующей известный алгоритм шифрования. Это связано с тем, что перед тем, как получить всеобщее признание, криптографический алгоритм проходит период тщательного анализа со стороны независимых экспертных групп. В ходе такого анализа устанавливаются и предаются огласке все слабые стороны алгоритма, возможности атак на данный алгоритм и т.п. Криптографический же алгоритм собственной разработки такому анализу не подвергается, следовательно, необходимой защиты не гарантирует.
Распространено мнение, что физический доступ посторонних к жестким дискам серверов, содержащим конфиденциальные данные, исключается организационными мероприятиями. На самом деле известны примеры, когда, несмотря на все меры предосторожности, сотрудники компании под давлением были вынуждены назвать злоумышленникам пароли или же особо ценная информация просто похищалась путем изъятия жесткого диска. Дело в том, что прочитать секретную информацию можно в случае, если данные хранятся на сервере в открытом виде или же если сервер изъять и поместить его на другой компьютер. Становится очевидным, что третий шаг для обеспечения безопасности данных - защита информации, хранящейся на жестком диске, на случай его изъятия.
Таким образом, для действительно надежной защиты информации следует использовать программно - аппаратные комплексы, основанные на системах с использованием средств шифрования. Такой комплекс, обеспечивающий защиту информации на сервере, разработан компанией Aladdin Software Security R.D. Он прост в установке и использовании. Система Secret Disk Server (старое название - SecureNT) создает на сервере защищенные ("секретные") логические диски и обеспечивает не только непосредственную защиту данных, но и мгновенное уничтожение информации в случае угрозы. При использовании Secret Disk Server обычные пользователи могут даже не знать об установке системы, а программы и операционная система эксплуатируются в обычном режиме.
Работа с защищенными дисками предусматривает двойную идентификацию пользователя: кроме пароля необходимо использовать электронный ключ (смарт - карту). На смарт - карте содержится ключ шифрования, без которого доступ к защищенным областям сервера закрыт. Ключ создается самим пользователем - при генерации используется последовательность случайных чисел, формируемая по траектории движения мыши и временным характеристикам нажатия произвольных клавиш (случайная генерация). Таким образом, ключ уникален, и подмена смарт - карты ничего не даст. Кроме того, он хранится в памяти смарт - карты, а не компьютера, что повышает уровень безопасности. В отличие от обычной магнитной смарт - карта содержит микропроцессор и контактные площадки для подачи питания и обмена информацией со считывателем (смарт - карт - ридером) и имеет очень высокую степень защищенности.
Пользователей СУБД можно разбить на три категории:
· администратор сервера баз данных. Он ведает установкой, конфигурированием сервера, регистрацией пользователей, групп, ролей и т.п. Администратор сервера имеет имя ingres. Прямо или косвенно он обладает всеми привилегиями, которые имеют или могут иметь другие пользователи.
· администраторы базы данных. К этой категории относится любой пользователь, создавший базу данных, и, следовательно, являющийся ее владельцем. Он может предоставлять другим пользователям доступ к базе и к содержащимся в ней объектам. Администратор базы отвечает за ее сохранение и восстановление. В принципе в организации может быть много администраторов баз данных. Чтобы пользователь мог создать базу и стать ее администратором, он должен получить (вероятно, от администратора сервера) привилегию creatdb.
· прочие (конечные) пользователи. Они оперируют данными, хранящимися в базах, в рамках выделенных им привилегий
36 Архитектура "клиент-сервер". SQL Назначение, функции и свойства языка. Группы предложений. Хранимые процедуры. Триггеры.
Архитектура клиент-сервер - архитектура распределенной вычислительной системы, в которой приложение делится на клиентский и серверный процессы.
В зависимости от того, как распределены логические компоненты приложения между клиентами и серверами, различают четыре модели архитектуры клиент-сервер:
- модель "файл-сервер" - архитектура вычислительной сети типа "клиент-сервер", в которой сервер предоставляет в коллективное пользование дисковое пространство, систему обслуживания файлов и периферийные устройства;
- модель "сервер базы данных" - архитектура вычислительной сети типа "клиент-сервер", в которой пользовательский интерфейс и логика приложений сосредоточены на машине-клиенте, а информационные функции (функции СУБД) - на сервере. Обычно клиентский процесс посылает запрос серверу на языке SQL.;
- модель "сервер транзакций" - архитектура вычислительной сети типа "клиент-сервер", в которой сервер выполняет специальные, реализующие наиболее часто используемые алгоритмы обработки (модули; удаленные процедуры). Алгоритмы получают параметры от клиентского процесса и ему же возвращают результат;
- модель "сервер приложений" - архитектура вычислительной сети типа "клиент-сервер", в которой функциональная логика размещена на сервере, а на машине-клиенте выполняется только компонент представления.
Технология клиент-сервер подразумевает, что помимо хранения базы данных центральный специализированный компьютер (сервер базы данных - server) должен обеспечивать выполнение основного объема обработки данных. При технологии клиент-сервер запрос на выполнение операции с данными (например, обычная выборка), выдаваемый клиентом (рабочей станцией), порождает на сервере поиск и извлечение данных. Пользователи, которые отправляют запросы на этот сервер, называются клиентами (client). Извлеченные данные (но не файлы) транспортируются по сети от сервера к клиенту.
Системы, использующие технологию клиент-сервер, разделяется на две части: клиентская часть (front-end) обеспечивает графический интерфейс и находится на компьютере пользователя; серверная часть (back-end) обеспечивает управление данными, разделение информации, администрирование и безопасность и находится на специально выделенных для этого компьютерах.
Основное преимущество модели «клиент-сервер » состоит в том, что она позволяет нескольким пользователям одновременно получить доступ к данным приложения, при этом изменения, внесенные с одного компьютера, становятся доступными для всех компьютеров , подключенных к серверу. Однако при увеличении числа клиентов сервер быстро оказывается «завален » запросами клиентов. Также, поскольку основная часть логики обработки привязана к монолитному набору приложений, изменения бизнес-правил ведут к дорогим и продолжительным изменениям исходных программ.
Примерами СУБД технологии клиент-сервер являются Microsoft SQL Server, Oracle, IBM DB2, Sybase и др. Спецификой архитектуры клиент -сервер является использование специального языка структурированных запросов (Structured Query Language, SQL), обеспечивающего пользователя простым и эффективным инструментом доступа к данным.
Язык структурированных запросов SQL является средством работы с реляционными базами данных.
SQL может использоваться как интерактивный язык, непосредственно работающий в базе данных и немедленно выводящий результаты выполнения команд, и как вложенный язык, команды которого могут быть вставлены в программы, написанные на языке разработки прикладных программ, например, Паскаль.
В языке SQL, кроме операторов, имеется несколько функций:
Статистические функции — функции, предназначенные для статистической обработки данных. Наиболее часто используемые: AVG ( )- Получение среднего значения; COUNT ( )- Определяет количество значений; COUNT ( * )- Определяет количество ненулевых значений; MAX ( )- Максимальное значение; MIN( )- Минимальное значение; SUM ( )- Сумма значений.
Строковые функции — функции, предназначенные для работы со строковыми значениями. Наиболее часто используемые: САSТ ( AS )- Приводит выражение к типу ; LOWER ( S )- Преобразует символы строки S в символы нижнего регистра; SUBSTRING (S FROM N1 TO N2)- Выделяет из строки S подстроку, начиная с символа N1 и заканчивая символом N2; TRIM(S)- Удаляет в начале и конце строки S лишние пробелы; UPPER (S)- Преобразует символы строки S в символы верхнего регистра.
Хранимые процедуры представляют собой группы связанных между собой операторов SQL, применение которых делает работу программиста более легкой и гибкой, поскольку выполнить хранимую процедуру часто оказывается гораздо проще, чем последовательность отдельных операторов SQL. Хранимые процедуры представляют собой набор команд, состоящий из одного или нескольких операторов SQL или функций и сохраняемый в базе данных в откомпилированном виде.
Хранение процедур в том же месте, где они исполняются, обеспечивает уменьшение объема передаваемых по сети данных и повышает общую производительность системы. Применение хранимых процедур упрощает сопровождение программных комплексов и внесение изменений в них. Обычно все ограничения целостности в виде правил и алгоритмов обработки данных реализуются на сервере баз данных и доступны конечному приложению в виде набора хранимых процедур, которые и представляют интерфейс обработки данных. Для обеспечения целостности данных, а также в целях безопасности, приложение обычно не получает прямого доступа к данным – вся работа с ними ведется путем вызова тех или иных хранимых процедур.
Хранимые процедуры существуют независимо от таблиц или каких-либо других объектов баз данных. Они вызываются клиентской программой, другой хранимой процедурой или триггером. Разработчик может управлять правами доступа к хранимой процедуре, разрешая или запрещая ее выполнение. Изменять код хранимой процедуры разрешается только ее владельцу или члену фиксированной роли базы данных. При необходимости можно передать права владения ею от одного пользователя к другому.
В SQL Server имеется несколько типов хранимых процедур.
· Системные хранимые процедуры предназначены для выполнения различных административных действий. Практически все действия по администрированию сервера выполняются с их помощью. Можно сказать, что системные хранимые процедуры являются интерфейсом, обеспечивающим работу с системными таблицами, которая, в конечном счете, сводится к изменению, добавлению, удалению и выборке данных из системных таблиц как пользовательских, так и системных баз данных. Системные хранимые процедуры имеют префикс sp_, хранятся в системной базе данных и могут быть вызваны в контексте любой другой базы данных.
· Пользовательские хранимые процедуры реализуют те или иные действия. Хранимые процедуры – полноценный объект базы данных. Вследствие этого каждая хранимая процедура располагается в конкретной базе данных, где и выполняется.
· Временные хранимые процедуры существуют лишь некоторое время, после чего автоматически уничтожаются сервером. Они делятся на локальные и глобальные. Локальные временные хранимые процедуры могут быть вызваны только из того соединения, в котором созданы. При создании такой процедуры ей необходимо дать имя, начинающееся с одного символа #. Как и все временные объекты, хранимые процедуры этого типа автоматически удаляются при отключении пользователя, перезапуске или остановке сервера. Глобальные временные хранимые процедуры доступны для любых соединений сервера, на котором имеется такая же процедура. Для ее определения достаточно дать ей имя, начинающееся с символов ##. Удаляются эти процедуры при перезапуске или остановке сервера, а также при закрытии соединения, в контексте которого они были созданы.
Триггер – это откомпилированная SQL-процедура, исполнение которой обусловлено наступлением определенных событий внутри реляционной базы данных. Применение триггеров большей частью весьма удобно для пользователей базы данных. И все же их использование часто связано с дополнительными затратами ресурсов на операции ввода/вывода. В том случае, когда тех же результатов (с гораздо меньшими непроизводительными затратами ресурсов) можно добиться с помощью хранимых процедур или прикладных программ, применение триггеров нецелесообразно.
Триггеры – особый инструмент SQL-сервера, используемый для поддержания целостности данных в базе данных. С помощью ограничений целостности, правил и значений по умолчанию не всегда можно добиться нужного уровня функциональности. Часто требуется реализовать сложные алгоритмы проверки данных, гарантирующие их достоверность и реальность. Кроме того, иногда необходимо отслеживать изменения значений таблицы, чтобы нужным образом изменить связанные данные. Триггеры можно рассматривать как своего рода фильтры, вступающие в действие после выполнения всех операций в соответствии с правилами, стандартными значениями и т.д.
Триггер представляет собой специальный тип хранимых процедур, запускаемых сервером автоматически при попытке изменения данных в таблицах, с которыми триггеры связаны. Каждый триггер привязывается к конкретной таблице. Все производимые им модификации данных рассматриваются как одна транзакция. В случае обнаружения ошибки или нарушения целостности данных происходит откат этой транзакции. Тем самым внесение изменений запрещается. Отменяются также все изменения, уже сделанные триггером.
Создает триггер только владелец базы данных. Это ограничение позволяет избежать случайного изменения структуры таблиц, способов связи с ними других объектов и т.п.
Триггер представляет собой весьма полезное и в то же время опасное средство. Так, при неправильной логике его работы можно легко уничтожить целую базу данных, поэтому триггеры необходимо очень тщательно отлаживать.
В отличие от обычной подпрограммы, триггер выполняется неявно в каждом случае возникновения триггерного события, к тому же он не имеет аргументов. Приведение его в действие иногда называют запуском триггера. С помощью триггеров достигаются следующие цели:
· проверка корректности введенных данных и выполнение сложных ограничений целостности данных, которые трудно, если вообще возможно, поддерживать с помощью ограничений целостности, установленных для таблицы;
· выдача предупреждений, напоминающих о необходимости выполнения некоторых действий при обновлении таблицы, реализованном определенным образом;
· накопление аудиторской информации посредством фиксации сведений о внесенных изменениях и тех лицах, которые их выполнили;
· поддержка репликации.
Основной формат команды CREATE TRIGGER показан ниже:
::=
CREATE TRIGGER имя_триггера
BEFORE | AFTER
ON
[REFERENCING
]
[FOR EACH { ROW | STATEMENT}]
[WHEN(условие_триггера)]
триггерные события состоят из вставки, удаления и обновления строк в таблице. В последнем случае для триггерного события можно указать конкретные имена столбцов таблицы. Время запуска триггера определяется с помощью ключевых слов BEFORE (триггер запускается до выполнения связанных с ним событий) или AFTER (после их выполнения).
Выполняемые триггером действия задаются для каждой строки (FOR EACH ROW), охваченной данным событием, или только один раз для каждого события (FOR EACH STATEMENT).
Обозначение относится к таким компонентам, как старая или новая строка (OLD / NEW) либо старая или новая таблица (OLD TABLE / NEW TABLE). Ясно, что старые значения не применимы для событий вставки, а новые – для событий удаления.
37 Состав и характеристика процессов жизненного цикла программного обеспечения (основных, вспомогательных и организационных).
ЖЦ ПО определяется как период времени, который начинается с момента принятия решения о необходимости создания ПО и заканчивается в момент его полного изъятия из эксплуатации.
Процессы жизненного жикла ПО делятся на основные, вспомогательные и организационные.
Основные процессы жизненного цикла ПО состоят из пяти процессов, которые реализуются заказчиком, поставщиком, разработчиком или какой-то другой стороной, вовлеченной в эту деятельность:
· процесс заказа: определяет работы заказчика, то есть организации, которая приобретает систему;
· процесс поставки: определяет работы поставщика, то есть организации, которая поставляет систему или её часть;
· процесс разработки: определяет работы разработчика, то есть организации, которая проектирует и разрабатывает систему или её часть;
· процесс эксплуатации: определяет работы организации, которая обеспечивает эксплуатационное обслуживание системы в заданных условиях в интересах пользователей;
· процесс сопровождения: определяет работы персонала, то есть организации, которая предоставляет услуги по сопровождению технических и программных средств, состоящих в контролируемом изменении с целью сохранения их исходного состояния и функциональных возможностей.
Вспомогательный процесс является целенаправленной составной частью другого процесса, обеспечивающей его успешную реализацию и качество выполнения. Вспомогательный процесс, при необходимости, инициируется и используется другим процессом. Вспомогательными процессами являются:
· процесс документирования: определяет работы по описанию сформированных требований, полученных результатов и т.п.;
· процесс управления конфигурацией: определяет работы по управлению конфигурацией технических и программных средств;
· процесс обеспечения качества: определяет работы по объективному обеспечению того, чтобы продукты проектирования и процессы соответствовали установленным для них требованиям и реализовывались в рамках утвержденных планов;
· процесс верификации: определяет работы (заказчика, поставщика или независимой стороны) по верификации разработанных продуктов и процессов, то есть их соответствие предъявляемым требованиям, по мере реализации этапов проекта;
· процесс аттестации: определяет работы (заказчика, поставщика или независимой стороны) по окончательному утверждению соответствия продуктов проектирования, предъявляемым к ним требованиям;
· процесс совместного анализа: определяет работы по оценке состояния и результатов какой-либо деятельности. Данный процесс может использоваться двумя любыми сторонами, когда одна из сторон проверяет другую;
· процесс аудита: определяет работы по определению соответствия требованиям, планам и договору. Данный процесс может использоваться, когда одна из сторон контролирует продукты и работы другой стороны;
· процесс решения проблемы: определяет работы по анализу и устранению проблем (включая несоответствия), которые были обнаружены во время разработки, эксплуатации или других процессов независимо от их характера и источника.
Организационные процессы служат для создания и реализации в организации основной структуры, охватывающей взаимосвязанные процессы жизненного цикла и соответствующий персонал, а также для постоянного совершенствования данной структуры и процессов. Организационными процессами являются:
· процесс управления: определяет основные работы по управлению, включая управление проектом, при реализации процессов жизненного цикла;
· процесс создания инфраструктуры: определяет основные работы по созданию инфраструктуры процессов жизненного цикла;
· процесс усовершенствования: определяет основные работы, которые организация (заказчика, поставщика, разработчика, персонала сопровождения или администратора другого процесса) выполняет при создании, оценке, контроле и усовершенствовании выбранных процессов жизненного цикла;
· процесс обучения: определяет работы по соответствующему обучению персонала заказчика, поставщика, разработчика или кого-либо другого.
38. Определение и содержание процесса разработки программного обеспечения экономической информационной системы.
Экономическая информационная система (ЭИС) представляет собой совокупность организационных технических программных и информационных средств объединенных в единую систему с целью сбора, хранения обработки и выдачи информации для выполнения функции управления.
Под проектированием автоматизированных экономических информационных систем понимается процесс разработки технической документации, связанный с организацией системы получения и преобразования исходной информации в результатную, т.е. с организацией автоматизированной информационной технологии.
Правильная декомпозиция является главным способом преодоления сложности разработки больших систем ПО. Понятие «правильная» по отношению к декомпозиции означает следующее:
• количество связей между отдельными подсистемами должно быть минимальным (принцип «слабой связанности» — Low Coupling);
• связность отдельных частей внутри каждой подсистемы должна быть максимальной (принцип «сильного сцепления» - High Cohesion).
Структура системы должна быть такой, чтобы все взаимодействия между ее подсистемами укладывались в ограниченные, стандартные рамки, т.е.:
• каждая подсистема должна инкапсулировать свое содержимое (скрывать его от других подсистем);
• каждая подсистема должна иметь четко определенный интерфейс сдругими подсистемами.
Инкапсуляция (принцип «черного ящика») позволяет рассматривать структуру каждой подсистемы независимо от других подсистем.
Интерфейсы позволяют строить систему более высокого уровня, рассматривая каждую подсистему как единое целое и игнорируя ее внутреннее устройство.
Существуют два основных подхода к декомпозиции систем.
Первый подход называют функционально-модульным, он является частью более общего структурного подхода. В его основу положен принцип функциональной декомпозиции, при которой структура системы описывается в терминах иерархии ее функций и передачи информации между отдельными функциональными элементами. Второй, объектно-ориентированный подход, использует объектную декомпозицию. При этом структура системы описывается в терминах объектов и связей между ними, а поведение системы описывается в терминах обмена сообщениями между объектами.
Под моделью ПО в общем случае понимается формализованное описание системы ПО на определенном уровне абстракции. Каждая модель определяет конкретный аспект системы, использует набор диаграмм и документов заданного формата, а также отражает точку зрения и является объектом деятельности различных людей с конкретными интересами, ролями или задачами.
Под термином «моделирование» понимается процесс создания формализованного описания системы в виде совокупности моделей. По мнению специалистов в области проектирования ПО, моделирование является центральным звеном всей деятельности по созданию систем ПО. Модели строятся для того, чтобы понять и осмыслить структуру и поведение будущей системы, облегчить управление процессом ее создания и уменьшить возможный риск, а также документировать принимаемые проектные решения.
Визуальное моделирование ~ это способ восприятия проблем с помощью зримых абстракций, воспроизводящих понятия и объекты реального мира. Модели служат полезным инструментом анализа проблем, обмена информацией между всеми заинтересованными сторонами (пользователями, специалистами в предметной области, аналитиками, проектировщиками и т.д.), проектирования ПО, а также подготовки документации. Моделирование способствует более полному усвоению требований, улучшению качества системы и повышению степени ее управляемости. С помощью модели можно упростить проблему, отбросив несущественные детали и сосредоточив внимание на главном.
Графические (визуальные) модели представляют собой средства для визуализации, описания, проектирования и документирования архитектуры системы. Под архитектурой понимается набор основных правил, определяющих организацию системы:
• совокупность структурных элементов системы и связей между ними;
• поведение элементов системы в процессе их взаимодействия;
• иерархию подсистем, объединяющих структурные элементы;
• архитектурный стиль (используемые методы и средства описания архитектуры, а также архитектурные образцы).
Архитектура является многомерной, поскольку различные специалисты работают с различными ее аспектами. Например, при строительстве здания используются разные типы чертежей, представляющие различные аспекты архитектуры:
• планы этажей;
• вертикальные проекции;
• планы монтажа кабельной проводки;
• чертежи водопроводов, системы центрального отопления и вентиляции;
• вид здания на фоне местности (эскизы).
Архитектура ПО также предусматривает различные представления, служащие разным целям:
• представлению функциональных возможностей системы;
• отображению логической организации системы;
• описанию физической структуры программных компонентов в среде реализации;
• отображению структуры потоков управления и аспектов параллельной работы;
• описанию физического размещения программных компонентов на базовой платформе.
Архитектурное представление — это упрощенное описание (абстракция) системы с конкретной точки зрения, охватывающее определенный круг интересов и опускающее объекты, несущественные с данной точки зрения. Архитектурные представления концентрируют внимание только на элементах, значимых с точки зрения архитектуры.
Архитектурные представления подобны сечениям различных моделей, выделяющим только важные, значимые элементы моделей. Разработка модели архитектуры системы ПО промышленного характера на стадии, предшествующей ее реализации или обновлению, в такой же мере необходима, как и наличие проекта для строительства большого здания.
Язык моделирования включает:
• элементы модели — фундаментальные концепции моделирования и их семантику;
• нотацию (систему обозначений) — визуальное представление элементов моделирования;
• руководство по использованию — правила применения элементов в рамках построения тех или иных типов моделей ПО.
Очевидно, что конечная цель разработки ПО - это не моделирование, а получение работающих приложений. Диаграммы в конечном счете — это всего лишь наглядные изображения.
В процессе создания ПО, автоматизирующего деятельность некоторой организации, используются следующие виды моделей:
* модели деятельности организации (или модели бизнес-процессов): модели «AS-IS» («как есть»), отражающие существующее на момент обследования положение дел в организации и позволяющие понять, каким образом функционирует данная организация, а также выявить узкие места и сформулировать предложения по улучшению ситуации;
* модели «AS-TO-BE» («как должно быть»), отражающие представление о новых процессах и технологиях работы организации.
Переход от модели «AS-IS» к модели «AS-TO-BE» может выполняться двумя способами: 1) совершенствованием существующих технологий на основе оценки их эффективности; 2) радикальным изменением технологий и перепроектированием (реинжинирингом) бизнес-процессов.
* модели проектируемого ПО, которые строятся на основе модели «AS-TO-BE», уточняются и детализируются до необходимого уровня.
Состав моделей, используемых в каждом конкретном проекте, и степень их детальности в общем случае (как для структурного, так и для объектно-ориентированного подхода) зависят от следующих факторов:
• сложности проектируемой системы;
• необходимой полноты ее описания;
• знаний и навыков участников проекта;
• времени, отведенного на проектирование.
39 Понятие, разновидности и характеристика моделей жизненного цикла программного обеспечения.
ЖЦ ПО определяется как период времени, который начинается с момента принятия решения о необходимости создания ПО и заканчивается в момент его полного изъятия из эксплуатации.
Выделяют этапы:
-1- возникновение и исследование идеи;
-2- анализ требований и проектирование;
-3- программирование;
-4- тестирование и отладка;
-5- ввод программы в действие;
-6- эксплуатация и сопровождение;
-7- завершение эксплуатации.
Модель жизненного цикла - структура, состоящая из процессов, работ и задач, включающих в себя разработку, эксплуатацию и сопровождение программного продукта, охватывающая жизнь системы от установления требований к ней до прекращения ее использования.
моделях жизненного цикла:
• Каскадная (водопадная) или последовательная
• Итеративная и инкрементальная – эволюционная (гибридная, смешанная)
• Спиральная (spiral) или модель Боэма
Каскадная модель. Данная модель предполагает строго последовательное (во времени) и однократное выполнение всех фаз проекта с жестким (детальным) предварительным планированием в контексте предопределенных или однажды и целиком определенных требований к программной системе.
В каскадной модели переход от одной фазы проекта к другой предполагает полную корректность результата (выхода) предыдущей фазы. Однако, например, неточность какого-либо требования или некорректная его интерпретация, в результате, приводит к тому, что приходится “откатываться” к ранней фазе проекта и требуемая переработка не просто выбивает проектную команду из графика, но приводит часто к качественному росту затрат и, не исключено, к прекращению проекта в той форме, в которой он изначально задумывался. Кроме того, эта модель не способна гарантировать необходимую скорость отклика и внесение соответствующих изменений в ответ на быстро меняющиеся потребности пользователей, для которых программная система является одним из инструментов исполнения бизнес-функций.
Итеративная модель предполагает разбиение жизненного цикла проекта на последовательность итераций, каждая из которых напоминает “мини-проект”, включая все фазы жизненного цикла в применении к созданию меньших фрагментов функциональности, по сравнению с проектом, в целом. Цель каждой итерации – получение работающей версии программной системы, включающей функциональность, определенную интегрированным содержанием всех предыдущих и текущей итерации. Результата финальной итерации содержит всю требуемую функциональность продукта. Таким образом, с завершением каждой итерации, продукт развивается инкрементально.
С точки зрения структуры жизненного цикла такую модель называют итеративной (iterative). С точки зрения развития продукта – инкрементальной (incremental). Опыт индустрии показывает, что невозможно рассматривать каждый из этих взглядов изолировано. Чаще всего такую смешанную эволюционную модель называют просто итеративной (говоря о процессе) и/или инкрементальной (говоря о наращивании функциональности продукта).
Эволюционная модель подразумевает не только сборку работающей (с точки зрения результатов тестирования) версии системы, но и её развертывание в реальных операционных условиях с анализом откликов пользователей для определения содержания и планирования следующей итерации. “Чистая” инкрементальная модель не предполагает развертывания промежуточных сборок (релизов) системы и все итерации проводятся по заранее определенному плану наращивания функциональности, а пользователи (заказчик) получает только результат финальной итерации как полную версию системы.
Наиболее известным и распространенным вариантом эволюционной модели является спиральная модель.
Спиральная модель была впервые сформулирована Барри Боэмом в 1988 году. Отличительной особенностью этой модели является специальное внимание рискам, влияющим на организацию жизненного цикла.
Наиболее распространенные риски:
1. Дефицит специалистов.
2. Нереалистичные сроки и бюджет.
3. Реализация несоответствующей функциональности.
4. Разработка неправильного пользовательского интерфейса.
5. “Золотая сервировка”, перфекционизм, ненужная оптимизация и оттачивание деталей.
6. Непрекращающийся поток изменений.
7. Нехватка информации о внешних компонентах, определяющих окружение системы или вовлеченных в интеграцию.
8. Недостатки в работах, выполняемых внешними (по отношению к проекту) ресурсами.
9. Недостаточная производительность получаемой системы.
10. “Разрыв” в квалификации специалистов разных областей знаний.
Большая часть этих рисков связана с организационными и процессными аспектами взаимодействия специалистов в проектной команде.
Спиральная модель обладает рядом преимуществ:
Модель уделяет специальное внимание раннему анализу возможностей повторного использования. Это обеспечивается, в первую очередь, в процессе идентификации и оценки альтернатив.
Модель предполагает возможность эволюции жизненного цикла, развитие и изменение программного продукта. Главные источники изменений заключены в целях, для достижения которых создается продукт. Подход, предусматривающий скрытие информации о деталях на определенном уровне дизайна, позволяет рассматривать различные архитектурные альтернативы так, как если бы мы говорили о единственном проектном решении, что уменьшает риск невозможности согласования функционала продукта и изменяющихся целей (требований).
Модель предоставляет механизмы достижения необходимых параметров качества как составную часть процесса разработки программного продукта. Эти механизмы строятся на основе идентификации всех типов целей (требований) и ограничений на всех “циклах” спирали разработки. Например, ограничения по безопасности могут рассматриваться как риски на этапе специфицирования требований.
Модель уделяет специальное внимание предотвращению ошибок и отбрасыванию ненужных, необоснованных или неудовлетворительных альтернатив на ранних этапах проекта. Это достигается явно определенными работами по анализу рисков, проверке различных характеристик создаваемого продукта (включая архитектуру, соответствие требованиям и т.п.) и подтверждение возможности двигаться дальше на каждом “цикле” процесса разработки.
Модель позволяет контролировать источники проектных работ и соответствующих затрат. По-сути речь идет об ответе на вопрос – как много усилий необходимо затратить на анализ требований, планирование, конфигурационное управление, обеспечение качества, тестирование, формальную верификацию и т.д. Модель, ориентированная на риски, позволяет в контексте конкретного проекта решить задачу приложения адекватного уровня усилий, определяемого уровнем рисков, связанных с недостаточным выполнением тех или иных работ.
Модель не проводит различий между разработкой нового продукта и расширением (или сопровождением) существующего. Этот аспект позволяет избежать часто встречающегося отношения к поддержке и сопровождению как ко “второсортной” деятельности. Такой подход предупреждает большого количество проблем, возникающих в результате одинакового уделения внимания как обычному сопровождению, так и критичным вопросам, связанным с расширением функциональности продукта, всегда ассоциированным с повышенными рисками.
Модель позволяет решать интегрированный задачи системной разработки, охватывающей и программную и аппаратную составляющие создаваемого продукта. Подход, основанный на управлении рисками и возможности своевременного отбрасывания непривлекательных альтернатив (на ранних стадиях проекта) сокращает расходы и одинаково применим и к аппаратной части, и к программному обеспечению.”
40. Понятие и характеристика RAD-технологии проектирования программного обеспечения экономических информационных систем.
Подход RAD (Rapid Application Developme) (Rapid (быстрая) Application (приложений) Development (разработка)) предусматривает наличие трех составляющих:
• небольших групп разработчиков (от 3 до 7 человек), выполняющих работы по проектированию отдельных подсистем ПО. Это обусловлено требованием максимальной управляемости коллектива;
• короткого, но тщательно проработанного производственного графика (до трех месяцев);
• повторяющегося цикла, при котором разработчики по мере того, как приложение начинает обретать форму, запрашивают и реализуют в продукте требования, полученные в результате взаимодействия с заказчиком.
Основные принципы подхода RAD:
• разработка приложений итерациями;
• необязательность полного завершения работ на каждой из стадий жизненного цикла ПО;
• обязательность вовлечения пользователей в процесс разработки;
• применение средств управления конфигурацией, облегчающих внесение изменений в проект и сопровождение готовой системы;
• использование прототипирования, позволяющее полнее выяснить и удовлетворить потребности пользователей;
• тестирование и развитие проекта, осуществляемые одновременно с разработкой;
• ведение разработки немногочисленной хорошо управляемой командой профессионалов;
• грамотное руководство разработкой системы, четкое планирование и контроль выполнения работ.
Команда разработчиков должна представлять собой группу профессионалов, имеющих опыт в проектировании, программировании и тестировании ПО, способных хорошо взаимодействовать с конечными пользователями и трансформировать их предложения в рабочие прототипы.
Жизненный цикл ПО в соответствии с подходом RAD состоит из четырех стадий:
• анализ и планирование требований;
• проектирование;
• реализация;
• внедрение.
RAD наиболее хорошо подходит для относительно небольших проектов, разрабатываемых для конкретного заказчика, и не применим для построения сложных расчетных программ, операционных систем или программ управления сложными объектами в реальном масштабе времени, т.е. программ, содержащих большой объем (сотни тысяч строк) уникального кода, а также систем, от которых зависит безопасность людей (например, управление самолетом или атомной электростанцией).
41. Существующие подходы к проектированию программного обеспечения экономических информационных систем и их общая характеристика.
При проектировании ПО существуют следующие подходы.:
1. Структурный подход;
2. Объектно - ориентированный подход.
Основная идея объектно-ориентированного анализа и проектирования (object-oriented analysis and design) состоит в рассмотрении предметной области и логического решения задачи с точки зрения объектов (понятий и сущностей). В процессе объектно-ориентированного анализа основное внимание уделяется определению и описанию объектов (или понятий) в терминах предметной области. В процессе объектно-ориентированного проектирования определяются логические программные объекты, которые будут реализованы средствами объектно-ориентированного языка программирования. Эти программные объекты включают в себя атрибуты и методы. И, наконец, в процессе конструирования (construction) или объектно-ориентированного программирования (object-oriented programming) обеспечивается реализация разработанных компонентов и классов.
Рассмотрим вкратце некоторые основные принципы объектно-ориентированного анализа и проектирования, в дальнейшем мы дадим более точные определения и более полную расшифровку всех рассмотренных терминов.
С начала производится так называемый анализ требований (requirements analysis) во время которого выделяются основные процессы, происходящие в моделируемой системе и их формулировка в виде прецедентов. Прецедент (precedent)- это текстовое описание процессов, происходящих в предметной области.
Шаг второй. Объектно-ориентированный анализ предметной области (object-oriented domain analysis). Задача этого шага в определении видов деятельности участников процесса и составлении концептуальной модели (conceptual model), которая отражает различные категории элементов предметной области. Причем не только виды деятельности участников, но и все относящиеся к делу понятия.
Шаг третий. Разбираемся, кто, чем занимается. Эта деятельность и называется объектно-ориентированным проектированием (object-oriented design), при котором основное внимание сосредоточено на распределении обязанностей. Распределение обязанностей (responsibility assignment) означает выделение задач и обязанностей различных программных объектов в приложении.
Наиболее важным моментом объектно-ориентированного анализа и проектирования является квалифицированное распределение обязанностей между компонентами программной системы. Дело в том, что единственный вид деятельности, без которого невозможно обойтись. К тому же он оказывает определяющее влияние на робастность, масштабируемость, расширяемость и возможность повторного использования компонентов. Обязанности объектов и их взаимодействия изображаются с использованием диаграмм классов (design class diagram) и диаграмм взаимодействий (collaboration diagram).
Структурный подход.
Сущность структурного подхода к разработке ИС заключается в ее декомпозиции (разбиении) на автоматизируемые функции: система разбивается на функциональные подсистемы, которые в свою очередь делятся на подфункции, подразделяемые на задачи и так далее. Процесс разбиения продолжается вплоть до конкретных процедур. При этом автоматизируемая система сохраняет целостное представление, в котором все составляющие компоненты взаимоувязаны. При разработке системы "снизу-вверх" от отдельных задач ко всей системе целостность теряется, возникают проблемы при информационной стыковке отдельных компонентов.
Все наиболее распространенные методологии структурного подхода [9,11,12,13] базируются на ряде общих принципов [3]. В качестве двух базовых принципов используются следующие:
принцип "разделяй и властвуй" - принцип решения сложных проблем путем их разбиения на множество меньших независимых задач, легких для понимания и решения;
принцип иерархического упорядочивания - принцип организации составных частей проблемы в иерархические древовидные структуры с добавлением новых деталей на каждом уровне.
Выделение двух базовых принципов не означает, что остальные принципы являются второстепенными, поскольку игнорирование любого из них может привести к непредсказуемым последствиям (в том числе и к провалу всего проекта). Основными из этих принципов являются следующие:
принцип абстрагирования - заключается в выделении существенных аспектов системы и отвлечения от несущественных;
принцип формализации - заключается в необходимости строгого методического подхода к решению проблемы;
принцип непротиворечивости - заключается в обоснованности и согласованности элементов;
принцип структурирования данных - заключается в том, что данные должны быть структурированы и иерархически организованы.
В структурном анализе используются в основном две группы средств, иллюстрирующих функции, выполняемые системой и отношения между данными. Каждой группе средств соответствуют определенные виды моделей (диаграмм), наиболее распространенными среди которых являются следующие:
SADT (Structured Analysis and Design Technique) модели и соответствующие функциональные диаграммы (подраздел 2.2);
DFD (Data Flow Diagrams) диаграммы потоков данных (подраздел 2.3);
ERD (Entity-Relationship Diagrams) диаграммы "сущность-связь" (подраздел 2.4).
На стадии проектирования ИС модели расширяются, уточняются и дополняются диаграммами, отражающими структуру программного обеспечения: архитектуру ПО, структурные схемы программ и диаграммы экранных форм.
Перечисленные модели в совокупности дают полное описание ИС независимо от того, является ли она существующей или вновь разрабатываемой. Состав диаграмм в каждом конкретном случае зависит от необходимой полноты описания системы
42 Сущность и характеристика структурного подхода к проектированию программного обеспечения экономических информационных систем.
Сущность структурного подхода к разработке ИС заключается в ее декомпозиции (разбиении) на автоматизируемые функции: система разбивается на функциональные подсистемы, которые в свою очередь делятся на подфункции, подразделяемые на задачи и так далее. Процесс разбиения продолжается вплоть до конкретных процедур. При этом автоматизируемая система сохраняет целостное представление, в котором все составляющие компоненты взаимоувязаны. При разработке системы "снизу-вверх" от отдельных задач ко всей системе целостность теряется, возникают проблемы при информационной стыковке отдельных компонентов.
Все наиболее распространенные методологии структурного подхода [9,11,12,13] базируются на ряде общих принципов [3]. В качестве двух базовых принципов используются следующие:
- принцип "разделяй и властвуй" - принцип решения сложных проблем путем их разбиения на множество меньших независимых задач, легких для понимания и решения;
- принцип иерархического упорядочивания - принцип организации составных частей проблемы в иерархические древовидные структуры с добавлением новых деталей на каждом уровне.
- Выделение двух базовых принципов не означает, что остальные принципы являются второстепенными, поскольку игнорирование любого из них может привести к непредсказуемым последствиям (в том числе и к провалу всего проекта). Основными из этих принципов являются следующие:
- принцип абстрагирования - заключается в выделении существенных аспектов системы и отвлечения от несущественных;
- принцип формализации - заключается в необходимости строгого методического подхода к решению проблемы;
- принцип непротиворечивости - заключается в обоснованности и согласованности элементов;
- принцип структурирования данных - заключается в том, что данные должны быть структурированы и иерархически организованы.
В структурном анализе используются в основном две группы средств, иллюстрирующих функции, выполняемые системой и отношения между данными. Каждой группе средств соответствуют определенные виды моделей (диаграмм), наиболее распространенными среди которых являются следующие:
SADT (Structured Analysis and Design Technique) модели и соответствующие функциональные диаграммы (подраздел 2.2);
DFD (Data Flow Diagrams) диаграммы потоков данных (подраздел 2.3);
ERD (Entity-Relationship Diagrams) диаграммы "сущность-связь" (подраздел 2.4).
На стадии проектирования ИС модели расширяются, уточняются и дополняются диаграммами, отражающими структуру программного обеспечения: архитектуру ПО, структурные схемы программ и диаграммы экранных форм.
Перечисленные модели в совокупности дают полное описание ИС независимо от того, является ли она существующей или вновь разрабатываемой. Состав диаграмм в каждом конкретном случае зависит от необходимой полноты описания системы.
43. Характеристика IDEF0 (SADT)-метода проектирования функциональной структуры программного обеспечения
Метод SADT представляет собой совокупность правил и процедур, предназначенных для построения функциональной модели объекта какой-либо предметной области. Функциональная модель SADT отображает функциональную структуру объекта, т.е. производимые им действия и связи между этими действиями. Метод SADT разработан Дугласом Россом (SoftTech, Inc.) в 1969 г. для моделирования искусственных систем средней сложности. Данный метод успешно использовался в военных, промышленных и коммерческих организациях США для решения широкого круга задач, таких, как долгосрочное и стратегическое планирование, автоматизированное производство и проектирование, разработка программного обеспечения для оборонных систем, управление финансами и материально-техническим снабжением и др. Метод SADT поддерживается Министерством обороны США, которое было инициатором разработки семейства стандартов IDEF (Icam DEFinition), являющегося основной частью программы ICAM (интегрированная компьютеризация производства), проводимой по инициативе ВВС США. Метод SADT реализован в одном стандартов этого семейства - IDEF0, который был утвержден в качестве федерального стандарта США в 1993 г
Модели SADT (IDEF0) традиционно используются для моделирования организационных систем (бизнес-процессов). Следует отметить, что метод SADT успешно работает только при описании хорошо специфицированных и стандартизованных бизнес-процессов в зарубежных корпорациях, поэтому он и принят в США в качестве типового. Достоинствами применения моделей SADT для описания бизнес-процессов являются:
- полнота описания бизнес-процесса (управление, информационные и материальные потоки, обратные связи);
- жесткие требования метода, обеспечивающих получение моделей стандартного вида;
- соответствие подхода к описанию процессов стандартам ISO 9000.
В большинстве российских организаций бизнес-процессы начали формироваться и развиваться сравнительно недавно, они слабо типизированы, поэтому разумнее ориентироваться на менее жесткие модели.
Метод моделирования IDEF3, являющийся частью семейства стандартов IDEF, был разработан в конце 1980-х годов для закрытого проекта ВВС США. Этот метод предназначен для таких моделей процессов, в которых важно понять последовательность выполнения действий и взаимозависимости между ними. Хотя IDEF3 и не достиг статуса федерального стандарта США, он приобрел широкое распространение среди системных аналитиков как дополнение к методу функционального моделирования IDEF0 (модели IDEF3 могут использоваться для детализации функциональных блоков IDEF0, не имеющих диаграмм декомпозиции). Основой модели IDEF3 служит так называемый сценарий процесса, который выделяет последовательность действий и подпроцессов анализируемой системы.
Основу методологии IDEF0 составляет графический язык описания бизнес-процессов. Модель в нотации IDEF0 представляет собой совокупность иерархически упорядоченных и взаимосвязанных диаграмм. Каждая диаграмма является единицей описания системы и располагается на отдельном листе.
Модель может содержать четыре типа диаграмм:
контекстную диаграмму (в каждой модели может быть только одна контекстная диаграмма);
диаграммы декомпозиции;
диаграммы дерева узлов;
диаграммы только для экспозиции (FEO).
Контекстная диаграмма является вершиной древовидной структуры диаграмм и представляет собой самое общее описание системы и ее взаимодействия с внешней средой.
После описания системы в целом проводится разбиение ее на крупные фрагменты. Этот процесс называется функциональной декомпозицией, а диаграммы, которые описывают каждый фрагмент и взаимодействие фрагментов, называются диаграммами декомпозиции. После декомпозиции контекстной диаграммы проводится декомпозиция каждого большого фрагмента системы на более мелкие и так далее, до достижения нужного уровня подробности описания. После каждого се-ансa декомпозиции проводятся сеансы экспертизы - эксперты предметной области указывают на соответствие реальных бизнес-процессов созданным диаграммам. Найденные несоответствия исправляются, и только после проведения экспертизы без замечаний можно приступать к следующему сеансуcy декомпозиции. Так достигается соответствие модели реальным бизнес-процессам на любом и каждом уровне модели. Синтаксис описания системы в целом и каждого ее фрагмента одинаков во всей модели.
Диаграмма дерева узлов показывает иерархическую зависимость работ, о не взаимосвязи между работами. Диаграмм деревьев узлов может быть модели сколь угодно много, поскольку дерево может быть построено на произвольную глубину и не обязательно с корня.
Диаграммы для экспозиции (FEO) строятся для иллюстрации отдельных фрагментов модели, для иллюстрации альтернативной точки зрения, либо для специальных целей.
44. Характеристика DFD метода проектирования при определении функциональных требований к программному обеспечению.
Диаграммы потоков данных (DFD) являются основным средством моделирования функциональных требований проектируемой системы. С их помощью эти требования разбиваются на функциональные компоненты (процессы) и представляются в виде сети, связанной потоками данных. Главная цель таких средств - продемонстрировать, как каждый процесс преобразует свои входные данные в выходные, а также выявить отношения между этими процессами.
DFD "Data flow diagram", "диаграммы потоков данных" - широко распространенная методология моделирования процессо-ориентированного типа.
Функциональная модель системы представляет собой набор диаграмм потоков данных, которые описывают смысл операций и ограничений. ДПД отражает функциональные зависимости значений, вычисляемых в системе, включая входные значения, выходные значения и внутренние хранилища данных. ДПД - это граф, на котором показано движе-ние значений данных от их источников через преобразующие их процессы к их потреби-телям в других объектах.
ДПД содержит процессы, которые преобразуют данные, потоки данных, которые переносят данные, активные объекты, которые производят и потребляют данные, и храни-лища данных, которые пассивно хранят данные.
Диаграммы потоков данных содержит объекты следующих типов:
- процессы;
- хранилища данных;
- потоки данных.
Из-за того, что процессы на диаграмме представляются в виде кружков, похожих на пузырьки, диаграмму потоков данных часто называют "пузырьковой диаграммой".
Процессы предназначены для преобразования входящих в них потоков данных в выходные потоки данных. Имя процесса пишется заглавными буквами в кружке и представляет собой указание на действие, выполняемое процессом. Имена процессов выбираются таким образом, чтобы выразить некое действие и объект этого действия, ко-торый обычно совпадает с выходным потоком данных этого процесса. Вместе с именем процесса указывается его идентификатор, являющийся уникальным для проекта в целом.
Процессы на DFD могут состоять из подпроцессов. Первый уровень иерархии образует единственный процесс, представленный на контекстной диаграмме. Далее производится декомпозиция этого процесса на процессы первого уровня, затем операция декомпозиции применяется к процессам первого уровня, при этом образуется второй уровень иерархии и так далее.
45. Сравнительный анализ методов SADT и DFD при структурной проектировании программного обеспечения.
Сравнительный анализ данных методов структурного анализа проводится по следующим параметрам:
• адекватность средств решаемым задачам;
• согласованность с другими средствами структурного анализа;
• интефация с другими процессами ЖЦ ПО (прежде всего с процессом проектирования).
Адекватность средств решаемым задачам. Модели SADT (IDEFO) традиционно используются для моделирования организационных систем (бизнес-процессов). С другой стороны, не существует никаких принципиальных ограничений на использовании DFD в качестве средства моделирования бизнес-процессов.
Следует отметить, что метод SADT успешно работает только при описании хорошо специфицированных и стандартизованных бизнес-процессов в зарубежных корпорациях, поэтому он и принят в CШA в качестве типового. Например, в Министерстве обороны США десятки лет существуют четкие должностные инструкции и методики, которые жестко регламентируют деятельность, делают ее высокотехнологичной и ориентированной на бизнес-процесс. Достоинствами применения моделей SADT для описания бизнес-процессов являются:
• полнота описания бизнес-процесса (управление, информационные и материальные потоки, обратные связи);
• комплексная декомпозиция; возможность агрегирования и детализации потоков данных и управления (разделение и слияние стрелок);
• жесткие требования метода, обеспечивающие получение моделей стандартного вида;
• соответствие подхода к описанию процессов стандартам ISO 9000.
В большинстве российских организаций бизнес-процессы начали формироваться и развиваться сравнительно недавно, они слабо типизированы, поэтому разумнее ориентироваться на модели,
основанные на потоковых диафаммах. Кроме того, на практике у большинства моделей SADT отмечается ряд недостатков, в частности:
• сложность восприятия (большое количество стрелок);
• большое количество уровней декомпозиции;
• трудность увязки нескольких процессов, представленных в различных моделях одной и той же организации.
Если же речь идет не о системах вообще, а о ПО ИС, то здесь DFD вне конкуренции. Практически любой класс систем успешно моделируется при помощи DFD-ориентированных методов. SADT-диафаммы оказываются значительно менее выразительными и удобными при моделировании ПО. Так, дуги в SADT жестко типизированы (вход, выход, управление, механизм). В то же время применительно к ПО стирается смысловое различие между входами и выходами, с одной стороны, и управлениями и механизмами, с другой: входы, выходы и управления являются потоками данных и правилами их преобразования. Анализ системы при помощи потоков данных и процессов, их преобразующих, является более прозрачным и недвусмысленным. В SADT вообще отсутствуют выразительные средства для моделирования особенностей ИС. DFD же с самого начала создавались как средство проектирования ИС (тогда как SADT — как средство моделирования систем вообще) и имеют более богатый набор элементов, адекватно отражающих специфику таких систем (например, хранилища данных являются прообразами файлов или баз данных, внешние сущности отражают взаимодействие моделируемой системы с внешним миром).
Наличие в DFD спецификаций процессов нижнего уровня позволяет преодолеть логическую незавершенность SADT (а именно, обрыв модели на некотором достаточно низком уровне, когда дальнейшая ее детализация становится бессмысленной) и построить полную функциональную спецификацию разрабатываемой системы.
Жесткие офаничения SADT, запрещающие использовать более 6—7 блоков на диафамме, в ряде случаев вынуждают искусственно детализировать процесс, что затрудняет понимание модели
заказчиком, резко увеличиваетее объем и, как следствие. ведет к неадекватности модели реальной предметной области. В качестве примера достаточно рассмотреть модель операции по снятию денег с вклада физического лица в банке. В настоящий момент существуют более тридцати типов таких вкладов. Для моделирования соответствующих операций целесообразно использовать единственную DFD, поскольку все без исключения операции имеют одни и те же входы (сберегательная книжка и расходный ордер) и выходы (сберегательная книжка и наличные деньги) и различаются лишь механизмами начисления процентов. Если же попытаться структурировать эти операции путем группирования по какому-либо признаку (срочные, пенсионные, размеры процентов и т.п.) в соответствии с ограничениями SADT, то получится как минимум 6 диаграмм (верхний уровень и округленная в большую сторону дробь 30/7), сложность каждой из которых не меньше сложности единственной диаграммы, моделирующей все операции.
Согласованность с другими средствами структурного анализа. Главным достоинством любых моделей является возможность ихинтеграции с моделями других типов. В данном случае речь идето согласованности функциональных моделей со средствами моделированияданных. Согласование SADT-модели с ERM практическиневозможно или носит искусственный характер. В своюочередь, DFD и ERM взаимно дополняют друг друга и являютсясогласованными, поскольку в DFD присутствует описаниеструктур данных, непосредственно используемое для построенияERM.
Интеграция с другими процессами ЖЦ ПО. Важная характеристика модели — ее совместимость с моделями, используемыми в последующих процессах (прежде всего в процессе проектирования). DFD могут быть легко преобразованы в модели проектируемой системы. Известен ряд алгоритмов автоматического преобразования иерархии DFD в структурные карты различных видов, что обеспечивает логичный и безболезненный переход от формирования требований к проектированию системы. С другой стороны, формальные методы преобразования SADT-диаграмм в проектные решения отсутствуют.
Необходимо отметить, что рассмотренные разновидности средств структурного анализа примерно одинаковы с учетом возможностей изобразительных средств моделирования. При этом одним из основных критериев выбора того или иного метода является степень владения им со стороны консультанта или аналитика, грамотность выражения своих мыслей на языке моделирования. В противном случае в моделях, построенных с использованием любого метода, будет невозможно разобраться.
46. Понятие, сущность и общая характеристика объектно - ориентированного проектирования программного обеспечения.
Основная идея объектно-ориентированного анализа и проектирования (object-oriented analysis and design) состоит в рассмотрении предметной области и логического решения задачи с точки зрения объектов (понятий и сущностей). В процессе объектно-ориентированного анализа основное внимание уделяется определению и описанию объектов (или понятий) в терминах предметной области. В процессе объектно-ориентированного проектирования определяются логические программные объекты, которые будут реализованы средствами объектно-ориентированного языка программирования. Эти программные объекты включают в себя атрибуты и методы. И, наконец, в процессе конструирования (construction) или объектно-ориентированного программирования (object-oriented programming) обеспечивается реализация разработанных компонентов и классов.
Концептуальной основой объектно-ориентированного подхода является
объектная модель. Основными се элементами являются:
• абстрагирование (abstraction);
• инкапсуляция (encapsulation);
• модульность (modularity);
• иерархия (hierarchy).
Абстрагирование — это выделение существенных характеристик некоторого объекта, которые отличают его от всех других видов объектов и, таким образом, четко определяют его концептуальные границы относительно дальнейшего рассмотрения и анализа. Абстрагирование концентрирует внимание на внешних особенностях объекта и позволяет отделить самые существенные особенности его поведения от деталей их реализации. Выбор правильного набора абстракций для заданной предметной области представляет собой главную задачу объектно-ориентированного проектирования.
Инкапсуляция — это процесс отделения друг от друга отдельных элементов объекта, определяющих его устройство и поведение. Инкапсуляция служит для того, чтобы изолировать интерфейс объекта, отражающий его внешнее поведение, от внутренней реализации объекта. Объектный подход предполагает, что собственные ресурсы, которыми могут манипулировать только методы самого класса, скрыты от внешней среды. Абстрагирование и инкапсуляция являются взаимодополняющими операциями: абстрагирование фокусирует внимание на внешних особенностях объекта, а инкапсуляция (или, иначе, ограничение доступа) не позволяет объектам-пользователям различать внутреннее устройство объекта.
Модульность — это свойство системы, связанное с возможностью ее декомпозиции на ряд внутренне связных, но слабо связанных между собой модулей. Инкапсуляция и модульность создают барьеры между абстракциями.
Иерархия — это ранжированная или упорядоченная система абстракций, расположение их по уровням. Основными видами иерархических структур применительно к сложным системам являются структура классов (иерархия по номенклатуре) и структура объектов (иерархия по составу). Примерами иерархии классов являются простое и множественное наследование (один класс использует структурную или функциональную часть соответственно одного или нескольких других классов), а иерархии объектов - агрегация.
Рассмотрим вкратце некоторые основные принципы объектно-ориентированного анализа и проектирования, в дальнейшем мы дадим более точные определения и более полную расшифровку всех рассмотренных терминов.
• С начала производится так называемый анализ требований (requirements analysis) во время которого выделяются основные процессы, происходящие в моделируемой системе и их формулировка в виде прецедентов. Прецедент (precedent)- это текстовое описание процессов, происходящих в предметной области.
Шаг второй. Объектно-ориентированный анализ предметной области (object-oriented domain analysis). Задача этого шага в определении видов деятельности участников процесса и составлении концептуальной модели (conceptual model), которая отражает различные категории элементов предметной области. Причем не только виды деятельности участников, но и все относящиеся к делу понятия.
Шаг третий. Разбираемся, кто, чем занимается. Эта деятельность и называется объектно-ориентированным проектированием (object-oriented design), при котором основное внимание сосредоточено на распределении обязанностей. Распределение обязанностей (responsibility assignment) означает выделение задач и обязанностей различных программных объектов в приложении.
Наиболее важным моментом объектно-ориентированного анализа и проектирования является квалифицированное распределение обязанностей между компонентами программной системы. Дело в том, что единственный вид деятельности, без которого невозможно обойтись. К тому же он оказывает определяющее влияние на робастность, масштабируемость, расширяемость и возможность повторного использования компонентов. Обязанности объектов и их взаимодействия изображаются с использованием диаграмм классов (design class diagram) и диаграмм взаимодействий (collaboration diagram).
Основные принципы объектно-ориентированного анализа и проектирования программных систем
Основная идея объектно-ориентированного анализа и проектирования (object-oriented analysis and design) состоит в рассмотрении предметной области и логического решения задачи с точки зрения объектов (понятий и сущностей). В процессе объектно-ориентированного анализа основное внимание уделяется определению и описанию объектов (или понятий) в терминах предметной области. В процессе объектно-ориентированного проектирования определяются логические программные объекты, ко-торые будут реализованы средствами объектно-ориентированного языка программирования. Эти программные объекты включают в себя атрибуты и методы. И, наконец, в процессе конструирования (construction) или объектно-ориентированного программирования (object-oriented programming) обеспечивается реализация разработанных компо-нентов и классов.
47. Общая характеристика универсального языка моделирования UML при объектно - ориентированном проектировании программного обеспечения.
Концепция языка UML
Унифицированный язык моделирования (UML - Unified Modeling Language) является стандартным инструментом для создания документированных каркасов ("чертежей") программного обеспечения. С помощью UML можно визуализировать, специфициро-вать, конструировать и документировать процесс разработки программных систем.
UML разработан таким образом, чтобы удовлетворять потребности при моделировании любых систем: от информационных систем масштаба предприятия до распределенных Web-приложений и даже встроенных систем реального времени. Это выразительный язык, позволяющий рассмотреть систему со всех точек зрения, имеющих отношение к ее разработке и последующему развертыванию. Несмотря на обилие выразительных возможностей, этот язык прост для понимания и использования. Изучение UML мы нач-нем с его концептуальной модели, которая содержит три основные элемента языка: ба-зовые конструкции, правила, определяющие, каким образом эти конструкции могут со-четаться между собой, и некоторые общие механизмы языка.
Несмотря на свои достоинства, UML - это всего лишь язык. Он является одной из со-ставляющих программного обеспечения, и не более этого. Хотя UML не зависит от мо-делируемой реальности, лучше всего применять его, когда процесс моделирования ос-нован на рассмотрении текстового описания процессов, происходящих в предметной области, является итеративным и пошаговым, а сама система имеет четко выраженную архитектуру. Таким образом он идеально подходит для Унифицированного процесса разработки.
UML - это язык для визуализации, специфицирования, конструирования и документиро-вания артефактов программных систем. Напомним что, артефакт (artifact) - диаграмма, документ, модель, закон и т. д. - нечто, описывающее определенное понятие предмет-ной области.
Как и любой язык, UML состоит из словаря и правил, позволяющих комбинировать вхо-дящие в него слова и получать осмысленные конструкции. В языке моделирования сло-варь и правила ориентированны на концептуальное и физическое представление сис-темы. Язык моделирования, подобный UML, является стандартным средством для составления "чертежей" программного обеспечения.
Моделирование необходимо для понимания системы. Обычно, при этом единственной модели никогда не бывает достаточно. Наоборот, для понимания практически любой нетривиальной системы приходится разрабатывать большое количество взаимосвязан-ных моделей. В применении к программным системам это означает, что необходим язык, с помощью которого можно с различных точек зрения описать представления ар-хитектуры системы на протяжении цикла ее разработки.
Словарь и правила такого языка, как UML, объясняют, как создавать и читать хорошо определенные модели, но ничего не сообщают, какие модели и в каких случаях нужно создавать. Эта задача всего процесса разработки программного обеспечения. Органи-зация такого процесса дело сугубо индивидуальное в рамках различных программист-ских компаний, фирм и отдельных групп разработчиков программного обеспечения. Но хорошо организованный процесс должен показать вам, какие требуются артефакты, ка-кие ресурсы необходимы для их создания, как можно использовать эти артефакты для того, чтобы оценить выполненную работу и управлять проектом в целом.
Язык UML как система визуализации, специфицирования, конструирования, документирования
Характерной особенностью мышления большинства программистов является то, что размышления о том, как реализовать проект, для нас практически эквивалентны напи-санию кода для этого проекта. Если мы думаем о проекте - значит, мы его кодируем. Конечно, некоторые вещи лучше всего выражаются непосредственно в коде на каком-нибудь языке программирования, ведь листинг программы - это самый простой и корот-кий путь для записи алгоритмов и вычислений.
А ведь даже в этих случаях программист занимается моделированием, хотя и нефор-мально. И такой подход чреват рядом неприятностей. Во-первых, обмениваться мне-ниями по поводу построенной модели можно только тогда, когда все участники говорят на одном языке. А это означает, что ваша компания не сможет принять великолепного программиста на С, если она использует Delphi! Или вашему новичку будет совсем не-просто догадаться, о чем идет речь. Во-вторых, нельзя получить представление об не-которых аспектах программных систем без модели, границы которой выходят за рамки текстового языка программирования. Например, назначение иерархии классов можно, конечно, понять, если внимательно изучить код каждого класса, а вот воспринять всю структуру сразу целиком ни за что не получится. Аналогично изучение кода системы не позволит составить полное представление о физическом распределении и возможных миграциях объектов в Web-приложении. В третьих, если ваш системный аналитик нико-гда не воплощал в явной форме разработанные модели, эта информация будет навсе-гда утрачена, если его вдруг переманят в конкурирующую фирму. В лучшем случае ре-зультаты его анализа можно будет только частично воссоздать исходя из реализации.
Использование UML позволяет решить эти проблемы. Этот язык моделирования - это не просто набор графических символов. За каждым из них стоит определенная семан-тика, а это означает, что модель, написанная одним разработчиком, может быть одно-значно интерпретирована другим, и не обязательно человеком, в роли второго разра-ботчика может выступать и некоторое инструментальное средство. Конец первой проблемы. Некоторые особенности системы лучше всего моделировать в виде текста, дру-гие - графически. Практика свидетельствует, что во всех интересных системах сущест-вуют структуры. Которые невозможно представить с помощью одного языка программи-рования. A UML -графический язык, и это решает нашу вторую проблему. Ну и наконец, явная модель облегчает общение, это очевидно, а значит и третья проблема отпадает сама собой.
UML как язык специфицирования
UML позволяет специфицировать все существенные решения, которые касаются анали-за, проектирования и реализации, принимающиеся в процессе разработки и разверты-вания системы программного обеспечения. Это означает построение точных, недву-смысленных и полных моделей.
UML как язык конструирования
UML не является языком визуального программирования. Но модели, которые создают-ся с его помощью, могут быть непосредственно переведены на любой объектно-ориентированный язык программирования. Те понятия, которые удобнее представлять графически, так и подставляются в UML, те же, которые лучше описывать в текстовом виде, выражаются с помощью языка программирования.
Такое отображение модели на язык программирования позволяет выполнить прямое проектирование, т. е. генерацию кода по модели UML в какой-то конкретный язык. Мож-но решить и обратную задачу: реконструировать модель по существующей реализации. Такое обратное проектирование не представляет собой ничего необычного. Если вы не закодировали информацию в реализации, то она теряется при прямом переходе от мо-делей к коду. А поэтому для обратного проектирования необходимы как инструменталь-ные средства, так и непосредственное участие программиста или системного аналити-ка. Сочетание прямой генерации кода и обратного проектирования позволяет работать как в графическом, так и в текстовом представлении, если инструментальные програм-мы обеспечивают согласованность между этими двумя представлениями проекта.
Помимо прямого отображения в языки программирования UML в силу своей вырази-тельности и однозначности позволяет непосредственно выполнять модели, имитиро-вать поведение системы и контролировать действующие системы.
UML как язык документирования
Организация, серьезно работающая на рынке программных средств, кроме непосредст-венного написания программного кода производит и некоторые другие артефакты, в том числе следующие:
требования к системе;
архитектуру;
проект;
исходный код;
проектные планы и сметы;
тесты;
прототипы;
версии и другие.
В зависимости от принятой методики разработки выполнение одних работ производится более формально, чем других. Перечисленные выше артефакты - это не просто постав-ляемые части проекта; они необходимы, прежде всего, для управления, для оценки ре-зультатов, а также как средство общения между членами коллектива во время работы над проектом и после его развертывания.
UML позволяет решить проблему документирования системной архитектуры и ее дета-лей, предлагает язык для формального определения требований к системе и определе-ния тестов и, наконец, предоставляет средства для моделирования работ на этапе пла-нирования проекта и управления версиями.
Язык UML предназначен, прежде всего, для разработки программных систем. Его ис-пользование особенно эффективно в следующих областях:
информационные системы масштаба предприятия;
банковские и финансовые услуги;
телекоммуникации;
транспорт;
оборонная промышленность, авиация, космонавтика;
торговые системы;
медицинская электроника;
наука;
распределенные Web-системы.
Сфера применения UML не ограничивается моделированием программного обеспече-ния. Его выразительность позволяет моделировать, например, документооборот в юри-дических системах, структуру и функционирование системы обслуживания пациентов в больницах, осуществлять проектирование аппаратных средств.
48. Основные стадии и характеристика стадий и этапов объектно-ориентированного проектирования программного обеспечения.
Основные принципы объектно-ориентированною анализе и проектирования программных систем
Основная идея объектно-ориентированного анализа и проектирования (object-oriented analysis and desfen) состоит в рассмотрении предметной области и логического решения задачи с точки зрения объектов (понятий и сущностей). В процессе объектно-ориентированного анализа основное внимание уделяется определению и описанию объектов (или понятий) в терминах предметной области. В процессе объектно-ориентированного проектирования определяются логические программные объекты, которые будут реализованы средствами объектно-ориентированного языка программирования Эти программные объекты включают в себя атрибуты и методы. И. наконец, в процессе конструирования (construction) или объектно-ориентированного программирования (object-oriented programming) обеспечивается реализация разработанных компонентов и классов.
Основные стадии объектно-ориентированного анализа и проектирования:
Шаг первый. Производится анализ требований (requirements analysis) во время которого выделяются основные процессы, происходящие в моделируемой системе и их формулировка в виде прецедентов. Прецедент (precedent)- это текстовое описание процессов, происходящих а предметной области.
Шаг второй. Объектно-ориентированный анализ предметной области (object-oriented domain analysis). Задача этого шага в определении видов деятельности участников процесса и составлении концептуальной модели (conceptual model), которая отражает различные категории элементов предметной области. Причем не только виды деятельности участников, но и все относящиеся к делу понятия.
Шаг третий. Разбираемся, кто, чем занимается. Эта деятельность и называется объектно-ориентированным проектированием (object- oriented design), при котором основное внимание сосредоточено на распределении обязанностей. Распределение обязанностей (responsbfity assignment) означает выделение задач и обязанностей различных программных объектов в приложении.
Наиболее важным моментом объектно-ориентированного анализа и проектирования является квалифицированное распределение обязанностей между компонентами программной системы. Он оказывает определяющее влияние на робастность, масштабируемость, расширяемость и возможность повторного использования компонентов. В языке UML обязанности объектов и их взаимодействия изображаются с использованием диаграмм классов (design class diagram) и диаграмм взаимодействий (colaboraflon diagram).
Этапы объектно-ориентированного подхода к разработке ПО:
Объектно-ориентированный анализ (analysis) – способ анализа, изучающий требования к системе с точки зрения будущих классов и объектов, основываясь на словаре предметной области.
Объектно-ориентированное проектирование (design) – способ проектирования, включающий в себя описание процесса объектно-ориентированной декомпозиции и объектно-ориентированную нотацию для описания различных моделей системы (логической и физической, статической и динамической).
Объектно-ориентированное программирование – это метод реализации, в основе которого лежит идея представления программной системы в виде набора взаимодействующих объектов, каждый из которых является экземпляром некоторого класса, а классы объединены в иерархию наследования.
Порядок их применения таков: сначала проводится объектно-ориентированный анализ, затем проектирование, а после этого – реализация (то есть программирование).
Кроме перечисленных этапов, принято еще выделять этап тестирования и отладки, следующий за реализацией и этап сопровождения, который в большинстве случаев является самым долговременным и дорогостоящим.
49 Совместное применение структурного и объектно-ориентированного проектирования программного обеспечения (использование структурного подхода как основы для объектно-ориентированного проектирования).
Сущность структурного подхода к разработке ИС заключается в ее декомпозиции (разбиении) на автоматизируемые функции: система разбивается на функциональные подсистемы, которые в свою очередь делятся на подфункции, подразделяемые на задачи и так далее. Процесс разбиения продолжается вплоть до конкретных процедур. При этом автоматизируемая система сохраняет целостное представление, в котором все составляющие компоненты взаимоувязаны. При разработке системы "снизу-вверх" от отдельных задач ко всей системе целостность теряется, возникают проблемы при информационной стыковке отдельных компонентов.
Главный недостаток структурного проектирования заключается в следующем: процессы и данные существуют отдельно друг от друга, причем проектирование ведется от процессов к данным. Таким образом, помимо функциональной декомпозиции, существует также структура данных, находящаяся на втором плане.
Основная идея объектно-ориентированного анализа и проектирования (object-oriented analysis and design) состоит в рассмотрении предметной области и логического решения задачи с точки зрения объектов (понятий и сущностей). В процессе объектно-ориентированного анализа основное внимание уделяется определению и описанию объектов (или понятий) в терминах предметной области. В процессе объектно-ориентированного проектирования определяются логические программные объекты, которые будут реализованы средствами объектно-ориентированного языка программирования. Эти программные объекты включают в себя атрибуты и методы. И, наконец, в процессе конструирования (construction) или объектно-ориентированного программирования (object-oriented programming) обеспечивается реализация разработанных компонентов и классов.
Главное достоинство объектно-ориентированного подхода (ООП: объектно-ориентированные системы более открыты и легче поддаются внесению изменений, поскольку их конструкция базируется на устойчивых формах. Это дает возможность системе развиваться постепенно и не приводит к полной ее переработке даже в случае существенных изменений исходных требований.
Преимуществ ООП:
- объектная декомпозиция дает возможность создавать программные системы меньшего размера путем использования общих механизмов, обеспечивающих необходимую экономию выразительных средств. Использование ООП существенно повышает уровень унификации разработки и пригодность для повторного использования не только программного обеспечения, но и проектов, что в конце концов ведет к сборочному созданию программного обеспечения. Системы зачастую получаются более компактными, чем их не объектно-ориентированные эквиваленты, что означает не только уменьшение объема программного кода, но и удешевление проекта за счет использования предыдущих разработок;
- объектная декомпозиция уменьшает риск создания сложных систем программного обеспечения, так как она предполагает эволюционный путь развития системы на базе относительно небольших подсистем. Процесс интеграции системы растягивается на все время разработки, а не превращается в единовременное событие;
- объектная модель вполне естественна, поскольку в первую очередь ориентирована на человеческое восприятие мира, а не на компьютерную реализацию;
- объектная модель позволяет в полной мере использовать выразительные возможности объектных и объектно-ориентированных языков программирования.
К недостаткам ООП относятся некоторое снижение производительности функционирования программного обеспечения (которое, однако, по мере роста производительности компьютеров становится все менее заметным) и высокие начальные затраты. Объектная декомпозиция существенно отличается от функциональной, поэтому переход на новую технологию связан как с преодолением психологических трудностей, так и дополнительными финансовыми затратами. При переходе от структурного подхода к объектному, как при всякой смене технологии, необходимо вкладывать деньги в приобретение новых инструментальных средств. Здесь следует учесть расходы на обучение методу, инструментальным средствам и языку программирования. Для некоторых организаций эти обстоятельства могут стать серьезными препятствиями.
Объектно-ориентированный подход не дает немедленной отдачи. Эффект от его применения начинает сказываться после разработки двух-трех проектов и накопления повторно используемых компонентов, отражающих типовые проектные решения в данной области. Переход организации на объектно-ориентированную технологию - это смена мировоззрения, а не просто изучение новых CASE-средств и языков программирования.
Таким образом, структурный подход по-прежнему сохраняет свою значимость и достаточно широко используется на практике. На примере языка UML хорошо видно, что его авторы заимствовали то рациональное, что можно было взять из структурного подхода: элементы функциональной декомпозиции в диаграммах вариантов использования, диаграммы состояний, диаграммы деятельности и др. Очевидно, что в конкретном проекте сложной системы невозможно обойтись только одним способом декомпозиции. Можно начать декомпозицию каким-либо одним способом, а затем, используя полученные результаты, попытаться рассмотреть систему с другой точки зрения.
Основой взаимосвязи между структурным и объектно-ориентированным подходами является общность ряда категорий и понятий обоих подходов (процесс и вариант использования, сущность и класс и др.). Эта взаимосвязь может проявляться в различных формах. Так, одним из возможных вариантов является использование структурного анализа как основы для объектно-ориентированного проектирования. При этом структурный анализ следует прекращать, как только структурные модели начнут отражать не только деятельность организации (бизнес-процессы), а и систему программного обеспечения. После выполнения структурного анализа можно различными способами приступить к определению классов и объектов. Так, если взять какую-либо отдельную диаграмму потоков данных, то кандидатами в классы могут быть элементы структур данных.
Другой формой проявления взаимосвязи можно считать интеграцию объектной и реляционной технологий. Реляционные СУБД являются на сегодняшний день основным средством реализации крупномасштабных баз данных и хранилищ данных. Причины этого достаточно очевидны: реляционная технология используется достаточно долго, освоена огромным количеством пользователей и разработчиков, стала промышленным стандартом, в нее вложены значительные средства и создано множество корпоративных БД в самых различных отраслях, реляционная модель проста и имеет строгое математическое основание; существует большое разнообразие промышленных средств проектирования, реализации и эксплуатации реляционных БД. Вследствие этого реляционные БД в основном используются для хранения и поиска объектов в так называемых объектно-реляционных системах.
Взаимосвязь между структурным и объектно-ориентированным подходами достаточно четко просматривается в различных ТС программного обеспечения.
Вывод: Сущность структурного подхода к разработке ПО заключаетс в его декомпозиции (разбиении) в соответствии с выполняемыми функциями. Сущность объектно-ориентированного подхода к разработке ПО заключается в объектной декомпозиции. При этом статическая структура системы описывается в терминах объектов и связей между ними, а поведение системы описывается в терминах обмена сообщениями между объектами.
50. Состав и характеристика интегрированных CASE -средств проектирования программного обеспечения.
Современные CASE-средства охватывают обширную область поддержки многочисленных технологий проектирования ИС: от простых средств анализа и документирования до полномасштабных средств автоматизации, покрывающих весь жизненный цикл ПО.
Обычно к CASE-средствам относят любое программное средство, автоматизирующее ту или иную совокупность процессов жизненного цикла ПО и обладающее следующими основными характерными особенностями:
- мощные графические средства для описания и документирования ИС, обеспечивающие удобный интерфейс с разработчиком и развивающие его творческие возможности;
- интеграция отдельных компонент CASE-средств, обеспечивающая управляемость процессом разработки ИС;
- использование специальным образом организованного хранилища проектных метаданных (репозитория).
- Интегрированное CASE-средство (или комплекс средств, поддерживающих полный ЖЦ ПО) содержит следующие компоненты;
- репозиторий, являющийся основой CASE-средства. Он должен обеспечивать хранение версий проекта и его отдельных компонентов, синхронизацию поступления информации от различных разработчиков при групповой разработке, контроль метаданных на полноту и непротиворечивость;
- графические средства анализа и проектирования, обеспечивающие создание и редактирование иерархически связанных диаграмм (DFD, ERD и др.), образующих модели ИС;
- средства разработки приложений, включая языки 4GL и генераторы кодов;
- средства конфигурационного управления (Цель конфигурационного управления (КУ) - обеспечить управляемость и контролируемость процессов разработки и сопровождения ПО. Для этого необходима точная и достоверная информация о состоянии ПО и его компонент в каждый момент времени, а также о всех предполагаемых и выполненных изменениях.
Наиболее распространенным средством КУ является PVCS фирмы Intersolv (США), включающее ряд самостоятельных продуктов: PVCS Version Manager, PVCS Tracker, PVCS Configuration Builder и PVCS Notify.
PVCS Version Manager [18] предназначен для управления всеми компонентами проекта и ведения планомерной многоверсионной и многоплатформенной разработки силами команды разработчиков в условиях одной или нескольких локальных сетей. Понятие "проект" трактуется как совокупность файлов. В процессе работы над проектом промежуточное состояние файлов периодически сохраняется в архиве проекта, ведутся записи о времени сохранения, соответствии друг другу нескольких вариантов разных файлов проекта. Кроме этого, фиксируются имена разработчиков, ответственных за тот или иной файл, состав файлов промежуточных версий проекта и др. Это позволяет вернуться при необходимости к какому-либо из предыдущих состояний файла (например, при обнаружении ошибки, которую в данный момент трудно исправить).
PVCS Version Manager предназначен для использования в рабочих группах. Система блокировок, реализованная в PVCS Version Manager позволяет предотвратить одновременное внесение изменений в один и тот же файл. В то же время, PVCS Version Manager позволяет разработчикам работать с собственными версиями общего файла с полуавтоматическим разрешением конфликтов между ними.);
- средства документирования (Для создания документации в процессе разработки ИС используются разнообразные средства формирования отчетов, а также компоненты издательских систем. Обычно средства документирования встроены в конкретные CASE-средства. Исключением являются некоторые пакеты, предоставляющие дополнительный сервис при документировании. Из них наиболее активно используется SoDA (Software Document Аutomation).
- Продукт SoDA предназначен для автоматизации разработки проектной документации на всех фазах ЖЦ ПО. Он позволяет автоматически извлекать разнообразную информацию, получаемую на разных стадиях разработки проекта, и включать ее в выходные документы. При этом контролируется соответствие документации проекту, взаимосвязь документов, обеспечивается их своевременное обновление. Результирующая документация автоматически формируется из множества источников, число которых не ограничено);
- средства тестирования (Под тестированием понимается процесс исполнения программы с целью обнаружения ошибок. Регрессионное тестирование - это тестирование, проводимое после усовершенствования функций программы или внесения в нее изменений. Одно из наиболее развитых средств тестирования QA (новое название - Quality Works) [20] представляет собой интегрированную, многоплатформенную среду для разработки автоматизированных тестов любого уровня, включая тесты регрессии для приложений с графическим интерфейсом пользователя. QA позволяет начинать тестирование на любой фазе ЖЦ, планировать и управлять процессом тестирования, отображать изменения в приложении и повторно использовать тесты для более чем 25 различных платформ.
Основными компонентами QA являются:
QA Partner - среда для разработки, компиляции и выполнения тестов;
QA Planner - модуль для разработки планов тестирования и обработки результатов. Для создания и выполнения тестов в процессе работы QA Planner вызывается QA Partner;
Agent - модуль, поддерживающий работу в сети.
Процесс тестирования состоит из следующих этапов:
создание плана тестирования;
связывание плана с тестами;
пометка и выполнение тестов;
получение отчетов о тестировании и управление результатами.
Создание тестового плана в QA Planner включает в себя составление схемы тестовых требований и выделение уровней детализации. Для этого необходимо определить все, что должно быть протестировано, подготовить функциональную декомпозицию приложения, оценить, сколько тестов необходимо для каждой функции и характеристики, определить, сколько из них будет реализовано в зависимости от доступных ресурсов и времени. Эта информация используется для создания схемы тестовых требований.
Для связывания плана с тестами необходимо создать управляющие предложения (скрипты) на специальном языке 4Test и тесты, которые выполняют требования плана, и связать компоненты любым способом. Для избежания перегруженности тестов используют управление тестовыми данными.
При выполнении плана результаты записываются в формате, похожем на план. Все результаты связаны с планом. Есть возможность просмотреть или скрыть общую информацию о выполнении, слить файлы результатов, разметить неудавшиеся тесты, сравнить результаты предыдущего выполнения тестов, выполнить или отменить отчет.
Одним из атрибутов теста является имя его разработчика, что позволяет при необходимости выполнять тесты, созданные конкретным разработчиком.
Комплекс QA занимает на жестком диске не более 21МВ. Поддерживаемые платформы: Windows 3.x, Windows 95, Windows NT, OS/2, Macintosh, VMS, HP-UX, AIX, Solaris.);
- средства управления проектом;
- средства реинжиниринга (обеспечивающие анализ программных кодов и схем баз данных и формирование на их основе различных моделей и проектных спецификаций. Средства анализа схем БД и формирования ERD входят в состав Vantage Team Builder, PRO-IV, Silverrun, Designer/2000, ERwin и S-Designor. В области анализа программных кодов наибольшее распространение получают объектно-ориентированные CASE-средства, обеспечивающие реинжиниринг программ на языке С++ (Rational Rose (Rational Software), Object Team (Cayenne))).
Реинжиниринг - это широкий подход, подразумевающий осуществление изменений на предприятии, предназначенных для повышения эффективности производства и скорости реакции предприятия на изменения рынка: действия конкурентов, изменение потребителя и т.д.
51. Классификация CASE - средств проектирования программного обеспечения
Современные CASE-системы классифицируются по следующим признакам:
1) По поддерживаемым методологиям проектирования: функционально (структурно)-ориентированные, объектно-ориентированные и комплексно-ориентированные (набор методологий проектирования);
2) По поддерживаемым графическим нотациям построения диаграмм: с фиксированной нотацией, с отдельными нотациями и наиболее распространенными нотациями;
3) По степени интегрированности: tools (отдельные локальные средства), toolkit (набор неинтегрированных средств, охватывающих большинство этапов разработки ЭИС) и workbench (полностью интегрированные средства, связанные общей базой проектных данных - репозиторием);
4) По типу и архитектуре вычислительной техники: ориентированные на ПЭВМ, ориентированные на локальную вычислительную сеть (ЛВС), ориентированные на глобальную вычислительную сеть (ГВС) и смешанного типа;
5) По режиму коллективной разработки проекта: не поддерживающие коллективную разработку, ориентированные на режим реального времени разработки проекта, ориентированные на режим объединения подпроектов;
6) По типу операционной системы (ОС): работающие под управлением WINDOWS 3.11 и выше; работающие под управлением UNIX и работающие под управлением различных ОС (WINDOWS, UNIX, OS/2 и др.).
Рассмотрим классификацию Case-средств по типам и категориям.
Классификация по типам отражает функциональную ориентацию CASE-средств на те или иные процессы ЖЦ и включает следующие типы:
1. Средства анализа и проектирования, предназначенные для построения и анализа как моделей деятельности организации (предметной области), так и моделей проектируемой системы.
К таким средствам относятся BPwin (PLATINUM technology), Silverrun (Silverrun Technologies), Oracle Designer (Oracle), Rational Rose (Rational Software), Paradigm Plus (PLATINUM technology), Power Designer (Sybase), System Architect (Popkin Software).
Их целью является определение системных требований и свойств, которыми система должна обладать, а также создание проекта системы, удовлетворяющей этим требованиям и обладающей соответствующими свойствами. Выходом таких средств являются спецификации компонентов системы и их интерфейсов, алгоритмов и структур данных.
2. Средства проектирования баз данных, обеспечивающие моделирование данных и генерацию схем баз данных (как правило, на языке SQL – Structured Query Language – структурированном языке запросов) для наиболее распространенных СУБД. Средства проектирования баз данных имеются в составе таких CASE-средств, как Silverrun, Oracle Designer, Paradigm Plus, Power Designer. Наиболее известным средством, ориентированным только на проектирование БД, является ERwin (PLATINUM technology);
3. Средства управления требованиями, обеспечивающие комплексную поддержку разнородных требований к создаваемой системе.
Примерами таких средств являются RequisitePro (Rational Software) и DOORS – Dynamic Object-Oriented Requirements System – динамическая объектно-ориентированная система управления требованиями (Quality Systems and Software Inc.);
4. Средства управления конфигурацией ПО – PVCS (Merant), ClearCase (Rational Software) и др.;
5. Средства документирования.
Наиболее известным из них является SoDA – Software Document Automation – автоматизированное документирование ПО (Rational Software);
6. Средства тестирования.
Наиболее развитым на сегодняшний день средством является Rational Suite TestStudio (Rational Software) набор продуктов, предназначенных для автоматического тестирования приложений;
7. Средствауправленияпроектом – Open Plan Professional (Welcom Software), Microsoft Project 98 и др.;
8. Средства реверсного инжиниринга, предназначенные для переноса существующей системы ПО в новую среду. Они обеспечивают анализ программных кодов и схем баз данных и формирование на их основе различных моделей и проектных спецификаций.
Средства анализа схем БД и формирования ERD входят в состав таких CASE-средств, как Silverrun, Oracle Designer, Power Designer, ERwin. Анализаторы программных кодов имеются в составе Rational Rose и Paradigm Plus.
Классификация по категориям определяет степень интегрированности по выполняемым функциям и включает отдельные локальные средства, решающие небольшие автономные задачи (tools), набор частично интегрированных средств, охватывающих большинство процессов ЖЦ ПО (toolkit), и полностью интегрированные средства, поддерживающие весь ЖЦ ПО и связанные общим репозиторием.
Помимо этого, CASE-средства можно также классифицировать по применяемым структурным или объектно-ориентированным методам анализа и проектирования ПО.
На сегодняшний день российский рынок программного обеспечения располагает практически всеми перечисленными выше средствами.
52. Характеристика проведения пилотного проекта по внедрению CASE-средств.
Перед полномасштабным внедрением выбранного CASE-средства в организации выполняется пилотный проект, целью которого является экспериментальная проверка правильности решений, принятых на предыдущих этапах, и подготовка к внедрению.
Пилотный проект представляет собой первоначальное реальное использование CASE-средства в предназначенной для этого среде и обычно подразумевает более широкий масштаб использования CASE-средства по отношению к тому, который был достигнут во время оценки. Пилотный проект должен обладать многими из характеристик реальных проектов, для которых предназначено данное средство. Он преследует следующие цели:
подтвердить достоверность результатов оценки и выбора;
определить, действительно ли CASE-средство годится для использования в данной организации, и если да, то определить наиболее подходящую область его применения;
собрать информацию, необходимую для разработки плана практического внедрения;
приобрести собственный опыт использования CASE-средства.
Пилотный проект позволяет получить важную информацию, необходимую для оценки качества функционирования CASE-средства и его поддержки со стороны поставщика после того, как средство установлено.
Важной функцией пилотного проекта является принятие решения относительно приобретения или отказа от использования CASE-средства. Провал пилотного проекта позволяет избежать более значительных и дорогостоящих неудач в дальнейшем, поскольку пилотный проект обычно связан с приобретением относительно небольшого количества лицензий и обучением узкого круга специалистов.
Первоначальное использование новой CASE-технологии в пилотном проекте должно тщательно планироваться и контролироваться. Пилотный проект включает следующие шаги:
1. Определение характеристик пилотного проекта: область применения (предметная область пилотного проекта должна быть типичной для обычной деятельности организации.), масштабируемость (Цель - получить четкое представление о масштабах проектов, для которых данное средство применимо), представительсность (Пилотный проект не должен быть необычным или уникальным для организации. CASE-средство должно использоваться для решения задач, относящихся к предметной области, хорошо понимаемой всей организацией), критичность (Пилотный проект должен иметь существенную значимость, чтобы оказаться в центре внимания, но не должен быть критичным для успешной деятельности организации в целом. Необходимо осознавать, что первоначальное внедрение новой технологии подразумевает определенный риск), авторитетность (Группа специалистов, участвующих в проекте, должна обладать высоким авторитетом, при этом результаты проекта будут всерьез восприняты остальными сотрудниками организации), характеристики проектной группы (Проектная группа должна обладать готовностью к нововведениям, технической зрелостью и приемлемым уровнем опыта и знаний в данной технологии и предметной области).
2. Планирование пилотного проекта должно по возможности вписываться в обычный процесс планирования проектов в организации. План должен содержать следующую информацию:
- цели, задачи и критерии оценки (Ожидаемые результаты пилотного проекта должны быть четко определены. Степень соответствия этим результатам представляет собой основу для последующей оценки проекта. определить конкретные задачи, реализующие поставленные цели. Каждой цели можно поставить в соответствие одну или несколько конкретных задач с количественно оцениваемыми результатами);
- персонал (Группа должна включать как технических специалистов, так и менеджеров, заинтересованных в новой технологии и разбирающихся в ее использовании. Группа должна обладать высокими способностями к коммуникации, знанием особенностей организационных процессов и процедур, а также предметной области. Группа не должна, тем не менее, состоять полностью из специалистов высшего звена, она должна представлять средний уровень организации);
- процедуры и соглашения (Примерами процедур и соглашений, которые могут повлиять на успех пилотного проекта, являются методология, технические соглашения и организационные соглашения);
- обучение (Обучение, которое проводится в период выполнения проекта, должно начинаться как можно быстрее после начала проекта. Обучение средствам, процессам или методам, которые не будут использоваться в течение нескольких месяцев после начала проекта, должно планироваться на то время, когда в них возникнет реальная потребность);
- график и ресурсы (Должен быть разработан график, включающий ресурсы и сроки (этапы) проведения работ. Ресурсы включают персонал, технические средства, ПО и финансирование).
3. Выполнение пилотного проекта. Пилотный проект должен выполняться в соответствии с планом. Организационная деятельность, связанная с выполнением пилотного проекта и подготовкой отчетов, должна выполняться в установленном порядке. Пилотная природа проекта требует специального внимания к вопросам приобретения, поддержки, экспертизы и обновления версий
4. Оценка пилотного проекта. После завершения пилотного проекта его результаты необходимо оценить и сопоставить их с изначальными потребностями организации, критериями успешного внедрения CASE-средств, базовыми метриками и критериями успеха пилотного проекта. Такая оценка должна установить возможные проблемы и важнейшие характеристики пилотного проекта, которые могут повлиять на пригодность CASE-средства для организации. Она должна также указать проекты или структурные подразделения внутри организации, для которых данное средство является подходящим. Помимо этого, оценка может дать информацию относительно совершенствования процесса внедрения в дальнейшем.
5. Принятие решения о целесообразности внедрения CASE-средств. На данном этапе процесса внедрения организация должна сделать существенные инвестиции в CASE-средства. Если средства удовлетворили или даже превысили ожидания организации, то решение о внедрении может быть принято достаточно просто и быстро.
С другой стороны, может оказаться, что в рамках пилотного проекта средства не оправдали тех ожиданий, которые на них возлагались, или же в пилотном проекте они использовались удовлетворительно, однако опыт показал, что дальнейшие вложения в средства не гарантируют успеха.
Возможны четыре категории результатов и соответствующих действий:
1) Пилотный проект потерпел неудачу, и его анализ показал неадекватность ожиданий организации. В этом случае организация может пересмотреть результаты проекта в контексте более реалистичных ожиданий.
2) Пилотный проект потерпел неудачу, и его анализ показал, что выбранные средства не удовлетворяют потребности организации. В этом случае организация может принять решение не внедрять данные средства, однако при этом также пересмотреть свои потребности и подход к оценке и выбору CASE-средств.
3) Пилотный проект потерпел неудачу, и его анализ показал наличие таких проблем, как неудачный выбор пилотного проекта, неадекватное обучение и недостаток ресурсов. В этом случае может оказаться достаточно сложно принять решение о том, следует ли вновь выполнить пилотный проект, продолжить работу по внедрению или отказаться от CASE-средств. Однако, независимо от принятого решения, процесс внедрения нуждается в пересмотре и повышенном внимании.
4) Пилотный проект завершился успешно, и признано целесообразным внедрять CASE-средства в некоторых подразделениях или, возможно, во всей организации в целом. В этом случае следующим шагом является определение наиболее подходящего масштаба внедрения.
6. Особенности пилотного проекта. Очень важно провести анализ пилотного проекта с тем, чтобы определить его элементы, являющиеся критическими для успеха, и определить степень отражения этими элементами деятельности организации в целом. Например, если в пилотном проекте участвуют самые лучшие программисты организации, он может закончиться успешно даже вопреки использованию CASE-средств, а не благодаря им. С другой стороны, CASE-средства могут быть применены для разработки приложения, для которого они явно не подходят по своим характеристикам. Тем не менее, такое использование могло бы указать на область наиболее рационального применения средств в данной организации.
Важнейшие характеристики пилотного проекта, не являющиеся представительными для организации в целом, могут включать следующие:
- Процессы в пилотном проекте в чем-либо отличаются от процессов во всей организации.
- Квалификация группы пилотного проекта не отражает квалификацию остальных специалистов организации.
- Ресурсы, выделенные на выполнение проекта, отличаются от тех, которые выделяются для обычных проектов.
- Предметная область или масштаб проекта не соответствуют другим проектам.
7. Выгода от использования CASE-средств. Пилотный проект следует сопоставить с деятельностью организации в целом с тем, чтобы определить наиболее существенное сходство и отличие. Например, если наиболее заинтересованные и квалифицированные участники проекта столкнулись с серьезными трудностями в освоении средств, то менее заинтересованным и квалифицированным программистам из других подразделений потребуется существенно большее обучение.
Пилотный проект может также показать, что средства целесообразно использовать для некоторых классов проектов и нецелесообразно для других. Например, средство формальной верификации может подходить для жизненно важных приложений и не подходить для менее критических приложений.
Перед разработкой плана перехода организация должна оценить ожидаемый эффект для различных подразделений или классов проектов. При этом следует учитывать, что некоторые подразделения могут не обладать необходимой квалификацией или ресурсами для использования CASE-средств.
8. Принятие решения о внедрении. Возможным решением должно быть одно из следующих:
* Внедрить средство. В этом случае рекомендуемый масштаб внедрения должен быть определен в терминах структурных подразделений и предметной области.
* Выполнить дополнительный пилотный проект. Такой вариант должен рассматриваться только в том случае, если остались конкретные неразрешенные вопросы относительно внедрения CASE-средства в организации. Новый пилотный проект должен быть таким, чтобы ответить на эти вопросы.
* Отказаться от средства. В этом случае причины отказа от конкретного средства должны быть определены в терминах потребностей организации или критериев, которые остались неудовлетворенными. Перед тем, как продолжить деятельность по внедрению CASE-средств, потребности организации должны быть пересмотрены на предмет своей обоснованности.
* Отказаться от использования CASE-средств вообще. Пилотный проект может показать, что организация либо не готова к внедрению CASE-средств, либо автоматизация данного аспекта процесса создания и сопровождения ПО не дает никакого эффекта для организации. В этом случае причины отказа от CASE-средств должны быть также определены в терминах потребностей организации или критериев, которые остались неудовлетворенными. При этом необходимо понимать отличие этого варианта от предыдущего, связанного с недостатками конкретного средства.
Результатом данного этапа является документ, в котором обсуждаются результаты пилотного проекта и детализируются решения по внедрению.
53. Нормативно - правовая документация, регулирующая проектирование информационных систем.
Стандарты Единой системы программной документации (ЕСПД)
Основу отечественной нормативной базы в области документирования ПС составляет комплекс стандартов Единой системы программной документации (ЕСПД). Основная и большая часть комплекса ЕСПД была разработана в 70-е и 80-е годы. Сейчас этот комплекс представляет собой систему межгосударственных стандартов стран СНГ (ГОСТ), действующих на территории Российской Федерации на основе межгосударственного соглашения по стандартизации.
Стандарты ЕСПД в основном охватывают ту часть документации, которая создается в процессе разработки ПС, и связаны, по большей части, с документированием функциональных характеристик ПС.
Стандарты ЕСПД носят рекомендательный характер. Это относится и ко всем другим стандартам в области ПС, поскольку в соответствии с Законом РФ «О стандартизации» эти стандарты становятся обязательными на контрактной основе —при ссылке на них в договоре на разработку ПС. На сегодня большая часть стандартов ЕСПД морально устарела. К числу основных недостатков ЕСПД можно отнести:
ориентацию на единственную, «каскадную» модель жизненного цикла (ЖЦ) ПС;
отсутствие четких рекомендаций по документированию характеристик качества ПС;
отсутствие системной увязки с другими действующими отечественными системами стандартов по ЖЦ и документированию продукции в целом, например, СРПП и ЕСКД;
нечетко выраженный подход к документированию ПС как товарной продукции;
отсутствие рекомендаций по самодокументированию ПС, например, в виде экранных меню и средств оперативной помощи пользователю;
отсутствие рекомендаций по составу, содержанию и оформлению перспективных документов на ПС, согласованных с рекомендациями международных и региональных стандартов.
ЕСПД нуждается в полном пересмотре на основе стандарта ИСО/МЭК12207-95 на процессы жизненного цикла ПС. Тем не менее, до пересмотра всего комплекса, многие стандарты могут с пользой применяться в практике документирования ПС. Это основано на следующем:
стандарты ЕСПД вносят упорядочение в процесс документирования ПС;
предусмотренный стандартами ЕСПД состав программных документов не абсолютно «жесткий» и позволяет вносить в комплект документации на ПС дополнительные виды программных документов (ПД), необходимых в конкретных проектах, и исключать многие ПД;
* стандарты ЕСПД позволяют мобильно изменять структуры и содержание установленных видов ПД, исходя из требований заказчика и пользователя. При этом стиль применения стандартов может соответствовать современному общему стилю адаптации стандартов к специфике проекта:
заказчик и руководитель проекта выбирают уместное в проекте подмножество стандартов и ПД, дополняют выбранные ПД нужными разделами и исключают ненужные, привязывают создание этих документов к той схеме ЖЦ, которая используется в проекте.
Наряду с комплексом ЕСПД официальная нормативная база РФ в области документирования ПС и в смежных областях включает ряд перспективных стандартов (отечественного, межгосударственного и международного уровней).
Из всех 28 стандартов ЕСПД чаще могут использоваться на практике следующие.
ГОСТ 19.201-78 ЕСПД. Техническое задание. Требование к содержанию и оформлению. Техническое задание (ТЗ) содержит совокупность требований к ПС и может использоваться как критерий проверки и приемки разработанной программы. Поэтому достаточно полно составленное (с учетом возможности внесения дополнительных разделов) и принятое заказчиком и разработчиком, ТЗ является одним из основополагающих документов проекта ПС.
ГОСТ 19.402-78 ЕСПД. Описание программы. Стандарт ориентирован на документирование результирующего продукта разработки.
Несмотря на возможность применения не всех, а только отдельных стандартов комплекса, использованная в них терминология, способы обозначения и другие детали могут потребовать опоры на такие общие стандарты, как ГОСТ 19.101-77 ЕСПД. Виды программ и программных документов, и другие.
Состав документа «Описание программы» в своей содержательной части может дополняться разделами и пунктами, почерпнутыми из стандартов для других описательных документов и руководств: ГОСТ 19.404-79 ЕСПД. Пояснительная записка, ГОСТ 19.502-78 ЕСПД. Описание применения, ГОСТ 19.503-79 ЕСПД. Руководство системного программиста, ГОСТ 19.504-79 ЕСПД. Руководство программиста, ГОСТ 19.505-79 ЕСПД. Руководство оператора.
Есть также группа стандартов, определяющая требования к фиксации всего набора программ и ПД, которые оформляются для передачи ПС. Они порождают лаконичные документы учетного характера и могут быть полезны для упорядочения всего хозяйства программ и ПД. Есть также стандарты, определяющие правила ведения документов ПС.
ГОСТ 19.301 -79 ЕСПД. Программа и методика испытаний. Важный стандарт, который (в адаптированном виде) может использоваться для разработки документов планирования и проведения испытательных работ по оценке готовности и качества ПС.
Это ГОСТ 19.701-90 ЕСПД. Схемы алгоритмов, программ, данных и систем. Обозначения условные графические и правила выполнения. Последний по году принятия стандарт ЕСПД. Устанавливает правила выполнения схем, используемых для отображения различных видов задач обработки данных и средств их решения и полностью соответствует стандарту ИСО 5807:1985.
Наряду с ЕСПД на межгосударственном уровне в СНГ действуют два стандарта, также относящихся к документированию ПС
ГОСТ 19781-90 Обеспечение систем обработки информации программное. Термины и определения. Разработан взамен ГОСТ 19781-83 и ГОСТ 19.004-80 и устанавливает термины и определения понятий в области программного обеспечения (ПО) систем обработки данных (СОД), применяемые во всех видах документации и литературы, входящих в сферу работ по стандартизации или использующих результаты этих работ.
ГОСТ 28388-89 Системы обработки информации. Документы на магнитных носителях данных. Порядок выполнения и обращения. Распространяется не только на программные, но и на конструкторские, технологические и другие проектные документы, выполняемые на магнитных носителях.
Стандарты РФ (ГОСТ Р) на документирование ПС
Помимо действующих стандартов ЕСПД и СОИ (Системы обработки информации) в РФ действует ряд стандартов в части документирования ПС, разработанных на основе прямого применения международных стандартов ИСО.
ГОСТ Р ИСО/МЭК 9294-93 Информационная технология. Руководство по управлению документированием программного обеспечения. Стандарт полностью соответствует международному стандарту ИСО/МЭК ТО 9294:1990 и устанавпивает рекомендации по эффективному управлению документированием ПС для руководителей, отвечающих за их создание. Целью стандарта является оказание помощи в определении стратегии документирования ПС; выборе стандартов по документированию; выборе процедур документирования; определении необходимых ресурсов; составлении планов документирования.
ГОСТ Р ИСО/МЭК 9126-93 Информационная технология. Оценка программной продукции. Характеристики качества и руководства по их применению. Стандарт полностью соответствует международному стандарту ИСО/МЭК 9126:1991. В его контексте под характеристикой качества понимается «набор свойств (атрибутов) программной продукции, по которым ее качество описывается и оценивается». Стандарт определяет шесть комплексных характеристик, которые с минимальным дублированием описывают качество ПС (ПО, программной продукции): функциональные возможности; надежность; практичность; эффективность; сопровождаемость; мобильность. Эти характеристики образуют основу для дальнейшего уточнения и описания качества ПС.
ГОСТ Р ИСО 9127-94 Системы обработки информации. Документация пользователя и информация на упаковке для потребительских программных пакетов. Стандарт полностью соответствует международному стандарту ИСО 9127:1989. В контексте настоящего стандарта под потребитепьским программным пакетом (ПП) понимается «программная продукция, спроектированная и продаваемая для выпопнения опредепенных функций; программа и соответствующая ей документация, упакованные для продажи как единое целое». Под документацией пользователя понимается документация, которая обеспечивает конечного пользователя информацией по установке и эксплуатации ПП. Под информацией на упаковке понимают информацию, воспроизводимую на внешней упаковке ПП. Ее целью является предоставление потенциальным покупателям первичных сведений о ПП.
ГОСТ Р ИСО/МЭК 8631-94 Информационная технология. Программные конструктивы и условные обозначения для их представления. Описывает представление процедурных алгоритмов.
техническое задание.
критерии
Отладка.
Исполнение.
54. Объектно - ориентированное проектирование программного обеспечения на предпроектной стадии (с применением диаграмм использования и классов).
Предпроектное обследование [predesign inspection ]- Сбор и обработка сведений об организации и особенностях функционирования объекта автоматизации, включая данных о его взаимодействии с внешней средой и другими объектами, а также выполнение системного анализа, разработка технико-экономического обоснования целесообразности автоматизации и выработка общих требований на разработку автоматизированной системы. Содержание работ при предпроектном обследовании объекта автоматизации соответствует стадии “Формирование требований к АС” ГОСТ 34.601-90, этапы: “ Обследование объекта и обоснование необходимости создания АС”, “Формирование требований пользователя к АС”, “Оформление отчёта о выполненной работе и заявки на разработку АС - тактико-технического задания”
Диаграммы Вариантов Использования отображают взаимодействие между вариантами использования, представляющими функции системы, и действующими лицами, представляющими людей или системы, получающие или передающие информацию в данную систему.
Рис.1 Диаграмма Вариантов Использования для ATM
Ha диаграмме представлено взаимодействие между вариантами использования и действующими лицами. Она отражает требования к системе с точки зрения пользователя. Таким образом, варианты использования — это функции, выполняемые системой, а действующие лица — это заинтересованные лица (stakeholders) по отношению к создаваемой системе. Диаграммы показывают, какие действующие лица инициируют варианты использования. Из них также видно, когда действующее лицо получает информацию от варианта использования. В сущности, диаграмма Вариантов Использования может иллюстрировать требования к системе. В нашем примере клиент банка инициирует различные варианты использования: Снять деньги со счета, Перевести деньги, Положить деньги на счет, Показать баланс, Изменить идентификационный номер, Произвести оплату. Банковский служащий может инициировать вариант использования "Изменить идентификационный номер". От варианта использования "Произвести оплату" идет стрелка к Кредитной системе. Действующими лицами могут быть и внешние системы, в данном случае Кредитная система показана именно как действующее лицо — она является внешней для системы ATM. Стрелка, направленная от варианта использования к действующему лицу, показывает, что вариант использования предоставляет некоторую информацию действующему лицу. В данном случае вариант использования "Произвести оплату" предоставляет Кредитной системе информацию об оплате по кредитной карточке.
Из диаграмм Вариантов Использования можно получить довольно много информации о системе. Этот тип диаграмм описывает общую функциональность системы. Пользователи, менеджеры проектов, аналитики, разработчики, специалисты по контролю качества и все, кого интересует система в целом, могут, изучая диаграммы Вариантов Использования, понять, что система должна делать.
Диаграммы Классов отражают взаимодействие между классами системы. Классы можно рассматривать как типы объектов . Например, счет клиента — это объект. Типом такого объекта можно считать счет вообще, т.е. "Счет" (Account) — это класс. Классы содержат данные и поведение (действия), влияющее на эти данные. Так, класс Account содержит идентификационный номер клиента и проверяющие его действия. На диаграмме Классов класс создается для каждого типа объектов из диаграмм Последовательности или Кооперативных диаграмм. Диаграмма Классов для варианта использования "Снять деньги" показана на рис.
Рис.4 Диаграмма Классов для варианта использования "Снять деньги" системы ATM
На диаграмме показаны связи между классами, реализующими вариант использования "Снять деньги". В этом процессе задействованы четыре класса: Card Reader (устройство для чтения карточек), Account (счет), ATM.Screen (экран ATM) и Cash Dispenser (кассовый аппарат). Каждый класс на диаграмме Классов изображается в виде прямоугольника, разделенного на три части. В первой части указывается имя класса, во второй — его атрибуты. Атрибут — это некоторая информация, характеризующая класс. Например, класс Account (счет) имеет три атрибута: Account Number (номер счета), PIN (идентификационный номер) и Balance (баланс). В последней части содержатся операции класса, отражающие его поведение (действия, выполняемые классом). Для класса Account определены четыре операции: Open (открыть), Withdraw Funds (снять деньги), Deduct Funds (вычесть сумму денег из счета) и Verify Funds (проверить наличие денег).
Связывающие классы линии показывают взаимодействие между классами. Так, класс Account (счет) связан с классом ATM Screen (экран ATM), потому что они непосредственно взаимодействуют друг с другом. Класс Card Reader (устройство для чтения карточек) не связан с классом Cash Dispenser (кассовый аппарат), поскольку они не общаются друг с другом непосредственно. Обратите внимание, что слева от некоторых атрибутов и операций имеются маленькие зн&чки в виде висячего замка. Они указывают, что атрибут или операция класса закрыта (private). Доступ к закрытым атрибутам или операциям возможен только из содержащего их класса. Account Number, PIN и Balance — закрытые атрибуты класса Account. Кроме того, закрытыми являются операции Deduct Funds и Verify Funds.
Разработчики используют диаграммы Классов для реального создания классов. Такие инструменты, как Rose, генерируют основу кода классов, которую программисты заполняют деталями на выбранном ими языке. С помощью этих диаграмм аналитики могут показать детали системы, а архитекторы — понять ее проект. Если, например, какой-либо класс несет слишком большую функциональную нагрузку, это будет видно на диаграмме классов, и архитектор сможет перераспределить ее между другими классами. С помощью диаграммы можно также выявить случаи, когда между сообщающимися классами не определено никаких связей. Диаграммы Классов следует создавать, чтобы показать взаимодействующие классы в каждом варианте использования. Можно строить также более общие диаграммы, охватывающие все системы или подсистемы.
55. Объектно - ориентированное проектирование программного обеспечения на этапе технического проектирования (с использованием диаграмм взаимодействия и состояния).
Техническое проектирование [preliminary design ] – Стадия работ по проектированию АС, которая включает:
· Разработку проектных решений по системе и её частям;
· Разработку документации на АС и её части;
· Разработку и оформление документации на поставку изделий для комплектования АС и/или технических требований (технических заданий) на их разработку;
· Разработка заданий на проектирование в смежных частях проекта объекта автоматизации.
Итоговым документом данной стадии проектирования является технический проект, содержащий помимо перечисленных материалов принципиальные электрические схемы и конструкторскую документацию объекта разработки и составных его частей, перечень выбранных готовых средств программного и технического обеспечения (в том числе - ЭВМ, операционной системы , прикладных программ и т.д.), а также алгоритмы решения задач для разработки новых средств программного обеспечения и др.
Диаграммы взаимодействия (interaction diagrams) описывают поведение взаимодействующих групп объектов.
Как правило, диаграмма взаимодействия охватывает поведение объектов в рамках только одного варианта использования. На такой диаграмме отображается ряд объектов и те сообщения, которыми они обмениваются между собой.
Сообщение (message) – это средство, с помощью которого объект-отправитель запрашивает у объекта получателя выполнение одной из его операций.
Информационное (informative) сообщение – это сообщение, снабжающее объект-получатель некоторой информацией для обновления его состояния.
Сообщение-запрос (interrogative) – это сообщение, запрашивающее выдачу некоторой информации об объекте-получателе.
Императивное (imperative) сообщение – это сообщение, запрашивающее у объекта-получателя выполнение некоторых действий.
Существует два вида диаграмм взаимодействия: диаграммы последовательности (sequence diagrams) и кооперативные диаграммы (collaboration diagrams).
Диаграммы Состояний предназначены для моделирования различных состояний, в которых может находиться объект. В то время как диаграмма Классов показывает статическую картину классов и их связей, диаграммы Состояний применяются при описании динамики поведения системы.
Диаграммы Состояний отображают поведение объекта. Так, банковский счет может иметь несколько различных состояний. Он может быть открыт, закрыт, или может быть превышен кредит по нему. Поведение счета меняется в зависимости от состояния, в котором он находится.
На диаграмме Состояний показывают именно эту информацию.
На рис.приведен пример диаграммы Состояний для банковского счета.
На данной диаграмме показаны возможные состояния счета, а также процесс перехода счета из одного состояния в другое. Например, если клиент требует закрыть открытый счет, последний переходит в состояние "Закрыт". Требование клиента называется событием (event), именно события вызывают переход из одного состояния в другое.
Рис.5 Диаграмма Состояний для класса Account
Когда клиент снимает деньги с открытого счета, счет может перейти в состояние "Превышение кредита". Это происходит, только если баланс по счету меньше нуля, что отражено условием [отрицательный баланс] на нашей диаграмме. Заключенное в квадратные скобки условие (guard condition) определяет, когда может или не может произойти переход из одного состояния в другое.
Ha диаграмме имеются два специальных состояния — начальное (start) и конечное (stop). Начальное состояние выделяется черной точкой, оно соответствует состоянию объекта в момент его создания. Конечное состояние обозначается черной точкой в белом кружке, оно соответствует состоянию объекта непосредственно перед его уничтожением. На диаграмме Состояний может быть одно и только одно начальное состояние. В то же время может быть столько конечных состояний, сколько вам нужно, или их может не быть вообще.
Когда объект находится в каком-то конкретном состоянии, могут выполняться те или иные процессы, В нашем примере при превышении кредита клиенту посылается соответствующее сообщение. Процессы, происходящие, когда объект находится в определенном состоянии, называются действиями (actions).
Диаграммы Состояний не нужно создавать для каждого класса, они применяются только в очень сложных случаях. Если объект класса может существовать в нескольких состояниях и в каждом из них ведет себя по-разному, для него, вероятно, потребуется такая диаграмма. Однако во многих проектах они вообще не используются. Если же диаграммы Состояний все-таки были построены, разработчики могут применять их при создании классов.
Диаграммы Состояний необходимы в основном для документирования. При генерации в Rose кода на основе вашей модели содержащаяся в них информация не преобразуется ни в какой код. Тем не менее для работающих в режиме реального времени систем доступны различные расширения Rose, которые позволяют генерировать исполняемый код, основываясь на диаграммах Состояний.
56. Объектно - ориентированное проектирование программного обеспечения на этапе рабочего проектирования (с использованием диаграмм деятельности и компонентов).
Техническое проектирование [preliminary design ] – Стадия работ по проектированию АС, которая включает:
· Разработку проектных решений по системе и её частям;
· Разработку документации на АС и её части;
· Разработку и оформление документации на поставку изделий для комплектования АС и/или технических требований (технических заданий) на их разработку;
· Разработка заданий на проектирование в смежных частях проекта объекта автоматизации.
Итоговым документом данной стадии проектирования является технический проект, содержащий помимо перечисленных материалов принципиальные электрические схемы и конструкторскую документацию объекта разработки и составных его частей, перечень выбранных готовых средств программного и технического обеспечения (в том числе - ЭВМ, операционной системы , прикладных программ и т.д.), а также алгоритмы решения задач для разработки новых средств программного обеспечения и др.
Диаграммы Деятельности иллюстрируют функциональные потоки в системе и могут использоваться в моделировании бизнес-процессов для демонстрации рабочих потоков внутри организации. Они также могут служить для показа потока событий в вариантах использования с целью анализа требований к системе. На этих диаграммах определяются начальные и конечные точки потоков, действия в рамках этих рабочих потоков, а также последовательность этих действий. Деятельность — это задача, исполняемая в рабочем потоке.
Структура диаграммы Деятельности похожа на диаграмму Состояний (см. ниже). Рассмотрим пример диаграммы Деятельности (см. рис. 1.10), где деятельности показаны скругленными прямоугольниками. Это шаги, предпринимаемые в рамках определенных рабочих потоков. Квадратами отмечены объекты, влияющие на исполнение рабочего потока. Указаны исходное (начальное) и конечное состояния рабочего потока. Ромбами отмечены точки, в которых принимаются решения.
Пунктирные линии помогают проследить поток объектов на диаграмме. Этот поток описывает используемые и создаваемые во время, деятельности объекты, а также изменение состояний этих объектов во время исполнения рабочего потока. Непрерывные линии показывают взаимосвязи между деятель-ностями, т.е. транзакции. При необходимости можно детализировать
транзакции, введя условия для начала/отсутствия транзакции, а также указать действия, предпринимаемые в рамках определенной транзакции.
Диаграммы Деятельности могут разделяться вертикальными линиями — "плавательными дорожками" (swimline). В пределах каждой такой дорожки действует определенная роль рабочего потока. Анализируя активности в пределах одной дорожки, можно определить ответственность роли. Отслеживание транзакций между активностями на разных дорожках позволит определить коммуникации между ролями. Все это крайне важно для понимания и моделирования бизнес-процессов.
Необязательно создавать диаграммы Деятельности для всех рабочих потоков, хотя они являются полезным инструментом для работы в больших и сложных рабочих потоках.
Диаграммы Компонентов показывают, как выглядит модель на физическом уровне. На ней изображаются компоненты программного обеспечения вашей системы и связи между ними. При этом выделяют два типа компонентов: исполняемые компоненты и библиотеки кода.
В среде Rose каждый класс модели преобразуется в компонент исходного кода. Созданные компоненты сразу добавляются к диаграмме Компонентов. Затем указываются зависимости между отдельными компонентами, соответствующие зависимостям на этапе компиляции или выполнения программы.
На рис. изображена одна из диаграмм Компонентов для системы ATM.
Рис.6 Диаграмма Компонентов для клиента ATM
На этой диаграмме показаны компоненты клиента системы ATM. В данном случае команда разработчиков решила строить систему с помощью языка C++. У каждого класса имеется свой собственный заголовочный файл и файл с расширением . СРР, так что каждый класс преобразуется в свои собственные компоненты на диаграмме. Например, класс ATM Screen преобразуется в два компонента ATM Screen диаграммы. Вместе эти компоненты представляют тело и заголовок класса ATM Screen. Выделенный темным компонент называется спецификацией пакета (package specification) и соответствует файлу тела класса ATM Screen на языке C++ (файл с расширением .СРР). Невыделенный компонент также называется спецификацией пакета, но соответствует заголовочному файлу класса языка C++ (файл с расширением . Н). Компонент АТМ.ехе является спецификацией задачи и представляет поток обработки информации (thread of processing). В данном случае поток обработки — это исполняемая программа.
Компоненты соединены штриховой линией, отображающей зависимости между ними. Например, класс Card Reader зависит от класса ATM Screen. Следовательно, для того чтобы класс Card Reader мог быть скомпилирован, класс ATM Screen должен уже существовать. После компиляции всех классов может быть создан исполняемый файл ATMClient.exe.
Пример ATM содержит два потока обработки, и таким образом получаются два исполняемых файла. Один из них — это клиент ATM, он содержит компоненты Cash Dispenser, Card Reader и ATM Screen. Второй файл — сервер ATM, включающий в себя компонент Account. Диаграмма Компонентов для сервера ATM показана на рис.
Рис.7 Диаграмма Компонентов для сервера ATM
Как видно из примера, у системы может быть несколько диаграмм Компонентов в зависимости от числа подсистем или исполняемых файлов. Каждая подсистема является пакетом компонентов. В общем случае, пакеты — это совокупности компонентов. В примере ATM используются два пакета: клиент ATM и сервер ATM.
Диаграммы Компонентов применяются теми участниками проекта, кто отвечает за компиляцию системы. Диаграмма Компонентов дает представление о том, в каком порядке надо компилировать компоненты, а также какие исполняемые компоненты будут созданы системой. Диаграмма показывает соответствие классов реализованным компонентам. Итак, она нужна там, где начинается генерация кода.
57. Объектно - ориентированное проектирование на стадии реализации программного обеспечения (кодирование и использование диаграмм размещения).
Проектирование программного обеспечения - этап жизненного цикла программного обеспечения, во время которого исследуется структура и взаимосвязи элементов разрабатываемой системы. Результатом этого этапа является проект, содержащий достаточное количество информации для реализации системы. Различают проектирование архитектуры системы и детальное проектирование программных модулей.
Объектно-ориентированное проектирование - методология проектирования, соединяющая в себе процесс объектной декомпозиции и приемы представления логической, физической, а также статической и динамической моделей проектируемой системы.
Диаграммы Размещения
Диаграммы Размещения показывают физическое расположение различных компонентов системы в сети. В нашем примере система ATM состоит из большого количества подсистем, выполняемых на отдельных физических устройствах, или узлах (node). Диаграмма Размещения для системы ATM представлена на рис.
Рис. Диаграмма Размещения для системы ATM
Из данной диаграммы можно узнать о физическом размещении системы. Клиентские программы ATM будут работать в нескольких местах на различных сайтах. Через закрытые сети будет осуществляться сообщение клиентов с региональным сервером ATM. На нем будет работать программное обеспечение сервера ATM. В свою очередь, посредством локальной сети региональный сервер будет взаимодействовать с сервером банковской базы данных, работающим под управлением Oracle. Наконец с региональным сервером ATM соединен принтер.
Итак, данная диаграмма показывает физическое расположение системы. Например, наша система ATM соответствует трехуровневой архитектуре, когда на первом уровне размещается база данных, на втором — региональный сервер, а на третьем — клиент.
Диаграмма Размещения используется менеджером проекта, пользователями, архитектором системы и эксплуатационным персоналом для выяснения физического размещения системы и расположения ее отдельных подсистем. Менеджер проекта объяснит пользователям, как будет выглядеть готовый продукт. Эксплуатационный персонал сможет планировать работу по установке системы.
Приведенные диаграммы описывают систему с различных точек зрения.Однако прежде чем углубиться в детали Rose, стоит обсудить еще один аспект разработки программного обеспечения — сам процесс. Хотя эта книга и не является учебником по методологии или по организации процесса, мы хотели бы познакомить вас с процессом разработки приложений, использующим описанные выше диаграммы UML.
58. Сравнительный анализ структурного и объектно-ориентированного подходов проектирования программного обеспечения (различие, особенности, достоинства и недостатки).
В настоящее время используется большое количество подходов, которые позволяют, так или иначе, создавать модели бизнес-процессов предприятий. Как бы то ни было, их использование гарантирует стандартизированный подход к описанию, позволяет накапливать опыт и практические навыки и на протяжении длительного времени обеспечивать понимание созданных моделей другими сотрудниками.
Важнейшими из подходов являются структурный (функциональный), объектно-ориентированный, отдельно выделяется методология ARIS.
1. Структурный (функциональный) подход
Сущность подхода
Сущность структурного подхода к разработке ИС заключается в ее декомпозиции (разбиении) на автоматизируемые функции: система разбивается на функциональные подсистемы, которые в свою очередь делятся на подфункции, подразделяемые на задачи и так далее.
В качестве средств структурного анализа и проектирования, наиболее распространенны следующие нотации:
· SADT (Structured Analysis and Design Technique). Для новых систем SADT (IDEF0) применяется для определения требований (функций) для разработки системы, реализующей выделенные функции. Для уже существующих - IDEF0 может быть использована для анализа функций, выполняемых системой. Модель в нотации IDEF0 представляет собой совокупность иерархически упорядоченных и взаимосвязанных диаграмм (рис.1). Вершина этой древовидной структуры, представляющая собой самое общее описание системы. После описания системы в целом проводится разбиение ее на крупные фрагменты (функциональная декомпозиция).
Рис.1 Модель в нотации IDEF0
· DFD (Data Flow Diagrams) диаграммы потоков данных. Диаграммы DFD обычно строятся для наглядного изображения текущей работы системы документооборота организации. Как правило, диаграммы DFD используют в качестве дополнения модели бизнес-процессов, выполненной в IDEF0.
· IDEF3. Методология моделирования IDEF3 позволяет описать процессы, фокусируя внимание на течении этих процессов, позволяет рассмотреть конкретный процесс с учетом последовательности выполняемых операций.
· ER (Entity-Relationship Diagrams) диаграммы "сущность-связь". Методология описания данных (IDEF1X).
Выводы по практическому использованию
Общие выводы: применение универсальных графических языков моделирования IDEF0, IDEF3 и DFD обеспечивает логическую целостность и полноту описания, необходимую для достижения точных и непротиворечивых результатов на этапе анализа.
Выводы по диаграммам:
Наиболее существенное различие между разновидностями структурного анализа заключается в их функциональности.
Модели SADT (IDEF0) наиболее удобны при построении функциональных моделей. Они наглядно отражают функциональную структуру объекта: производимые действия, связи между этими действиями. Таким образом, четко прослеживается логика и взаимодействие процессов организации. Главным достоинством нотации является возможность получить полную информацию о каждой работе, благодаря ее жестко регламентированной структуре. С ее помощью можно выявить все недостатки, касающиеся как самого процесса, так и то, с помощью чего он реализуется: дублирование функций, отсутствие механизмов, регламентирующих данный процесс, отсутствие контрольных переходов и т.д.
DFD позволяет проанализировать информационное пространство системы и используется для описания документооборота и обработки информации. Поэтому диаграммы DFD применяют в качестве дополнения модели бизнес-процессов, выполненной в IDEF0.
IDEF3 хорошо приспособлен для сбора данных, требующихся для проведения анализа системы с точки зрения рассогласования/согласования процессов во времени.
Нельзя говорить о достоинствах и недостатках отдельных нотаций. Возможны ситуации, при которых анализ IDEF0 не обнаружил недостатков в деятельности организации с точки зрения технологического или производственного процесса, однако это не является гарантией отсутствия ошибок. Поэтому в следующем этапе анализа необходимо перейти к исследованию информационных потоков с помощью DFD и затем объединить эти пространства с помощью последней нотации - IDEF3.
Что касается IDEF1X, наряду со многими достоинствами, существенным недостатком является невозможность адекватно и полно описать предметную область. Поэтому, код клиентского приложения, генерируемый в дальнейшем на основе информации о структуре БД, не позволяет построить эффективное приложение со сложной бизнес – логикой. Это вызвано тем, что данные для хранения в БД необходимо представить в таблицах, к структуре которой предъявляются требования нормализации.
2. Объектно-ориентированный подход
Сущность подхода
Принципиальное различие между структурным и объектно-ориентированным (ОО) подходом заключается в способе декомпозиции системы (рис.2). ОО подход использует объектную декомпозицию, при этом статическая структура системы описывается в терминах объектов и связей между ними, а поведение системы описывается в терминах обмена сообщений между объектами
Рис. 2 Сравнительный анализ объектно-ориентированной и функционально-ориентированной декомпозиций
В 90-е годы появилось большое количество различных методологий с собственными наборами нотаций. Самые популярные – ОМТ (по Рамбо), Booch (по Бучу) и OOSE (по Джекобсону).
UML (UnifiedModelingLanguage) –стандартная нотация визуального моделирования программных систем, принятая консорциумом Object Managing Group (OMG) в 1997г.
UML предоставляет средства для создания визуальных моделей, которые единообразно понимаются всеми разработчиками, вовлеченными в проект, и являются средством коммуникации в рамках проекта. Диаграмма в UML - это графическое представление набора элементов. Диаграммы рисуют для визуализации системы с разных точек зрения. При визуальном моделировании на UML используются восемь видов диаграмм, каждая из которых может содержать элементы определенного типа.