가계부 앱 Money Is Mine - 프로젝트 설계: 요구사항 명세, 개발 일정

3 분 소요


저번 학기에 소프트웨어공학 강의를 들었었다
소프트웨어를 설계하고 개발하고 테스트하는… 그런 내용들
체계적으로 해 봅시다

개발 전에 일단 요구사항을 분석하고 설계해야 한다. 그러려면 요구사항이 결정되어야 한다. 시스템이 수행해야 하는 기능, 품질 등으로 기능적 요구사항과 비기능적 요구사항을 추출한다.

기능적 요구사항은 소프트웨어에 주어진 입력에 따른 동작 및 출력에 대한 요구사항이고, 비기능적 요구사항은 성능, 신뢰성, 보안성, 안전성 등의 품질 요구사항과 외부 인터페이스, 법규, 표준, 설치, 운영 등에 관한 제약사항이다.
토이 프로젝트라서 규모도 작아 비기능적 요구사항 쪽은 크게는 신경쓰지 않을 것 같다. 물론 가벼운 앱이 목적이기 때문에 최대한 효율적으로 짜도록 고려할 거긴 하지만


요구사항 명세

일단 필요한 기능들을 생각해 보았다.

  • 지출/수입 내역 등록
    • + 고정 지출/수입 등록
    • + 자주 사용되는 입력 정리
    • + 메모, 사진, 장소 같이 입력
  • 일간, 주간, 월간 내역 모아서 보기
    • + 그래프 보여주기
    • + 달력에 지출 보여주기
    • + 내역 검색
    • + 매일, 매주, 매월 평균 보여주기
    • + 예산에 따른 결과 보여주기

+ 표시는 additional한 부분들로 우선순위가 비교적 낮다.


지출/수입 내역 등록

요즘 앱들은 보통 사용자가 직접 등록 안 해도 내역들이 자동으로 올라가서 모아서 볼 수 있지 않나? 해서 여러모로 찾아봤다.

대체로 그 기능들은

  1. 오픈뱅킹 API 사용
  2. SMS 문자나 푸시 알림 읽어오기

위 두 경우인데,

1번은 휴대폰 또는 공동 인증서로 인증을 해서 모든 은행들에 접근할 수 있는 API다. 그런데 일단 개인은 사용할 수가 없다… 물론 테스트베드는 가능하지만, 실제 데이터 연동은 안 되어서 여러모로 귀찮다.

2번은 안드로이드의 경우 NotificationListener로 구현 가능한 부분이다. 그런데 IOS의 경우 문자나 다른 앱의 푸시 알림을 읽는 게 개인 정보 때문에 접근이 막혀 있다고 한다.

따라서 그냥 사용자가 직접 입력하는 쪽으로 구현하기로 한다.

  • 지출 또는 수입 여부 선택 버튼
  • 지출/수입 카테고리
  • 지출/수입 수단
    • 현금, 계좌이체, 카드 등으로 Nullable
  • 지출/수입 내용
  • 지출/수입 금액
  • 지출/수입 일시

를 입력 받아 Local DB에 저장하기


+ 고정 지출/수입 등록

어떤 서비스를 구독하거나, 월급, 평일의 교통비 등 매번 일정한 내역은 매번 등록하기 힘들기 때문에, 고정 지출을 미리 등록해주는 기능이 있으면 좋을 것 같다.

  • 지출 또는 수입 여부 선택 버튼
  • 지출/수입 카테고리
  • 지출/수입 내용
  • 지출/수입 금액
  • 지출/수입 일시 지정
    • 매일, 매주, 매월, 매년, 요일

를 입력 받아 Local DB에 저장하기


+ 자주 사용되는 입력 정리

고정 지출은 아니지만 자주 사용되는 입력이 있을 거다. 예를 들어 카테고리에서 ‘식비’를 가장 자주 적는다면 카테고리를 선택할 때 ‘식비’가 상단에 있으면 좋을 것이기 때문에, 이 순서를 사용자가 편집 가능하면 좋겠다.

  • 카테고리 순서 직접 편집 가능
  • 지출/수입 내역 등록에서 금액 입력 시 5000, 10000 등의 단위 버튼


+ 메모, 사진, 장소 같이 입력

이건 내가 특히 필요할 거 같아서 넣은 기능인데, 나는 일기를 안 써서, 어 이 날 뭐했더라 싶을 때 은행 앱에서 지출 내역을 보고 아 어디에 갔었구나 할 때가 많다

그래서 간단한 메모나 사진, 장소도 같이 입력되면 좋을 것 같다.

  • 지출/수입 내역 등록에서 메모, 사진, 장소 입력(Nullable)
    • 장소는 구글맵으로 보여줘도 좋을 것 같은데 필수 사항은 아님


일간, 주간, 월간 내역 모아서 보기

각 기간을 설정하면 모아서 보는 기능은 당연히 있어야 겠지

  • 해당 기간 전체 지출, 수입, 잔액 출력하기
  • 해당 기간 지출/수입 내역 모아서 리스트에 출력하기


+ 그래프 보여주기

지출/수입에 대한 그래프는 있으면 당연히 좋을 거다

  • 매일, 매주, 매월의 막대 그래프
  • 원 그래프 보여주기(카테고리 별 점유율)


+ 달력에 지출 보여주기

아무래도 달력에 매일 지출을 볼 수 있으면 좋을 것이다.

  • 달력에 매일의 지출, 수입 표시
  • 날짜를 선택하면 해당 일자 내역 모아서 보기 페이지로 이동


+ 내역 검색

내역 검색은 당연히 있어야 하는 기능일 거다.

  • 카테고리
  • 내용
  • 지출/수입 금액

에 따른 검색 기능


+ 매일, 매주, 매월 평균 보여주기

매일, 매주, 매월의 평균을 구해서 보여주는 것도 좋겠다. 오늘은 평소보다 덜 썼어요~~ 이런 거

그런데 평소와 다른 큰 지출/수입이 들어가서 평균이 엄청 튈 때가 있다. 어쩌다 한 번 받는 장학금 같은 그런 특이한 내역
실제 내 생활 사용 내역에 따른 통계를 보고 싶을 때 이런 내역은 안 들어갔으면 싶을 때가 있다. 따라서 이상치를 제거할 수 있게 평균 계산에 넣지 않기를 체크할 수도 있으면 좋을 것 같다

  • 평균 계산해서 비교 메시지 출력
  • 지출/수입 내역 페이지에서 평균 계산에 넣지 않기 체크 버튼


+ 예산에 따른 결과 보여주기

매일, 매주, 매달의 예산을 설정해서,
오늘, 이번 주, 이번 달 남은 금액을 보여주는 것도 좋을 것이다.

  • 예산 설정
  • 예산에서 남은 금액을 보여주고 메시지 출력



개발 일정

내용 1월 3째주 1월 4째주 1월 5째주 2월 1째주 2월 2째주
Local DB 등 Flutter 공부        
지출/수입 내역 등록      
일간, 주간, 월간 내역 모아서 보기      
고정 지출/수입 등록        
자주 사용되는 입력 정리        
메모, 사진, 장소 같이 입력        
그래프 보여주기        
달력에 지출 보여주기        
내역 검색        
매일, 매주, 매월 평균 보여주기        
예산에 따른 결과 보여주기        

이 정도면 괜찮을 것 같다
이제 개발에 들어가 보자


댓글남기기