Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Моделирование предметной области «Управление домашними финансами» с помощью UML (Анализ предметной области разрабатываемого ПО)

Содержание:

Введение

Если вы считаете, что управлять домашними финансами не надо и что это неэффективно или бесполезно, то вы сильно заблуждаетесь. Навык управления финансами также, как и использование правила «заплати сначала себе», сильно способствует улучшению вашего финансового состояния.

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

Объект нашего исследования – домашние финансы.

Предмет исследования – автоматизация управления домашними финансами.

Цель – разработать программный продукт для управления домашними финансами.

Задачи:

1) Проанализировать расходы и доходы.

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

3) Приобрести и укрепить навыки и умения в разработке программного продукта.

Глава 1. Анализ предметной области разрабатываемого ПО

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

Для реализации управления домашними финансами были использованы:

UML (Unified Modeling Language — унифицированный язык моделирования) — язык графического описания для объектного моделирования в области разработки программного обеспечения, моделирования бизнес-процессов, системного проектирования и отображения организационных структур; Access—СУБД для хранения данных.

    1. Описание целевых бизнес процессов в общем виде

Бизнес-процессы:

  1. Вход в приложение
  2. Внесение данных
  3. Поиск по категории дохода или расхода
  4. Вывод суммы дохода или расхода
    1. Определение единого языка предметной области

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

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

Теперь подробнее рассмотрим понятие «учёт личных финансов». Учёт личных финансов образовывается тогда, когда появляются финансы. Исходя из этого, словари дают следующие определения личных финансов:

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

Домашние финансы делятся на доходы и расходы.

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

  • Номинальный - это количество денег, полученное в определённый период отдельным лицом; также он характеризует уровень денежных доходов независимо от налогообложения.
  • Располагаемый доход – доход, который может быть использован на личное потребление и личные сбережения. Располагаемый доход меньше номинального дохода на сумму налогов и обязательных платежей.
  • Реальный – представляет собой количество товаров и услуг, которое можно купить на располагаемый доход в течение определенного периода.

По форме единицы дохода выделяют:

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

Расходы – затраты, издержки, потребление чего-либо для определенных целей.

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

1. По важности

  • Расходы могут быть необходимые или обязательные.

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

  • Расходы могут быть желательные.

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

  • Расходы могут быть «статусные».

Расходы на товары, которые соответствуют высокому положению в обществе и доходу (дорогие - одежда, телефоны, автомобили, путешествия и т.д.)

  • Расходы могут быть лишние. 

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

2. По периодичности

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

Личные финансы выполняют следующие функции:

 1. Обеспечительная функция определяет материальную стабильность физического лица.

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

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

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

5. Контрольная функция осуществляется в двух направлениях:

а) контроль за ведением доходов и расходов, финансовой документации;

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

    1. Формальное описание целевых бизнес-процессов в терминах единого языка предметной области

Сценарий:

  • Пользователь заходит в приложение
  • Осуществляется внесение суммы
  • Внесение суммы дохода или расхода
  • Он может вернуться назад и сделать другой выбор
  • Он может выйти из приложения

Глава 2. Проектирование модели программной системы на языке UML

2.1 Проектирование вариантов использования программной системы

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

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

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

2.2 Проектирование классов программной системы

Основной является модель вариантов использования, которая предназначена для определения требований к системе. Она включает в себя актантов, варианты использования и связи между ними. Для отображения этой модели язык UML предлагает использовать диаграммы Use Case (вариант использования) совместно с моделями StateDiagram (диаграммы состояний). Последние используются для конкретизации вариантов использования системы.

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

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

2.3 Проектирование последовательностей действий программной системы

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

2.4 Диаграммы приложения "Управление домашними финансами"

На рисунке 1 представлена диаграмма классов, которая визуализирует статические аспекты этих строительных блоков и их связей, а также обозначает детали их конструирования. Диаграмма классов передает основную суть приложения «Управление домашними финансами», но в то же время не оставляет без внимания множество вещей. Как специфицирует приведенный ниже код в 3 главе, в приложении участвуют классы – App(Меню приложения), AccessInsert(Запись в базу данных), PoiskDohod(Поиск по доходу), PoiskRashod(Поиск по расходу), SumDohod(Сумма доходов), SumRashod(Сумма расходов).

