2021.09.17.-2021.12.10.
코로나19 장기화로 성인 10명 중 3명의 체중이 증가했다는 통계 결과가 있다.
바깥 활동이 줄고 집에 머무르는 시간이 길어지며 활동량이 줄어든 데다가,
배달음식으로 인한 고칼로리 섭취가 늘어난 탓이라는 이유를 볼 수 있다.
외출 횟수가 감소하며 일상생활 활동량도 함께 감소되며 운동량도 줄어들었다고 본다.
이러한 사회현상을 해결하기 위해 우리는 집에서 할 수 있는 운동을 추천해주고
운동을 꾸준히 할 수 있게 격려해주는 운동 프로그램
을 앱으로 제작하려 한다.
인터넷으로 충분히 찾을 수 있는 내용이지만 운동을 시작하는 사람들은 방대하고 많은 양의 정보중 어떤 정보를 믿어야 할지 고민하다 끝내버리는 경우가 많다.
우리는 이런 번거로움과 운동의 지속성
을 유지하는 동기 부여를 앱을 통해 관리하고 사용자가 스스로 루틴을 정할 수 있게 도움을 주는 앱을 개발하고자 한다.
이 중, 요일별 스케쥴 조회, 수정, 삭제, 등록, 추천 운동 정보 조회 기능을 구현
개발 환경 : Windows 10, Android Studio
관리 도구 : Git, XLGantt
개발 언어 : Java
데이터베이스 : SQLite
개발 생명주기 : 피드백 있는 폭포수 모델
개발생명주기모델
: 피드백이 있는 폭포수 모델 생명주기
단계 | 입력 산출물 | 수행 태스크 | 출력 산출물 | 시작 기준 | 완료 기준 |
---|---|---|---|---|---|
요구사항 | 프로젝트 제안서 | 기능 분석 및 명세서 작성 | 요구사항 명세서 | 프로젝트 제안서 작성 | 요구사항 명세서 작성 |
설계 | 요구사항 명세서 | 아키텍쳐 DB 설계 | 설계서 | 요구사항명세서 작성 | 설계서 작성 |
구현 | 설계 사양서 | 개발 코딩 단위 테스트 | 소스 코드 테스트 보고서 | 설계서 작성 | 구현 후 단위 테스트 종료 |
테스트 | 소스 코드 | 시스템 테스트 인수 테스트 | 테스트 보고서 | 통합 테스트 종료 | 시스템/인수 테스트 종료 |
유지 보수 | 테스트 보고서 | 프로젝트 검토 | 프로젝트 완료 보고서 | 전 테스트 종료 | 완료 보고서 작성 |
객체지향 방법론
을 이용한다.
JAVA
가 제공하는 다양한 메소드를 활용하여 여러가지 기능 구현이 가능하다.앱 사용자와 운동 관리/기록을 총괄하는 앱을 UML 언어
의 Use Case
와 Sequence Diagram
을 이용하여 요구사항을 분석하고, ER 다이어그램과 테이블 목록 및 기술을 하여 데이터베이스 요구사항을 분석
시스템 설계
- DB를 최대한 최적화하여 설계
객체 설계
- UML 언어의 Class Diagram을 이용 class를 정의하고 class들 간의 관계 및 알고리즘 그리고 자료구조를 설계
DB 설계
- ER 다이어그램을 이용하여 테이블을 상세 기술
설계를 바탕으로 Java
를 이용하여 데이터 구조 부분과 관련 메소드를 포함하는 여러 객체들로 구현
기능 | 개수 | 평균 가중치 | 기능 점수 | ||
---|---|---|---|---|---|
데이터기능 | ILF | 운동 테이블, 회원 테이블 | 2 | 7.5 | 15.0 |
트랜잭션 기능 | EI | 요일별 운동 부위 등록/수정/삭제, 회원 정보 등록/수정/삭제, 운동시간 타이머 측정 | 7 | 4.0 | 28 |
EO | 주간 운동시간 조회, 순위 조회 | 2 | 5.2 | 10.4 | |
EQ | 푸시 알림, 운동 정보 조회(추천), 회원 정보 조회, 요일별 운동 부위 조회 | 4 | 3.9 | 15.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의 운동 등록/수정/삭제는 인증된 관리자만이 수행할 수 있다. |
메인 화면(로그인 화면)
추천 운동 정보 조회
화면 초기 (자동으로 팔
이 선택됨)추천 운동 정보 조회 화면에서
등
부분을 선택했을 경우 (아래 리스트가 달라짐)‘등’ 운동 부위를 선택해서 출력된
리스트
중 오버헤드 랫폴 다운
을 클릭
시
운동 방법
이 출력
요일별 스케쥴 초기 화면 (사용자의 스케쥴이 미등록 상태)
요일별 스케쥴 화면에서
요일 버튼
을 클릭시 리스트뷰
가 아래에 출력요일을 선택하고 리스트뷰의
운동 부위
를 선택시 다음과 같이 스케쥴 추가 가능스케쥴을 추가한 후
저장
버튼을 클릭시 등록/수정이 가능
(그래야 다른 화면으로 이동하거나 로그아웃해도 스케쥴이 사라지지 않음)삭제
버튼을 클릭시, AlertDialog
가 출력되며 확인
버튼을 클릭시 사용자가 등록한 스케쥴이 삭제된다.삭제
버튼을 클릭한 후의 화면
분기 커버리지, 사용자 운동 스케쥴 삭제
(가) 조건문
: Yes / No에 따른 한 가지 경로를 가짐 >> 2가지 분기를 가짐
스케쥴 삭제 기능
분기 커버리지, 사용자 운동 스케쥴 저장
(가) 조건문
: Yes / No에 따른 한 가지 경로를 가짐 >> 2가지 분기를 가짐
스케쥴 저장 기능
[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
혹시 소스코드좀 공유해주세요