[Android] 운동 관리 앱

당당·2023년 4월 20일
2

Android

목록 보기
2/3
post-thumbnail

https://github.com/dangdangs0/Exercise

📆개발 시기

2021.09.17.-2021.12.10.


📝개발 목적

코로나19 장기화로 성인 10명 중 3명의 체중이 증가했다는 통계 결과가 있다.

바깥 활동이 줄고 집에 머무르는 시간이 길어지며 활동량이 줄어든 데다가,
배달음식으로 인한 고칼로리 섭취가 늘어난 탓이라는 이유를 볼 수 있다.

외출 횟수가 감소하며 일상생활 활동량도 함께 감소되며 운동량도 줄어들었다고 본다.


이러한 사회현상을 해결하기 위해 우리는 집에서 할 수 있는 운동을 추천해주고
운동을 꾸준히 할 수 있게 격려해주는 운동 프로그램을 앱으로 제작하려 한다.

인터넷으로 충분히 찾을 수 있는 내용이지만 운동을 시작하는 사람들은 방대하고 많은 양의 정보중 어떤 정보를 믿어야 할지 고민하다 끝내버리는 경우가 많다.

우리는 이런 번거로움과 운동의 지속성을 유지하는 동기 부여를 앱을 통해 관리하고 사용자가 스스로 루틴을 정할 수 있게 도움을 주는 앱을 개발하고자 한다.

이 중, 요일별 스케쥴 조회, 수정, 삭제, 등록, 추천 운동 정보 조회 기능을 구현

🔍개발 환경

개발 환경 : Windows 10, Android Studio
관리 도구 : Git, XLGantt
개발 언어 : Java
데이터베이스 : SQLite
개발 생명주기 : 피드백 있는 폭포수 모델

📃기술적 프로세스(프로젝트 개발 계획)

생명주기

개발생명주기모델 : 피드백이 있는 폭포수 모델 생명주기

단계입력 산출물수행 태스크출력 산출물시작 기준완료 기준
요구사항프로젝트 제안서기능 분석 및 명세서 작성요구사항 명세서프로젝트 제안서 작성요구사항 명세서 작성
설계요구사항 명세서아키텍쳐 DB 설계설계서요구사항명세서 작성설계서 작성
구현설계 사양서개발 코딩 단위 테스트소스 코드 테스트 보고서설계서 작성구현 후 단위 테스트 종료
테스트소스 코드시스템 테스트 인수 테스트테스트 보고서통합 테스트 종료시스템/인수 테스트 종료
유지 보수테스트 보고서프로젝트 검토프로젝트 완료 보고서전 테스트 종료완료 보고서 작성

개발 방법론

객체지향 방법론을 이용한다.

  • 프로젝트 개발 언어가 완벽한 객체지향 언어인 JAVA이기에 메소드와 속성이 결합한 객체를 표현하기에 적합하다. JAVA가 제공하는 다양한 메소드를 활용하여 여러가지 기능 구현이 가능하다.

객체지향 분석

앱 사용자와 운동 관리/기록을 총괄하는 앱을 UML 언어Use CaseSequence Diagram을 이용하여 요구사항을 분석하고, ER 다이어그램과 테이블 목록 및 기술을 하여 데이터베이스 요구사항을 분석

객체지향 설계

시스템 설계 - DB를 최대한 최적화하여 설계

객체 설계 - UML 언어의 Class Diagram을 이용 class를 정의하고 class들 간의 관계 및 알고리즘 그리고 자료구조를 설계

DB 설계 - ER 다이어그램을 이용하여 테이블을 상세 기술

객체지향 프로그래밍

설계를 바탕으로 Java를 이용하여 데이터 구조 부분과 관련 메소드를 포함하는 여러 객체들로 구현


💻개발 규모 산정

WBS

WBS
WBS

간트차트


비용 : 간이 기능 점수법 산정

