Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ит - 8,10,11,15,16.doc
Скачиваний:
52
Добавлен:
22.02.2016
Размер:
113.66 Кб
Скачать

11. Авторизация, разграничение доступа к объектам ос. Краткий обзор современных операционных систем.

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

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

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

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

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

Краткий обзор современных операционных систем

Поколение операционных систем Windows NT, 2000 являются многопользовательскими системами, надежно защищающими файлы различных пользователей на жестком диске (шифрование данных все же не производится и файлы можно без проблем прочитать, загрузившись с диска другой операционной системы – например, MS-DOS). Данные ОС активно используют возможности защищенного режима процессоров Intel, и могут надежно защитить данные и код процесса от других программ, если только он сам не захочет предоставлять к ним дополнительного доступа извне процесса.

Операционная система Windows XP - это современная многозадачная многопользовательская 32 - разрядная ОС с графическим интерфейсом пользователя. В состав Windows XP включен специальный механизм - быстрое переключение сеансов (Fast User Switching), с применением которого можно быстро, без регистрации подключать к работе с операционной системой новых пользователей и групп пользователей. Появилась также возможность переключаться между несколькими сеансами работы без необходимости сохранять данные или перезагружать систему. При этом каждый из пользователей может самостоятельно изменять настройки Windows и работать с собственными файлами и документами, создавать, изменять и сохранять какие-либо данные независимо от других пользователей Windows XP.

Windows Vista— операционная система семейства Microsoft Windows NT, предназначенная для пользовательских персональных компьютеров. Содержит обновленный графический пользовательский интерфейс, улучшенные поисковые возможности, новые мультимедийные инструменты записи, и полностью перепроектировал организацию работу сети, аудио, печати, и подсистемы дисплея. Vista также стремится увеличивать уровень связи между устройствами в домашней сети, используя технологию соединения равноправных узлов ЛВС, облегчая распределение файлов и цифровой информации между компьютерами и устройствами.

Windows 7— пользовательская операционная система семейства Windows NT, следующая по времени выхода за Windows Vista и предшествующая Windows 8. Windows7 поддерживает псевдонимы для папок на внутреннем уровне. Дополнительным преимуществом Windows7 можно считать более тесную интеграцию с производителями драйверов. В Windows7 была также улучшена совместимость со старыми приложениями, некоторые из которых было невозможно запустить на Windows Vista. Сетевая технологияBranch Cacheпозволяет кешировать содержимое интернет-трафика. Если пользователю в локальной сети потребуется файл, который уже был загружен кем-то из пользователей его сети, — он сможет получить его из локального кэш-хранилища, а не использовать канал с ограниченной пропускной способностью.

ОС UNIX изначально разрабатывалась как сетевая и многопользовательская, а потому сразу же содержала в себе средства информационной безопасности. Практически все широко распространенные клоны UNIX прошли долгий путь разработки и по мере модификации учли все открытые за это время способы атак. Областью применения ОС UNIX остаются крупные корпоративные сети со стеком протоколов TCP/IP. Отличительные свойства UNIX — высокая надежность, возможность легкого масштабирования сети.

Достаточно себя зарекомендовали: LINUX (S.U.S.E.), OpenBSD, FreeBSD, Sun Solaris. Основные ошибки в этих системах относятся уже не к ядру, а к системным и прикладным утилитам. Наличие ошибок в них часто приводит к потере всего запаса прочности системы.

Операционная система Novell Netware - сетевая операционная система и набор сетевых протоколов, которые используются в этой системе для взаимодействия с компьютерами-клиентами, подключёнными к сети. Состоит из серверной части и оболочек Shell, размещаемых в клиентских узлах.

В настоящее время выбор среди ОС происходит преимущественно между тремя основными операционными системами — UNIX, Windows NT, Novell Netware.

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

Программирование— процесс создания компьютерных программ.

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

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

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

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

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

  • перечисление условий, при которых выполняется та или иная операция;

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

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

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

В соответствии с историческими этапами развития технологии программирования выделяется несколько подходов.

Структурный подход- представление задачи в виде иерархии подзадач простейшей структуры. Проектирование осуществлялось "сверху-вниз" и подразумевало реализацию общей идеи, обеспечивая проработку интерфейсов подпрограмм. Одновременно вводились ограничения на конструкции алгоритмов, рекомендовались формальные модели их описания, а также специальный метод проектирования алгоритмов — метод пошаговой детализации. Среди наиболее известных языков этой группы стоит назвать PL/1, ALGOL-68, Pascal, С.

