Информациооные системы

Автор: Пользователь скрыл имя, 22 Ноября 2011 в 16:29, реферат

Описание работы

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

Работа содержит 1 файл

Информационная система.doc

— 282.50 Кб (Скачать)

    Прочность объекта -- это мера его внутренних связей.

    Сцепление объектов -- это мера взаимодействия объектов друг с другом.

Похожие принципы действуют  и на модули внутри каждого уровня:

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

Моделирование данных

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

    Данные моделируются с целью построения базы данных.  

     

    Реализация

    Реализация -- это процесс воплощения проекта в программы и физические системы.

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

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

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

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

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

    Повышение надежности системы

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

    Основная причина ошибок -- сложность.

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

    Сложность системы  зависит от количества и качества связей между ее компонентами и самих  компонет.

Простая система Сложная система

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

    Тестирование

    Тестирование -- это поиск ошибок в информационной системе.

    Ошибка -- это несоответствие того, что есть, тому, что должно быть.

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

    Принципы тестирования

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

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

    Удачным считается тест, который обнаружил ошибку.  
    Если ни одна ошибка не была обнаружена, то тест считается неудачным.

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

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

    Тест -- это совокупность входных данных и/или действий пользователя с указанием ожидаемых результатов и/или ответных действий программы.

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

    Виды тестирования:

    • структурное тестирование (белый ящик),
    • функциональное тестирование (черный ящик)

    Структурное тестирование

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

    Существует несколько типов структурного тестирования:

    • покрытие операторов,
    • покрытие решений,
    • покрытие решений / условий,
    • комбинаторное покрытие условий,
    • тестирование циклов.

    Функциональное тестирование

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

    Существуют несколько  видов функционального тестирования:

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

    Отладка

    Отладка -- это исправление найденных ошибок.

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

    При исправлении  ошибки высока вероятность внесения новой ошибки (примерно 20%).  
    Если программу исправляет не автор, тогда вероятность еще выше.

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

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

    Внедрение

    Внедрение -- это включение информационной системы в предметную область.

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

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

    Технические проблемы могут быть таковы:

Информация о работе Информациооные системы