티스토리 뷰

프로그래밍 계획 수립하기

프로그래밍 계획 구체화

수립된 프로그래밍 계획과 개발 환경을 바탕으로 리소스, 플로우, 시스템을 활용하여 앱 프로그래밍 할 수 있다.

앱 개발 시 유의 사항

기획 과정 시 유의 사항

프로젝트 진행에 있어 제일 중요한 부분이 기획 부분이다. 특히 요구사항 및 스토리보드 에서 정확히 구체화되지 않으면 앱을 개발할 때 발생하는 시간 및 인적 손실을 감당해야 한다. 디자이너, 퍼블리셔, 개발자는 요구사항과 스토리보드를 기준으로 만들기 때문에 기 획부분이 명확하지 않으면 만들고자 했던 앱이 전혀 다른앱으로 될 수 있고, 최악의경 우 프로젝트가 중지될 수도 있다. 그만큼 기획 부분은 중요한 요소이며, 디자인, 퍼블리셔, 개발자가 알아서 스스로 개발한다는 것은 있을 수 없는 일이다. 앱을 빠르게 출시하기 위해 기획의 각 요소(요구사항, 스토리보드, 설계)를 간과하고 바로 개발구현부터 시작하는 경우에는 개발자체가 안 될 수있다. 앱을 빠르게 출시하고 의도한 바 대로의 앱을 개발하고 싶다면 더 더욱 기획 부분이 상세하고 완벽해야 한다.

UI/UX 디자인 적용 시 유의 사항

디자인 구현 도중에 스토리보드의 내용과는 다른 화면이 나올 수 있다. 이런 경우에는 구 현을 수정하기 보다는 스토리보드를 업데이트해야 하며, 개발 기능도 다시 설계해야 한다. 스토리보드의 화면 요소는 그대로이며 레이아웃만 바뀌는 경우에는 개발 기능에는 별 무 리 없이 진행될 수 있어도 퍼블리싱에 대해서는 재설계가 되어야 한다. 구현 도중 디자인이 바뀌어 버리면 개발 기능 설계와 퍼블리싱 설계가 다시 되어야 한다 는 점은 인지하고 있어야 하며 그만큼 시간적 손실이 발생한다.

기능 구현 시 유의 사항

기획에 맞는 기능인지 충분히 검토되어야 한다. 기능설계에 대한 검토 없이 구현이 된다 면, 개발 도중 기능이 추가될 수 있다. 기능이 추가된다는 말은 프로그램 흐름에 방해가 될수있으며, 다른기능에 영향을 미칠 수 있다. 제대로된 기능이 안 될수도 있기 때문에 초반의 기능설계가 중요하다.

테스트 시 유의 사항

테스트를 하지 않고 배포하는 것은 위험성을 안고 앱을 출시하는 것과 같다. 사용자들은 최초앱을 사용 할 때 앱에서 오류가 나거나 느리면 사용을 하지 않는다. 또한, 앱의댓글 이 버그에 대한 내용과 욕으로 채워질 수도 있으므로 주의해야 한다. 기능에 버그나 오류 가 없는지 꼼꼼한 테스트가 중요하며, 또한 통합 테스트로 앱이 제대로 흘러가는 지도 중 요하다. 테스트를 진행하면서 초반의 요구사항과 정책, 스토리보드대로 개발이 되었는지에 대한 테스트가 중요하다. 테스트 진행도중 요구사항이 바뀌거나 정책이 바뀌면 개발을 다시 하 게되는 불상사가 발생 할 수 있다. 개발에서는 단순한 기능이란 있을 수 없다. 단순한기 능이라도 개발된 시스템에 여파가 없는지를 따져봐야 한다. 테스트 도중 기획이 바뀌어 버리는 사례가 다분히 존재한다. 추상적인 아이디어와 문서화 한 화면과 흐름만으로 개발을 진행하다보니 앱을 실제 개발하였을 경우 생각과는 다른 형 태가 나올 수 있기 때문이다. 테스트 도중 기능이나 정책이 바뀌면 앞서 얘기했던 대로 설계부터 다시 시작하는 것이 바람직하다. 단 몇분, 몇 시간만에 기능을 만들어버리는 경우는 있을 수 없으며, 만약 그렇게 기능을 구현했다면 앱 개발 프로젝트의 완료에 방해가 될 뿐만 아니라, 버그나 오 류를 만드는 일이 된다.

앱 개발을 위한 모바일 운영체제(OS, Operating System)

앱을 개발하고 개발된 앱을 정상적으로 운영하기 위해서 가장 중요한 것이 모바일 기기용 운영체제(OS)이다. 왜냐하면 운영체제에 따라서 구현하고자 하는 앱의 구조가 완전히 달라 지기 때문이다. 반대로 하드웨어가 다르더라도 운영체제가 같으면 동일한 앱을 실행할 수 있다. 현재 모바일 기기용 운영체제로 사용되는 운영체제는 구글의 안드로이드, 애플의 iOS, 마이크로소프트의 모바일 윈도우폰 등이 있다

