Известны четыре подхода к обеспечению
надежности ПС: предупреждение,
самообнаружение, самоисправление,
обеспечение устойчивости к ошибкам.
Предупреждения ошибок
не допустить их в ПС. Достижение этого
лежит на пути решения следующих задач:
преодоление сложности, точность перевода,
преодоление барьера между пользователем
и разработчиком, контроль принимаемых
решений. Предупреждение ошибок связано
с организацией процессов разработки
ПС. И хотя гарантировать отсутствие
ошибок невозможно, в рамках этого подхода
можно достичь приемлемый уровень
надежности ПС.
Остальные три подхода связаны с
организацией программ. Они учитывают
возможность возникновения ошибок в
них. Самообнаружение ошибки означает,
что программа содержит средства
обнаружения отказов в процессе своего
выполнения. Самоисправление ошибки
означает не только обнаружение отказа
в процессе выполнения программы, но и
исправление последствий этого отказа,
для чего в программе предусматриваются
соответствующие средства. Обеспечение
устойчивости к ошибкам означает, что
в программе содержатся средства,
локализующие область влияния отказа,
либо уменьшающие его неприятные
последствия, а иногда и предотвращающие
последствия отказа. Эти три подхода
используются редко. Чаще используется
обеспечение устойчивости к ошибкам.
Связано это, во-первых, с тем, что простые
методы, используемые в технике, в рамках
этих подходов неприменимы в программировании,
например, дублирование отдельных блоков
и устройств. Выполнение двух копий одной
и той же программы всегда будет приводить
к одинаковому эффекту. Во-вторых,
добавление в программу дополнительных
фрагментов приводит к ее усложнению,
что затрудняет работу методов
предупреждения ошибок.
3.5. Борьба со сложностью систем и обеспечение точности перевода
Известны два метода:
обеспечение независимости компонент,
использование иерархических структур.
Обеспечение независимости компонент
означает разбиение системы на части с
минимальным числом связей. Одно из
воплощений этого метода – модульное
программирование. Использование в
системах иерархических структур
локализует связи между компонентами,
допуская их лишь между компонентами,
принадлежащим смежным уровням иерархии.
Этот метод означает разбиение большой
системы на малые подсистемы. Здесь
используется способность человека к
абстрагированию.
Обеспечение точности перевода направлено
на достижение однозначности интерпретации
документов различными разработчиками,
а также пользователями ПС. Это требует
придерживаться при переводе определенной
дисциплины. Используется общая дисциплина
решения задач, которая рассматривает
перевод как решение некоторой задачи.
В соответствии с этим весь процесс
перевода разбивается на этапы: 1) уяснение
задачи, 2) составление плана, включающего
цели и методы решения, 3) выполнение
плана, проверка правильности каждого
шага, 4) анализ полученного решения, 5)
если решение не удовлетворяет, возврат
к уяснению задачи.
Чтобы обеспечить разумное ожидание
пользователя от ПС разработчикам
необходимо понять, чего хочет пользователь,
каков уровень его подготовки и какова
окружающая его обстановка. Ясное описание
сферы деятельности пользователя или
интересующей его проблемной области
облегчает достижение этой цели. При
разработке ПС следует привлекать
пользователя к участию в процессах
принятия решений, а также изучить
особенности его работы.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
Содержание:
ВВЕДЕНИЕ
В настоящее время существует множество языков программирования и сред программирования. Некоторые из них предназначены для написания клиентских приложений, некоторые для написания серверных приложений. Сегодня умение работать в среде программирования Delphi является ценным качеством для профессионала, поэтому необходимо развивать навыки работы в этой среде, что, в свою очередь, поможет нам стать квалифицированными специалистами в области программирования.
Delphi-это среда программирования, которая использует язык программирования Object Pascal. Начиная со среды разработки Delphi 7.0, в официальных документах Borland стал использовать имя Delphi для обозначения языкового объекта Pascal.
Актуальность выбранной темы обусловлена тем, что базы данных в настоящее время используются во всех сферах человеческой деятельности.
Целью курсовой работы является: изучение теоретического материала и написание программного обеспечения на Delphi, которое позволит корректно работать с базой данных.
В соответствии с поставленной целью при выполнении работ ставятся следующие задачи:
— изучение теоретических основ защитного программирования;
— изучение и анализ методов структурирования программ и программных модулей;
— изучение среды программирования Borland Delphi 7;
— создание приложения в среде программирования Borland Delphi 7 для работы с базами данных;
— отладка разработанного приложения.
При написании работы автор опирался на труды отечественных и зарубежных ученых Братчикова И. Л., Гулидова А. И., Наберухина Ю. И., Дейкстры Е. А., Ершова А. П., и др.
1.ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
1.1 Защитное программирование
1.1.1 Правила написания программ с блоками защиты от несанкционированного ввода данных
Парольная система как неотъемлемая составляющая подсистемы управления доступом системы защиты информации (СЗИ) является частью «переднего края обороны» всей системы безопасности. Поэтому парольная система становится одним из первых объектов атаки при вторжении злоумышленника в защищенную систему.
Подсистема управления доступом СЗИ затрагивает следующие понятия:
— идентификатор доступа — уникальный признак субъекта или объекта доступа;
— идентификация — присвоение субъектам и объектам доступа идентификатора и (или) сравнение предъявляемого идентификатора с перечнем присвоенных идентификаторов;
— пароль — идентификатор субъекта доступа, который является его (субъекта) секретом;
— аутентификация — проверка принадлежности субъекту доступа предъявленного им идентификатора;
— подтверждение подлинности.
Можно встретить и такие толкования терминов идентификатор и пароль пользователя [1]:
1. Идентификатор — некоторое уникальное количество информации, позволяющее различать индивидуальных пользователей парольной системы (проводить их идентификацию). Часто идентификатор также называют именем пользователя или именем учетной записи пользователя;
2. Пароль — некоторое секретное количество информации, известное только пользователю и парольной системе, предъявляемое для прохождения процедуры аутентификации.
Учетная запись — совокупность идентификатора и пароля пользователя.
Одним из наиболее важных компонентов парольной системы является база данных учетных записей (база данных системы защиты). Возможны следующие варианты хранения паролей в системе:
— в открытом виде;
— в виде хэш-значений (hash (англ.) — смесь, мешанина);
— зашифрованными на некотором ключе.
Наибольший интерес представляют второй и третий способы, которые имеют ряд особенностей.
Хэширование не защищает от сопоставления паролей словаря в случае, если злоумышленник получает базу данных. При выборе алгоритма хэширования, который будет использоваться для вычисления хэшей паролей, необходимо убедиться, что значения хэшей, полученные из разных паролей пользователей, не совпадают. Кроме того, должен быть предусмотрен механизм, гарантирующий уникальность хэш-значений, если два пользователя выбирают одни и те же пароли. Для этого при вычислении каждого хэш-значения обычно используется определенное количество «случайной» информации, например, выдаваемой генератором псевдослучайных чисел.
При шифровании паролей особое значение имеет способ создания и хранения ключа шифрования базы данных учетных записей. Доступны следующие параметры:
— ключ генерируется программно и хранится в системе, что позволяет ему автоматически перезапускаться;
— ключ генерируется программно и хранится на внешнем носителе, который считывается при каждом запуске;
— ключ генерируется на основе пароля, выбранного администратором, который вводится в систему при каждом запуске.
Наиболее безопасное хранение паролей обеспечивается их хэшированием и последующим шифрованием полученных хэш-значений, т. е. комбинацией второго и третьего способов хранения паролей в системе.
Как пароль может попасть в руки злоумышленника? Наиболее реально выглядят следующие случаи:
— пароль, который вы записали, был найден злоумышленником;
— пароль был подсмотрен злоумышленником при вводе легального пользователя;
— злоумышленник получил доступ к базе данных системы безопасности.
Меры по противодействию первым двум опасностям очевидны.
В последнем случае злоумышленнику потребуется специализированное программное обеспечение, поскольку записи в таком файле редко хранятся в открытом виде. Прочность системы паролей определяется ее способностью противостоять атаке злоумышленника, который завладел базой данных учетных записей и пытается восстановить пароли, и зависит от скорости «самой быстрой» реализации используемого алгоритма хеширования. Восстановление пароля состоит из вычисления значений хэша из возможных паролей и сравнения их с существующими значениями хэша пароля, а затем представления их явно в форме с учетом регистра.
Из базы данных учетных записей пароль может быть восстановлен различными способами: словарная атака, последовательная (полная) грубая сила и гибрид словарной атаки и последовательной грубой силы.
В словарной атаке хэш-значения для каждого словарного слова или модификации словарного слова последовательно вычисляются и сравниваются с хэш-значениями паролей каждого пользователя. Если хэш-значения совпадают, пароль найден. Преимуществом метода является его высокая скорость. Недостатком является то, что таким образом можно найти только очень простые пароли, которые доступны в словаре или являются модификациями словарных слов. Успех этой атаки зависит от качества и объема используемого словаря (такие готовые словари легко найти в Интернете).
Последовательный поиск всех возможных комбинаций (brute force -англ.) — грубая сила, лобовое решение) использует набор символов и вычисляет хэш-значение для каждого возможного пароля, состоящего из этих символов. При использовании этого метода пароль всегда будет определен, если его составляющие символы присутствуют в выбранном наборе. Единственным недостатком этого метода является количество времени, которое может потребоваться для определения пароля. Чем больше символов (букв разного регистра, цифр, специальных символов) содержится в выбранном наборе, тем больше времени может пройти до окончания поиска комбинаций.
При восстановлении паролей гибридом атаки по словарю и последовательного перебора к каждому слову или модификации слова словаря добавляются символы справа и/или слева (123parol). Помимо этого, может осуществляться проверка использования: имен пользователей в качестве паролей; повторения слов (dogdog); обратного порядка символов слова (elpoep); транслитерации букв (parol); замену букв кириллицы латинской раскладкой (gfhjkm).
Для каждой получившейся комбинации вычисляется хэш-значение, которое сравнивается с хэш-значениями паролей каждого из пользователей.
Какой пароль можно однозначно назвать слабым во всех отношениях (за исключением запоминаемости)? Типичный пример: пароль из небольшого количества (до 5) символов/цифр. По некоторым данным, из 967 паролей одного из взломанных почтовых серверов сети Интернет 335 (почти треть) состояла исключительно из цифр. Количество паролей, включающих буквы и цифры оказалось равным 20. Остальные пароли состояли из букв в основном в нижнем регистре за редким исключением (в количестве 2 паролей) включающих спецсимволы («*», «_»). Символ «_», однако, часто встречался в именах пользователей. В 33 случаях имя и пароль пользователя совпадали. Самым популярным оказался пароль 123 (встречался 35 раз, почти каждый 27 пароль). На втором месте пароль qwerty (20 паролей). Как удобно он набирается, не правда ли? Далее следуют: 666 (18 раз), 12 (17 раз), xakep (14 раз) и 1, 11111111, 9128 (по 10 раз). 16 паролей состояли из одного символа/цифры.
В повседневной жизни современному человеку приходится держать в памяти немалое количество информации: пин-коды к банковской карте и мобильному телефону, комбинации кодовых замков, пароль для доступа в Интернет, к ресурсам разного рода, электронным почтовым ящикам. Все ли пароли необходимо держать в памяти? Все зависит от оценки уровня потерь в результате попадания вашего пароля в чужие руки. Пароли для доступа в Интернет и к ресурсам сети никто не мешает записать в блокнот, если вы не опасаетесь, что кто-нибудь войдет в сеть без вашего ведома и ознакомится с содержанием почтового ящика. Данное умозаключение, однако, не распространяется на пароли, используемые на рабочем месте. Получение доступа к локальной сети от вашего имени может, по определенным причинам, стать заманчивым вариантом. Пин-код банковской карты тоже не запрещается фиксировать на бумаге, главным условием в этом случае является раздельное хранение карты и записанной без пояснений кодовой комбинации.
1.1.2 Приемы надежного программирования
Альтернативой правильного ПС является надежное ПС. Надежность ПС — это его способность безотказно выполнять определенные функции при заданных условиях в течение заданного периода времени с достаточно большой вероятностью [5]. При этом под отказом в ПС понимают проявление в нем ошибки [2]. Таким образом, надежная ПС не исключает наличия в ней ошибок — важно лишь, чтобы эти ошибки при практическом применении этого ПС в заданных условиях проявлялись достаточно редко. Убедиться, что ПС обладает таким свойством можно при его испытании путем тестирования, а также при практическом применении. Таким образом, фактически мы можем разрабатывать лишь надежные, а не правильные ПС.
Разрабатываемая ПС может обладать различной степенью надежности. Как измерять эту степень? Так же как в технике, степень надежности можно характеризовать [2] вероятностью работы ПС без отказа в течении определенного периода времени. Однако в силу специфических особенностей ПС определение этой вероятности наталкивается на ряд трудностей по сравнению с решением этой задачи в технике. Позже мы вернемся к более обстоятельному обсуждению этого вопроса.
При оценке степени надежности ПС следует также учитывать последствия каждого отказа. Некоторые ошибки в ПС могут вызывать лишь некоторые неудобства при его применении, тогда как другие ошибки могут иметь катастрофические последствия, например, угрожать человеческой жизни. Поэтому для оценки надежности ПС иногда используют дополнительные показатели, учитывающие стоимость (вред) для пользователя каждого отказа.
Рассмотрим теперь общие принципы обеспечения надёжности ПС, что, как мы уже подчёркивали, является основным мотивом разработки ПС, задающим специфическую окраску всем технологическим процессам разработки ПС. В технике известны четыре подхода обеспечению надёжности [11]:
— предупреждение ошибок;
— самообнаружение ошибок;
— самоисправление ошибок;
— обеспечение устойчивости к ошибкам.
Целью подхода предупреждения ошибок — не допустить ошибок в готовых продуктах, в нашем случае — в ПС. Проведенное рассмотрение природы ошибок при разработке ПС позволяет для достижения этой цели сконцентрировать внимание на следующих вопросах:
-борьбе со сложностью;
-обеспечении точности перевода;
-преодоления барьера между пользователем и разработчиком;
— обеспечения контроля принимаемых решений.
Этот подход связан с организацией процессов разработки ПС, т.е. с технологией программирования. И хотя, как мы уже отмечали, гарантировать отсутствие ошибок в ПС невозможно, но в рамках этого подхода можно достигнуть приемлемого уровня надежности ПС.
Остальные три подхода связаны с организацией самих продуктов технологии, в нашем случае — программ. Они учитывают возможность ошибки в программах. Самообнаружение ошибки в программе означает, что программа содержит средства обнаружения отказа в процессе ее выполнения. Самоисправление ошибки в программе означает не только обнаружение отказа в процессе ее выполнения, но и исправление последствий этого отказа, для чего в программе должны иметься соответствующие средства.
Обеспечение устойчивости программы к ошибкам означает, что в программе содержатся средства, позволяющие локализовать область влияния отказа программы, либо уменьшить его неприятные последствия, а иногда предотвратить катастрофические последствия отказа. Однако, эти подходы используются весьма редко (может быть, относительно чаще используется обеспечение устойчивости к ошибкам).
1.1.3 Причины ошибок программного обеспечения
Рассмотрим неправильный перевод как причина ошибок в программных средствах. При разработке и использовании ПС мы многократно имеем дело [3] с преобразованием (переводом) информации из одной формы в другую (см. Рис. 1). Заказчик формулирует свои потребности в ПС в виде некоторых требований. Исходя из этих требований, разработчик создаёт внешнее описание ПС, используя при этом спецификацию (описание) заданной аппаратуры и, возможно, спецификацию базового программного обеспечения. На основании внешнего описания и спецификации языка программирования создаются тексты программ ПС на этом языке. По внешнему описанию ПС разрабатывается также и пользовательская документация. Текст каждой программы является исходной информацией при любом её преобразовании, в частности, при исправлении в ней ошибки. Пользователь на основании документации выполняет ряд действий для применения ПС и осуществляет интерпретацию получаемых результатов. Везде здесь, а также в ряде других процессах разработки ПС, имеет место указанный перевод информации.
Рисунок 1. Грубая схема разработки и применения ПС
На каждом из этих этапов перевод информации может быть осуществлён неправильно, например, из-за неправильного понимания исходного представления информации. Возникнув на одном из этапов ошибка в представлении информации распространяется на последующие этапы разработки и, в конечном счёте, окажется в самом ПС.
Чтобы понять природу ошибок при переводе рассмотрим модель [3], изображённую на Рис. 2. На ней человек осуществляет перевод информации из представления A в представление B. При этом он совершает четыре основных шага перевода:
— он получает информацию, содержащуюся в представлении A, с помощью своего читающего механизма R;
— он запоминает полученную информацию в своей памяти M;
— он выбирает из своей памяти преобразуемую информацию и информацию, описывающую процесс преобразования, выполняет перевод и посылает результат своему пишущему механизму W;
— с помощью этого механизма он фиксирует представление B.
Рисунок 2. Модель перевода
На каждом из этих шагов человек может совершить ошибку разной природы. На первом шаге способность человека «читать между строк» (способность, позволяющая ему понимать текст, содержащий неточности или даже ошибки) может стать причиной ошибки в ПС. Ошибка возникает в том случае, когда при чтении документа A человек, пытаясь восстановить недостающую информацию, видит то, что он ожидает, а не то, что имел в виду автор документа A. В этом случае лучше было бы обратиться к автору документа за разъяснениями. При запоминании информации человек осуществляет её осмысливание (здесь важен его уровень подготовки и знание предметной области, к которой относится документ A). И, если он поверхностно или неправильно поймёт, то информация будет запомнена в искажённом виде. На третьем этапе забывчивость человека может привести к тому, что он может выбрать из своей памяти не всю преобразуемую информацию или не все правила перевода, в результате чего перевод будет осуществлён неверно. Это обычно происходит при большом объёме плохо организованной информации. И, наконец, на последнем этапе стремление человека поскорее зафиксировать информацию часто приводит к тому, что представление этой информации оказывается неточным, создавая ситуацию для последующей неоднозначной её интерпретации.
1.1.4 Источники ошибок программного обеспечения
Известно, что практически во всех более или менее сложных программах (а также в ОС, которая является комплексом многих программ) есть ошибки. Причина этого очевидна-программы делают люди, а люди склонны ошибаться.
Рассмотрим источники ошибок на разных этапах проектирования.
На этапе подготовки технического задания, формирования и утверждения технического задания источниками ошибок могут быть: логическая несогласованность требований, пропусков, неточности алгоритма.
На этапе определения функций отдельных модулей источниками ошибок могут быть: пропуск функций, отсутствие согласованного протокола, допускающего взаимодействие оборудования и программ, неправильный выбор протоколов связи и алгоритмов, неточности, неверная интерпретация технических требований, пропуск определенных информационных потоков.
На стадии разработки и производства соответственно прототипа источниками ошибок могут быть при разработке-упущения некоторых признаков, неправильная интерпретация технических требований, дефект в схемах синхронизации, нарушение правил проектирования; при изготовлении компонентов прототипа — неисправные модули, неисправная сборка; при разработке программного обеспечения-упущение некоторых функций технического задания, неточности в алгоритмах, неточное кодирование.
Каждый из этих источников ошибок может вызвать большое количество субъективных или физических ошибок, которые необходимо локализовать и устранить. Обнаружение ошибок и локализация неисправностей являются сложными по нескольким причинам: Во-первых, из-за большого количества неисправностей; во-вторых, потому, что различные неисправности могут проявляться одинаково. Поскольку нет моделей субъективных ошибок, эта задача не формализована. Был достигнут определенный прогресс в разработке методов и инструментов для обнаружения ошибок, и обнаружения физических неисправностей. Эти методы и средства широко используются для проверки рабочего состояния и диагностики неисправностей дискретных систем при проектировании, изготовлении и эксплуатации последних.
Субъективные недостатки отличаются от физических тем, что после обнаружения, локализации и коррекции они больше не возникают. Однако, согласно перечню источников ошибок, субъективные ошибки могут быть введены при разработке спецификации системы, что означает, что даже после самого тщательного тестирования системы на соответствие ее внешним спецификациям, система может иметь субъективные ошибки.
Процесс проектирования является итерационным процессом. Неисправности, обнаруженные на этапе приемо-сдаточных испытаний, могут привести к корректировке спецификации и, следовательно, к началу всего проектирования системы. Необходимо выявлять неисправности как можно раньше, для этого необходимо контролировать правильность проекта на каждом этапе разработки.
1.1.5 Классификация ошибок программного обеспечения
Рассмотрим классификацию ошибок по месту их возникновения, которая рассмотрена в книге С. Канера «тестирование программного обеспечения». Основные понятия управления бизнес-приложениями. Главным критерием программы должно быть ее качество, которое трактуется как отсутствие в ней недостатков, а также сбоев и явных ошибок. Недостатки программы зависят от субъективной оценки ее качества потенциальным пользователем.
В то же время авторы скептически относятся к спецификации и утверждают, что даже если она имеется, выявленные на заключительном этапе недостатки свидетельствуют о ее низком качестве. При таком подходе преодоление недостатков программы, особенно на заключительном этапе проектирования, может привести к снижению надежности. Очевидно, что такой подход не подходит для разработки ответственного и безопасного программного обеспечения, но проблемы ошибок в спецификациях, субъективной оценки качества программы пользователем существуют и не могут быть проигнорированы.
Необходимо разработать систему определенных ограничений, учитывающую эти факторы при разработке и сертификации такого программного обеспечения. Для обычных программ все проблемы, связанные с субъективной оценкой их качества и наличием ошибок, скорее всего, неизбежны.
В краткой классификации выделены следующие ошибки.
— ошибка пользовательского интерфейса;
— ошибки расчета;
— ошибки управления потоком;
— ошибки передачи или интерпретации данных;
— перегрузки;
— контроль версий;
— ошибка обнаружена и забыта;
ошибки тестирования.
1. Ошибки пользовательского интерфейса.
Многие из них субъективны, потому что они часто являются неудобствами, а не «чистыми» логическими ошибками. Однако они могут спровоцировать ошибки пользователя программы или замедлить время ее работы до недопустимого значения. В результате мы будем иметь ошибки информационной системы (ИС) в целом. Основным источником таких ошибок является сложный компромисс между функциональностью программы и простотой обучения и работы с программой.
Задача должна решаться при проектировании системы на уровне ее декомпозиции на отдельные модули, исходя из того, что вряд ли возможно спроектировать простой и удобный пользовательский интерфейс для модуля, перегруженного различными функциями. Кроме того, следует рассмотреть рекомендации по проектированию пользовательских интерфейсов.
На этапе тестирования программного обеспечения полезно предусмотреть встроенные средства тестирования, которые бы запоминали последовательность действий пользователя, время отдельных операций, расстояние до курсора мыши. Кроме того, можно использовать гораздо более сложные средства психофизического тестирования на этапе тестирования пользовательского интерфейса, которые позволят оценить скорость реакции пользователя, частоту этих реакций, утомляемость и т.д.
Следует отметить, что такие ошибки очень критичны с точки зрения коммерческого успеха разрабатываемого программного обеспечения, так как они будут в первую очередь оцениваться потенциальным заказчиком.
2. Ошибки расчета.
Существуют следующие причины таких ошибок:
— неправильная логика (может быть следствием как ошибок проектирования, так и кодирования);
— арифметические операции выполняются некорректно (как правило-это ошибки кодирования);
— неточные расчеты (могут быть следствием как ошибок проектирования, так и кодирования). Это очень сложная тема, необходимо развивать свое отношение к ней с точки зрения разработки безопасного программного обеспечения.
Выделяются элементы: устаревшие константы, ошибки вычисления; неправильно расставленные скобки, неправильный порядок операторов; неправильно выполняемая базовая функция; переполнение и потеря значащих цифр; ошибки отсечения и округления; путаница с подачей данных; неправильное преобразование данных из одного формата в другой; неправильная формула, неправильная аппроксимация.
3. Ошибки управления потоком.
Этот раздел включает в себя все, что связано с последовательностью и обстоятельствами выполнения программных операторов.
Выделяются подпункты:
— очевидно некорректное поведение программы;
— логика, основанная на определении вызывающей подпрограммы;
— использование таблиц переходов;
— выполнение данных (вместо команд). Ситуация возможна из-за ошибок указателя, отсутствия проверок границ массива, ошибок перехода, вызванных, например, ошибкой в таблице адресов перехода, ошибками сегментации памяти.
4. Ошибки обработки или интерпретации данных.
Выделяются подпункты:
— проблемы при передаче данных между подпрограммами (это включает в себя несколько типов ошибок: параметры указаны в неправильном порядке или пропущены, несоответствие типов данных, псевдонимы и различная интерпретация содержимого одной и той же области памяти, неправильная интерпретация данных, неадекватная информация об ошибке, перед аварийным выходом из подпрограммы, правильное состояние данных не восстанавливается, устаревшие копии данных, связанные переменные не синхронизируются, локальная установка глобальных данных (имеется в виду путаница локальных и глобальных переменных), глобальное использование локальных переменных, недопустимая маска битового поля, недопустимое значение из таблицы);
— границы компоновки данных (это включает в себя несколько типов ошибок: не обозначенный конец строки с нулевым окончанием, неожиданный конец строки, чтение и запись за пределы структуры данных или элемента, чтение вне буферного сообщения, чтение вне буферного сообщения, добавление переменных к полным словам, переполнение и выход за пределы нижнего предела стека данных, затирание данных или кода другого процесса);
— проблемы с обменом сообщениями (это включает в себя несколько типов ошибок: отправка сообщения на неправильный процесс или неправильный порт, ошибка распознавания полученного сообщения, пропущенное или несинхронизированное сообщение, сообщение передается только N процессов из N+1, повреждение данных, хранящихся на внешнем устройстве, потеря изменений, которые вы не сохранили введенные данные, объем данных слишком велик для обработки-получатель, неудачная попытка отменить запись данных).
5.Повышенная нагрузка.
Дополнительные ошибки могут возникнуть, если рабочая нагрузка высока или ресурсов недостаточно. Выделяются элементы: необходимый ресурс недоступен, не освобождается ресурс; отсутствует сигнал на устройстве освобождения; старый файл не удаляется с накопителя; система не возвращается в неиспользуемую память; дополнительное компьютерное время; нет свободного блока памяти достаточного размера; недостаточный размер входного буфера или очереди; не очищается очередь, буфер или стек; теряются сообщения; замедляется производительность; повышается вероятность ситуационных гонок; при высокой нагрузке объем необязательных данных не уменьшается; снижение производительности другого процесса не распознается при высокой нагрузке; низкоприоритетные задания не приостанавливаются.
В этом разделе мы хотели бы обратить внимание на следующее:
— некоторые ошибки в этом разделе могут возникать при не очень высоких нагрузках, но, возможно, они будут возникать реже и с большими интервалами;
— многие ошибки из 2 предыдущих разделов уже в своей формулировке носят вероятностный характер, поэтому следует предположить возможность использования вероятностных моделей и методов их идентификации.
6. Контроль версий и идентификаторов.
Выделенные подпункты таинственно появляются старые ошибки; обновление не всех копий данных или программных файлов; нет заголовка; нет номера версии; неверный номер версии в заголовке экрана; отсутствует или неверная информация об авторских правах; программа, скомпилированная из резервной копии, не соответствует проданному варианту; готовые диски содержат неверный код или данные.
7. Ошибки тестирования.
Это ошибки сотрудников группы тестирования, а не программы. Выделяются подпункты:
— пропущенные ошибки в программе;
— проблема не замечена (отмечаются следующие причины: тестер не знает, каким должен быть правильный результат, ошибка теряется в большом количестве выходных данных, тестер не ожидал такого результата теста, тестер устал и невнимателен, ему скучно, механизм выполнения теста настолько сложен, что тестер уделяет ему больше внимания, чем результатам);
— пропуск ошибок на экране;
— документирована проблема (есть следующие причины для этого: тестер небрежно записывает, тестер не уверен, что эти действия ошибочны, ошибка была слишком незначительной, тестер считает, что ошибка не будет исправлена, тестер попросил не документировать больше подобных ошибок).
8. Ошибка выявлена и забыта.
Описываются ошибки использования результатов тестирования. По-моему, раздел следует объединить с предыдущим. Выделяются подпункты: не составлен итоговый отчет; серьезная проблема не документирована повторно; не проверено исправление; перед выпуском продукта не проанализирован список нерешенных проблем.
Необходимо заметить, что изложенные в 2-х последних разделах ошибки тестирования требуют для устранения средств автоматизации тестирования и составления отчетов. В идеальном случае, эти средства должны быть проинтегрированы со средствами и технологиями проектирования ПО. Они должны стать важными инструментальными средствами создания высококачественного ПО. При разработке средств автоматизированного тестирования следует избегать ошибок, которые присущи любому ПО, поэтому нужно потребовать, чтобы такие средства обладали более высокими характеристиками надежности, чем проверяемое с их помощью ПО.
1.1.6 Основные пути борьбы с ошибками
Учитывая рассмотренные особенности действий человека при переводе можно указать следующие пути борьбы с ошибками:
— сужение пространства перебора (упрощение создаваемых систем);
— обеспечение требуемого уровня подготовки разработчика (это функции менеджеров коллектива разработчиков);
— обеспечение однозначности интерпретации представления информации;
— контроль правильности перевода (включая и контроль однозначности интерпретации).
1.2 Методы структурирования
В общем случае произвольная программа не может быть преобразована в структурированную программу, которая реализует тот же алгоритм, построена с применением тех же конструкций и не использует дополнительных переменных. Такое преобразование возможно при использовании трех известных методов:
— дублирование кодов программы;
— введение переменной состояния;
— метод булевых признаков.
1.2.1 Метод дублирования блоков
Для блокирования (парирования) случайных угроз информационной безопасности в компьютерных системах необходимо решить ряд задач. Дублирование информации является одним из наиболее эффективных способов обеспечения целостности информации. Он защищает информацию как от случайных угроз, так и от преднамеренных воздействий. В зависимости от ценности информации, особенностей структуры и режимов работы КС могут использоваться различные методы дублирования, которые классифицируются по различным критериям.
Согласно времени восстановления информации, методы дублирования можно разделить в:
— оперативный;
— нерабочий.
Оперативные методы включают методы дублирования информации, которые позволяют использовать дублирующую информацию в реальном времени. Это означает, что переход на использование дублированной информации осуществляется во времени, что позволяет выполнить запрос на использование информации в реальном времени для данного КС. Все методы, которые не удовлетворяют этому условию, называются неоперативными методами дублирования. С помощью средств, используемых для целей дублирования, методы дублирования можно разделить на методы, использующие:
— дополнительные внешние запоминающие устройства (блоки);
— специально выделенная область памяти на съемном машиночитаемом носителе;
— съемный носитель.
По количеству копий методы дублирования делятся на:
— одноуровневый;
— многоуровневый.
Как правило, количество уровней не превышает трех. По степени пространственной удаленности основных носителей и дублирующей информации методы дублирования можно разделить на следующие методы:
— целенаправленное дублирование;
— рассеянное дублирование.
Для определенности целесообразно рассматривать методы концентрированного дублирования такие методы, для которых носители с основной и дублирующей информацией находятся в одном помещении. Все остальные методы рассредоточены.
В соответствии с процедурой дублирования различают методы:
— полная резервная копия;
— отражение;
— частичная копия;
— комбинированная копия.
Полная копия дублирует все файлы. При зеркальном копировании любое изменение основной информации сопровождается такими же изменениями избыточной информации. При таком дублировании основная информация и двойник всегда идентичны. Частичное копирование включает в себя создание дубликатов определенных файлов, таких как пользовательские файлы. Один тип частичной копии, называемый инкрементной копией, — это метод создания дубликатов файлов, которые изменились с момента последней копии.
Комбинированное воспроизведение позволяет осуществлять такие комбинации, как полное и частичное резервное копирование с различной периодичностью их проведения. Наконец, по типу дублирующей информации методы дублирования подразделяются на:
— способы сжатия информации;
— методы без сжатия данных.
Жесткие диски и ленточные накопители используются в качестве внешних запоминающих устройств для хранения дублированной информации. Жесткие диски обычно используются для оперативного дублирования информации. Самый простой способ дублирования данных в CS-это использование выделенных областей памяти на рабочем диске. Наиболее важная системная информация дублируется в этих областях. Например, таблицы каталогов и таблицы файлов дублируются таким образом, что они размещаются на цилиндрах и поверхностях жесткого диска (пакета дисков), отличных от тех, на которых расположены рабочие таблицы. Это дублирование защищает от полной потери информации при повреждении определенных участков поверхности диска.
Очень надежным методом оперативного дублирования является использование зеркальных дисков. Зеркало представляет собой жесткий магнитный диск отдельного накопителя, на котором хранится информация, полностью идентичная информации на рабочем диске. Это достигается параллельным выполнением всех операций записи на обоих дисках. При сбое рабочего диска зеркальный диск автоматически переключается в режим реального времени. Информация хранится в полном объеме.
1.2.2 Метод булева признака
Сущность данного метода: в программу, содержащую циклы, вводится некоторый признак. Начальное значение признака задается до цикла. Цикл выполняется, пока признак сохраняет свое исходное значение. Значение признака изменяется при наличии некоторых условий внутри цикла.
Рассмотрим применение метода булева признака на примере преобразования неструктурной схемы, приведенной на рисунке 3.
программа обеспечение ошибка
Рисунок 3. Исходная неструктурированная схема
Схема данного алгоритма не является структурированной, поскольку входящий в нее цикл (блоки 1,2,3) содержат вход и два выхода. На схеме 1 и 2 – некоторые условия, определяющие выполнение того или иного участка вычислений, значения 1 и 0 возле выходов символов «Решение» соответствует логическим значениям «да» и «нет».
В соответствии с рассмотренным методом в исходную схему вводится признак (например J). Схема приобретает структурированный вид (рисунок 3) и легко реализуется конструкциями обобщенного цикла и принятия двоичного решения.
Достоинства метода булева признака:
— компактность, экономичность,
— топология исходной схемы изменяется незначительно.
Недостаток: метод предназначен для использования только в циклах.
Иногда можно обойтись без специального признака, используя те условия, которые уже есть в исходной схеме. Например, исходную неструктурированную схему можно представить так, как показано на рисунке 4.
Рисунок 4. Схема, преобразованная по методу булева признака
Рисунок 5. Схема, преобразованная без специального признака
На рисунке 4 условие «(1 и 2) = 0» означает, что тело цикла 3 будет выполнено в том случае, если оба условия 1 и 2 не выполняются (равны нулю) Итоговая схема содержит обобщенный цикл с одним входом и одним выходом и конструкцию if-then-else, т.е. является структурированной.
Следует иметь ввиду, что преобразование схемы к структурированному виду без дополнительного признака возможно только при небольшом количестве условий.
1.2.3 Метод введения переменной состояния
Данный метод был впервые предложен Ашкрофтом и Манной.
Рассмотрим применение этого на примере неструктурированной программы, алгоритм которой представлен на рисунке 6.
Рисунок 6. Схема алгоритма исходной неструктурированной программы
Данная схема не является структурированной, так как из цикла, состоящего из блоков 1 и 3, существует 2 выхода. Таким образом, нарушено условие «один вход – один выход», которому должны удовлетворять структурированные схемы
Процесс преобразования программы в структурированную состоит из нижеприведенной последовательности шагов.
1. Каждому блоку неструктурированной схемы приписывают номер. Обычно первому блоку присваивается 1, последнему – 0.
2. В программу вводится дополнительная переменная целого типа (например I), называемая переменной состояния.
3. Функциональные блоки исходной схемы заменяются блоками, выполняющими помимо основных функций преобразование переменной I: переменной I присваивается значение, равное номеру блока-приемника в исходной схеме.
4. Аналогично преобразуются логические блоки. При этом если в логическом блоке условие истинно, то это соответствует одному значению I, если ложно – другому.
5. Исходная схема преобразуется к виду, предложенному Ашкрофтом – Манной – рисунок 7.
Рисунок 7. Схема алгоритма Ашкрофта – Манны
На данной схеме блоки la – na являются аналогами соответствующих блоков исходной схемы и, помимо этого, присваивают значение переменной I.
В результате преобразований Ашкрофта – Манны исходная неструктурированная схема принимает вид, изображенный на рисунке 8.
Рисунок 8. Исходная схема, преобразованная по методу Ашкрофта – Манны
При выполнении алгоритма, реализованного по методу Ашкрофта – Манны, переменная состояния I устанавливается в начальное значение, равное номеру первого блока не преобразованной схемы (как правило, это единица). Затем осуществляется последовательный опрос переменной I, начиная с нуля и заканчивая максимальным номером блока исходной схемы (в нашем примере он равен 5). Выполняется тот блок исходной схемы, номер которого соответствует текущему значению I. Помимо этого в I заносится значение, равное номеру того блока исходной схемы, который должен выполняться за текущим блоком. Когда значение I станет равным нулю, выполняется последний раз блок непреобразованной схемы (блок с номером 0) и осуществляется выход из алгоритма.
Полученная по методу Ашкрофта – Манны схема алгоритма является структурированной. Для доказательства этого достаточно последовательно преобразовать данную схему к одному функциональному блоку.
1.2.4 Концептуальное программирование
Концепция – определенный способ понимания или трактовки какого-либо явления или процесса, основная точка зрения, руководящая идея, ведущий замысел, конструктивный принцип различных видов деятельности.
Концепция – это совокупность взаимосвязанных представлений или взглядов на какую-либо проблему (противоречие).
Концептуальное программирование – направление в информатике, основанное на описании понятий для выражения смысла и формы конкретной проблемы, по описанию которой автоматически могут быть получены результаты или синтезируются программы для выполнения.
Концептуальное программирование включает такой сорт программирование как объектно-ориентированное.
При стратегии сначала в ширину дерево поиска обходится ярус за ярусом сверху вниз. Она гарантирует нахождение решения, если оно существует. Однако стратегия требует значительно большего объема памяти и поэтому получила сравнительно небольшое распространение.
Одно из достоинств языков логического программирования состоит в том, что на их основе достаточно удобно реализовать стратегии параллельного типа, причем порядок обхода дерева не столь важен; существен лишь тот факт, что должно быть обойдено все дерево. Именно последнее обстоятельство и дает принципиальную возможность вести поиск параллельно.
Обычно различают два типа параллелизма: ИЛИ — параллелизм, означающий одновременное применение для выделенной подцели из цели всех правил из базы знаний, и И-параллелизм, означающий параллельную обработку одновременно всех литералов (подцелей) целевого утверждения. Кроме того, параллелизм возможен и необходим при унификации (так как эта операция применяется часто). Наибольшие перспективы имеют именно параллельные стратегии, но для их эффективной реализации необходимы соответствующие процессоры, использующие принципы параллельной архитектуры.
К дедуктивным подходам решения задач относится и концептуальное программирование [7]. Этот метод ориентирован в основном на решение так называемых вычислительных задач, т. е. задач, которые могут быть сформулированы в следующем виде.
При заданном описании условий задачи М по значениям переменных х, х2, …, хт, удовлетворяющих М, вычислить значения переменных уi, у2, …, у„, также удовлетворяющих М.
Основу концептуального программирования составляет метод структурного синтеза программ, использующий две эквивалентные формы представления знаний о задачах: формульное представление; графовое представление.
2. ПРАКТИЧЕСКАЯ ЧАСТЬ
2.1 Delphi. Основные понятия и определения
Delphi — среда программирования, в которой используется язык программирования Object Pascal. Начиная со среды разработки Delphi 7.0, в официальных документах Borland стала использовать название Delphi для обозначения языка Object Pascal.
Изначально среда разработки была предназначена исключительно для разработки приложений Microsoft Windows, затем был реализован также для платформ Linux (как Kylix), однако после выпуска в 2002 году Kylix 3 его разработка была прекращена, и, вскоре после этого, было объявлено о поддержке Microsoft .NET. При этом высказывались предположения, что эти два факта взаимосвязаны.
Реализация среды разработки проектом Lazarus (Free Pascal, компиляция в режиме совместимости с Delphi) позволяет использовать его для создания приложений на Delphi для таких платформ, как Linux, Mac OS X и Windows CE.
Также предпринимались попытки использования языка в проектах GNU и написания компилятора для GCC.
2.2 Процесс написания программы
Для начала запустим Delphi. Назовем главную форму приложения «БД Товары». Для этого нажмем на главную форму и в окне инспектора свойств изменим свойство Caption – рисунок 9.
Рисунок 9. Изменение названия главной формы
После этого перейдем в меню инструментов на вкладку ADO – рисунок 10.
Рисунок 10. Вкладка ADO
На данной вкладке выберем компонент ADOConnection 
Для настройки соединения выделим компонент ADOConnection1 и найдем в инспекторе свойств свойство ConnectionString – рисунок 11.
Рисунок 11. ConnectionString
Для назначения конкретной базы данных необходимо нажать Build. После чего выбираем необходимого поставщика услуг – рисунок 12.
Рисунок 12. Выбор поставщика связи
Далее переходим непосредственно к выбору базы данных. Для этого выбираем вкладку «Подключение» и выбираем конкретную базу данных – рисунок 13.
Рисунок 13. Выбор базы данных
После выбора базы данных, нажимаем Ок и переходим на главную форму приложения. Чтобы ADOConnection1 стало активным и другие компоненты смогли бы его использовать, необходимо свойство Connected установить в True. В появившемся окне (рисунок 14) не нужно ничего вводить. Достаточно нажать Ок.
Рисунок 14. Запрос логина и пароля
Разместим на главной форме приложения следующие компоненты с вкладки ADO меню компонент.
После этого переходим на вкладку DataAccess – рисунок 15.
Рисунок 15. Вкладка DataAccess
На этой вкладке выбираем компонент 
Рисунок 16. Вкладка DataControls
Выбираем компонент DBGrid 
Теперь перейдем к настройкам каждого из выбранных компонент. Для каждого из описанных компонент необходимо установить следующие свойства:
ADOTable1.Connection := ADOConnection1;
ADOTable1.TableName := ‘goods’;
ADOTable1.Active := ‘true’;
DataSource1.DataSet := ADOTable1;
DBGrid1.DataSource := DataSource1;
После чего ты увидим, что товары появились на форме – рисунок 16.
Для удобной навигации по базе данных необходимо разместить на главной форме приложения 
Рисунок 17. БД Товары на форме
Настроим его следующим образом:
DBNavigator1. DataSource := DataSource1;
Запустим приложение при помощи кнопки запуска – рисунок 18.
Рисунок 18. Запуск приложения
После запуска приложение будет выглядеть следующим образом – рисунок 19.
Рисунок 19. Запущенное приложение
Данное приложение позволяет работать с базой данных «товары».
ЗАКЛЮЧЕНИЕ
В процессе написания курсовой работы и программы были получены навыки работы в среде разработки Delphi 7, достигнуты поставленные задачи и цели: разработка программы «Построитель графиков», написание руководства пользователя и т.д.
В главе Детерминированное программирование мы узнали основные понятия и определения, а также разобрали различные виды и ответвления этого программирования.
В главе Руководство пользователя были рассмотрены определения и правила написания руководства пользователя.
В заключительной главе было сделано обоснование темы, рассказано о языке Delphi. Данная глава содержит иллюстрации, что во многом облегчает работу пользователю.
Таким образом, мы можем сказать, что задачи были решены, а поставленная цель достигнута.
Написанная программа называется «Построитель графиков». Она может претендовать на математический, физиологический инструмент, в помощь тем, кто пишет рефераты, курсовые, дипломные используя в них графики. Основное отличие от аналогов – график рисуется по точкам, в процессе соединение точек можно убрать, что очень удобно для наглядности.
К основным возможностям программы можно отнести то, что значения вводятся в таблицу x,y от 0 до 13, вывод графика на Form2, возможность корректировать значения Form1 не выключая Form2 и получить другой результат, а также внешний вид программы прост и понятен в использовании.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
- Ахо А., Ульман Дж. «Теория синтаксического анализа, перевода и компиляции» в 2 тт., том 1, М., Мир, 2016.
- Братчиков И.Л. «Синтаксис языков программирования» Наука, М: Инси, 2015. – 344 с.
- Гулидов А.И., Наберухин Ю.И. Диалектика необходимого – случайного в свете концепции динамического хаоса. 2017. – № 1(9). – С.33–46.
- Дейкстра Э. Заметки по структурному программированию — М: Дрофа, 2016, — 455 с.
- Ершов А.П. Введение в теоретическое программирование — М: РОСТО, 2018, — 288 с.
- Захарова И.Г. Информационные технологии в образовании: Учеб. пособие для студ. высш. пед. учеб. заведений. – М.: Издательский центр «Академия», 2015. – 192 с.
- Кнут Д. Искусство программирования для ЭВМ, т.1. М.: 2016, 735 с.
- Коган Д.И., Бабкина Т.С. «Основы теории конечных автоматов и регулярных языков. Учебное пособие» Издательство ННГУ, 2017. — 97 с.
- Майерс Г. Надежность программного обеспечения — М: Дрофа, 2018, — 360 с.
- Мендельсон Э. Введение в математическую логику, М: Инси, 2018, — 320 с.
- Рудаков А. В. Технология разработки программных продуктов. М: Издательский центр «Академия», 2016. – 306 с.
- Свешникова Е.Ю. Анализ режимов детерминированного хаоса в переходных процессах электроэнергетических систем. М: Издательство «Агат», 2016. — 181 с.
- Тыугу, Э.Х. Концептуальное программирование. — М.: Наука, 2017, — 256 с.
- Хопкрофт Дж., Мотвани Р., Ульман Дж. «Введение в теорию автоматов, языков и вычислений» — М.: Издательство ВИЛЬЯМС, 2018. — 527с.
- Хьюз Дж., Мичтом Дж. Структурный подход к программированию -М: Мир, 2016, — 278 с.
ПРИЛОЖЕНИЕ. ЛИСТИНГ ПРОГРАММЫ
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, Grids, DBGrids, ExtCtrls, DBCtrls;
type
TForm1 = class(TForm)
ADOConnection1: TADOConnection;
ADOTable1: TADOTable;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
ADOTable1.Connection := ADOConnection1;
ADOTable1.TableName := ‘goods’;
ADOTable1.Active := ‘true’;
DataSource1.DataSet := ADOTable1;
DBGrid1.DataSource := DataSource1;
DBNavigator1. DataSource := DataSource1;
ADOTable1.Connection := ADOConnection1;
ADOTable1.TableName := ‘goods’;
ADOTable1.Active := ‘true’;
DataSource1.DataSet := ADOTable1;
DBGrid1.DataSource := DataSource1;
DBNavigator1. DataSource := DataSource1;
end;
end.
Размещено на Allbest.ru
- Обзор языков программирования высокого уровня Определение языка программирования)
- Информационная система повышения эффективности компании по обслуживанию компьютеров
- Финансовые Рынки
- Анализ доходов и расходов банка на примере ПАО «ФК Открытие»
- Понятие и признаки государства ( Сущность государства)
- Теории происхождения государства (Синтезный путь развития государства)
- Понятие правонарушения ( Виды)
- Коммерческая деятельность розничного торгового предприятия и ее совершенствование (на примере конкретной организации)
- Антикризисное управление: понятие, цели и проблемы
- Организация заработной платы. Понятие тарифной системы, форм и систем заработной платы (Формы коллективного премирования)
- Понятия и признаки государства (Территориальная организация населения и публичная (государственная) власть)
- Изучение составляющих социального обеспечения
![Общие принципы разработки программных средств [18.10.13]](https://studrb.ru/files/works_screen/1/53/53.png)
Тема: Общие принципы разработки программных средств
Раздел: Бесплатные рефераты по информатике
Тип: Курсовая работа | Размер: 89.49K | Скачано: 165 | Добавлен 18.10.13 в 11:31 | Рейтинг: 0 | Еще Курсовые работы
Вуз: ВЗФЭИ
Оглавление
Введение 2
Теоретическая часть
Введение 3
1. Классификация программных средств 3
2. Специфика разработки программных средств 4
3. Период разработки и эксплуатации программного средства 5
4. Понятие качества ПС 7
5. Общие принципы обеспечения надежности ПС 9
6. Методы борьбы со сложностью и контроль принимаемых решений 10
Заключение 11
Практическая часть
1. Общая характеристика задачи 12
2. Описание алгоритма решения задачи 15
Список использованной литературы 21
Приложения 22
Введение
Важной и неотъемлемой частью компьютера являются программные средства. Именно с помощью них и осуществляется вся работа с компьютером, выполнение на нем нужных задач. Разрабатываются самые различные программы, что существенно упрощает работу и жизнь многих людей. Функционирование современных компьютеров невозможно без установки необходимых программных средств.
Выбранная тема очень актуальна в нынешнее время, так как происходит всё более глобальная компьютеризация общества. Разрабатываются и совершенствуются программные средства.
В работе будут рассмотрены следующие вопросы: особенности современных программных средств; основные подходы к организации процесса создания и использования ПС; особенности разработки программных средств; критерии качества ПС; стадии и фазы жизненного цикла ПС.
В практической части курсовой работы решена задача – подведение итогов о результатах расчета стоимости по полученному заказу за октябрь 2006 года фирмы ООО «Стройдизайн» по каждому виду работ, которая решена с использованием MS Excel.
Курсовая работа выполнена и оформлена с использованием ПК с техническими характеристиками:
Процессор: AMD Turion 64 MT-32, оперативно запоминающее устройство (ОЗУ) объемом 384 Г, жесткий диск объемом 80 Г, видеочип: SiS M760.
Программные средства:
Операционная система Microsoft Windows XP Professional версия 2002 Service Pack 2, пакет офисных приложений Microsoft Office 2007: MS Word, MS Excel, MS Power Point.
«Общие принципы разработки программных средств»
Теоретическая часть
Вариант 32.
Введение
Объектом изучения в данной работе являются принципы разработки программных средств. Предметом изучения в данной работе является разработка программных средств.
Классификация программных средств
Программные средства – программа или логически связанная совокупность программ, находящаяся на машинных носителях данных и снабженная документацией, которая обеспечивает работу компьютеров и сетей.
Среди программных средств можно выделить три класса: системное программное обеспечение; инструментарий технологии программирования; прикладное программное обеспечение.
Системное программное обеспечение подразделяется на базовое и сервисное. Базовое программное обеспечение делится на: базовые системы ввода-вывода (BIOS); операционные системы; операционные оболочки.
Инструментарий технологий программирования представляет собой совокупность программных систем, обеспечивающих процесс разработки программного обеспечения. Инструментальное ПО предназначено для разработки программ.
Прикладное программное обеспечение – ПО, предназначенное для эффективной разработки и выполнения конкретных комплексов задач пользователя. Основную часть прикладного ПО составляют пакеты прикладных программ (ППП).1
1 Б.Е. Одинцов, А.Н. Романов Информатика в экономике.
Специфика разработки программных средств
Разработка программных средств имеет ряд специфических особенностей. Создание каждого нового программного средства включает в себя большую творческую работу, так как постановка задачи имеет неформальный характер.
На каждом этапе разработки создателю необходимо сделать выбор и принять какое-то решение. Поэтому разработка ПС не может быть выполнена строго по определенному шаблону .Тем самым эта разработка ближе к процессу проектирования каких-либо сложных устройств, но никак не к их массовому производству.
Разработка программных средств требует учета особенностей структуры экономических систем. Прежде всего — это сложность организационного взаимодействия, которая вызывает необходимость создания многоуровневых иерархических систем со сложными информационными связями прямого и обратного направления. В основу новой информационной технологии закладывается широкое применение компьютеров и формирование на их базе вычислительных сетей.2
Разработчик должен учитывать, в каких целях будет использоваться программное средство, и сделать его наиболее понятным для пользователя.
Следует отметить также особенность продукта разработки. Он представляет собой некоторую совокупность текстов. Смысл этих текстов выражается процессами обработки данных и действиями пользователей, запускающих эти процессы.
Разработка ПС имеет и другую специфическую особенность: программное средство при своей эксплуатации не расходуется и не расходует используемых ресурсов.
2 Г.А. Титоренко и др. Автоматизированные информационные технологии в экономике
Период разработки и эксплуатации программного средства
Под периодом разработки и эксплуатации понимают жизненный цикл ПС. Жизненный цикл охватывает довольно сложный процесс создания и использования ПС. Этот процесс может быть организован по-разному для разных классов ПС и в зависимости от особенностей разработки.
Различают следующие стадии жизненного цикла программного средства: разработку программного средства, производство программных изделий (ПИ) и эксплуатацию программного средства (приложение 1).
Стадия разработки программного средства состоит из этапа его внешнего описания, этапа конструирования программного средства, этапа кодирования (программирование в узком смысле) программного средства и этапа аттестации программного средства. Всем этим этапам сопутствуют процессы документирования и управление разработкой программного средства. Этапы конструирования и кодирования часто перекрываются, иногда довольно сильно. Это означает, что кодирование некоторых частей программного средства может быть начато до завершения этапа конструирования.
Внешнее описание программного средства является описанием его поведения с точки зрения внешнего по отношению к нему наблюдателю с фиксацией требований относительно его качества. Внешнее описание программного средства начинается с определения требований к программному средству со стороны пользователей (заказчика).
Конструирование программного средства охватывает процессы: разработку архитектуры программного средства, разработку структур программ программного средства и их детальную спецификацию, кодирование, создание текстов программ на языках программирования, их отладку с тестированием программного средства.
На этапе аттестации программного средства производится оценка качества программного средства, после успешного завершения которого, разработка программного средства считается законченной.
Программное изделие — экземпляр или копия, снятая с разработанного программного средства. Изготовление программного изделия — это процесс генерации или воспроизведения (снятия копии) программ и программных документов программного средства с целью их поставки пользователю для применения по назначению.
Производство программного изделия — это совокупность работ по обеспечению изготовления требуемого количества программных изделий в установленные сроки. Стадия производства программного средства в жизненном цикле программного средства является не существенной, так как представляет рутинную работу, которая может быть выполнена автоматически и без ошибок. Этим она принципиально отличается от стадии производства различной техники.
Стадия эксплуатации программного средства охватывает процессы хранения, внедрения и сопровождения программного средства, а также транспортировки и применения программного изделия по своему назначению. Она состоит из двух параллельно проходящих фаз: фазы применения программного средства и фазы сопровождения программного средства.
Применение программного средства — это использование программного средства для решения практических задач на компьютере путем выполнения ее программ.
Сопровождение программного средства — это процесс сбора информации о качестве его в эксплуатации, устранения обнаруженных в нем ошибок, его доработки и модификации, а также извещения пользователей о внесенных в него изменениях.
Понятие качества ПС
Каждое ПС должно выполнять определенные функции, т.е. делать то, что задумано.
Хорошее ПС должно обладать еще целым рядом свойств, позволяющим успешно его использовать в течении длительного периода, т.е. обладать определенным качеством.
Качество ПС — Совокупность свойств программного средства, которые обусловливают его пригодность удовлетворять заданные или подразумеваемые потребности в соответствии с его назначением.3
Но это не значит, что ПС должны в высшей мере обладать этими свойствами. Этому препятствует тот факт, что повышение качества программного средства по одному из таких свойств часто может быть достигнуто лишь ценой изменения стоимости, сроков завершения разработки и снижения качества этого программного средства по другим его свойствам
Качество ПС является удовлетворительным, когда оно обладает указанными свойствами в такой степени, чтобы гарантировать успешное его использование.
Совокупность свойств ПС, которая образует удовлетворительное для пользователя качество ПС, зависит от условий и характера эксплуатации этого ПС, т.е. от позиции, с которой должно рассматриваться качество этого ПС.
Поэтому при описании качества ПС, прежде всего, должны быть фиксированы критерии отбора требуемых свойств ПС.
В настоящее время критериями качества ПС принято считать:
— функциональность,
— надежность,
3 ГОСТ 28806-90 Качество программных средств. Термины и определения.
— легкость применения,
— эффективность,
— сопровождаемость,
— мобильность.
Функциональность — это способность ПС выполнять набор функций, удовлетворяющих заданным или подразумеваемым потребностям пользователей. Набор указанных функций определяется во внешнем описании ПС.
Надежность — это характеристика ПС отвечать и полагаться заданным стандартам.
Легкость применения — это характеристики ПС, которые позволяют минимизировать усилия пользователя по подготовке исходных данных, применению ПС и оценке полученных результатов, а также вызывать положительные эмоции определенного или подразумеваемого пользователя.
Эффективность — это отношение уровня услуг, предоставляемых ПС пользователю при заданных условиях, к объему используемых ресурсов.
Сопровождаемость — это характеристики ПС, которые позволяют сократить усилия по внесению изменений для устранения в нем ошибок.
Мобильность — это способность ПС быть перенесенным из одной среды (окружения) в другую, в частности, с одного компьютера на другой.
Функциональность и надежность являются обязательными критериями качества ПС, причем обеспечение надежности будет красной нитью проходить по всем этапам и процессам разработки ПС.
Остальные критерии используются в зависимости от потребностей пользователей в соответствии с требованиями к ПС.
Общие принципы обеспечения надежности ПС
Общие принципы обеспечения надежности являются основным мотивом разработки программного средства. Они задают специфическую окраску всем технологическим процессам разработки программного средства.
В технике известны четыре подхода обеспечению надежности: предупреждение ошибок; самообнаружение ошибок; самоисправление ошибок; обеспечение устойчивости к ошибкам.
Целью подхода «предупреждения ошибок» является не допустить ошибки в программном средстве. Этот подход связан с технологией программирования. И хотя гарантировать отсутствие ошибок в программном средстве невозможно, в рамках этого подхода можно достигнуть приемлемого уровня надежности программного средства.
Остальные три подхода связаны с организацией самих программ. Они учитывают возможность ошибки в программах.
Самообнаружение ошибки в программе означает, что программа содержит средства обнаружения отказа в процессе ее выполнения.
Самоисправление ошибки в программе означает не только обнаружение отказа в процессе ее выполнения, но и исправление последствий этого отказа, для чего в программе должны иметься соответствующие средства.
Обеспечение устойчивости программы к ошибкам означает, что в программе содержатся средства, позволяющие локализовать область влияния отказа программы, либо уменьшить его неприятные последствия, а иногда предотвратить катастрофические последствия отказа.
Однако эти подходы используются весьма редко. Связано это с тем, что многие простые методы, используемые в технике, неприменимы в программировании.
Методы борьбы со сложностью и контроль принимаемых решений
Известны два общих метода борьбы со сложностью систем:
— обеспечение независимости компонент системы;
— использование в системах иерархических структур.
Обеспечение независимости компонент системы означает разбиение системы на такие части, между которыми должно остаться по возможности меньше связей. Одним из воплощений этого метода является модульное программирование.
Использование иерархических структур позволяет локализовать связи между компонентами, принадлежащими смежным уровням иерархии. Этот метод означает разбиение большой системы на подсистемы, образующие малую систему.
Обязательным шагом в каждом этапе разработки программного средства должна быть проверка правильности принятых решений. Это позволит обнаруживать и исправлять ошибки на самой ранней стадии.
С учетом специфики разработки программного средства необходимо применять везде, где это возможно:
— смежный контроль;
— сочетание как статических, так и динамических методов контроля.
Смежный контроль означает проверку полученного документа лицами, не участвующими в его разработке. Такой контроль позволяет обеспечивать однозначность интерпретации полученного документа.
Сочетание статических и динамических методов контроля означает, что нужно не только контролировать документ как таковой, но и проверять, какой процесс обработки данных он описывает. Это отражает одну из специфических особенностей программного средства (статическая форма, динамическое содержание).
Заключение
По итогам изучения темы «Общие принципы разработки программных средств» можно выделить следующее: для того чтобы программное средство нормально функционировало и удовлетворяло потребности пользователя необходимо, чтобы оно было качественным и обладало целым рядом свойств. Также основным мотивом разработки программного средства является обеспечение надежности. И конечно обязательным шагом в процессе разработки программного средства должна быть проверка правильности принятых решений.
Принципы разработки программных средств будут изменяться и совершенствоваться с каждым днем, так как технический прогресс не стоит на месте. С помощью программных средств решается всё больше задач разного типа. Разрабатываются узко профильные программные средства и средства общего пользования.
Из всего этого следует, что разработка программных средств занимает важное место в технической сфере.
Сегодня российская отрасль разработки программных средств занимает очень скромное место в отечественной экономике (0,15% ВВП). Но инициатива поддержки российской индустрии разработки ПС уже в настоящий момент находится в стадии развертывания.4
4Аналитический сайт. Роль Microsoft в развитии инновационного потенциала России.
Практическая часть
Вариант 7
Общая характеристика задачи
Используя ППП (пакет прикладных программ) необходимо подвести итоги о результатах расчета стоимости по полученному заказу за октябрь 2006 года фирмы ООО «Стройдизайн» по каждому виду работ.
Фирма ООО «Стройдизайн» осуществляет деятельность, связанную с выполнением работ по ремонту помещений. Прайс-лист на выполнение работы приведен на рис.1. Данные о заказанных работах указаны на рис.2.
- Построить таблицы по приведенным ниже данным.
- Выполнить расчет стоимости выполняемых работ по полученному заказу, данные расчета занести в таблицу (рис.2).
- Организовать межтабличные связи для автоматического формирования счета, выставляемого клиенту для оплаты выполняемых работ.
- Сформировать и заполнить счет на оплату (рис.3).
- Результаты расчета стоимости каждого вида работ по полученному заказу представить в графическом виде.
|
Наименование работы |
Единица измерения |
Цена за ед. (руб.) |
|
Замена батарей |
шт. |
250 |
|
Замена ванны |
шт. |
210 |
|
Замена труб |
м |
240 |
|
Наклейка обоев |
м² |
50 |
|
Настилка паркета |
м² |
75 |
|
Побелка потолка |
м² |
15 |
Рис. 1. Прайс-лист на выполняемые работы
|
Наименование работы |
Единица измерения |
Объем выполняемых работ |
Цена за ед.изм.,руб. |
Стоимость работ,руб. |
|
Замена батарей |
шт. |
4 |
||
|
Наклейка обоев |
М ² |
20 |
||
|
Замена труб |
м |
4 |
||
|
Настилка паркета |
м² |
15 |
Рис. 2. Данные о поступившем заказе
ООО «Стройдизайн»
СЧЕТ №1
Дата __.__.20__
ФИО клиента _______________________________
|
№ п/п |
Наименование работы |
Единица измерения |
Объем выполненных работ |
Цена за ед.изм.,руб. |
Стоимость работ,руб. |
|
1 |
Замена батарей |
Шт. |
|||
|
2 |
Наклейка обоев |
М2 |
|||
|
3 |
Замена труб |
М |
|||
|
4 |
Настилка паркетов |
М2 |
|||
|
Итого |
|||||
|
НДС |
|||||
|
Сумма с НДС |
Гл.бухгалтер ___________________________
Рис. 3. Форма счета на оплату выполненных работ
Описание алгоритма решения задачи смотрите в файле!
Список использованной литературы
- Б.Е. Одинцов, А.Н. Романов Информатика в экономике. – М: Вузовский учебник, 2008. — 477с.
- Е.Н. Ефимов Основы информатики для экономистов. – М: Феникс, 2008. — 379с.
- В.П. Агальцов Информатика для экономистов. – М: Форум, 2006. — 447с.
- С.А. Орлов Технология разработки программного обеспечения. – П, Питер, 2005. — 149с.
- С. В. Симонович Информатика. Базовый курс. -СПб.: Питер, 2006. — 423с.
- Г.А. Титоренко и др. Автоматизированные информационные технологии в экономике. – электронная версия. (http://www.eusi.ru/lib/titorenko_avtomatisirovannye_informazionnye_tehnologii_v/index.shtml)
- ГОСТ 28806-90 Качество программных средств. Термины и определения. Межгосударственный стандарт. – М: ИПК Издательство Стандартов,2008. – 17с.
- Методические указания по выполнению курсовой работы Информатика. – М: Вузовский учебник,2006. — 60с.
- Аналитический сайт. Роль Microsoft в развитии инновационного потенциала России. – Профиль, 12.03.07.- http://pragent.ru/public/microsoft1/
- Дом информационных технологий. -http://www.itdom.info
Внимание!
Если вам нужна помощь в написании работы, то рекомендуем обратиться к профессионалам. Более 70 000 авторов готовы помочь вам прямо сейчас. Бесплатные корректировки и доработки. Узнайте стоимость своей работы
Бесплатная оценка
0
18.10.13 в 11:31
Автор:uno
Понравилось? Нажмите на кнопочку ниже. Вам не сложно, а нам приятно).
Чтобы скачать бесплатно Курсовые работы на максимальной скорости, зарегистрируйтесь или авторизуйтесь на сайте.
Важно! Все представленные Курсовые работы для бесплатного скачивания предназначены для составления плана или основы собственных научных трудов.
Друзья! У вас есть уникальная возможность помочь таким же студентам как и вы! Если наш сайт помог вам найти нужную работу, то вы, безусловно, понимаете как добавленная вами работа может облегчить труд другим.
Добавить работу
Если Курсовая работа, по Вашему мнению, плохого качества, или эту работу Вы уже встречали, сообщите об этом нам.
Добавление отзыва к работе
Добавить отзыв могут только зарегистрированные пользователи.
Похожие работы
- Общие принципы разработки программных средств
- Общие принципы разработки программных средств
ВСЕРОССИЙСКИЙ
ЗАОЧНЫЙ ФИНАНСОВО-ЭКОНОМИЧЕСКИЙ
ИНСТИТУТ
КАФЕДРА
АВТОМАТИЗИРОВАННОЙ ОБРАБОТКИ
КУРСОВАЯ
РАБОТА
по дисциплине
«Информатика»
на тему
«Общие принципы разработки
программных средств»
Исполнитель:
Кондратьева
Маргарита Павловна
специальность
Ф и Кр
группа
201
№ зачетной книжки
07ФФБ03568
Руководитель:
Белопольская
Надежда Моисеевна
Челябинск
– 2010
ОГЛАВЛЕНИЕ
ВВЕДЕНИЕ…………………………………………………………..………….3
1. ТЕОРЕТИЧЕСКАЯ
ЧАСТЬ
1.1 Классификация
программных средств……………………………………….4
1.2 Специфика
разработки программных средств………………………..….7
1.3 Период
разработки и эксплуатации программного
средства……………….8
1.4 Понятие
качества ПС…………………..…………………………………..11
1.5 Общие
принципы обеспечения надежности ПС…….……………………12
1.6 Методы
борьбы со сложностью………………………….……………….14
1.7 Обеспечение
точности перевода…………………………….……………14
1.8 Преодоление
барьера между пользователем и разработчиком…………14
1.9 Контроль
принимаемых решений…………………………………..……15
ЗАКЛЮЧЕНИЕ………………………………………………………………..16
2. ПРАКТИЧЕСКАЯ
ЧАСТЬ
2.1 Общая
характеристика задачи………………..…………………………..17
2.2 Описание
алгоритма решения задачи…………..………………………..18
СПИСОК
ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ…….…………………….24
ВВЕДЕНИЕ
Обычно
программы разрабатываются в
расчете на то, чтобы ими могли
пользоваться люди, не участвующие
в их разработке (их называют пользователями).
Для освоения программы пользователем
помимо ее текста требуется определенная
дополнительная документация. Программа
или логически связанная совокупность
программ на носителях данных, снабженная
программной документацией, называется
программным средством (ПС). Программа
позволяет осуществлять некоторую автоматическую
обработку данных на компьютере. Программная
документация позволяет понять, какие
функции выполняет та или иная программа,
как подготовить исходные данные и запустить
требуемую программу в процесс ее выполнения,
а также: что означают получаемые результаты
(или каков эффект выполнения этой программы).
Кроме того, программная документация
помогает разобраться в самой программе,
что необходимо, например, при ее модификации.
Актуальность
выбранной темы обусловлена тем,
что технологии постоянно совершенствуются и
активно интегрируются в нашу жизнь, вместе
с этим совершенствуются программы и принципы
их разработки.
В
данной работе будут изложены следующие
вопросы:
- главные особенности
современных операционных систем - специфические
особенности разработки программных средств - основные
подходы к организации процесса создания
и использования ПС. - стадии и
фазы жизненного цикла ПС. - критерии
качества ПС
Практическая
часть включает в себя решение
задачи по расчету зарплаты организации.
В ходе решения задачи все таблицы и диаграмма
были построены с использованием приложения
Microsoft Excel.
ТЕОРЕТИЧЕСКАЯ
ЧАСТЬ
1.1.
Классификация программных
средств.
Совокупность
программ и сопровождающей их документации,
предназначенная для решения
задач на ПК, называется программным
обеспечением (ПО). Оно делится на
системное и прикладное.
Системное
программное обеспечение необходимо
для управления компьютером, создания
и поддержки выполнения других программ
пользователя, а также для предоставления
пользователю набора всевозможных услуг.
Его можно разделить следующим образом:
операционные системы, сервисные системы,
программно-инструментальные средства
и системы технического обслуживания.
Главное
место среди системных продуктов
занимают операционные системы. Операционная
система (ОС) – совокупность программ,
управляющих работой всех устройств ПК
и процессом выполнения прикладных программ1.
ОС осуществляет контроль работоспособности
оборудования ПК, процедуры начальной
загрузки, управление работой устройств
ПК, управление файловой системой, взаимодействие
пользователя с ПК, загрузку и выполнение
прикладных программ.
До
появления микропроцессоров каждый
производитель разрабатывал свою собственную
операционную систему. С эволюцией
микропроцессорной техники потребности
в ОС существенно изменились. До
недавнего времени на большинстве
ПК была установлена операционная система
MS DOS (MS Disk Operating System – дисковая операционная
система фирмы MS) или один из ее аналогов,
например PC DOS (Personal Computer Disk Operating System –
дисковая операционная система персональных
компьютеров) фирмы IBM либо Novell DOS фирмы
Novell.
Главными
особенностями и отличиями современных
операционных систем являются: многозадачность,
развитый графический пользовательский
интерфейс, устойчивость в работе и защищенность,
полная независимость от аппаратуры, совместимость
со всеми видами приложений, разработанных
для MS DOS.
Сервисные
системы расширяют возможности ОС,
предоставляя пользователю, а также выполняемым
программам набор разнообразных услуг.
К сервисным системам относят оболочки,
утилиты и операционные среды.
Оболочка
операционной системы – это программный
продукт, который делает общение пользователя
с компьютером более облегченным.
Различия
между операционными оболочками
и операционными
средами достаточно условны. В ряде
литературных источников они стерты, так
как операционная среда обладает всеми
признаками оболочки, за исключением того,
что последняя не формирует новой среды
для выполнения программ. Это является
функцией только операционной системы.
Утилиты
– служебные программы, предоставляющие
пользователю ряд дополнительных услуг.
К утилитам относят такие программные
средства, как: дисковые компрессоры; дисковые
дефрагментаторы; программы резервного
копирования данных; архиваторы; программы,
оптимизирующие использование оперативной
памяти; программы защиты и восстановления
данных; антивирусные программы и др. Для
обслуживания жесткого диска в среде Windows
используются служебные программы. Дадим
им краткую характеристику.
1)
Утилита дефрагментации
диска предназначена для оптимизации
работы диска и повышения скорости доступа
к нему. Дефрагментация диска состоит
в том, что фрагменты файла собираются
в один блок. Можно выбрать один из трех
способов дефрагментации: полную дефрагментацию,
дефрагментацию только файлов, объединение
свободных участков диска.
2)
Программа проверки
диска проверяет достоверность информации,
которая содержится в таблицах распределения
файлов диска, а также осуществляет поиск
сбойных блоков диска.
3)
Программа уплотнения
диска (предназначена для создания
и обслуживания сжатых дисков.
4)
Программа копирования
данных на диске работает в трех режимах:
резервирования, восстановления и сравнения
исходных данных с их резервными копиями.
Для резервных копий используются дискеты,
кассеты с магнитной лентой или другие
сменные носители информации, а также
возможно резервирование на другие жесткие
диски.
5)
Программа Системный
монитор анализирует пиковую нагрузку
процессора и других ресурсов.
6)
Антивирусные программы появились
почти одновременно с персональными компьютерами,
и с тех пор состав их постоянно растет.
Современные антивирусные пакеты несут
задачу выявления и устранения компьютерных
вирусов. Одним из наиболее перспективных
направлений развития антивирусных средств
является создание сетевых версий этих
продуктов. Сетевой антивирусный пакет
устанавливается на сервер и при обнаружении
вируса блокирует дальнейшую работу с
пораженными ресурсами.
Программно-инструментальные
средства – это программные продукты,
предназначенные для разработки программного
обеспечения. К ним относят системы программирования,
которые включают систему команд процессора
и периферийных устройств, трансляторы
с различных языков программирования.
Системы
технического обслуживания – совокупность
программно-аппаратных средств ПК для
обнаружения сбоев в процессе работы компьютера.
Они нужны для проверки работоспособности
отдельных узлов, блоков и всей машины
в целом, являясь инструментом специалистов
по эксплуатации и ремонту технических
средств компьютера. Эти средства можно
разделить на средства диагностики ПК,
текстового контроля, аппаратного контроля
и программно-аппаратного контроля:
—
средства диагностики обеспечивают автоматический
поиск ошибок и выявление неисправностей
с определенной локализацией их в ПК и
его отдельных модулях.
—
тестовый контроль осуществляется с помощью
специальных тестов для проверки правильности
работы ПК или его отдельных устройств.
—
аппаратный контроль ведется автоматически
с помощью встроенного на ПК оборудования.
—
программно-аппаратный контроль включает
программный и аппаратный контроль.
Программное
обеспечение, которое предназначено
для решения определенных классов
задач пользователя, называют прикладным.
Прикладное программное
обеспечение состоит из пакетов прикладных
программ и прикладных программ пользователя.
Областью применения таких пакетов является
в основном экономическая сфера.
Прикладные
программы создаются разработчиками
с использованием средств программирования,
имеющихся в их распоряжении в
составе конкретной вычислительной
среды. В этом случае создание и отладка
программ осуществляется обычно индивидуально
в соответствии с правилами.
1.2
Специфика разработки
программных средств
Разработка
программных средств имеет
ряд специфических особенностей,
отметим главные из них:
- Прежде всего,
следует отметить некоторое противостояние:
неформальный характер требований
к ПС (постановки задачи) и понятия ошибки
в нем, но формализованный основной
объект разработки — программы ПС. Тем самым
разработка ПС содержит определенные
этапы формализации. - Разработка
ПС носит творческий
характер (на каждом шаге приходится
делать какой-либо выбор, принимать какое-либо
решение). Тем самым эта разработка ближе
к процессу проектирования каких-либо
сложных устройств, но никак не к их
массовому производству. Этот творческий
характер разработки ПС сохраняется до
самого ее конца. - Следует отметить
также особенность продукта разработки.
Он представляет собой некоторую совокупность
текстов (т.е. статических
объектов), смысл же этих текстов
выражается процессами обработки данных
и действиями пользователей, запускающих
эти процессы (т.е. является динамическим).
Это предопределяет выбор разработчиком
ряда специфичных приемов, методов и средств.
Продукт
разработки имеет и другую специфическую
особенность: ПС при своем использовании
(эксплуатации) не расходуется и не расходует
используемые ресурсы.
1.3.
Период разработки и
эксплуатации программного
средства.
Под
периодом разработки и эксплуатации
(использования) понимают жизненный
цикл ПС. Жизненный цикл охватывает
довольно сложный процесс создания и использования
ПС. Этот процесс может быть организован
по-разному для разных классов ПС и в зависимости
от особенностей коллектива разработчиков.
В настоящее время можно выделить 5 основных
подходов к организации процесса создания
и использования ПС.
Водопадный подход. При таком подходе
разработка ПС состоит из цепочки этапов.
На каждом этапе создаются документы,
используемые на последующем этапе. В
исходном документе фиксируются требования
к ПС. В конце этой цепочки создаются программы,
включаемые в ПС.
Исследовательское
программирование. Этот подход предполагает
быструю реализацию рабочих версий программ
ПС, выполняющих лишь в первом приближении
требуемые функции. После экспериментального
применения реализованных программ производится
их модификация с целью сделать их
более полезными для пользователей. Этот
процесс повторяется до тех пор, пока ПС
не будет достаточно приемлемо для пользователей.
Такой подход применялся на ранних этапах
развития программирования, когда технологии
программирования не придавали большого
значения (использовалась интуитивная
технология).
Прототипирование. Этот подход моделирует
начальную фазу исследовательского
программирования вплоть до создания
рабочих версий программ, предназначенных
для проведения экспериментов с целью
установить требования к ПС. В дальнейшем
должна последовать разработка ПС по установленным
требованиям в рамках какого-либо другого
подхода (например, водопадного).
Формальные преобразования. Этот подход
включает разработку формальных спецификаций
ПС и превращение их в программы путем
корректных преобразований.- Сборочное
программирование. Этот подход предполагает,
что ПС конструируется, главным образом,
из компонент, которые уже существуют.
Должно быть некоторое хранилище (библиотека)
таких компонент, каждая из которых может
многократно использоваться в разных
ПС. Такие компоненты называются повторно
используемыми. Процесс разработки ПС
при данном подходе состоит скорее из
сборки программ из компонент, чем из их
программирования.
Исследовательское
программирование исходит из взгляда
на программирование как на искусство.
Оно применяется тогда, когда водопадный
подход не применим из-за того, что не удается
точно сформулировать требования к ПС.
Прототипирование рассматривается
как вспомогательный подход, используемый
в рамках других подходов, в основном,
для прояснения требований к ПС.
В
рамках водопадного
подхода различают следующие стадии
жизненного цикла ПС: разработку ПС, производство
программных изделий (ПИ) и эксплуатацию
ПС.
Стадия
разработки ПС состоит из этапа его
внешнего описания, этапа конструирования
ПС, этапа кодирования (программирование
в узком смысле) ПС и этапа аттестации
ПС. Всем этим этапам сопутствуют процессы
документирования и управления ПС. Этапы
конструирования и кодирования часто
перекрываются, иногда довольно сильно.
Это означает, что кодирование некоторых
частей программного средства может быть
начато до завершения этапа конструирования.
Этап
внешнего описания ПС включает процессы,
приводящие к созданию некоторого документа.
Этот документ является описанием поведения
ПС с точки зрения внешнего по отношению
к нему наблюдателя с фиксацией требований
относительно его качества. Внешнее
описание ПС начинается с анализа и
определения требований к ПС со стороны
пользователей (заказчика), а также
включает процессы спецификации этих
требований. Конструирование ПС охватывает
процессы: разработку архитектуры ПС,
разработку структур программ ПС и их
детальную спецификацию.
Кодирование
ПС включает процессы создания текстов
программ на языках программирование,
их отладку с тестированием ПС.
На
этапе аттестации ПС производится оценка
качества ПС. Если эта оценка оказывается
приемлемой для практического использования
ПС, то разработка ПС считается законченной.
Это обычно оформляется в виде некоторого
документа, фиксирующего решение комиссии,
проводящей аттестацию ПС.
Программное
изделие (ПИ) —
экземпляр или копия разработанного ПС.
Изготовление ПИ — это процесс генерации
и/или воспроизведения (снятия копии) программ
и программных документов ПС с целью их
поставки пользователю для применения
по назначению. Производство
ПИ —
это совокупность работ по обеспечению
изготовления требуемого количества
ПИ в установленные сроки.
Стадия
эксплуатации ПС охватывает процессы
хранения, внедрения и сопровождения
ПС, а также транспортировки и применения
ПИ по своему назначению. Она состоит из
двух параллельно проходящих фаз: фазы
применения ПС и фазы сопровождения ПС.
Применение
ПС —
это использование ПС для решения практических
задач на компьютере путем выполнения
ее программ.
Сопровождение
ПС —
это процесс сбора информации о качестве
ПС в эксплуатации, устранения обнаруженных
в нем ошибок, его доработки и модификации,
а также извещения пользователей о внесенных
в него изменениях.
1.4.
Понятие качества ПС.
Каждое
ПС должно выполнять определенные функции,
т.е. делать то, что задумано. Хорошее ПС
должно обладать еще целым рядом свойств,
позволяющим успешно его использовать
в течении длительного периода, т.е. обладать
определенным качеством. Качество
ПС —
это совокупность его черт и характеристик,
которые влияют на его способность удовлетворять
заданные потребности пользователей.
Но это не значит, что ПК должны в высшей
мере обладать этими свойствами. Качество
ПС является удовлетворительным, когда
оно обладает указанными свойствами в
такой степени, чтобы гарантировать успешное
его использование.
Совокупность
свойств ПС, которая образует удовлетворительное
для пользователя качество ПС, зависит
от условий и характера эксплуатации этого
ПС, т.е. от позиции, с которой должно
рассматриваться качество этого ПС. Поэтому
при описании качества ПС, прежде всего,
должны быть фиксированы критерии
отбора требуемых свойств ПС. В настоящее
время критериями
качества ПС принято считать: функциональность,
надежность, легкость применения, эффективность,
сопровождаемость, мобильность.
Функциональность —
это способность ПС выполнять набор функций,
удовлетворяющих заданным или подразумеваемым
потребностям пользователей. Набор указанных
функций определяется во внешнем описании
ПС.
Надежность
— это характеристика ПС отвечать и полагаться
заданным стандартам.
Легкость
применения — это характеристики
ПС, которые позволяют минимизировать
усилия пользователя по подготовке исходных
данных, применению ПС и оценке полученных
результатов, а также вызывать положительные
эмоции определенного или подразумеваемого
пользователя.
Эффективность —
это отношение уровня услуг, предоставляемых
ПС пользователю при заданных условиях,
к объему используемых ресурсов.
Сопровождаемость —
это характеристики ПС, которые позволяют
сократить усилия по внесению изменений
для устранения в нем ошибок.
Мобильность —
это способность ПС быть перенесенным
из одной среды (окружения) в другую, в
частности, с одного компьютера на другой.
Функциональность
и надежность являются обязательными
критериями качества ПС, причем обеспечение
надежности будет красной нитью проходить
по всем этапам и процессам разработки
ПС. Остальные критерии используются
в зависимости от потребностей пользователей
в соответствии с требованиями к ПС.
1.5
Общие принципы
обеспечения надежности
ПС
Обеспечение
надежности ПС является основным мотивом
разработки ПС, задающим специфическую
окраску всем технологическим процессам
разработки ПС. В технике известны четыре
подхода обеспечению надежности: предупреждение
ошибок, самообнаружение ошибок, самоисправление
ошибок, обеспечение устойчивости к ошибкам.
Целью
подхода предупреждения
ошибок —
не допустить ошибок в готовых продуктах,
в нашем случае — в ПС. Проведенное рассмотрение
природы ошибок при разработке
ПС позволяет для достижения этой цели
сконцентрировать внимание на следующих
вопросах:
- борьба со
сложностью, - обеспечение
точности перевода, - преодоление
барьера между пользователем и разработчиком, - обеспечение
контроля принимаемых решений.
Этот
подход связан с организацией процессов
разработки ПС, т.е. с технологией
программирования. И хотя, как мы
уже отмечали, гарантировать отсутствие
ошибок в ПС невозможно, но в рамках этого
подхода можно достигнуть приемлемого
уровня надежности ПС.
Остальные
три подхода связаны с организацией
самих продуктов технологии, в нашем
случае —
программ. Они учитывают возможность ошибки
в программах. Самообнаружение
ошибки в программе означает, что
программа содержит средства обнаружения
отказа в процессе ее выполнения. Самоисправление
ошибки в программе означает не только
обнаружение отказа в процессе ее выполнения,
но и исправление последствий этого отказа,
для чего в программе должны иметься соответствующие
средства. Обеспечение
устойчивости программы
к ошибкам означает, что в программе
содержатся средства, позволяющие локализовать
область влияния отказа программы, либо
уменьшить его неприятные последствия,
а иногда предотвратить катастрофические
последствия отказа. Однако эти подходы
используются весьма редко (может быть,
относительно чаще используется обеспечение
устойчивости к ошибкам). Связано это с
тем, что, во-первых, многие простые методы,
используемые в технике в рамках этих
подходов, неприменимы в программировании,
например, дублирование отдельных блоков
и устройств (выполнение двух копий одной
и той же программы всегда будет приводить
к одинаковому эффекту — правильному или неправильному).
Во-вторых, добавление в программу дополнительных
фрагментов приводит к ее усложнению (иногда —
значительному), что в какой-то мере
мешает методам предупреждения ошибок.
1.6
Методы борьбы
со сложностью
Известны
два общих метода борьбы со сложностью
систем:
- обеспечения
независимости компонент системы; - использование
в системах иерархических структур.
Обеспечение
независимости компонент
означает разбиение системы на такие части,
между которыми должны остаться по возможности
меньше связей. Одним из воплощений этого
метода является модульное программирование.
Использование
в системах иерархических
структур позволяет локализовать связи
между компонентами, допуская их лишь
между компонентами, принадлежащими смежным
уровням иерархии. Этот метод, по-существу,
означает разбиение большой системы на
подсистемы, образующих малую систему.
Здесь существенно используется способность
человека к абстрагированию.
1.7
Обеспечение точности
перевода
Обеспечение
точности перевода направлено на достижение
однозначности интерпретации документов
различными разработчиками, а также пользователями
ПС. Это требует придерживаться при переводе
определенной дисциплины. В соответствии
с этим весь процесс
перевода можно разбить на следующие
этапы:
- Понимание
задачи; - Составление
плана (включая цели и методы решения); - Выполнение
плана (проверяя правильность каждого
шага); - Анализ полученного
решения.
1.8
Преодоление барьера
между пользователем
и разработчиком.
Как
обеспечить, чтобы ПС выполняла то,
что пользователю разумно ожидать от
нее? Для этого разработчикам необходимо
правильно понять, во-первых, чего хочет
пользователь, и, во-вторых, его уровень
подготовки и окружающую его обстановку.
При разработке ПС следует привлекать
пользователя для участия в процессах
принятия решений, а также тщательно освоить
особенности его работы (лучше всего —
побывать в его «шкуре»).
1.9
Контроль принимаемых
решений
Обязательным
шагом в каждом процессе (этапе) разработки
ПС должна быть проверка
правильности принятых
решений. Это позволит обнаруживать
и исправлять ошибки на самой ранней стадии
после ее возникновения, что, во-первых,
существенно снижает стоимость ее исправления
и, во-вторых, повышает вероятность правильного
ее устранения. С учетом специфики разработки
ПС необходимо применять везде, где это
возможно,
- Общие принципы разработки программных средств
- Общие принципы разработки таможенных платежей
- Общие принципы управления международными принципами
- Общие принципы управления различными системами
- Общие принципы управленческого учета
- Общие принципы учета предметов хозяйственного инвентаря и спецодежды
- Общие принципы физического воспитания
- Общие принципы организации и управления логистикой
- Общие принципы организации местного самоуправления и их роль в развитии местного самоуправления РФ
- Общие принципы построения бюджетных систем зарубежных стран
- Общие принципы права как источник права
- Общие принципы проведения клинико-анатомического анализа
- Общие принципы работы туристических фирм
- Общие принципы разработки нового товара
Привет, сегодня поговорим про защитное программирование, обещаю рассказать все что знаю. Для того чтобы лучше понимать что такое
защитное программирование , настоятельно рекомендую прочитать все из категории Разработка программного обеспечения и информационных систем.
защитное программирование
1 Правила написания программ с блоками защиты от несанкционированного ввода данных
Парольная система как неотъемлемая составляющая подсистемы управления доступом системы защиты информации (СЗИ) является частью «переднего края обороны» всей системы безопасности. Поэтому парольная система становится одним из первых объектов атаки при вторжении злоумышленника в защищенную систему.
Подсистема управления доступом СЗИ затрагивает следующие понятия:
— Идентификатор доступа — уникальный признак субъекта или объекта доступа.
— Идентификация — присвоение субъектам и объектам доступа идентификатора и (или) сравнение предъявляемого идентификатора с перечнем присвоенных идентификаторов.
— Пароль — идентификатор субъекта доступа, который является его (субъекта) секретом.
— Аутентификация — проверка принадлежности субъекту доступа предъявленного им идентификатора; подтверждение подлинности.
Можно встретить и такие толкования терминов идентификатор и пароль пользователя [1]:
Идентификатор — некоторое уникальное количество информации, позволяющее различать индивидуальных пользователей парольной системы (проводить их идентификацию). Часто идентификатор также называют именем пользователя или именем учетной записи пользователя.
Пароль — некоторое секретное количество информации, известное только пользователю и парольной системе, предъявляемое для прохождения процедуры аутентификации.
Учетная запись — совокупность идентификатора и пароля пользователя.
Одним из наиболее важных компонентов парольной системы является база данных учетных записей (база данных системы защиты). Возможны следующие варианты хранения паролей в системе:
— в открытом виде;
— в виде хэш-значений (hash (англ.) — смесь, мешанина);
— зашифрованными на некотором ключе.
Наибольший интерес представляют второй и третий способы, которые имеют ряд особенностей.
Хэширование не обеспечивает защиту от подбора паролей по словарю в случае получения базы данных злоумышленником. При выборе алгоритма хэширования, который будет использован для вычисления хэш-значений паролей, необходимо гарантировать несовпадение хэш-значений, полученных на основе различных паролей пользователей. Кроме того, следует предусмотреть механизм, обеспечивающий уникальность хэш-значений в том случае, если два пользователя выбирают одинаковые пароли. Для этого при вычислении каждого хэш-значения обычно используют некоторое количество «случайной» информации, например, выдаваемой генератором псевдослучайных чисел.
При шифровании паролей особое значение имеет способ генерации и хранения ключа шифрования базы данных учетных записей. Возможны следующие варианты:
— ключ генерируется программно и хранится в системе, обеспечивая возможность ее автоматической перезагрузки;
— ключ генерируется программно и хранится на внешнем носителе, с которого считывается при каждом запуске;
— ключ генерируется на основе выбранного администратором пароля, который вводится в систему при каждом запуске.
Наиболее безопасное хранение паролей обеспечивается при их хэшировании и последующем шифровании полученных хэш-значений, т.е. при комбинации второго и третьего способов хранения паролей в системе.
Как пароль может попасть в руки злоумышленника? Наиболее реальными выглядят следующие случаи:
— записанный вами пароль найден злоумышленником;
— пароль был подсмотрен злоумышленником при вводе легальным пользователем;
— злоумышленник получил доступ к базе данных системы защиты.
Меры противодействие первым двум опасностям очевидны.
В последнем случае злоумышленнику потребуется специализированное программное обеспечение, поскольку, записи в таком файле крайне редко хранятся в открытом виде . Об этом говорит сайт https://intellect.icu . Стойкость парольной системы определяется ее способностью противостоять атаке злоумышленника завладевшего базой данных учетных записей и пытающегося восстановить пароли, и зависит от скорости «максимально быстрой» реализации используемого алгоритма хэширования. Восстановление паролей заключается в вычислении хэш-значений по возможным паролям и сравнении их с имеющимися хэш-значениями паролей с последующим их представлением в явном виде с учетом регистра.
Из базы данных учетных записей пароль может быть восстановлен различными способами: атакой по словарю, последовательным (полным) перебором и гибридом атаки по словарю и последовательного перебора.
При атаке по словарю последовательно вычисляются хэш-значения для каждого из слов словаря или модификаций слов словаря и сравниваются с хэш-значениями паролей каждого из пользователей. При совпадении хэш-значений пароль найден. Преимущество метода — его высокая скорость. Недостатком является то, что таким образом могут быть найдены только очень простые пароли, которые имеются в словаре или являются модификациями слов словаря. Успех реализации данной атаки напрямую зависит от качества и объема используемого словаря (несложно отыскать подобные готовые словари в Интернете).
Последовательный перебор всех возможных комбинаций (brute force (англ.) — грубая сила, решение «в лоб») использует набор символов и вычисляет хэш-значение для каждого возможного пароля, составленного из этих символов. При использовании этого метода пароль всегда будет определен, если составляющие его символы присутствуют в выбранном наборе. Единственный недостаток этого метода — большое количество времени, которое может потребоваться на определение пароля. Чем большее количество символов (букв разного регистра, цифр, спецсимволов) содержится в выбранном наборе, тем больше времени может пройти, пока перебор комбинаций не закончится.
При восстановлении паролей гибридом атаки по словарю и последовательного перебора к каждому слову или модификации слова словаря добавляются символы справа и/или слева (123parol). Помимо этого может осуществляться проверка использования: имен пользователей в качестве паролей; повторения слов (dogdog); обратного порядка символов слова (elpoep); транслитерации букв (parol); замену букв кириллицы латинской раскладкой (gfhjkm).
Для каждой получившейся комбинации вычисляется хэш-значение, которое сравнивается с хэш-значениями паролей каждого из пользователей.
Какой пароль можно однозначно назвать слабым во всех отношениях (за исключением запоминаемости)? Типичный пример: пароль из небольшого количества (до 5) символов/цифр. По некоторым данным, из 967 паролей одного из взломанных почтовых серверов сети Интернет 335 (почти треть) состояла исключительно из цифр. Количество паролей включающих буквы и цифры оказалось равным 20. Остальные пароли состояли из букв в основном в нижнем регистре за редким исключением (в количестве 2 паролей) включающих спецсимволы («*», «_»). Символ «_», однако, часто встречался в именах пользователей. В 33 случаях имя и пароль пользователя совпадали. Самым популярным оказался пароль 123 (встречался 35 раз, почти каждый 27 пароль). На втором месте пароль qwerty (20 паролей). Как удобно он набирается, не правда ли? Далее следуют: 666 (18 раз), 12 (17 раз), xakep (14 раз) и 1, 11111111, 9128 (по 10 раз). 16 паролей состояли из одного символа/цифры.
В повседневной жизни современному человеку приходится держать в памяти немалое количество информации: пин-коды к банковской карте и мобильному телефону, комбинации кодовых замков, пароль для доступа в Интернет, к ресурсам разного рода, электронным почтовым ящикам. Все ли пароли необходимо держать в памяти? Все зависит от оценки уровня потерь в результате попадания вашего пароля в чужие руки. Пароли для доступа в Интернет и к ресурсам сети никто не мешает записать в блокнот, если вы не опасаетесь, что кто-нибудь войдет в сеть без вашего ведома и ознакомится с содержанием почтового ящика. Данное умозаключение, однако, не распространяется на пароли используемые на рабочем месте. Получение доступа к локальной сети от вашего имени может, по определенным причинам, стать заманчивым вариантом. Пин-код банковской карты тоже не запрещается фиксировать на бумаге, главным условием в этом случае является раздельное хранение карты и записанной без пояснений кодовой комбинации.
1.1.2Приемы надежного программирования
Альтернативой правильного ПС является надежное ПС. Надежность ПС — это его способность безотказно выполнять определенные функции при заданных условиях в течение заданного периода времени с достаточно большой вероятностью [5]. При этом под отказом в ПС понимают проявление в нем ошибки [2]. Таким образом, надежная ПС не исключает наличия в ней ошибок — важно лишь, чтобы эти ошибки при практическом применении этого ПС в заданных условиях проявлялись достаточно редко. Убедиться, что ПС обладает таким свойством можно при его испытании путем тестирования, а также при практическом применении. Таким образом, фактически мы можем разрабатывать лишь надежные, а не правильные ПС.
Разрабатываемая ПС может обладать различной степенью надежности. Как измерять эту степень? Так же как в технике, степень надежности можно характеризовать [2] вероятностью работы ПС без отказа в течении определенного периода времени. Однако в силу специфических особенностей ПС определение этой вероятности наталкивается на ряд трудностей по сравнению с решением этой задачи в технике. Позже мы вернемся к более обстоятельному обсуждению этого вопроса.
При оценке степени надежности ПС следует также учитывать последствия каждого отказа. Некоторые ошибки в ПС могут вызывать лишь некоторые неудобства при его применении, тогда как другие ошибки могут иметь катастрофические последствия, например, угрожать человеческой жизни. Поэтому для оценки надежности ПС иногда используют дополнительные показатели, учитывающие стоимость (вред) для пользователя каждого отказа.
Рассмотрим теперь общие принципы обеспечения надежности ПС, что, как мы уже подчеркивали, является основным мотивом разработки ПС, задающим специфическую окраску всем технологическим процессам разработки ПС. В технике известны четыре подхода обеспечению надежности [11]:
- предупреждение ошибок;
- самообнаружение ошибок;
- самоисправление ошибок;
- обеспечение устойчивости к ошибкам.
Целью подхода предупреждения ошибок — не допустить ошибок в готовых продуктах, в нашем случае — в ПС. Проведенное рассмотрение природы ошибок при разработке ПС позволяет для достижения этой цели сконцентрировать внимание на следующих вопросах:
- борьбе со сложностью;
- обеспечении точности перевода;
- преодоления барьера между пользователем и разработчиком;
- обеспечения контроля принимаемых решений.
Этот подход связан с организацией процессов разработки ПС, т.е. с технологией программирования. И хотя, как мы уже отмечали, гарантировать отсутствие ошибок в ПС невозможно, но в рамках этого подхода можно достигнуть приемлемого уровня надежности ПС.
Остальные три подхода связаны с организацией самих продуктов технологии, в нашем случае — программ. Они учитывают возможность ошибки в программах. Самообнаружение ошибки в программе означает, что программа содержит средства обнаружения отказа в процессе ее выполнения. Самоисправление ошибки в программе означает не только обнаружение отказа в процессе ее выполнения, но и исправление последствий этого отказа, для чего в программе должны иметься соответствующие средства. Обеспечение устойчивости программы к ошибкам означает, что в программе содержатся средства, позволяющие локализовать область влияния отказа программы, либо уменьшить его неприятные последствия, а иногда предотвратить катастрофические последствия отказа. Однако, эти подходы используются весьма редко (может быть, относительно чаще используется обеспечение устойчивости к ошибкам).
Я хотел бы услышать твое мнение про защитное программирование Надеюсь, что теперь ты понял что такое защитное программирование
и для чего все это нужно, а если не понял, или есть замечания,
то нестесняся пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории
Разработка программного обеспечения и информационных систем





















