Курсовая работа (т): Разработка приложения, реализующего метод Флойда

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Среда исполнения Jython - это реализация Python для работы с виртуальной Java-машиной (JVM). Поддерживается любая версия JVM, начиная с версии 1.2.2 (текущая версия Java - 1.6). Для работы с Jython требуется установленная Java-машина (среда исполнения Java) и определенное знание языка программирования Java. Уметь писать исходный код на языке Java не обязательно, однако придется иметь дело c JAR-файлами и Java-апплетами, а также документацией в формате JavaDOC.

Какую версию среды выбрать - зависит исключительно от предпочтений программиста, вообще же рекомендуется держать на компьютере и CPython, и Jython, так как они не конфликтуют между собой, а взаимно дополняют друг друга. Среда CPython работает быстрее, так как нет промежуточного уровня в виде JVM; кроме того, обновленные версии Python сначала выпускают именно в виде среды CPython. Однако Jython может использовать любой класс Java в качестве модуля расширения и работать на любой платформе, для которой существует реализация JVM.

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

Сервисные программы.

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

Часто утилиты объединяют в комплексы наиболее популярные комплексы Norton Utilities, PC Tools Deluxe и Mace Utilities.

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

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

Типы драйверов.

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

·    драйверы пользовательского уровня - исполняются в пользовательском режиме и предоставляют интерфейс между приложениями и драйверами уровня ядра. К ним относятся драйверы принтеров и драйверы виртуальных устройств;

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

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

)     Драйверы высокого уровня. К ним относятся драйверы файловых систем, которые поддерживают файловые системы, например FAT, NTFS, CDFS. Драйверы высокого уровня всегда зависят от драйверов нижних уровней.

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

·    функциональные драйверы - управляют конкретным типом устройств. Драйверы шин предоставляют устройства функциональным драйверам через диспетчер PnP;

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

·        драйверы нижнего уровня. Контролируют ввод/вывод шины, к которой подключено периферийное устройство. Здесь также существуют разные виды драйверов;

·        драйверы шин - управляют логическими или физическими шинами, такими как PCI, USB. Драйверы шин отвечают за распознавание устройств, подключенных напрямую к этим шинам, оповещение диспетчера PnP об этих устройствах и управление параметрами электропитания шины;

·        драйверы, не поддерживающие WDM.

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

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

1.2 Жизненный цикл прикладной программы

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

. Модификация программы за счет изменения модели предметной области.

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

.     Анализ задачи.

2.      Проектирование.

.        Кодирование.

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

Каждый период заканчивается своей документацией.

.     Техническое задание.

2.      Эскизный, технический проекты, пояснительная записка.

.        Распечатка программы и статическое тестирование.

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

5.   Тестирования.

Разработка ПО может вестись с использованием лавинообразной (Схема 2) или итеративной (Схема 3) моделей разработки. Лавинообразная модель (модель "водопада") может быть использована для разработки ПО небольшого размера с хорошо определенной алгоритмической базой.

Схема 1-Лавинообразная

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

·    планирование;

·        реализация;

·        проверка;

·        оценка.

Схема 2- Итеративная

Преимущества итеративного подхода:

·    снижение воздействия серьёзных рисков на ранних стадиях проекта, что ведет к минимизации затрат на их устранение;

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

·        акцент усилий на наиболее важные и критичные направления проекта;

·        непрерывное итеративное тестирование, позволяющее оценить успешность всего проекта в целом;

·        раннее обнаружение конфликтов между требованиями, моделями и реализацией проекта;

·        более равномерная загрузка участников проекта;

·        эффективное использование накопленного опыта;

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

1.3 Методология и технология разработки ПП

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

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

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

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

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

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

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

Сформировалось три стратегии разработки программных продуктов:

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

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

) эволюционная стратегия, когда в начале требования определяются в неполном объеме, но уточняются в ходе разработки версий программного продукта. Линейная последовательность этапов разработки имеет несколько вариантов. Модель водопада (Waterfall Model) - наиболее "старая" модель процесса разработки программного обеспечения. Процесс разработки представляется как последовательность (поток) этапов, фаз (анализа требований, проектирования, реализации, тестирования, интеграции и поддержки). Разработчик переходит от одной стадии к другой строго последовательно, после полного и успешного завершения предыдущей фазы; переходов назад либо вперед или перекрытия фаз не происходит. Системный анализ определяет роль каждого элемента в компьютерной системе, взаимодействие элементов друг с другом. Анализ начинается с определения требований и назначения подмножества этих требований программному элементу. Среди основных решаемых задач планирования проекта программного обеспечения выделяют: объем, сроки и трудозатраты проектных работ, бюджет проекта, состав исполнителей, план-график работ. В процессе анализа требований уточняются функции и характеристики программного средства, требования к пользовательскому и программному интерфейсам. Проектирование программного продукта включает в себя разработку архитектуры построения, состава и назначения модулей, алгоритмов и структуры данных, интерфейсов. Кодирование обеспечивает реализацию проектных решений в выбранной среде программирования. Тестирование - обязательный этап для выявления дефектов программного продукта. Сопровождение - поддержка работоспособности программного продукта у заказчика, внесение изменений в эксплуатируемый программный продукт. Каждая стадия (этап) завершается выпуском полного комплекта документации. Эта модель обладает как достоинствами, так и недостатками. Основная проблема - нарастание риска проекта из-за накапливания ошибок ранних стадий проекта, что не позволяет эффективно выявлять и нивелировать последствия подобных рисков.

Рисунок 1. Этапы разработки ПО для водопадной модели

Модифицированные модели водопада - Agile Software Development, гибкая или "живая" методология разработки, нацелена на минимизацию рисков путем сведения разработки к серии коротких циклов, называемых итерациями, длительностью не более двух недель. Каждая итерация обеспечивает прохождение всех фаз проекта, обеспечивая инкремент (прирост) функциональности. Однако итерация, как правило, недостаточна для выпуска новой версии продукта. По окончании итерации команда разработчиков оценивает и выбирает приоритеты разработки. Основной метрикой данной методологии становится рабочий продукт, а не система письменной документации. Далее была создана модель RAD - Rapid Application Development (быстрая разработка приложений), которая стала основой технологий создания и развертывания программных продуктов. Эта модель предусматривает:

Источник: https://www.bibliofond.ru/detail.aspx?id=784516