안드로이드(android)는 구글에 의하여 개발되어 배포되고 있는 운영체제이다. 안드로이드는 리눅스 커널을 사용하고 리눅스 커널 위에는 자바 코드를 해석해 주는 가상머신(virtual machine)이 탑재되어 있다. 이 가상머신 위에서 거의 모든 자바 라이브러리들이 지원되고 있으며 이 자바 라이브러리들을 이용해서 개발자들은 애플리케이션을 작성한다.

자바 언어의 간결성과 풍부한 라이브러리로 인하여 안드로이드는 다양한 애플리케이션을 작성할 수 있는 강력한 플랫폼이 되었으며 자원이 매우 제한적인 모바일 기기를 위한 운 영체제이지만 개발자들은 마치 데스크톱(desktop)에서처럼 데이터베이스나 3차원 그래픽 등의 많은 기능들을 사용할 수 있는 특징이 있다. iOS는 애플의 대표 스마트기기인 아이폰과 아이팟 터치, 아이패드, 아이와치 등에 내장되 어 운영되고 있는 운영체제이다. 내부적으로는 Mac OS X 10.5를 기반으로 개발되었으며 멀티 터치를 지원하는 코코아라고 불리는 사용자 인터페이스를 지원하고 있다.

윈도우폰은 마이크로소프트사의 스마트폰을 위해 개발된 운영체제이다. 음악과 동영상 서 비스를 위하여 June을 탑재하였으며, 검색엔진으로 Bing을 사용하고 엑스박스 라이브가 내 장되어 있다. 응용소프트웨어를 나열하는 기존의 사용자 인터페이스 환경이 아닌 허브 (hub)를 통해 응용 프로그램들이 연결되어서 라이브 타일 형식으로 제공된다.

모바일 앱

네이티브 앱(native app)

네이티브 앱은 스마트폰의 각 해당 앱 스토어를 통해서 앱을 다운로드 받아 설치해서 사 용하는 앱을 말한다. 네이티브 앱은 스마트폰뿐만 아니라 태블릿 등의 기기에서도 최적화 되어 이용될 수 있으나, 공급자가 모바일 기기 특성에 맞춰 개발하고 배포를 하여 서비스 를 제공해 주어야 가능한 일이다. 각각의 스마트폰 운영 체제에서 프로그래밍 언어를 사용하여서 제작되는 앱, 예를 들어서 안드로이드에서는 자바 언어를 이용하여 작성되고 아이폰에서는 Objective-C를 이용하여 서 작성된다. 스마트폰 안에 있는 카메라 기능, 가속도 센서, 위치정보, 플래시 등의 기능 을 제어할 수 있는 모듈 개발이 가능하여 네이티브 앱 안에서는 직접 스마트폰에서 제공 하는 기능을 실행하거나 그 값을 가져와 활용할 수 있다는 장점이 있다.

네이티브 앱은 스마트폰 운영체제(Android, iOS 등)에 있는 커널 서비스가 제공되어 서비 스를 직접 호출하여 실행이 되므로 네트워크 접속과는 다르게 다른 영향을 받지 않아 그 실행속도가 매우 빠르고 성능자체가 안정적이며, 고성능의 그래픽 처리가 가능하여 3D 등 의 게임 앱이나 최근 관심을 많이 받고 있는 AR(Augmented Reality, 증강현실)관련 앱을 개발하는 것도 가능하다. 안드로이드 앱은 안드로이드 스마트폰에서만 실행이 가능하고 iOS앱은 아이폰에서만 실행이 가능하기 때문에 해당 앱 스토어를 통해 업데이트가 가능하 며 앱 공급자인 개발사나 개발자들의 손이 많이 가고 사용자 입장에서도 업데이트가 번거 롭다는 단점이 있을 수 있다. 네이티브 앱은 안드로이드용과 아이폰용 앱을 각각 개발하여야 하기 때문에 개발하는데 있어 비용과 시간이 더 들어간다는 단점도 있다.

하이브리드 앱(hybrid app)

하이브리드 앱은 네이티브 앱과 모바일 웹 앱에서의 장점은 강조하고 단점을 보완한 개념 의 앱으로 모바일 웹 기능의 단점을 네이티브 앱으로 보완함으로써 해당 스토어에서 앱을 다운로드 받아 설치해서 사용 가능하도록 한 것이다. 모바일 웹 앱과는 다르게 스마트폰 에서 제공하는 기능들(카메라, 가속도 센서, 위치정보, 연락처 등)을 이용한 서비스도 개발 이 가능하고, HTML5, CSS, JavaScript 등과 같은 웹 표준 기술을 이용한 개발이 가능하며 네이티브 앱과 마찬가지로 해당 스토어에서 유료 판매가 가능하다.

