Разработка программы для решения логарифмов

Тип работы:
Курсовая
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

Содержание

  • Введение
  • 1. Определение требований
  • 1.1 Описание бизнес-процесса
  • 1.2 Функциональные требования
  • 1.3 Выбор модели жизненного цикла
  • 2. Проектирование
  • 2.1 Архитектура системы
  • 2.2 Проектирование интерфейса
  • 2.3 Детальное проектирование
  • 3. Разработка программного кода
  • 4. Верификация
  • 4.1 Инспектирование
  • 4.2 Тестирование
  • Заключение
  • Список источников информации
  • Приложения

Введение

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

Данный программный продукт решает следующие проблемы:

· Трата времени

· Множественные ошибки

Работа выполнятся в рамках курсового проекта в Спб Г У ИТМО ФСПО.

Основания для разработки

Основанием разработки является курсовой проект. Организация, утвердившая проект: СПБГу ИТМО ФСПО. Наименование работ: «Решатель математических формул»

Назначения разработки

Автоматизированная система «Решатель математических формул» предназначена для решения различных типов математических и задач, таких как: простые, квадратные, биквадратные, СЛАУ. Функционал планируется увеличивать от версии к версии. Для использования ПО не требуются специальные знания. Пользователю нужно вводить лишь аргументы для получения ответа. ПО позволяет вывести шаги решения для упрощения понимания материала студентами и прозрачности решения для ученых.

Создание программы для решения разного типа с разным количеством неизвестных

Требования к программе

Автоматизированная система «Решатель математических формул» должна обеспечивать выполнение функций:

· Вывод хода решения

· Решение

· Решение простых

· Решение квадратных

· Решение биквадратных

· Решение СЛАУ

· Решение логарифмов

· Требования к надежности:

· Безотказная работа

· Проверка вводимых данных

Требования к составу и параметрам технических средств должны быть следующими: x86 или 64x совместимый процессор с тактовой частотой ~600MHz, объем оперативной памяти 64мб, объем свободного дискового пространства 3мб.

Требования к информационной и программной совместимости

Программа должна работать в операционной системе WindowsXP или более новой редакции.

программа решение логарифм код

1. Определение требований

1.1 Описание бизнес-процесса

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

1.2 Функциональные требования

Автоматизированная система «Решатель математических формул» должна обеспечивать выполнение функций:

· Решение логарифмов

· Требования к надежности:

· Безотказная работа

· Проверка вводимых данных

Требования к составу и параметрам технических средств должны быть следующими: x86 или 64x совместимый процессор с тактовой частотой ~600MHz, объем оперативной памяти 64мб, объем свободного дискового пространства 3мб.

Требования к информационной и программной совместимости

Программа должна работать в операционной системе WindowsXP или более новой редакции.

1.3 Выбор модели жизненного цикла

Существуют 3 стратегии конструирования ПО:

однократный проход (водопадная стратегия) — линейная последовательность этапов конструирования;

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

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

Характеристики стратегий конструирования ПО в соответствии с требованиями стандарта IEEE/EIA 12 207.2 приведены в табл.1. 1

Таблица 1. 1 Характеристики стратегий конструирования

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

В начале процесса определены все требования?

Множество циклов конструирования?

Промежуточное ПО распространяется?

Однократный проход

Инкрементная (запланированное улучшение продукта)

Эволюционная

Да

Да

Нет

Нет

Да

Да

Нет

Может быть

Да

Инкрементная модель является классическим примером инкрементной стратегии конструирования (рис. 1. 4). Она объединяет элементы последовательной водопадной модели с итерационной философией макетирования.

Каждая линейная последовательность здесь вырабатывает поставляемый инкремент ПО. Например, ПОдля обработки слов в 1-м инкременте реализует функции базовой обработки файлов, функции редактирования и документирования; во 2-м инкременте — более сложные возможности редактирования и документирования; в 3-м инкременте — проверку орфографии и грамматики; в 4-м инкременте — возможности компоновки страницы.

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

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

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

Схема 1. Инкрементная модель

Преимущества Инкрементной модели:

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

