본문 바로가기
프로그래밍/프로그래밍 잡지식

앱 제작, 어플리케이션 제작 과정

by 어느덧중반 2021. 7. 13.
반응형

서비스 구상 및 프로젝트 구성

1. 아이디어 정리

먼저 아이디어를 구체적으로 정리합니다. 어떤 사용자를 타겟으로 할 것인지, 사용자의 니즈는 무엇인지, 제공해줄 가치는 어떤 것인지 그리고 목표는 무엇 인지를 정리합니다.

예를 들어 출퇴근 날씨 정보를 알려주는 앱을 구상하고 있다면, 타겟 사용자는 30대 남성 직장인, 사용자의 니즈와 제공 가치는 출퇴근 전 빠른 날씨 확인, 목표는 광고를 통한 수익으로 정리할 수 있습니다.

타겟, 사용자의 니즈, 제공 가치, 목표는 최대한 구체화하고 측정가능할 수 있도록 수치화 합니다.

2. 시나리오 정리

사용자가 앱을 사용하는 시나리오를 정리합니다. 타겟별로 시나리오를 작성하거나 시간대 별, 지역별로 구분해서 작성할 수도 있습니다.

예를 들어 출퇴근 날씨 어플이라면, 사용자가 앱을 다운로드 받고 설치한다. 로그인을 하고 출퇴근 지역과 시간을 설정한다. 출퇴근 1시간 전에 푸쉬알림으로 날씨 정보를 보여준다. 알림 팝업을 터치하면 상세 날씨 정보를 보여준다. 와 같이 시나리오를 작성할 수 있습니다.

3. 기능 리스트 작성

시나리오 별로 필요한 기능 리스트를 작성합니다. 각 시나리오에서 중복되는 기능이 있는지도 살펴봅니다. 출퇴근 날씨 어플 예를 보면 아래와 같이 기능 리스트를 작성할 수 있습니다.

 

4. 프로젝트 인원 구성

앱 개발은 1인이 진행할 수도 있지만, 보통 여러 명이 협업하여 개발합니다. 프로젝트에 필요한 역할은 기획자, 개발자, 디자이너 입니다. 추가로 프로젝트 매니저, 테스터를 따로 두기도 합니다.

기획자는 서비스 하고자 하는 영역에 대한 경험과 전문성이 있어야 합니다. 또한 개발자, 디자이너와 커뮤니케이션을 주도하고 프로젝트 매니저나 테스터가 없는 경우 그 역할을 같이 수행하기도 합니다.

개발자는 먼저 모바일 앱 개발에 대한 경험과 이해가 있는 사람을 리드 개발자로 선임해야 합니다. 안드로이드, 아이폰, 모바일 웹앱 그리고 API 서버 개발에 대한 전반적인 지식이 있어야 하며, 기술 검토 및 아키텍처 설계를 할 수 있어야 합니다. 리드 개발자의 기술 검토와 아키텍처 설계가 끝나면 그 결과에 따라 세부 영역에 대한 개발자를 추가 소싱하게 됩니다.

디자이너는 모바일 디자인에 대한 이해와 경험이 있어야 합니다. 특히 안드로이드, iOS 등에 대한 디자인 가이드를 이해해야 합니다. 또한 기획자, 개발자와 커뮤니케이션이 원할 해야 합니다.

예산이 넉넉하거나 개발자와 디자이너 소싱이 프로젝트 초반에 가능하다면, 기획자와 개발자, 디자이너가 앱  기획 단계부터 같이 참여하여 진행하는 것을 권장합니다. 특히 기능 정리와 와이어 프레임 작성을 같이 협의하면서 진행하면 면 훨씬 원할 하게 프로젝트를 진행할 수 있습니다.

모바일 웹 개발을 진행하는 경우에는 별도로 디자이너와 개발자 외에 퍼블리셔가 필요하기도 합니다.

 

앱 기획

1. 화면 플로우 차트 작성