하이브리드 앱의 가장 큰 장점 중에 하나는 크로스 플랫폼(cross platform, 안드로이드와 아이폰 플랫폼을 의미)을 지원하여 개발 비용과 시간을 줄여 줄 수 있다는 것이다. 성능 면에서 속도는 네이티브 앱이 가장 빠르며, 하이브리드 앱은 모바일 웹 앱 보다는 속도가 빠르다고 할 수 있겠다. 하이브리드 앱을 개발하기 위해서는 별도의 UI 프레임워크가 필 요하다. 대표적인 프레임워크로는 폰갭(PhoneGap/Cordova), 아이오닉(Ionic), 센차(Sencha), 티타니움(Titanium) 등이 있다. 다음 [그림 1-10]은 하이브리드 앱으로 구성된 네이버 앱을 나타낸 것이다. 네이티브 앱의 장점과 모바일 웹 앱의 장점을 접목하여 기존의 모바일웹 서비스의 환경과 유사하게 하이브리드 앱으로 개발된 것이다.

모바일 웹 앱(mobile web app)

모바일 웹 앱은 모바일 웹 자체를 모바일 웹 앱 이라고 부르는 경우가 간혹 있긴 하지만 일반적으로 모바일 웹 앱은 해당 스토어에서 앱을 다운로드 받아 설치하여 모바일 웹에서 이용하는 서비스와 동일한 형태로 이용가능한 수준의 앱이다.

모바일 웹 앱은 인터넷을 통하여 웹 브라우저를 통해 실행되는 앱으로, 주로 HTML5 웹 표준을 이용하여 실행된다. 따라서 모바일 웹 앱은 모바일 기기에서 제공하는 모바일 웹 과 마찬가지로 웹 개발에서 사용되는 HTML, CSS, JavaScript, JSP, PHP, ASP, ASP NET 등 일반적인 웹 기술로 개발이 가능하다는 장점이 있다. 모바일 웹 앱의 단점은 네이티브 앱에 비하여 접속속도가 느릴 수 있으며, 네이티브 앱과 같이 스마트폰에서 제공하는 기능을 활용한 서비스는 불가능하다. 그리고 네트워크 접속 이 안 되거나 불안한 환경에서는 사용이 어려워지는 단점도 가지고 있다.

앱(애플리케이션) 개발 과정

설계 과정

설계 과정은 소프트웨어 해결책을 위한 문제해결과 계획을 하는 단계이다. 즉, 정해진 일 정과 목표를 성취하기 위해서 명세화된 요구사항을 만족시키는 방법을 결정하는 과정이 고 분석 단계의 요구명세를 기초로 어떻게 시스템으로 구현할 것인가를 기술하는 과정 이다. 이 과정이 필요한 이유는 소프트웨어의 잘못된 설계에서 발생하는 Overhead를 최 소화하여, 시스템 구현, 유지보수 단계에서의 관리 효용성을 증대시키고 유지보수 단계 에서 기하급수적으로 증가되는 변경비용을 설계 단계에서 줄이기 위함이다.

설계에서의 기본원리 4가지는 추상화, 정보은닉, 구조화, 모듈화이다. 추상화는 복잡한 문 제를 이해 또는 기술 시 문제의 핵심부분만 개념화하는 것이다. 정보은닉은 모듈을 사 용하기 위한 최소한의 접근 정보만 외부에 표시하고, 자세한 내용과 기능은 모듈의 내 부에 숨긴다. 구조화는 분할의 원리, 복잡한 문제영역을 기능모듈 별로 세분화, 모듈관 계 구조화, 세분화는 이해를 용이하게 하고 유지보수성을 향상시킨다. 마지막으로 모듈 화는 소프트웨어 구성요소를 서브루틴, 서브시스템, 작업 단위 등으로 분류하고 모듈의 결합도가 낮고, 응집도가 높을수록 모듈의 독립성을 보장한다.

코딩 과정

코딩 과정은 하나 이상의 알고리즘을 특정한 프로그래밍 언어를 이용해 구체적인 프로그 램 구현하는 단계이다. 알고리즘은 유한한 단계를 통해 문제를 해결하기 위한 절차나 방법을 의미하며 프로그래밍 언어는 C언어, Java, C#, C++, PHP, Objective-C 등과 같이 컴 퓨터의 프로그램을 작성하기 위하여 고안된 언어를 의미한다.

검사 및 테스트 과정

코딩이 잘 되어 원하던 결과가 나왔는지 검사하고 테스트하는 과정으로 AVD 생성 및 옵 션 조정과 에뮬레이터를 활용한 테스트를 진행한다.

UI/UX Design

UI/UX 환경 분석

UI/UX 계획 수립

사용자 리서치

UI/UX 요구 분석

UI/UX 콘셉트 기획

UI 아키텍쳐 설계

댓글
댓글쓰기 폼