,

Рисунок 1 - Диаграмма классов

На рисунке 2 представлена диаграмма последовательностей, которая визуализирует последовательность сообщений. Мы смоделировали их порядок относительно начала последовательности, снабдив сообщение префиксом, указывающим его номер с двоеточием в качестве разделителя. Показан набор ролей: (Пользователь-студент), (Приложение Управление домашними финансами), (Меню приложения), (Внесение данных), (Поиск), (Вывод суммы), (ЗаписьВТаблицуДоходы), (ЗаписьВТаблицуРасходы), (РезультатЗаписиД), (РезультатЗаписиР), (ЗапросКатегорииПоДоходу), (ЗапросКатегорииПоРасходу), (РезультатПоискаД), (РезультатПоискаР), (РезультатД), (РезультатР). Диаграмма последовательности демонстрирует временной порядок сообщений.

Рисунок 2 - Диаграмма последовательностей

На рисунке 3 представлена диаграмма прецедентов, которая отражает отношения между актёром и прецедентами. Показана работа приложения «Управление домашними финансами» с описанием действующих лиц, окружающих ее. Вы видите пользователя-студента, который при входе в приложение выбирает: внести ли ему данные (Внести данные), сделать выбор в пользу поиска по категории (Поиск по категории) или выбрать действие показать сумму (Показать сумму). Также можно выбрать категорию поиска (доход/расход) и сумму (доходов/расходов).

Рисунок 3 - Диаграмма прецедентов

Глава 3. Реализация модели программной системы на языке программирования Java

3.1 Краткое введение в язык Java

Java – сильно типизированный объектно–ориентированный язык программирования, разработанный компанией Sun Microsystems. Дата официального выпуска — 23 мая 1995 года. На 2018 год Java – один из самых популярных языков программирования.

Особенности:

1. Ключевой особенностью языка Java является то, что его код сначала транслируется в специальный байт-код, независимый от платформы. А затем этот байт-код выполняется виртуальной машиной JVM (Java Virtual Machine). В этом плане Java отличается от стандартных интерпретируемых языков как PHP или Perl, код которых сразу же выполняется интерпретатором. В то же время Java не является и чисто компилируемым языком, как С или С++. Подобная архитектура обеспечивает кроссплатформенность и аппаратную переносимость программ на Java, благодаря чему подобные программы без перекомпиляции могут выполняться на различных платформах - Windows, Linux, Mac OS и т.д. Для каждой из платформ может быть своя реализация виртуальной машины JVM, но каждая из них может выполнять один и тот же код.

2. Java является языком с Си-подобным синтаксисом и близок в этом отношении к C/C++ и C#. Поэтому, если вы знакомы с одним из этих языков, то овладеть Java будет легче.

3. Еще одной ключевой особенностью Java является то, что она поддерживает автоматическую сборку мусора. А это значит, что вам не надо освобождать вручную память от ранее использовавшихся объектов, как в С++, так как сборщик мусора это сделает автоматически за вас.

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

3.2 Работа готового продукта «Управление домашними финансами»

На рисунке 4 представлен класс Finansi, который выводит результаты поиска, считывает из базы данных информацию, где у каждой переменной имеется индекс столбца. Так же нам для работы с Базой данных, потребовался драйвер UCanAccess, который и считывал из нее информацию.

Рисунок 4 - class Finansi

На рисунках 5.1-5.3 представлен класс App, в котором все остальные классы собираются воедино и выполняют свои функции. Для считывания значений в выборе пункта меню нам потребовался класс Scanner.
Так же весь код мы помещаем в механизм исключительных ситуаций "try catch" для корректной работы программы. Выборы пункта меню реализовали с помощью оператора управления "switch case".

Рисунок 5.1 - class App

Рисунок 5.2 - class App

Рисунок 5.3 - class App

На рисунке 6 представлен класс Proccessing, который с помощью пакета sql мы подключаем к самой базе данных. С помощью этого пакета можно осуществлять поиск в указанной базе данных.

Рисунок 6 - class Proccessing

На рисунке 7 представлен класс AccessInsert, который позволяет нам вносить записи в таблицы базы данных при помощи sql.

Рисунок 7 - AccessInsert

На рисунке 8 представлен абстрактный класс, который призван предоставлять базовый функционал для классов-наследников. А производные классы уже реализуют этот функционал.

