Join money app. Постановка задачи, возможности и ui приложения Структура приложения и решения

Содержание

Слайд 2

СОДЕРЖАНИЕ

Постановка задачи, возможности и ui приложения
Структура приложения и решения

СОДЕРЖАНИЕ Постановка задачи, возможности и ui приложения Структура приложения и решения

Слайд 3

ПОСТАНОВКА ЗАДАЧИ, ВОЗМОЖНОСТИ И UI ПРИЛОЖЕНИЯ


ПОСТАНОВКА ЗАДАЧИ, ВОЗМОЖНОСТИ И UI ПРИЛОЖЕНИЯ

Слайд 4

ПОСТАНОВКА ЗАДАЧИ

В маленькой компании работают 5 человек. Два учредителя и трое наемных

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

Слайд 5

ПОСТАНОВКА ЗАДАЧИ

Внесение данных
Вносить основные операции (доход, расход, перевод), с указанием счетов, категорий,

ПОСТАНОВКА ЗАДАЧИ Внесение данных Вносить основные операции (доход, расход, перевод), с указанием
тегов.
Просмотр остатка денег на счетах.
Просмотр детализации по счетам, категориям, тегам.
Синхронизация данных между устройствами.
Многопользовательский режим
Подключение к одному аккаунту нескольких пользователей.
Закрепление за пользователем счета.
Выставление уровня доступа пользователя. Выявлено три роли:
Администратор – может видеть и редактировать все записи.
Пользователь – может просматривать все записи, но не редактировать. Может добавлять заметки (текст и фото) для последующей обработки их администратором.
Ограниченный пользователь – может просматривать операции только по своему счету (без редактирования). Может видеть баланс своего счета. Может добавлять заметки.

Слайд 6

АНАЛИЗ СУЩЕСТВУЮЩИХ ПРЕДЛОЖЕНИЙ

АНАЛИЗ СУЩЕСТВУЮЩИХ ПРЕДЛОЖЕНИЙ

Слайд 7

UI

Вход в приложение через Google аккаунт

Регистрация. Возможность присоединиться к существующему аккаунту

Ожидание подтверждения

UI Вход в приложение через Google аккаунт Регистрация. Возможность присоединиться к существующему
при запросе на присоединение к существующему аккаунту

Слайд 8

UI

Список операций

Меню (при входе под администратором)

Список счетов с балансом по каждому

UI Список операций Меню (при входе под администратором) Список счетов с балансом по каждому

Слайд 9

UI

Редактирование операции

Окно ввода суммы операции

Окно установок фильтра по датам

UI Редактирование операции Окно ввода суммы операции Окно установок фильтра по датам

Слайд 10

UI

Редактирование пользователя

Список заметок

Редактирование заметки

UI Редактирование пользователя Список заметок Редактирование заметки

Слайд 11

РЕШЕНИЯ


РЕШЕНИЯ

Слайд 12

Android client

Background

СХЕМА СЕТЕВЫХ ЗАПРОСОВ

Apache server

PHP

Retrofit

Request handler

UI Thread

EventBus

Activity
or Fragments

Android client Background СХЕМА СЕТЕВЫХ ЗАПРОСОВ Apache server PHP Retrofit Request handler

Слайд 13

Background

СХЕМА ЗАПРОСОВ К БАЗЕ ДАННЫХ

UI Thread

EventBus.AsyncExecutor

StartPreparingData(){
AsyncExecutor.create.execute(…);
}

DataProvider.getData(){
// take data

EventBus.postStyky(…

Background СХЕМА ЗАПРОСОВ К БАЗЕ ДАННЫХ UI Thread EventBus.AsyncExecutor StartPreparingData(){ AsyncExecutor.create.execute(…); }
data);
}

onDataPrepared(data){
// update UI
}

onException(Exception e){
// handle exception
}

softRef

EventBus.StyckyEvent

Слайд 14

РЕШЕНИЯ

Apache + PHP + MySQL
Рассматриваемые альтернативы:
Firebase real-time database
+ обновления в реальном времени
+

РЕШЕНИЯ Apache + PHP + MySQL Рассматриваемые альтернативы: Firebase real-time database +
меньше кода
- NoSQL база данных. В приложении используется запросы с JOIN, который отсутствует в Firebase.

Слайд 15

РЕШЕНИЯ

EventBus + Retrofit
Рассматриваемые альтернативы:
Retrofit (асинхронные запросы)
- не следит за состоянием фрагмента/активити
Loaders

РЕШЕНИЯ EventBus + Retrofit Рассматриваемые альтернативы: Retrofit (асинхронные запросы) - не следит
+ Retrofit
- более сложная реализация
AsyncTask + Retrofit
- не следит за состоянием фрагмента/активити

Слайд 16

РЕШЕНИЯ

Retrofit
Рассматриваемые альтернативы:
Volley
- нет синхронных запросов, а асинхронные не отслеживают жизненный цикл

РЕШЕНИЯ Retrofit Рассматриваемые альтернативы: Volley - нет синхронных запросов, а асинхронные не
фрагментов.
HttpURLConnection
- Нужно вручную парсить json.

Слайд 17

РЕШЕНИЯ

Для кеширования запросов к sqlite базе данных, был создан класс DataProvider. Это

РЕШЕНИЯ Для кеширования запросов к sqlite базе данных, был создан класс DataProvider.
singleton, через который все фрагменты запрашивают данные из базы.
В этом классе результаты всех используемых запросов к базе сохраняются в soft reference.
Если данные и условия запроса не были изменены, то в следующий DataProvider сразу возвращает данные из соответствующей soft reference (или если система их удалили, то снова идет в sqlite)
При изменении/добавлении данных, вызываем у DataProvider метод обнуляющий соответствующую soft reference.

Слайд 18



Client

БЕЗОПАСНОСТЬ

Server

параметр 1,
параметр 2,
параметр 3,

google account token,
account id,
request sign (sha1 от

Client БЕЗОПАСНОСТЬ Server параметр 1, параметр 2, параметр 3, … google account
всех
параметров запроса и appKey,
сложенных в одну строку)

Вычисляется своя версия request sign и сравнивается с пришедшей
Проверяется соответствие token и account id
Если access status данного аккаунта позволяет вносить изменения в базу, то вносятся изменения

запрос

Имя файла: Join-money-app.-Постановка-задачи,-возможности-и-ui-приложения-Структура-приложения-и-решения.pptx
Количество просмотров: 29
Количество скачиваний: 0