Проектирование и разработка библиотеки алгоритмов
Анализ требований к системе. Описания методов используемых при решении. Описания архитектуры системы. Описание применимых в проекте методов программирования. Описание реализации модулей, классов, методов и алгоритмов, используемых при решении задачи.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 06.06.2020 |
Размер файла | 248,2 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Содержание
Введение
Нормативные ссылки
1 Постановка задачи
2 Анализ требований к системе
3 Описания методов используемых при решении
4 Описания архитектуры системы
5 Описание применимых в проекте методов программирования
6 Описание реализации модулей, классов, методов и алгоритмов, используемых при решении задачи 1
7 Описания тестовых планов и наборов тесов
8 Результат тестирования библиотеки
9 Описание библиотеки
Заключение
Список использованных источников
Приложение А
Приложение Б
задача программирование модуль алгоритм
Введение
В настоящее время вычислительные системы находят все более и более широкое применение. При этом программное обеспечение (ПО) является неотъемлемой частью таких систем. Программные системы весьма сложны, например, операционные системы и системы автоматизированного проектирования, другие программы, как системы домашней бухгалтерии, наоборот, ясны и понятны широкому кругу пользователей. При всем многообразии программ и программных комплексов у них есть одна общая черта - технологии разработки. В 1969 г. фирма IBM разделила аппаратную и программную части вычислительной системы, положив начало индустрии программного обеспечения, а также подходам, методам, средствам и технологиям разработки программ. Большие программные средства, как правило, обладают всеми свойствами сложных систем. Они содержат большое количество (сотни и тысячи) компонент-модулей, тесно взаимосвязанных в процессе решения общей целевой задачи. Для обеспечения взаимодействия компонент в едином комплексе широко используются иерархические структуры с несколькими уровнями группирования и подчиненности модулей. Каждый модуль имеет свою целевую задачу и специфический частный критерий качества, как правило, не совпадающий с целевой задачей и критерием качества программного изделия в целом. Особенно сложно в программном изделии, содержащем сотни модулей, обеспечить наилучшее использование ресурсов ЭВМ с точки зрения основного критерия эффективности при сохранении ряда частных показателей качества в допустимых пределах. 6 Многочисленность и сложность путей исполнения программ требует их высокой устойчивости как по отношению к ошибкам во входной информации, так и по отношению к внутренним сбоям ЭВМ, выполняющей программу, что определяется понятием «Надежность программного изделия». Создание больших программных изделий с заданными характеристиками при ограниченных ресурсах требует проведения определенного комплекса мероприятий для достижения поставленной цели, который получил название «проект»
Из связанных дисциплин программной наиболее тесная и естественная связь данной области знаний существует с компьютерными науками. Именно в них, обычно, рассматриваются вопросы построения и использования алгоритмов и практик кодирования. Наконец, конструирование касается и управления проектами, причем, в той степени, насколько деятельность по управлению конструированием важна для достижения результатов конструирования.
Целью данного курсового проекта создание библиотеки алгоритмов для работы с данными, а также использование основных подходов и принципов проектирование программного обеспечения и ознакомление с принципами проектирования.
Нормативные ссылки
ГОСТ Р 1.5-2012 Стандартизация в Российской Федерации.
Стандарты национальные. Правила построения, изложения, оформления и
обозначения
ГОСТ 2.104-2006 ЕСКД. Основные надписи
ГОСТ 7.80-2000 СИБИД. Библиографическая запись. Заголовок.
Общие требования и правила составления
ГОСТ 7.82-2001 СИБИД. Библиографическая запись.
Библиографическое описание электронных ресурсов. Общие требования и
правила составления
ГОСТ 7.9-95 СИБИД. Реферат и аннотация. Общие требования
ГОСТ 19.001-77 ЕСПД. Общие положения
ГОСТ 19.104-78 ЕСПД. Основные надписи
ГОСТ 19.105-78 ЕСПД. Общие требования к программным
документам
ГОСТ 19.401-78 ЕСПД. Текст программы. Требования к содержанию
и оформлению
ГОСТ 19.402-78 ЕСПД. Описание программы
ГОСТ 19.404-79 ЕСПД. Пояснительная записка. Требования к
содержанию и оформлению
МР КубГТУ 4.4.3-2012 СМК. Учебно-методическая деятельность.
Выпускные квалификационные работы
1 Постановка задачи
В данном курсовом проекте я углубленно изучил подход к объектно-ориентированному конструированию программного обеспечения, разработал библиотеку алгоритмов для выполнения сортировки простейших данных, а также закрепил навыки работы с системой тестов с использованием возможностей среды разработки Visual Studio 2012.
2 Анализ требований к системе
При написании данного курсового проекта выделяются следующие требования к программному продукту (библиотека алгоритмов, которая реализует сортировку простейших данных с возможностью добавления операций для своих нужд), а это потребительские (далее по тексту пользовательские) требования, функциональные требования и программный компонент.
Ниже приведена матрица требований для отслеживания пользовательских и функциональных требований, а также их соотнесения с компонентами разрабатываемого приложения
Таблица 1. Матрица отслеживания требований
Пользовательские требования |
Функциональные требования |
Программный компонент |
|
Программа должна выполнять простейшие сортировки с данными. |
Выполнение сортировки с помощью пузырькового алгоритма, сортировки выбором, сортировки вставками. |
алгоритм для выполнения сортировки для конкретного типа данных. |
|
Программа должна поддерживать возможность выбора алгоритма сортировки. |
Реализация пользовательских операций путем реализации конкретных алгоритмов. |
класс, при наследовании которого возможна реализация пользовательских операций. |
3 Описания методов используемых при решении
В ходе написания данного курсового проекта было решено использовать основные принципы проектирования программного обеспечения для проектирования и разработки библиотеки алгоритмов сортировки примитивных данных. Далее будут описаны основные принципы, по которым будет спроектирована библиотека алгоритмов, а это:
Инкапсуляция
Инкапсуляция есть объединение в единое целое данных и алгоритмов обработки этих данных. В рамках ООП данные называются полями объекта, а алгоритмы - объектными методами.
Инкапсуляция позволяет в максимальной степени изолировать объект от внешнего окружения. Она существенно повышает надежность разрабатываемых программ, т.к. локализованные в объекте алгоритмы обмениваются с программой сравнительно небольшими объемами данных, причем количество и тип этих данных обычно тщательно контролируются. В результате замена или модификация алгоритмов и данных, инкапсулированных в объект, как правило, не влечет за собой плохо прослеживаемых последствий для программы в целом (в целях повышения защищенности программ в ООП почти не используются глобальные переменные).
Другим немаловажным следствием инкапсуляции является легкость обмена объектами, переноса их из одной программы в другую. Можно сказать, что ООП «провоцирует» разработку библиотек объектов.
Наследование
Наследование есть свойство объектов порождать своих потомков. Объект-потомок автоматически наследует от родителя все поля и методы, может дополнять объекты новыми полями и заменять (перекрывать) методы родителя или дополнять их.
Принцип наследования решает проблему модификации свойств объекта и придает ООП в целом исключительную гибкость. При работе с объектами программист обычно подбирает объект, наиболее близкий по своим свойствам для решения конкретной задачи, и создает одного или нескольких потомков от него, которые «умеют» делать то, что не реализовано в родителе.
Последовательное проведение в жизнь принципа «наследуй и изменяй» хорошо согласуется с поэтапным подходом к разработке крупных программных проектов и во многом стимулирует такой подход.
Полиморфизм
Полиморфизм - это свойство родственных объектов (т.е. объектов, имеющих одного общего родителя) решать схожие по смыслу проблемы разными способами. В рамках ООП поведенческие свойства объекта определяются набором входящих в него методов. Изменяя алгоритм того или иного метода в потомках объекта, программист может придавать этим потомкам отсутствующие у родителя специфические свойства. Для изменения метода необходимо перекрыть его в потомке, т.е. объявить в потомке одноименный метод и реализовать в нем нужные действия. В результате в объекте-родителе и объекте-потомке будут действовать два одноименных метода, имеющие разную алгоритмическую основу и, следовательно, придающие объектам разные свойства. Это и называется полиморфизмом объектов.
Принцип функциональной избыточности. Этот принцип учитывает возможность проведения одной и той же работы различными средствами.
4 Описания архитектуры системы
Имеется общий класс Class1, который включает в себя три метода с уровнем доступности public (доступ не ограничен). Челены BubbleSort, SelectionSort, InsertionSort реализуют сортировки в соответствии со своим названием и возвращают значение типа int.
5 Описание применимых в проекте методов программирования
В данном курсовом проекте я старался придерживаться основным принципам ООП. Для этого в проекте используется инкапуляция это объединение в единое целое данных и алгоритмов обработки этих данных. В рамках ООП данные называются полями объекта, а алгоритмы - объектными методами. Так же был применен Принцип функциональной избыточности этот принцип учитывает возможность проведения одной и той же работы различными средствами, так мы можем провести сортировку одних и тех же данных 3 разными способами.
6 Описание реализации модулей, классов, методов и алгоритмов, используемых при решении задачи
При решении задачи по сортировке данных была спроектирована и разработана библиотека алгоритмов. Данная библиотека состоит из общего для 3 алгаритмов класса Class1. включает в себя три метода с уровнем доступности public (доступ не ограничен). Челены BubbleSort, SelectionSort, InsertionSort реализуют сортировки в соответствии со своим названием и возвращают значение типа int.
BubbleSort алгоритм заключается в циклических проходах по массиву, за каждый проход элементы массива попарно сравниваются и, если их порядок не правильный, то осуществляется обмен. Обход массива повторяется до тех пор, пока массив не будет упорядочен.
SelectionSort алгоритм сортировки выбором состоит из следующих шагов:
· Для начала определяем позицию минимального элемента массива;
· Делаем обмен минимального элемента с элементом в начале массива. Получается, что первый элемент массива уже отсортирован;
· Уменьшаем рабочую область массива, отбрасывая первый элемент, а для подмассива который получился, повторяем сортировку.
InsertionSort алгоритм работы сортировки вставками заключается в следующем:
· в начале работы упорядоченная часть пуста;
· добавляем в отсортированную область первый элемент массива из неупорядоченных данных;
· переходим к следующему элементу в не отсортированных данных, и находим ему правильную позицию в отсортированной части массива, тем самым мы расширяем область упорядоченных данных;
· повторяем предыдущий шаг для всех оставшихся элементов.
7 Описания тестовых планов и наборов тесов
В тестах планируется проверить работу алгоритмов, которые реализуют сортировку данных типа integer. Будет произведена сортировка однострочного мссива тремя разными способами сортировки и для каждого способа будет свой единичный тест который передает в массив алгоритма значения и ожидает результат который потом сравнивается с ожидаемыми значениями.
8 Результат тестирования библиотеки
Рисунок 1- результат тестирования
Тестирования проводилось с помощью автоматического сборщика проектов Visual Studio 2012 благодаря которым и удалось выполнить автоматическое тестирование написанной библиотеки алгоритмов.
По результатам тестирования видно, что библиотека работает корректно и полученные результаты точно соответствуют ожидаемым.
9 Описание библиотеки
В данной библиотеке реализованы три метода сортировки данных: BubbleSort, SelectionSort, InsertionSort. Библиотека реалезована в среде раработки Visual Studio 2012. Для работы с библиотекой можно использовать среду разработки Visual Studio любого года. Для использования библиотеки достаточно к своему проекту которому необходима данная библиотека привязать ссылку к данной dll и уже в коде самого проекта вызвать метод той или иной сортировки
Заключение
В ходе выполнения данной курсовой работы была разработана библиотека алгоритмов. Для этого были применены основные принципы проектирования ООП.
После написания самой библиотеки были написаны и применены модульные тесты для выявления некорректной работы программы.
Список использованных источников
1. Фаулер М. UML. Основы, 3-е изд. - М.: Символ-Плюс, 2012. -192 с.
2. Гамма Э., Хелм Р., Джонсон Р., Влиссидес Д. Приемы объектно-ориентированного проектирования. Паттерны проектирования. - СПб.: Питер, 2013. - 368 с.: ил.
3. Фримен Эр., Фримен Эл., Бейтс Б., Сьерра К. Паттерны проектирования. - СПб.: Питер, 2011. - 656 с.
4. Майерс Г., Сандлер К., Баджетт Т. Искусство тестирования программ. - М.: Вильямс, 2012. - 272 с.
Приложение А
Текст библиотеки(листинг)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ClassLibrary1
{
public class Class1
{
public static int[] BubbleSort(int[] mas) // алгоритм сортировки пузырьком
{
int temp;
for (int i = 0; i < mas.Length; i++)
{
for (int j = i + 1; j < mas.Length; j++)
{
if (mas[i] > mas[j])
{
temp = mas[i];
mas[i] = mas[j];
mas[j] = temp;
}
}
}
return mas;// возвращаемый массив
}
public static int[] SelectionSort(int[] mas) // алгоритм сортировки выбором
{
for (int i = 0; i < mas.Length - 1; i++)
{
int min = i;
for (int j = i + 1; j < mas.Length; j++)
{
if (mas[j] < mas[min])
{
min = j;
}
}
int temp = mas[min];
mas[min] = mas[i];
mas[i] = temp;
}
return mas;// возвращаемый массив
}
public static int[] InsertionSort(int[] mas) // алгоритм сортировки вставками
{
int[] result = new int[mas.Length];
for (int i = 0; i < mas.Length; i++)
{
int j = i;
while (j > 0 && result[j - 1] > mas[i])
{
result[j] = result[j - 1];
j--;
}
result[j] = mas[i];
}
return result;// возвращаемый массив
}
}
Приложение Б
Тест базы(листинг)
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using ClassLibrary1;
namespace UnitTestProject1
{
[TestClass]
public class BubbleSortTest
{
[TestMethod]
public void TestMethod1()
{
int[] mas = new int[4] { 4, 3, 5, 2 };
int[] expected = new int[4] { 2, 3, 4, 5 };
// получение значения с помощью тестируемого алгогритма
int[] result = Class1.BubbleSort(mas);
// сравнение ожидаемого результата с полученным
CollectionAssert.AreEqual(expected, result);
}
}
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using ClassLibrary1;
namespace UnitTestProject2
{
[TestClass]
public class UnitTest1
{
[TestMethod]
public void TestMethod2()
{
int[] mas = new int[4] { 4, 3, 5, 2 };
int[] expected = new int[4] { 2, 3, 4, 5 };
// получение значения с помощью тестируемого алгогритма
int[] result = Class1.SelectionSort(mas);
// сравнение ожидаемого результата с полученным
CollectionAssert.AreEqual(expected, result);
}
}
}
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using ClassLibrary1;
namespace UnitTestProject3
{
[TestClass]
public class UnitTest1
{
[TestMethod]
public void TestMethod3()
{
int[] mas = new int[4] { 4, 3, 5, 2 };
int[] expected = new int[4] { 2, 3, 4, 5 };
// получение значения с помощью тестируемого алгогритма
int[] result = Class1.InsertionSort(mas);
// сравнение ожидаемого результата с полученным
CollectionAssert.AreEqual(expected, result);
}
}
}
Размещено на Allbest.ru
...Подобные документы
Анализ деятельности кадровой службы, обоснование выбора средств автоматизации ее работы, классификация используемых информационных методов. Разработка технических требований и архитектуры серверной части. Основные этапы реализации программных модулей.
дипломная работа [1,9 M], добавлен 19.01.2017Теоретические основы распознавания образов. Функциональная схема системы распознавания. Применение байесовских методов при решении задачи распознавания образов. Байесовская сегментация изображений. Модель TAN при решении задачи классификации образов.
дипломная работа [1019,9 K], добавлен 13.10.2017Виды алгоритмов как логико-математических средств, характеристика свойств. Корректный вывод алгоритма при решении вычислительной задачи. Механизм реализации алгоритма, его описание. Решение задачи Майхилла при помощи автоматной модели поведения стрелка.
курсовая работа [53,6 K], добавлен 17.07.2014Типы моделей данных: иерархическая, сетевая, реляционная. Структура входных и выходных данных. Классы управления данными, исключений. Структура таблиц, используемых в программе. Описание алгоритмов решения задачи. Диаграммы классов, блок-схемы алгоритмов.
курсовая работа [1,5 M], добавлен 22.06.2012Анализ методов реализации интеллектуальных игр в системе человек-робот. Разработка архитектуры программного комплекса, выбор языка программирования. Алгоритм преобразования данных. Тестирование программного комплекса, редактирование и исправление ошибок.
дипломная работа [2,6 M], добавлен 27.10.2017Краткое описание терминологии, используемой в криптологии. Определение места криптографических методов защиты в общей системе обеспечения безопасности информации. Изучение простых шифров и оценка методов их взлома. Методы современного криптоанализа.
курсовая работа [52,3 K], добавлен 13.06.2012Описание сервиса электронного кафе и определение основных требований к системе. Модели вариантов использования, состояний, последовательности, классов, компонентов и развертывания. Описание алгоритмов, реализующих бизнес-логику серверной части.
курсовая работа [3,3 M], добавлен 23.12.2014Обзор основных алгоритмов и методов распознавания лиц. Архитектура средств динамического отслеживания лиц в видеопоследовательности. Результаты тестирования на больших объемах видеоданных. Разработка алгоритмов и методов динамического отслеживания лиц.
дипломная работа [5,9 M], добавлен 20.07.2014Задачи трансляторов, характеристика их видов. Этапы и функции основных фаз процесса компиляции. Описание используемых директив и команд ассемблера, алгоритмов, таблиц. Листинг программы. Алгоритм работы программной реализации разрабатываемого компилятора.
курсовая работа [1,3 M], добавлен 24.06.2013Изучение базовых понятий объектно-ориентированного программирования. Исследование принципов работы с классами и объектами. Построение системы классов для описания плоских геометрических фигур. Анализ методов создания объектов, перемещения на плоскости.
лабораторная работа [212,0 K], добавлен 10.03.2013Создание работоспособного модуля по работе с мобильными картами АЗС. Разработка базы данных в среде программирования Турбо Паскаль для работы с текстами и файловыми структурами. Описание методов алгоритмизации процессов сортировки и редактирования.
курсовая работа [1,9 M], добавлен 05.12.2011Основные методы структурного программирования. Методы половинного деления, Крамера, прямоугольников. Применение языка программирования Turbo Pascal 7.0. Решение системы линейных алгебраических уравнений. Описание стандартных и не стандартных функций.
курсовая работа [376,8 K], добавлен 14.01.2015Описание основных математических методов обработки эмпирических данных. Регрессионный метод и анализ ковариаций Ancova. Организация операционной системы, среды программирования на Android. Программная реализация метода 1МНК в среде С++ под Android.
дипломная работа [4,2 M], добавлен 23.03.2017Описание разрабатываемого программного обеспечения, его структура и предъявляемые требования, аналитический обзор. Система приоритетов при разработке, проектирование интерфейса, алгоритмов и иерархии классов. Особенности реализации и внедрения системы.
дипломная работа [878,4 K], добавлен 18.11.2017Классификация методов оптимизации. Обзор и выбор языка C#. Алгоритмический анализ задачи, описание алгоритма решения. Графические схемы разработанных алгоритмов. Разработка приложения и результаты тестовых испытаний. Интерфейс пользователя, тестирование.
курсовая работа [1,6 M], добавлен 08.03.2016Решение дифференциальных уравнений с использованием классических алгоритмов численных методов Эйлера и Рунге-Кутта 4-го порядка. Команды, используемые при решении обыкновенных дифференциальных уравнений в системе вычислений. Результат работы программы.
курсовая работа [226,6 K], добавлен 05.04.2013Принципы компьютерной стеганографии. Классификация методов сокрытия информации. Популярность метода замены наименьшего значащего бита. Сущность методов расширения палитры и блочного сокрытия. Применение методов в GIF изображениях. Реализация алгоритмов.
курсовая работа [589,7 K], добавлен 17.02.2013Инфологическая и даталогическая модели данных. Описание пользовательской части и используемых sql-запросов. Физическая и логическая модель web-приложения. Описание используемых программных средств, языка программирования и информационных технологий.
курсовая работа [1,3 M], добавлен 29.04.2015Основные концепции языков программирования, механизмы типизации данных. Описание языков программирования и методов трансляции. Конечные автоматы и преобразователи. Общие методы синтаксического анализа. Формальные методы описания языкового перевода.
курс лекций [5,5 M], добавлен 04.12.2013Обзор математических методов распознавания. Общая архитектура программы преобразования автомобильного номерного знака. Детальное описание алгоритмов: бинаризация изображения, удаление обрамления, сегментация символов и распознавание шаблонным методом.
курсовая работа [4,8 M], добавлен 22.06.2011