앱 기획 단계에서는 사용자의 앱 사용 로직과 디자인을 결정하게 됩니다. 앞서 정리한 기능 리스트를 바탕으로 화면 플로우 차트를 작성합니다. 화면 플로우는 화면 이동에 대한 순서와 화면 별 기능을 간략하게 정리한 차트입니다. 직접 손으로 스케치하거나 PPT를 이용하여 간단하게 작성합니다.

2. 와이어 프레임 작성 (화면 정의서 포함)

와이어 프레임은 골격을 의미합니다. 아직 디자인이 입혀져 있지는 않지만 화면의 구조와 화면에 표시될 내용과 기능을 설명하는데 사용됩니다. 일종의 화면 정의서라고 할 수도 있죠.

와이어 프레임을 작성할 수 있는 툴에 대한 내용은 아래 글을 참고하시길 바랍니다.

와이어 프레임, 프로토타입 제작 툴 정리

개인적으로 이 중에서 카카오에서 개발한 온라인 프로토타입 툴인 Oven 추천합니다.  Oven은 웹에서 바로 작업할 수 있으며 무료입니다.

3. 상세 기능 리스트 작성

화면 플로우와 와이어 프레임을 작성하였으면, 앞서 작성한 기능 리스트를 점검하여 상세 기능 리스트를 작성합니다. 정보의 생성, 조회, 수정, 삭제(=CRUD)는 각각 하나의 기능으로 따로 분리합니다.

 

기술 검토 및 견적

1. 서버 사용 여부 결정

먼저 데이터를 어떻게 관리할지 결정하여야 합니다. 데이터는 사용자의 스마트폰 기기에 저장할 수도 있고 별도의 서버를 두어 저장할 수도 있습니다. 사용자 개인정보, 비밀번호와 같은 민감한 데이터는 보안을 철저히 해야 합니다.

삭제 되어도 상관 없는 정보나 캐시는 사용자 스마트폰 로컬 DB에 저장할 수 있습니다. 하지만 중요한 정보는 서버에서 따로 관리하여야 합니다. 따라서 단순한 앱이 아니라면 대부분 서버를 두어 데이터의 저장과 처리를 담당합니다.

앱 제작에 서버 개발이 추가 되면 앱 개발 기간과 비용이 배 이상 증가할 수 있습니다. 따라서 우선 제공하고자 하는 기능을 검토하여 서버 개발이 필요한지 먼저 판단해야 합니다.

2. 서버 아키텍처 설계

만약 서버 개발을 하기로 했다면, 어떤 언어와 프레임워크로 개발할 지 정해야 합니다. 또한 서버 사양과 네트워크, DB 사양을 결정해야 합니다. 프로젝트 규모가 크다면 소스 형상 관리, 이슈 트래킹, 빌드 및 배포 시스템도 구성합니다. 아키텍처 설계는 앱과 서버 양 쪽 모두에 경험과 지식이 있는 리드 개발자를 통해 결정합니다. 만약 전문가가 필요하다면 서버 아키텍처 전문가에게 설계를 의뢰할 수도 있습니다.

3. 앱 아키텍처 설계

앱은 크게 네이티브 앱, 모바일 웹, 하이브리드 앱으로 구분할 수 있습니다.

네이티브 앱은 속도가 빠르며 스마트폰 기능을 다양하게 사용할 수 있으나 안드로이드, iOS와 같은 플랫폼에 종속됩니다. 따라서 네이티브 앱을 만들기로 했다면 안드로이드용 앱과 iOS용 앱을 따로 만들어야 합니다. 그만큼 개발 기간과 비용이 증가합니다.

모바일 웹은 스마트폰 브라우저로 구동 됩니다. 앱 패키지가 사용자의 스마트폰에 설치되는 것이 아니기 때문에 엄밀히 말하면 앱은 아닙니다. 모바일 웹의 장점은 웹 개발 방식으로 제작할 수 있다는 점과 수정할 때마다 앱 배포를 하지 않아도 된다는 점입니다. 단, 모바일 사이즈에 맞게 반응형으로 화면을 제작해야 합니다. 그리고 앱이 아니기 때문에 구글 플레이나 앱스토어 앱을 배포할 수 없으며, 사용자가 브라우저를 열고 사이트 주소를 입력해야 한다는 접근성의 문제가 있습니다. 또한 네이티브 앱에 비해 기능이 제한적이며, 속도가 느립니다.