기능개수평균 가중치기능 점수
데이터기능ILF운동 테이블, 회원 테이블27.515.0
트랜잭션 기능EI요일별 운동 부위 등록/수정/삭제, 회원 정보 등록/수정/삭제, 운동시간 타이머 측정74.028
EO주간 운동시간 조회, 순위 조회25.210.4
EQ푸시 알림, 운동 정보 조회(추천), 회원 정보 조회, 요일별 운동 부위 조회43.915.6
기능 점수의 합15+28+10.4+15.6=69
보정 전 개발 원가69 * 519,203 = 35,825,007 원
보정 계수규모 보정(0.65), 애플리케이션 유형 보정(1.0),언어 보정(1.2), 품질/특성 보정(1.0)
보정 후 개발 원가35,825,007(0.651.01.21.0)=27,943,505.45 원

데이터 기능 점수 = ILF 개수 x 7.5 + EIF 개수 x 5.4
= 2x7.5 + 0
= 15

트랜젝션 기능 점수 = (EI개수 x 4.0) + (EO개수 x 5.2) + (EQ개수 x 3.9)
= 7x4.0 + 2x5.2 + 4x3.9
= 54

보정 전 개발 원가 = 미조정 기능 점수 x 기능 점수당 단가
= ( 데이터 기능 점수 + 트랜잭션 기능 점수 ) x 519.203

보정 후 개발 원가 = 보정 전 개발 원가 x ( 규모 보정 계수) x 애플리케이션 보정 계수 x 언어 보정 계수 x 품질/특성 보정 계수)


📌기능 요구사항

시스템 요구사항




유스케이스 다이어그램




액터 목록

액터설명
사용자운동 관리 앱을 사용하는 사람
관리자운동 관리 앱을 관리하고, 운동 정보를 관리하는 사람



유스케이스 목록

식별자행위자설명
UC-U01사용자요일별 운동 부위 등록
UC-U02사용자요일별 운동 부위 수정
UC-U03사용자요일별 운동 부위 삭제
UC-U04사용자요일별 운동 부위 조회
UC-U05사용자회원 정보 등록(회원가입)
UC-U06사용자회원 정보 수정
UC-U07사용자회원 정보 삭제(회원탈퇴)
UC-U08사용자회원 정보 조회
UC-U09사용자추천 운동 정보 조회
UC-U10사용자푸시 알림 설정
UC-U11사용자운동시간 타이머 측정
UC-U12사용자운동 시간 조회
UC-U13사용자로그인
UC-U14사용자순위 조회
UC-U15사용자주간 운동 시간 조회
UC-A01관리자운동 등록
UC-A02관리자운동 수정
UC-A03관리자운동 삭제



유스케이스 시나리오





기능 목록

유스케이스 ID유스케이스명항목요구사항
UC-U01요일별 운동 부위 등록운동 부위 입력각 요일별로 운동 부위를 입력한다.
UC-U02요일별 운동 부위 수정운동 부위 수정각 요일별로 입력한 운동 부위를 수정한다.
UC-U03요일별 운동 부위 삭제운동 부위 삭제각 요일별로 입력한 운동 부위 정보를 전체 삭제한다.
UC-U04요일별 운동 부위 조회운동 부위 조회각 요일별로 입력한 운동 부위를 조회한다.
UC-U09추천 운동 정보 조회추천 운동 정보 조회사용자가 선택한 운동 부위에 따라 적절한 운동을 추천한다.

📰사용자 인터페이스 요구사항

메인 화면



요일별 스케쥴



추천 운동 정보 조회


🔧비기능 요구사항

성능 요구사항

항목요구사항
반응시간시스템은 사용자의 요구에 5초 이내에 처리해 결과를 보여야 한다.



신뢰성 요구사항

항목요구사항
데이터 신뢰성사용자가 측정한 운동 시간에 대하여 시스템은 정확한 정보를 유지하고 관리해야 한다.
데이터 정확성운동 데이터 등록, 수정, 삭제는 관리자가 제공한 데이터의원본 그대로 사용자에게 제공되어야 한다.
데이터 무결성사용자가 과거에 운동했던 기록은 시스템에서 임의로 수정 및 추가, 삭제되어서는 안된다.



보안 요구사항

항목요구사항
로그인 비밀번호로그인 비밀번호는 입력시 “*”로 보여주며, 6자리 이상으로 한다.
DB 관리DB의 운동 등록/수정/삭제는 인증된 관리자만이 수행할 수 있다.

📂설계서

클래스 다이어그램



