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

ВСЕРОССИЙСКИЙ ЗАОЧНЫЙ  ФИНАНСОВО-ЭКОНОМИЧЕСКИЙ ИНСТИТУТ

 

 

КАФЕДРА  АВТОМАТИЗИРОВАННОЙ ОБРАБОТКИ 

 

ЭКОНОМИЧЕСКОЙ ИНФОРМАЦИИ

 

 

 

 

 

 

 

 

КУРСОВАЯ РАБОТА

 

по дисциплине «Информатика»

 

на тему «Общие принципы разработки программных средств»

 

 

 

Исполнитель:

 

Карташевич Ольга Андреевна

 

специальность         Ф и Кр

 

группа                              21

 

№ зачетной книжки       07ФФБ03567

 

Руководитель:

 

                                                         Сазонова Наталья Стальевна

 

 

 

 

 

 

 

Москва- 2009

 

 

СОДЕРЖАНИЕ:

 

 

Введение…………………………………………………………………….3

 

1. Теоретическая часть

 

1.1 Классификация программных  средств………………………...….......5

 

1.2 Специфика разработки  программных средств……………………….8

 

1.3. Период разработки и эксплуатации  программного средства….........9

 

1.4. Понятие качества  ПС……………………………………………........13

 

1.5 Общие принципы обеспечения  надежности ПС……………….........14

 

1.6 Методы борьбы со  сложностью……………………………………....16

 

1.7 Обеспечение точности  перевода……………………………………...16

 

1.8 Преодоление барьера  между пользователем и            

 

разработчиком……..……………………………………………................17

 

1.9 Контроль принимаемых  решений……………………………………17

 

Заключение………………………………………………………………...18

 

2. Практическая часть

 

2.1 Общая характеристика  задачи………………………………………..19

 

2.2 Описание алгоритма решения задачи………………………………..20

 

Список использованной литературы…………………………………….25

 

 

 

 

 

 

 

 

Введение

 

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

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1. Теоретическая часть.

 

1.1. Классификация программных  средств.

 

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

 

   Главное место среди системных продуктов занимают операционные системы. Операционная система – пакет программ, хранящийся в долговременной памяти и используемый для управления устройствами, папками, пакетами программ и работой электронно-вычислительных машин в целом. До появления микропроцессоров каждый производитель разрабатывал свою собственную операционную систему. С эволюцией микропроцессорной техники потребности в ОС существенно изменились. До недавнего времени на большинстве ПК была установлена операционная система MS DOS (MS Disk Operating System – дисковая операционная система фирмы MS) или один из ее аналогов, например PC DOS (Personal Computer Disk Operating System – дисковая операционная система персональных компьютеров) фирмы IBM либо Novell DOS фирмы Novell.[2]

 

   Главными особенностями и отличиями современных операционных систем являются:

 

1. многозадачность.

 

2. развитый графический  пользовательский интерфейс.

 

3. устойчивость в работе  и защищенность.

 

4. полная независимость  от аппаратуры.

 

5. совместимость со  всеми видами приложений, разработанных  для MS DOS.

 

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

 

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

 

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

 

в) Утилиты – служебные программы, предоставляющие пользователю ряд дополнительных услуг. К утилитам относят такие программные средства, как: дисковые компрессоры; дисковые дефрагментаторы;  программы резервного копирования данных; архиваторы; программы, оптимизирующие использование оперативной памяти; программы защиты и восстановления данных; антивирусные программы и др. Для обслуживания жесткого диска в среде Windows используются служебные программы.

 

   Дадим им краткую характеристику.

 

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

 

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

 

3) Программа уплотнения  диска (предназначена для создания  и обслуживания сжатых дисков.

 

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

 

5) Программа Системный  монитор анализирует пиковую  нагрузку процессора и других  ресурсов.

 

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

 

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

 

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

 

1.2 Специфика разработки  программных средств

 

   Разработка программных средств имеет ряд специфических особенностей, отметим главные из них:

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

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

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

 

1.3. Этапы разработки и эксплуатации программного средства.

 

   В настоящее время можно выделить 5 основных подходов к организации процесса создания и использования ПС.

 

   Модель водопада  (каскадная моель)

 

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

 

Рисунок 1.

 

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

- разработка требований (requirements): сбор бизнес-требований заказчика и их преобразование в функциональные требования к программному продукту.

- анализ и дизайн (analysis and design): разработка модели предметной области (domain model), проектирование схемы базы данных, объектной модели, пользовательского интерфейса и т.п.

