Главная страница
Навигация по странице:

  • Выбор и обоснование языка программирования.

  • Виды ошибок. Основные принципы отладки ПС. Виды ошибок

  • Основные цели и принципы отладки Отладка ПС

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

  • Заповедь 2.

  • Заповедь 4.

  • Советы по организации тестирования

  • Основные принципы организации тестирования ПС Существует 4 этапа тестирования многомодульных ПС

  • Совместное тестирование модулей

  • Виды программных документов.

  • Обеспечение функциональности, надежности и качества ПС. Технологии оценки качества ПС.

  • Конспект лекций по предмету «ПМ.01 РАЗРАБОТКА МОДУЛЕЙ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ДЛЯ КОМПЬЮТЕРНЫХ СИСТЕМ». Конспект лекций по предмету_ «ПМ.01 РАЗРАБОТКА МОДУЛЕЙ ПРОГРАММН. Конспект лекций по предмету ПМ. 01 Разработка модулей программного обеспечения для компьютерных систем


    Скачать 363 Kb.
    НазваниеКонспект лекций по предмету ПМ. 01 Разработка модулей программного обеспечения для компьютерных систем
    АнкорКонспект лекций по предмету «ПМ.01 РАЗРАБОТКА МОДУЛЕЙ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ДЛЯ КОМПЬЮТЕРНЫХ СИСТЕМ
    Дата02.09.2021
    Размер363 Kb.
    Формат файлаdoc
    Имя файлаКонспект лекций по предмету_ «ПМ.01 РАЗРАБОТКА МОДУЛЕЙ ПРОГРАММН.doc
    ТипКонспект
    #228994
    страница2 из 3
    1   2   3

    Выбор имен переменных, файлов.


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

    • Имена переменных не должны совпадать со служебными словами.

    • Избегайте схожих по виду имен и подобных по написанию символов.

    • Различие имен должно быть всегда явно ощутимым.

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

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

        • Имена файлов:

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

    • Иногда использование префикса, помогает определять, какие поля связаны логически.

    • При выборе имен записей используйте имена, ориентированные на содержание записи, а не на конкретное задание.

    Отступы:

    При записи операторов для указания связи между ними делают одинаковый отступ от начала строки. И хотя отступы не оказывают влияния на логику программы, существенно улучшают ее читаемость. Циклы – типичный случай для использования отступов.

    • Для выявления структуры программы – используйте отступы.

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


    Выбор и обоснование языка программирования.

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

    Трансляция - один из способов преодолеть “языковый” барьер. Если воспользоваться языком, понятным программисту, а потом обеспечить перевод с него в машинный код, проблема будет решена. Может показаться, что для этой цели лучше выбрать естественный язык, например, английский, но на самом деле удобнее сконструировать особый язык. На сегодняшний день создано много таких языков, которые названы - языки программирования высокого уровня.

    Хорошо сконструированные языки высокого уровня обладают целым рядом достоинств, основанных на следующих фактах:

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

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

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

    Отношение и эффективность.

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

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

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

    Следовательно: ещё до написания программы необходимо установить, на сколько эффективной она должна быть.

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

    Оптимизация программ.

    Если программу следует оптимизировать, необходимо тщательно проверить алгоритм.

    Программу, подлежащую оптимизации следует разбить на подпрограммы (в соответствии с принципом структурного программирования). Если не возможно учесть время выполнения каждой подпрограммы подсчитайте количество операторов в подпрограмме, особенно выполненных в тело циклов. Ищите операторы, которые можно модифицировать – (do While и CASE) особенно это касается операторов цикла и ввода – вывода. Для каждой подпрограммы можно вычислить коэффициент: процент времени * процент улучшения. Программу с высоким коэффициентом следует оптимизировать в первую очередь. Здесь можно использовать два подхода: «чистка» (использование очевидных неточностей в исходной программе) и перепрограммирование (если подвергается подпрограмма существенным изменениям).

    Эффективность выполнения программ.

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

    Виды ошибок:

    1. Ошибки в описании задачи

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

    1. Ошибки в выборе алгоритма

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

    1. Ошибки анализа

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

      1. отсутствие заданий начальных значений

      2. не верное условие окончания цикла

      3. не верная индексация цикла

      4. отсутствие задания обнуления циклов.

    1. Ошибки общего характера - ошибки из-за не достаточного знания тонкостей языка или самой системы или машины.

    2. Синтаксические ошибки - ошибки, вызванные не правильным написанием операторов.

    3. Семантические ошибки – неправильное использование написанных операторов.

    4. Ошибки в данных

    Виды контроля ПС:

    • Визуальный,

    • Статический

    • динамический

    Визуальный контроль - это проверка программ “ за столом “, без использования компьютера.

    1. сначала осуществляется чтение программы

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

    Статический контроль - это проверка программы по ее тексту (без выполнения) с помощью инструментальных средств. Формы статического контроля:

      1. синтаксический контроль программы с помощью компилятора, при котором проверяется соответствие текста программы синтаксическим правилам языка программирования.

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

    • использование в программе неинициализированных переменных (то есть переменных, не получивших начального значения) ;

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

    • наличие в тексте программы фрагментов, никогда не выполняющихся;

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

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

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

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

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

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

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

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

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

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

    Заповеди отладки.


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

    Заповедь 2. Хорош тот тест, для которого высока вероятность обнаружить ошибку, а не тот, который демонстрирует правильную работу программы.

    Заповедь 3. Готовьте тесты как для правильных, так и для неправильных данных.

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

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

    Заповедь 6. Пропускайте заново все тесты, связанные с проверкой работы какой-либо программы ПС или ее взаимодействия с другими программами, если в нее были внесены изменения (например, в результате устранения ошибки).

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

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

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

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

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


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

    Существует 4 этапа тестирования многомодульных ПС:

    1. Тестирование отдельных модулей;

    2. Совместное тестирование модулей;

    3. Тестирование функций программного комплекса;

    4. Тестирование всего комплекса в целом.

    На первых двух этапах используются прежде всего методы структурного программирования. При структурном тестировании программа рассматривается как “белый ящик” (т.е. ее текст открыт для пользования). Происходит проверка логики программы.

    Совместное тестирование модулей

    Два подхода к совместному тестированию модулей:

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

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


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

    Наиболее важные для программы в целом модули должны тестироваться в первую очередь.

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

    Тестирование функций ПС

    Используются методы функционального тестирования. При функциональном тестировании программа рассматривается как “черный ящик” (то есть ее текст не используется). Происходит проверка соответствия поведения программы ее

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

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

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

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

    Виды программных документов.

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


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

    Эту документацию можно разбить на две группы:

    • Документы управления разработкой ПС.

    • Документы, входящие в состав ПС.

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

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

    • Отчеты об использовании ресурсов в процессе разработки. Создаются менеджерами.

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

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

    • Заметки и переписка. Эти документы фиксируют различные детали взаимодействия между менеджерами и разработчиками.

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

    • Пользовательская документация ПС (П-документация).

    • Документация по сопровождению ПС (С-документация).

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


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

    Следует различать две категории пользователей ПС:

    • ординарных пользователей ПС

    • администраторов ПС.

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

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

    Состав пользовательской документации для достаточно больших ПС:

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

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

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

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

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

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

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


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

    Документация по сопровождению ПС можно разбить на две группы:

    (1) документация, определяющая строение программ и структур данных ПС и технологию их разработки;

    документацию, помогающую вносить изменения в ПС.

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

    • Внешнее описание ПС.

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

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

    • Для каждого модуля - его спецификация и описание его строения.

    • Тексты модулей на выбранном языке программирования.

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

    Документация второй группы содержит

    • Руководство по сопровождению ПС, которое описывает известные проблемы вместе с ПС, описывает, какие части системы являются аппаратно- и программно-зависимыми, и как развитие ПС принято в расчет в его строении (конструкции).

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

    Обеспечение функциональности, надежности и качества ПС. Технологии оценки качества ПС.

    Обеспечение завершенности программного средства.


    Завершенность ПС является общим примитивом качества ПС для выражения и функциональности и надежности ПС.

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

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

    Обеспечение точности программного средства.


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

    Обеспечение автономности программного средства.


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

    Обеспечение устойчивости программного средства.


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

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

    Обеспечение защищенности программных средств.


    Различают следующие виды защиты ПС от искажения информации:

    • Защита от сбоев аппаратуры.

    • Защита от влияния "чужой" программы.

    • защита от отказов "своей" программы;

    • защита от ошибок оператора (пользователя);

    • защита от несанкционированного доступа;

    • защита от защиты.

    • Защита от влияния "чужой" программы


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

    Защита от влияния «чужой программы» относится прежде всего к операционным системам или к программам, выполняющим частично их функции. Различают две разновидности этой защиты:

    • защита от отказов,

    • защита от злонамеренного влияния "чужой" программы.

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

    • защиту памяти,

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

    • два вида операций: привилегированные и ординарные,

    • корректную реализацию прерываний и начального включения компьютера,

    • временное прерывание.

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

    Защита от отказов "своей" программы обеспечивается надежностью этой программы.

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

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

    Защита от взлома защиты связана с использованием в ПС специальных программистских приемов, затрудняющих преодоление защиты от несанкционированного доступа. Использование обычных паролей оказывается недостаточной, когда речь идет о чрезвычайно настойчивом стремлении добиться доступа к ценной информации. Во-первых, потому, что информацию о паролях, которую использует ПС для защиты от несанкционированного доступа, "взломщик" этой защиты относительно легко может достать, если он имеет доступ к самому этому ПС. Во-вторых, используя компьютер, можно осуществлять достаточно большой перебор возможных паролей с целью найти подходящий для доступа к интересующей информации. Защититься от такого взлома можно следующим образом. Пароль или просто секретное целое число X знает только владелец защищаемой информации, а для проверки прав доступа в компьютере хранится другое число Y=F(X), однозначно вычисляемое ПС при каждой попытке доступа к этой информации при предъявлении секретного слова. При этом функция F может быть хорошо известной всем пользователям ПС, однако она обладает таким свойством, что восстановление слова X по Y практически невозможно: при достаточно большой длине слова X (например, в несколько сотен знаков) для этого требуется астрономическое время. Такое число Y будем называть электронной (компьютерной) подписью владельца секретного слова X (а значит, и защищаемой информации).

    Другая разновидность такой защиты связана с защитой сообщений, пересылаемых по компьютерным сетям, преднамеренных искажений. Такое сообщения может перехватываться на "перевалочных" пунктах компьютерной сети и подменяться другим сообщением от автора перехваченного сообщения. Такая ситуация возникает прежде всего при осуществлении банковских операций с использованием компьютерной сети. Путем подмены такого сообщения, являющего распоряжением владельца банковского счета о выполнении некоторой банковской операции деньги с его счета могут быть переведены на счет "взломщика" защиты. Защиту от такого взлома защиты можно осуществить следующим образом. Наряду с функцией F, определяющей компьютерную подпись владельца секретного слова X, которую знает адресат защищаемого сообщения (если только ее владелец является клиентом этого адресата), в ПС определена другая функция Stamp, по которой отправитель сообщения должен вычислить число S=Stamp(X,R), используя секретное слово X и текст передаваемого сообщения R. Функция Stamp также считается хорошо известной всем пользователям ПС и обладает таким свойством, что по S практически невозможно ни восстановить число X, ни подобрать другое сообщение R с соответствующей компьютерной подписью. Само передаваемое сообщение (вместе со своей защитой) должно иметь вид: R Y S , причем Y (компьютерная подпись) позволяет адресату установить истинность клиента, а S как бы скрепляет защищаемое сообщение Rс компьютерной подписью Y. В связи с этим будем называть число S электронной печатью. В ПС определена еще одна функция Notary, по которой получатель защищаемого сообщения проверяет истинность передаваемого сообщения: Notary(R,Y,S). Она позволяет однозначно установить, что сообщение R принадлежит владельцу секретного слова X.

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

    1   2   3


    написать администратору сайта