클래스 명세서



🎲시퀀스 다이어그램

요일별 운동 부위 등록

추천 운동 정보 조회


🎹DB 설계

ERD

테이블 설계


📺실행 결과

추천 운동 정보 조회

메인 화면(로그인 화면)추천 운동 정보 조회 화면 초기 (자동으로 이 선택됨)추천 운동 정보 조회 화면에서 부분을 선택했을 경우 (아래 리스트가 달라짐)‘등’ 운동 부위를 선택해서 출력된 리스트오버헤드 랫폴 다운클릭
운동 방법이 출력



요일별 스케쥴 조회, 수정, 삭제, 등록

요일별 스케쥴 초기 화면 (사용자의 스케쥴이 미등록 상태)요일별 스케쥴 화면에서 요일 버튼을 클릭시 리스트뷰가 아래에 출력요일을 선택하고 리스트뷰의 운동 부위를 선택시 다음과 같이 스케쥴 추가 가능스케쥴을 추가한 후 저장 버튼을 클릭시 등록/수정이 가능
(그래야 다른 화면으로 이동하거나 로그아웃해도 스케쥴이 사라지지 않음)삭제 버튼을 클릭시, AlertDialog가 출력되며 확인 버튼을 클릭시 사용자가 등록한 스케쥴이 삭제된다.삭제버튼을 클릭한 후의 화면

실행 영상

https://youtu.be/Y9wB-HvHdKU

🎈테스팅

화이트박스 테스팅

분기 커버리지, 사용자 운동 스케쥴 삭제
(가) 조건문 : Yes / No에 따른 한 가지 경로를 가짐 >> 2가지 분기를 가짐
스케쥴 삭제 기능




분기 커버리지, 사용자 운동 스케쥴 저장
(가) 조건문 : Yes / No에 따른 한 가지 경로를 가짐 >> 2가지 분기를 가짐
스케쥴 저장 기능


🧸담당 역할

  • 유스케이스 다이어그램 작성
  • 추천 운동 정보 조회 유스케이스 시나리오 작성
  • UI 요구사항 중 로그인, 운동 조회, 요일별 스케쥴 등록 화면 제작
  • 클래스 다이어그램 및 클래스 명세서 작성
  • 추천 운동 정보 조회 시퀀스 다이어그램 작성
  • DB설계
  • 추천 운동 정보 조회 및 로그인 화면 개발
  • 내장 DB에 운동 정보 입력

📚참고문헌

[1] 안드로이드 : 프래그먼트에 리스트뷰(ListView) 사용하기, https://m.blog.naver.com/cosmosjs/222006150792
[2] RecyclerView를 커스텀해서 가로, 세로 구현하기, https://taek2.tistory.com/m/13
[3] Fragment Refresh(새로고침) 하는 방법, https://maivve.tistory.com/35
[4] SQLite 사용 방법 및 예제, https://blog.naver.com/hee072794/220619425456
[5] 텍스트뷰(TextView) 동적생성, https://aries574.tistory.com/62
[6] BottomNavigationView 사용하여 하단 메뉴 만들기, https://lktprogrammer.tistory.com/183
[7] AlertDialog 사용하여 알림창 띄우는 방법 총정리, https://lktprogrammer.tistory.com/155
[8] 테이블-AUTOINCREMENT을 설정했을 때 값의 할당 규칙,
https://araikuma.tistory.com/690

profile
MSSQL DBA 신입

7개의 댓글

comment-user-thumbnail
2023년 11월 14일

혹시 소스코드좀 공유해주세요

1개의 답글
comment-user-thumbnail
2024년 5월 16일

깃허브로 불러왔는데 비회원로그인과 회원가입 버튼이 눌러도 아무 반응이 없는데 따로 코드를 작성해야하나요?

1개의 답글
comment-user-thumbnail
2024년 6월 4일

혹시 깃허브에서 어떻게 사용하는지 알 수 있을까요'? 불러오기 까지 했는데 실행방법을 모르겠어요 그리고 버전도 알려주세요 !!

답글 달기
comment-user-thumbnail
2024년 6월 4일

깃허브에서 실행 방법과 버전을 혹시 알 수 있을까요ㅕ?

1개의 답글