하이브리드 앱은 네이티브 앱과 모바일 웹의 장점을 적절하게 섞은 앱 입니다. React Native, Ionic, Framework7, PhoneGap, Onsen UI 같은 하이브리드 앱 프레임워크로 개발합니다. 구글 플레이 같은 플랫폼에 앱을 배포할 수 있으며, 사진 촬영, 자이로센서 등 스마트폰의 네이티브 기능을 이용할 수 있습니다. 단, 그래도 네이티브 앱보다 느린 편이며, iOS 앱스토어 마켓에 등록하기 어렵다는 등의 단점이 있습니다.

위 3가지 앱의 장단점을 이해하고, 서비스 하고자 하는 기능과 앱 배포 방법, 개발 인력 등을 고려하여 어떤 형태의 앱으로 개발할지 결정합니다 .

4. 지원 플랫폼 결정 (안드로이드, iOS)

모바일 플랫폼은 안드로이드와 iOS로 양분되어 있습니다. 국내는 안드로이드 점유율이 70% 이상을 차지하는 반면 해외는 iOS 점유율이 더 높습니다. 모바일 플랫폼(OS)의 시장 점유율 자료는 아래 링크를 참고하시길 바랍니다.

지원 플랫폼을 결정하는 것은 앱 개발 기간과 비용에 큰 영향을 미칩니다. 국내에 출시하는 앱은 일반적으로 안드로이드를 우선 지원하고 이 후 iOS를 지원하는 형태로 진행하고 있습니다.

 

앱 디자인

1. 디자인 가이드 검토

안드로이드와 iOS는 각각 디자인 가이드를 두고 있습니다. 디자인 가이드는 앱 디자인을 시작하기 전에 반드시 검토해야 합니다. 그리고 디자인 가이드를 준수해야 각 플랫폼에 맞는 앱 디자인을 할 수 있으며, 사용자의 익숙한 UX/UI 경험을 활용할 수 있습니다.

안드로이드 버전별 디자인 테마
안드로이드 버전 1.5 ~ 2.3 : 정의되지 않음
안드로이드 3.0 ~ 4.4 : Holo UI
안드로이드 5.0 ~ : Material Design (머터리얼 디자인)

 

2. 유사 어플리케이션의 UX/UI 사례 검토

유사한 기능을 제공하는 경쟁 어플리케이션의 UX/UI 사례를 검토하여야 합니다. 무에서 완전히 새로운 것을 창조하긴 어렵죠. 따라서 사례 조사를 통해 어떤 장점들을 가져오고 어떤 부분을 커스터 마이징 할 수 있는지 살펴봐야 합니다.

 

API 서버 개발

1. 인터페이스 설계

API 서버를 사용하기로 했다면 서버와 앱이 주고 받을 데이터와 인터페이스를 설계해야 합니다. 앱 개발자와 서버 개발자가 별도로 있다면 협의를 통해 인터페이스를 정리합니다. 그리고 인터페이스 목록이 정리되면 서버 개발과 앱 개발을 진행합니다. 참고로 앱 개발을 클라이언트 개발 또는 프론트엔드 개발이라고 하며, 서버 개발을 백엔드 개발이라고도 합니다.

API 란 Application Programming Interface의 약자로 클라이언트 앱과 서버 간의 통신 규약입니다. API 방식에는 SOAP, RESTful이 있습니다. 요즘에는 대부분 RESTful로 개발합니다. RESTful은 REpresentational State Transfer + ful 을 의미합니다. 데이터 포맷은 JSON 이나 XML 을 사용할 수 있습니다.

2. DB 설계

데이터를 저장하고 관리할  DB를 설계합니다. 참고로 DB에는 다양한 종류가 있습니다. 크게 RDB(=관계형 데이터베이스)와 NoSQL로 나뉘며 RDB에는 오라클, MySQL, MariaDB, PostgreSQL 등이 있습니다. NoSQL에는 Mongo DB, Couchbase, Cassandra, HBASE 등이 있습니다.