· При выполнении каждого инкремента получается функциональный продукт

· Заказчик может высказаться по поводу каждой разработанной версии системы

· Существует возможность поддерживать постоянный прогресс в ходе выполнения проекта

· Снижаются затраты на первоначальную поставку программного продукта

· Снижается риск неудачи и изменения требований

· Риск распределяется на несколько меньших по размеру инкрементов

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

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

Определению внутренних свойств системы и детализации её внешних свойств собственно и посвящено проектирование. Проектирование П О является частным случаем Проектирования продуктов и Проектирования систем.

В зависимости от класса создаваемого ПО, процесс проектирования может обеспечиваться как «ручным» проектированием, так и различными средствами его автоматизации. В процессе проектирования ПОдля выражения его характеристик используются различные нотации — блок-схемы, ER-диаграммы, UML-диаграммы, DFD-диаграммы, а также макеты.

2.1 Архитектура системы

Важным этапом создания программного обеспечения является проектирование. На этом шаге закладывается архитектура системы.

Одним из способов проектирования является метод CRC-карт. Этот метод проектирования является составляющей UML-проектирования.

Схема 2. Диаграмма прецедентов

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

Схема 4. Диаграмма последовательности

2.2 Проектирование интерфейса

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

Дизайн должен быть (иметь):

· удобным для посетителей

· хорошую структуру

· удобную навигацию

· текст должен быть хорошо виден и легко читаем

· должен быть красивым

· должна быть «изюминка»

· размер файлов дизайна (чем меньше файлов, тем быстрее работа)

Схема 3. Структура интерфейса программы

Программный продукт выполнен в виде консольного приложения Windows. Это позволяет существенно ускорить работу программного работа и облегчить жизнь пользователю.

Вложенность главного меню:

1. Логарифмы

1.1. Loga (b) (логарифм по любому основанию)

1.2. Loga (b*c) (логарифм произведения)

1.3. Loga (b/c) (логарифм частного)

1.4. Выход

2. Выход

В ходе работы был спроектирован прототип интерфейс программы

Рисунок 1. Прототип главного меню

Рисунок 2. Пример диалога ввода данных

2.3 Детальное проектирование

В ходе детального проектирования был построен алгоритм программного продукта согласно следующему документу: ГОСТ 19. 701−90.

Алгоритм представлен ниже:

Схема 4: Общий алгоритм программного продукта

Схема 5: Алгоритм подпрограммы решения логарифмов

3. Разработка программного кода

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

· Java

· Pascal

· Delphi