- реализация (implementation): создание продукта по спецификациям, разработанным на предыдущем этапе.

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

- развертывание (deployment): обучение пользователей, инсталляция системы, перевод в промышленную эксплуатацию.

 

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

 

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

 

   Насколько эффективным оказался такой подход? Он хорошо работает в проектах, где требования могут быть четко определены и зафиксированы. В таких проектах модель водопада позволяет обеспечить заданный уровень качества (который может быть весьма высоким) и соблюдать бюджетные и временные ограничения. Благодаря этому она часто используется в больших организациях (таких как Министерство обороны США и NASA) при строгих требованиях к надежности создаваемого ПО.

 

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

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

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

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

 

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

 

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

 

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

 

   Кодирование ПС включает процессы создания текстов программ на языках программирование, их отладку с тестированием ПС.

 

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

 

   Стадия эксплуатации ПС охватывает процессы хранения,  внедрения и сопровождения  ПС,  а также транспортировки и применения ПИ по своему назначению. Она состоит из двух параллельно проходящих фаз: фазы применения ПС и фазы сопровождения ПС.

 

   Применение ПС - это использование ПС для решения практических задач на компьютере путем выполнения ее программ.

 

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

 

1.4. Понятие качества  ПС.

 

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

 

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

 функциональность,

 надежность,

 легкость применения,

 эффективность, 

сопровождаемость, 

 мобильность.

 

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

 

Надежность - это характеристика ПС отвечать и полагаться заданным стандартам.

 

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

 

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

 

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

 

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

 

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

 

 

1.5 Общие принципы обеспечения  надежности ПС

 

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

предупреждение ошибок;

самообнаружение ошибок;

самоисправление ошибок;

обеспечение устойчивости к ошибкам.

 

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

борьба со сложностью,

обеспечение точности перевода,

преодоление барьера  между пользователем и разработчиком,

обеспечение контроля принимаемых  решений.

 

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

 

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

 

 

1.6 Методы борьбы со  сложностью

 

Известны два общих  метода борьбы со сложностью систем:

обеспечения независимости  компонент системы;

использование в системах иерархических структур.

 

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

 

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

 

 

1.7 Обеспечение точности  перевода

 

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

Понимание задачи;

Составление плана (включая  цели и методы решения);

Выполнение плана (проверяя правильность каждого шага);

Анализ полученного решения.

 

1.8 Преодоление барьера  между пользователем и разработчиком.

 

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

 

 

1.9 Контроль принимаемых решений

 

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

 

        С учетом специфики разработки  ПС необходимо применять везде,  где это возможно,

смежный контроль,

сочетание как статических, так и динамических методов контроля.

 

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

 

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

 

Заключение

 

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

 

 

 

2.Практическая часть

 

Вариант№11.

 

2.1. Общая характеристика задачи.

 

Компания «Страховщик» осуществляет страховую деятельность на территории России по видам полисов, представленных на рис.1. Каждый полис  имеет фиксированную цену.

 

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

 

В конце каждого месяца  составляется общий реестр договоров  по всем филиалам.

 

В конце каждого месяца составляется общий реестр договоров  по всем филиалам  (рис.3)

 

1.Построить таблицы  (рис.1-3).

 

2.Организовать межтабличные  связи для автоматического заполнения  граф реестра (рис.3): «Наименование  филиала», «Наименование полиса»,  «Сумма полиса, руб.», «Сумма скидки  по дисконту, руб.»

 

3.Организовать двумя  способами расчет общей суммы  полисов по филиалам:

 

1) подвести итоги в  таблице реестра;

 

2) построить соответствующую  сводную таблицу, предусмотрев  возможность одновременно отслеживать  итоги и по виду полиса.

 

4. Построить гистограмму по данным сводной таблицы.

 

Код вида страхового полиса 

Наименование страхового полиса 

Сумма                  страхового полиса, руб.

 

 

 

101 

От несчастного случая 

10 000

 

 

 

102 

От автокатастрофы 

50 000

 

 

 

103 

От авиакатастрофы 

60 000

 

 

 

104 

Медицинский 

25 000

 

 

 

105 

       Автомобильный 

150 000

 

 

 

106 

Жилищный 

500 000

 

 

 

Рис. 1. Виды страховых  полисов

 

 

Код филиала 

Наименование филиала 

 

 

Дисконтный процент  с каждого полиса по филиалу, %

 

 

 

100 

Московский 

3%

 

 

 

200 

Тульский 

2%

 

 

 

300 

Уфинский 

1%

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