관리할 데이터에 맞게 테이블을 생성하고 정규화 작업을 합니다. 큰 규모의 프로젝트의 경우 DB 전문가인 DBA의 도움을 받을 수 있습니다.

3. 개발 환경 세팅 및 개발 진행

RESTful API 서버 프레임워크의 종류에는 구축형 솔루션인 Sinatra, Grape, Rails와 설치형 솔루션인 LoopBack, WordPress 가 있습니다. 클라우드 솔루션에는 Parse와 Firebase가 있습니다.

GraphQL, Falcor, JWT

 

앱 개발

개발 단계에서는 아이디어나 UX/UI의 큰 수정은 지양해야 합니다. 아이디어의 방향이 바뀌거나 UX/UI가 크게 바뀐다는 것은 거의 새로운 앱을 개발하는 수준이 될 수도 있기 때문입니다. 그리고 아주 작은 수정이라도 시스템을 크게 고쳐야 하는 경우 역시 지양해야 합니다. 마치 건물은 1cm 옆으로 옮기는 일과 같이 겉으로 보기엔 작은 수정이지만 실제로는 엄청난 공수가 들어갈 수도 있습니다. 따라서 본격적인 개발 단계에 들어가기 전에 기획과 디자인을 면밀히 하여야 합니다.

앱 개발은 최대한 빠르게 프로토타입을 만드는 것을 목표로 합니다. 프로토타입은 간단한 화면을 만들고 타겟 디바이스에 빌드된 앱을 올려 API 서버와 데이터를 주고 받는 모듈 하나를  빠르게 완성하고 테스트 합니다. 이를 통해 성능이나 다른 이슈가 있지는 확인해야 합니다.

앱 아키텍처에 따른 구체적인 개발 방법은 아래 링크를 확인하길 바랍니다.

  • 안드로이드 앱 개발 방법 링크
  • iOS 앱 개발 방법 링크
  • 하이브리드 앱 개발 방법 링크

 

앱 테스트

1. 테스트 명세서 정리

테스트는 단위 테스트, 3자 테스트, 통합 테스트, 사용자 테스트 (베타 테스트)로 구분합니다. 단위 테스트는 기능 별로 작성하며, 개발 과정에서 기능이 완성될 때 마다 개발자가 직접 테스트를 진행합니다.

3자 테스트는 개발자 본인이 아닌 동료 개발자 또는 다른 테스터에 의해 진행합니다. 3자 테스트에서는 개발자 본인이 미처 발견하지 못한 버그를 찾는데 주력합니다.

2. 통합 테스트

통합 테스트는 시나리오 기반으로 진행합니다. 이를 통해 앱의 설치 부터 로그인, 화면 이동, 서버와의 데이터 통신 전반을 점검합니다.

3. 디바이스 테스트

타겟 디바이스에 앱을 설치하고 테스트를 진행합니다. 모든 디바이스에 통합 테스트를 진행하기에는 많은 공수가  들어가기 때문에 앱 설치와 주요 기능 위주로 테스트 합니다. 또한 화면 비율 문제나 버튼 동작 이슈가 없는지도 체크 합니다.

디바이스는 개발을 시작하기 전에 미리 확보해두는 것을 권장합니다. 공용 테스트 기기는 별도로 목록을 작성하여 관리합니다. 실제 디바이스로 테스트하는 것을 권장하지만 디바이스 확보가 어려운 경우에는 Genymotion이라는 서비스를 추천합니다.

또한 전문적으로 모바일 앱 테스트를 전담하는 테스팅팀이 있습니다. SKT 플래닛에는 스마트폰 테스트 배드도 있으니 이런 것들을 활용하길 바랍니다.

4. 사용자 베타 테스트

실제 사용자 중 일부에게 빌드된 앱을 발송하여 베타 테스트를 진행합니다. 이 테스트를 통해 사용자의 의견을 취합하고 심각한 오류나 버그를 수정합니다.

반응형

댓글