· Различные диалекты языка C (такие как C#, Qt, Objective-Cи т.п.)

· Visual Basic

Был выбран язык C++, т.к. :

· Си современный язык

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

· Си — эффективный язык. Его структура позволяет наилучшим образом использовать возможности современных ЭВМ.

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

· Язык Си прост в изучении и использовании

· Си имеет множество модулей, библиотек и расширений

· Си признан основным языком многими программистами мира

Это позволило упростить разработку и сделать работу программы более простой и прозрачной.

Код программы представлен в (Приложении 2).

4. Верификация

4.1 Инспектирование

Инспектирование программ — это просмотр и проверка программ с целью обнаружения в них ошибок. Идея формализованного процесса проверки программ была сформулирована корпорацией IBM в 1970-х годах. В настоящее время данный метод верификации получил широкое распространение. На его базе разработано множество других методов, но все они основываются на базовой идее метода инспектирования, согласно которому группа специалистов выполняет тщательный построчный просмотр и анализ исходного кода программы. Главное отличие инспектирования от других методов оценивания качества программ состоит в том, что его цель — обнаружение дефектов, а не исследование общих проблем проекта. Дефектами являются либо ошибки в исходном коде, либо несоответствия программы стандартам. Сам процесс инспектирования должен быть относительно коротким (не более двух часов) и сосредоточенным только на выявлении дефектов, аномалий и несоответствий стандартам. Инспекционная группа не должна предлагать способы исправления дефектов или рекомендовать какие-либо изменения в других программных компонентах. В процессе инспектирования организация накапливает определенный опыт, поэтому результаты инспектирования можно использовать для улучшения всего процесса разработки ПО. В ходе инспектирования выполняется анализ обнаруженных дефектов. Группа инспектирования и авторы инспектируемого кода определяют причины возникновения дефектов. Чтобы подобные дефекты не возникали в будущих системах, необходимо по возможности устранить причины возникновения дефектов, что означает внесение изменений в процесс разработки программных систем.

Инспектирование не проводилось.

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

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

В соответствие с IEEE Std 829−1983 Тестирование — это процесс анализа ПО, направленный на выявление отличий между его реально существующими и требуемыми свойствами (дефект) и на оценку свойств программного обеспечения.

По ГОСТ Р ИСО МЭК 12 207−99 в жизненном цикле программного обеспечения определены среди прочих вспомогательные процессы верификации, аттестации, совместного анализа и аудита.

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

По объекту тестирования:

· Функциональное тестирование (functionaltesting)

· Тестирование производительности (performancetesting)

o Нагрузочное тестирование (loadtesting)

o Стресс-тестирование (stresstesting)

o Тестированиестабильности (stability / endurance / soak testing)

· Тестирование удобства использования (usabilitytesting)

· Тестирование интерфейса пользователя (UI testing)

· Тестирование безопасности (securitytesting)

· Тестирование локализации (localizationtesting)

· Тестирование совместимости (compatibilitytesting)

По знанию системы:

· Тестирование чёрного ящика (blackbox)

· Тестирование белого ящика (whitebox)

· Тестирование серого ящика (greybox)

По степени автоматизации:

· Ручное тестирование (manualtesting)

· Автоматизированное тестирование (automatedtesting)

· Полуавтоматизированное тестирование (semiautomatedtesting)

По степени изолированности компонентов:

· Компонентное (модульное) тестирование (component/unittesting)

· Интеграционное тестирование (integrationtesting)

· Системноетестирование (system/end-to-end testing)

По времени проведения тестирования:

· Альфа-тестирование (alphatesting)

· Тестирование при приёмке (smoketesting)

· Тестирование новой функциональности (newfeaturetesting)

· Регрессионное тестирование (regressiontesting)

· Тестирование при сдаче (acceptancetesting)

· Бета-тестирование (betatesting)

По признаку позитивности сценариев:

· Позитивное тестирование (positivetesting)

· Негативное тестирование (negativetesting)

По степени подготовленности к тестированию:

· Тестирование по документации (formaltesting)

· Тестирование adhoc или интуитивное тестирование (adhoctesting)

В ходе тестирования были приглашены специалисты по договору аутсорсинга.

При тестировании продукта были использованы следующие методы тестирования:

· Функциональное тестирование (functionaltesting)

Был проверен весь функционал программы с использованием тест-кейсов. В результате тестирования было найдено 2 бага

· Тестирование удобства использования (usabilitytesting)

Был проверен интерфейс на соответствие международных нормюзабилити. Были добавлены подсказки

· Тестирование интерфейса пользователя (UI testing)

В результате тестирования переработан интерфейс

В результате тестирования было выявлено 5 багов

· Альфа-тестирование (alphatesting)

· Бета-тестирование (betatesting)

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

Рисунок 1. Главное меню

Главное меню.

Здесь осуществляется выбор функций.

В каждом из пунктов главного меню, есть подпункты которые описаны ниже.

Рисунок 2. Выбор логарифмов

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

Рисунок 3. Решение логарифма

В этом разделе осуществляется ввод данных и вывод ответа.

Руководство пользователя

1. ВВЕДЕНИЕ

1.1. ОБЛАСТЬ ПРИМЕНЕНИЯ.

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

1.2. КРАТКОЕ ОПИСАНИЕ ВОЗМОЖНОСТЕЙ

· Вывод хода решения

· Решение логарифмов

1.3. УРОВЕНЬ ПОДГОТОВКИ ПОЛЬЗОВАТЕЛЯ.

Для работы с этим программным продуктом от пользователя требуется небольшой уровень компьютерной грамотности

2. НАЗНАЧЕНИЕ И УСЛОВИЕ ПРИМЕНЕНИЯ.

Программный продукт применяется на учебных и рабочих местах студентами и работниками научных учереждений.

Для корректной работы требуется ЭВМ с тактовой частотой ЦП более 500 MHzи оперативной памятью более 32 мб под управлением Windows

3. ПОДГОТОВКА К РАБОТЕ

3.1. СОСТАВ ПРОГРАММНОГО ПРОДУКТА

1. Исполняемый файл

2. Руководство пользователя

3.2. УСТАНОВКА И ЗАПУСК

Установка программного продукта не требуется. Запуск исполняемого файла программного продукта.

3.3. ПРОВЕРКА РАБОТОСПОСОБНОСТИ

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

4. ОПИСАНИЕ ОПЕРАЦИЙ

4.1. НАИМЕНОВАНИЕ ОПЕРАЦИЙ.

Решение и логарифмов

4.2. УСЛОВИЯ ФУНКЦИОНИРОВАНИЯ ОПЕРАЦИЙ.

Приложение запущено и работоспособно

4.3. ПОДГОТОВИТЕЛЬНЫЕ ДЕЙСТВИЯ

Выбрать нужную операцию в меню. Для этого ввести номер нужной операции с клавиатуры и нажать клавишу Enter

4.4. ОСНОВНЫЕ ДЕЙСТВИЯ.

Ввести с клавиатуры значения аргументов, нажать клавишу Enter

4.5. ЗАКЛЮЧИТЕЛЬНЫЕ ДЕЙСТВИЯ

По завершению работы с программой закрыть ее клавишей «Закрыть» в заголовке диалогового окна.

Заключение

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

Список источников информации

1. А. В. Рудаков — Технология разработки программных продуктов

2. Эрик Д Ж. БРАУДЕ — Технология разработки программных продуктов

3. Л. Г. Гагарина, Е. В. Кокорева, Б. д. Виснадул — Технология разработки программных продуктов

4. Ваблагодатских, В. А. Волнин, К. Ф. Поскакалов — Аандартизация разработки программных средств.

5. С. Макконнелл — Совершенный код.

Приложения

Приложение 1: Техническое задание

Специальные требования

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

Ввиду объемности проекта задачи предлагается решать поэтапно. При этом модули создаются в разное время, должны предполагать возможность наращивания системы и быть совместим друг с другом. Язык программирования выбран С++.

Требования к программной документации

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

Технико-экономическое обоснование

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

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

План график выполнения работ

№ этапа

Название этапа

Срокиэтапа

Чем заканчивается этап

1

Изучение предметной области. Проектирование системы.

15. 03. 2011−25. 03. 2011

Архитектура системы, алгоритм программы, техзадание

2

Разработка программы

27. 03. 2011−13. 05. 2011

Программный продукт для решения уравнений

3

Тестирование и отладка программы.

15. 04. 2011−28. 05. 2011

Готовая программа для складского учета. Программная документация.

4

Написание пользовательской документации

29. 05. 2011−3. 06. 2011

Руководство пользователя

Приложение 2: Программный код

#include< iostream>

#include< conio. h>

#include< math. h>

usingnamespace std;

double a, b, x, x1, x2,c, t1, t2,t, s, i, f;

double f1 (doublea, doubleb, double c)

{ // функция для решения линейных

double x;

x= (c-b) /2*a;

return x;

}

double dis (doublea, doubleb, double c)

{ // дискреминант

double d;

d=b*b-4*a*c;

return d;

}

doublelgp (double a, double b)

{ // функция для решения логарифма

double q;

q= log (b) /log (a);

return q;

}

int main ()

{

while (i! =true) // циклдлявощваратаменю

{

system («cls»); // очисткаэкрана

// ---------------------------------------------

// МЕНЮ

cout< <"Select: «< <endl<<endl;

cout< <"1) Function"< <endl<<endl;

cout< <"2) Logorifms"< <endl<<endl;

cout< <"3) Exit"< <endl<<endl;

cout< <"Yourchoice: «;

int u; // переменная для оператора выбора в меню.

cin> > u;

system («cls»);

switch (u) { // оператор выбора

case 1: { // 1. Function

cout< <"Types of equations"< <endl<<endl;

cout< <" 1) a*x-b"< <endl<<endl;

cout< <" 2) a*x*x+b*x+c"< <endl<<endl;

cout< <" 3) a*x*x+b*x"< <endl<<endl;

cout< <" 4) Exit"< <endl<<endl;

cout< <"Select: «;

int k; // Вложенный switch дляподменю

cin> > k;

system («cls»);

switch (k) {

case 1: { // 1) a*x-b

system («cls»);

cout< <"a*x-b"<<endl<<endl;

cout< <"Enter a b c"< <endl;

cin> >a>>b>>c;

cout< <"Answer: «< <f1 (a, b, c); // вызов функции для линейного

getch ();

continue;

break; }

case 2: { // 2) a*x*x+b*x+c

cout< <"a*x*x+b*x+c"<<endl<<endl;

cout< <"Enter a b c"< <endl;

cin> >a>>b>>c;

dis (a, b, c); // вызов функции дискреминанта

if (dis (a, b, c) < 0)

cout< <endl<<"No roots"< <endl; // корнейнет

if (dis (a, b, c) == 0) // елсидискреминантравен 0 до уравнение имеет одно решение

{

x=-dis (a, b, c) / (2*a);

cout< <"x="<< x;

}

if (dis (a, b, c) > 0)

{

x1= (-b+sqrt (dis (a, b, c))) / (2*a);

x2= (-b-sqrt (dis (a, b, c))) / (2*a);

cout< <endl<<"x1="<< x1 < <", «< <"x2="<< x2 < <endl; }

getch ();

continue;

break; }

case 3: { // 3) a*x*x+b*x

system («cls»);

cout< <"a*x*x+b*x"<<endl<<endl;

cout< <endl<<"Enter a b c"< <endl;

cin> >a>>b>>c;

dis (a, b, c);

if (dis (a, b, c) < 0)

cout< <endl<<"No roots"< <endl;

if (dis (a, b, c) == 0)

{

t=-b/ (2*a);

cout< <"t="<< t;

x=sqrt (t);

cout< <endl<<"x="<<x;

}

if (dis (a, b, c) > 0)

{

t1= (-b+sqrt (dis (a, b, c))) / (2*a);

t2= (-b-sqrt (dis (a, b, c))) / (2*a);

x1=sqrt (t1);

x2=sqrt (t2);

cout< <endl<<"Roots x1="< < x1 < <", «< <"x2="<< x2 < <endl;

getch ();

continue;

}

}

break; }

case 4:

{

i=true; // выходизпрограммы

break;

}

break; }

case 2: {

cout< <"Select: «< <endl<<endl;

cout< <"1) log a (b)"< <endl<<endl;

cout< <"2) log a (b*c)"< <endl<<endl;

cout< <"3) log a (b/c)"< <endl<<endl;

cout< <"4) Exit"< <endl<<endl;

cout< <"your choose: «;

int p;

cin> >p;

switch (p) {

case 1: { // подменю логарифмов

system («cls»);

cout< <"log a (b)"< <endl<<endl;

cout< <"choose a, b"< <endl;

cin> >a>>b;

cout< <"answer: «< <lgp (a, b);

getch ();

continue;

break; }

case 2: {

system («cls»);

cout< <"log a (b*c)"< <endl<<endl;

cout< <"choose a, b, c"< <endl;

cin> >a>>b>>c;

s=lgp (a, c) +lgp (a, b);

cout< <"answer: «< <s;

getch ();

continue;

break; }

case 3: {

system («cls»);

cout< <"log a (b/c)"< <endl<<endl;

cout< <"choose a, b, c"< <endl;

cin> >a>>b>>c;

s=lgp (a, b) — lgp (a, c);

cout< <"answer: «< <s;

getch ();

continue;

break;

}

case 4:

{

i=true; // выход из программы

break;

}

}

}

case 3: {i=true;

getch (); // задержка экрана

break; }

}

}

getch ();

}

ПоказатьСвернуть
Заполнить форму текущей работой