i. UI 요구사항
- 로딩창 이후 메인화면으로 넘어가야 한다.
- 하단 앱 바를 통해 홈, 저장소로 갈 수 있는 버튼이 있어야 한다.
- 모든 화면에서는 앱 바가 보여야한다.
- 메인화면은 분석 이미지 선택과 앱 바로 구성되어 있다.
- 분석완료 화면은 분석 완료된 이미지와 이전, 결과 보기 버튼이 있어야 한다.
- 결과화면은 분석결과를 보여주고 저장할 수 있는 버튼이 있어야한다.
- 로그인, 회원가입 구성 시 정보를 입력칸을 만들어 화면 구성을 해야 한다.
- 저장소 화면은 서버 저장소와 로컬 저장소를 구분지어 구성해야한다.
- 저장소 화면에서 각 컨텐츠를 클릭하면 결과화면으로 넘어가야한다.
ii. 기능 요구사항
- 로그인, 회원가입 시 입력 값에 대한 유효성 검사를 진행해야한다.
- 로그인, 회원가입 진행 시 입력 값을 서버로 전송해야한다.
- 이미지 분석 시 분석할 이미지를 스마트폰 갤러리에서 가져와야 한다.
- 이미지를 가져오면 그 이미지를 서버로 전송해야 한다.
- 이미지 분석이 완료되면 서버로부터 이미지와 분석데이터를 전달 받는데, 그 데이터들을 결과 화면에 보여주어야 한다.
- 서버 저장소에 있는 데이터 삭제 시 서버로 해당 데이터 삭제 요청을 보내야한다.
- 안드로이드 내부 저장소에 있는 데이터 삭제 시 해당 데이터를 삭제한다.
i. UI 설계
figma툴을 사용하여 UI를 설계, 디자인하였다.
초기 UI 설계이다. 요구사항에 정의한 컴포넌트들을 배치하는 것을 위주로 설계하였다.
추가 디자인을 거쳐, 위와 같은 최종 UI 디자인이 완성되었다.
ii. 기능 설계
-
아키텍쳐 설계
mvvm 아키텍쳐를 도입하였다.
선정이유 - 프로젝트 규모가 커질수록 참조관계가 많아져서 코드를 고치면 참조되어 있는 다른 곳에서 연쇄적으로 오류가 날 수도 있다. 하지만 mvvm 아키텍쳐는 하나의 소프트웨어를 model, view, view model로 최대한 기능적으로 작은 단위로 나누고 관찰(observing)하는 형식으로 데이터를 관리하여 참조관계를 최대한 없애주어 코드 수정이 용이하고, 테스트가 쉽고 관리하기 좋은 구조이기 때문에 mvvm 아키텍쳐를 선정하였다.
요구사항과 설계한 아키텍쳐를 기반으로 클래스를 만들고 프로그래밍을 진행하였다.
안드로이드 구현 과정
- splash screen을 통해 로딩화면을 구성
- side bar 제작
- 로그인, 회원가입, 분석, 분석완료, 결과, 저장소, 설정화면 구성
- 제작한 side bar를 MainActivity에 적용 (전역 적용)
- bottom navigation bar 제작 후 적용
- 서버와 통신하는 모델인 Cell, User data class 생성
- API 명세서에 따른 Cell, User service 구현
- (Cell, User) datasource, repository 생성
- 로그인, 회원가입 시 입력값 유효성 검사 구현
- 안드로이드 서버 통신 라이브러리 retrofit 설정
- 서버에서 받아온 상태에 따라 데이터를 저장하는 APIResponse 구현
- 의존성 주입을 위한 dagger-hilt 모듈 적용
- 프로젝트 전반에 hilt를 이용하여 의존성 주입
- 이미지 로딩을 위한 Glide 모듈 적용
- service - repository - viewmodel - view 연결, 테스트
- 저장소 recycler view 기능(data search, data delete) 구현
- 설정 기능 구현
- AI - BackEnd - Android 연결, 테스트
- 구현 완료 및 버그 수정