Модульное программированиепредполагает выделение групп подпрограмм, использующих одни и те же глобальные данные, в отдельно компилируемые модули (библиотеки подпрограмм), например, модуль графических ресурсов. Связи между модулями при использовании данной технологии осуществляются через специальный интерфейс, в то время как доступ к реализации модуля (телам подпрограмм и некоторым "внутренним" переменным) запрещен. Эту технологию поддерживают современные версии языков Pascal и С (C++), языки Ада и Modula.

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

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

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

В настоящее время критериями качества программного продукта принято считать:

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

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

легкость применения (характеристики, которые позволяют минимизировать усилия пользователя по подготовке исходных данных, применению программного продукта и оценке полученных результатов, а также вызывать положительные эмоции определенного или подразумеваемого пользователя);

эффективность (отношение уровня услуг, предоставляемых программным продуктом пользователю при заданных условиях, к объему используемых ресурсов);

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

мобильность (способность ПС быть перенесенным из одной среды (окружения) в другую, в частности, с одной ЭВМ на другую).

Важным этапом создания программного продукта является тестирование и отладка.

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

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

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

Отладка = Тестирование + Поиск ошибок + Редактирование

Существуют следующие методы тестирования ПС:

1) Статическое тестирование – ручная проверка программы за столом.

2) Детерминированное тестирование – при различных комбинациях исходных данных.

3) Стохастическое – исходные данные выбираются произвольно, на выходе определяется качественное совпадение результатов или примерная оценка.

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

Целью любого проекта по разработке программного продукта является поставка заказчику программного обеспечения, соответствующего требованиям, которые к нему предъявляются. Качество ПО зависит от вклада всех членов проектной команды: программистов, специалистов по тестированию, бизнес-аналитиков, QA-инженеров и др. Менеджер проекта несет персональную ответственность за успех проекта и, следовательно, за качество созданного в рамках проекта ПО.

The PMBOK Guide (Американский стандарт – «Руководство к своду знаний по управлению проектами») определяет Quality Assurance как "выполнение планируемой, систематической деятельности в области качества для того, чтобы обеспечить применение в проекте всех процессов, необходимых для соответствия требованиям".

Таким образом, работа по обеспечению качества строится по следующей схеме:

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

  • Сбор и анализ требований к ПО (как требований заказчика, так и нормативных и законодательных требований к ПО)

  • Прототипирование

  • Разработка дизайна

  • Кодирование — процесс написания программного кода, скриптов, с целью реализации определённого алгоритма на определённом языке программирования.

  • Различные виды анализа рабочих продуктов (peer review), включая анализ планов проекта.

  • Различные виды тестирования (функциональное, нагрузочное, юнит-тестирование)

  • Приемка готового ПО заказчиком и поставка ПО.

2. Контроль проектного процесса. Проектный процесс строится на базе стандартных процессов компании (таких, как «Менеджмент проекта», «Разработка», «Управление конфигурацией» и т.д.). Стандартные процессы могут быть адаптированы к нуждам конкретного проекта.

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

4. Наиболее опытные QA-Engineer могут принимать участие в проведении официальной оценки соответствия СМК компании требованиям CMMI (набор моделей (методологий) совершенствования процессов в организациях разных размеров и видов деятельности) или в проведении сертификации других компаний на соответствие требованиями ИСО 9001.

Важным этапом создания программного продукта является тестирование и отладка.

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

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

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

Отладка = Тестирование + Поиск ошибок + Редактирование

Основные принципы организации тестирования:

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

2) следует по возможности избегать тестирования программы ее автором, т.к. кроме уже указанной объективной сложности тестирования для программистов здесь присутствует и тот фактор, что обнаружение недостатков в своей деятельности противоречит человеческой психологии (однако отладка программы эффективнее всего выполняется именно автором программы);

3) по тем же соображениям организация - разработчик программного обеспечения не должна “единолично ” его тестировать (должны существовать организации, специализирующиеся на тестировании программных средств);

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

5) необходимо тщательно подбирать тест не только для правильных (предусмотренных) входных данных, но и для неправильных (непредусмотренных);

6) при анализе результатов каждого теста необходимо проверять, не делает ли программа того, что она не должна делать;

7) следует сохранять использованные тесты (для повышения эффективности повторного тестирования программы после ее модификации или установки у заказчика);

8) тестирования не должно планироваться исходя из предположения, что в программе не будут обнаружены ошибки (в частности, следует выделять для тестирования достаточные временные и материальные ресурсы);

9) следует учитывать так называемый “принцип скопления ошибок”: вероятность наличия не обнаруженных ошибок в некоторой части программы прямо пропорциональна числу ошибок, уже обнаруженных в этой части;

10) следует всегда помнить, что тестирование - творческий процесс, а не относиться к нему как к рутинному занятию.

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

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

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