Рисунок 8 - AbstrSearch

На рисунке 9 представлен класс AccessSelect, который помогает нам осуществлять поиск по записанным ранее в таблицы базы данных данным (по категориям дохода/расхода).

Рисунок 9 - AccessSelect

На рисунке 10 представлен класс PoiskDohod, позволяющий осуществлять поиск по категории дохода. Результат выводится в виде: Ид, Сумма, Категория, Дата.

Рисунок 10 - PoiskDohod

На рисунке 11 представлен класс PoiskRashod, позволяющий осуществлять поиск по категории расхода. Результат выводится в виде: Ид, Сумма, Категория, Дата.

Рисунок 11 - PoiskRashod

На рисунке 12 изображен класс CategoryProccessor, осуществляющий помощь в поиске по категориям.

Рисунок 12 - class CategoryProccessor

На рисунке 13 изображен класс SumDohod, подсчитывающий сумму доходов.

Рисунок 13 - SumDohod

На рисунке 14 изображен класс SumRashod, подсчитывающий сумму расходов.

Рисунок 14 - SumRashod

На рисунке 15 изображен класс Balance, выводящий баланс доходов или расходов, в зависимости от выбранного пункта меню (4 – баланс по сумме доходов, 5 – баланс по сумме расходов).

Рисунок 15 - Balance

На рисунке 16 представлен вид рабочего меню, который видит пользователь при входе в приложение. Он может внести данные, осуществить поиск по категории дохода или поиск по категории расхода, увидеть сумму доходов или сумму расходов.

Рисунок 16 – Вид рабочего меню.

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

Рисунок 17 – Работа программы при выборе пункта №1.

На рисунке 18 представлена работа программы при выборе пункта №2, в котором осуществляется поиск в базе данных по категории дохода, введенной пользователем. Затем выводится результат поиска.

Рисунок 18 – Работа программы при выборе пункта №2.

На рисунке 19 представлена работа программы при выборе пункта №3, в котором осуществляется поиск в базе данных по категории расхода, введенной пользователем. Затем выводится результат поиска.

Рисунок 19 – Работа программы при выборе пункта №3.

На рисунке 20 представлена работа программы при выборе пункта №4, в котором подсчитывается сумма доходов.

Рисунок 20 – Работа программы при выборе пункта №4.

На рисунке 21 представлена работа программы при выборе пункта №5, в котором подсчитывается сумма расходов.

Рисунок 21 – Работа программы при выборе пункта №5.

На рисунке 22 представлена работа программы при выборе неправильного пункта. Если пользователь выберет пункт, которого нет в списке, то программа завершит работу и выведет сообщение о том, что выбранного пункта нет.

Рисунок 22 – Работа программы при выборе неправильного пункта.

ЗАКЛЮЧЕНИЕ

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

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

-StarUML– в данной программе мы спроектировали модели программной системы на языке UML;

- IntelliJ IDEA – здесь мы разработали программный продукт " Управление домашними финансами " на языке Java.

Поставленная цель выполнена с помощью определенных нами задач.

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

  1. Википедия [Электронный ресурс] — https://ru.wikipedia.org/wiki/UML
  2. Иванова Г.С., Ничушкина Т.Н., Пугачев Е.К. Объектно-ориентированное программирование: Учеб. для вузов/ Под. Ред. Г.С. Ивановой. – М.: Изд-во МГТУ им. Н.Э.Баумана, 2001. – 320 с.
  3. Кендалл Скотт. UML. Основные концепции. Пер. с англ. – М.: Издательский дом «Вильямс», 2002. – 144 с.: ил.
  4. Объектно-ориентированный анализ и проектирование [Электронный ресурс] — http://ooad.asf.ru/
  5. Учебный курс «Основы объектно-ориентированного программирования»  [Электронный ресурс] — http://www.intuit.ru/department/se/oopbases/
  6. Шилдт Г. Java. Полное руководство [Электронный ресурс] — http://mexalib.com/view/17386
  7. Гради Буч, Джеймс Рамбо, Ивар Якобсон. Язык UML. Руководство пользователя. 2-е изд.: Пер. с англ. Мухин Н. – М.: ДМК Пресс, 2006. – 496 с.: ил.