앱을 설계하는 데 중요한 세 가지 일

  • 아이디어의 개념화
  • 룩앤필(look-and-feel) 설계
  • 앱 아키텍처 설계

아이디어를 개념화하면서 TouchPainter 앱에 관한 기본적인 요규사항과 유스케이스(요구사항을 충족하는 앱의 용도, 즉 앱에서 할 일을 나타냄)을 수집한다.
TouchPainter 앱에 수용할 기능에 대해 좋은 아이더악 구체화되면 기본적인 룩앤필을 설계한다.
룩앤필의 설계를 통해서 개발자는 어떤 UI 요소들을 논리적으로 함께 묶을 수 있는지 알 수 있다.
룩앤필이 준비되면 앱의 아키텍처에 영향을 줄 수 있는 기술적인 문제들을 정의하게 된다. 예를 들면, “시용자가 자신의 그림을 어떻게 열 수 있을까?”와 같은 것이다.

아디이어의 개념화

어떤 소프트웨어를 개발하건 사용자 요구사항이 있게 마련이다.
만들고자 하는 앱의 요구 사항 :

  • 그리기 패드에서는 사용자가 손가락으로 그림을 그리게 해준다.
  • 사용자가 스트로크의 색과 크기를 변경할 수 있게 한다.
  • 자신의 그림을 사용자가 저장할 수 있게 한다.
  • 저장된 그림을 사용자가 열 수 있게 한다.
  • 현재 그리는 그림을 사용자가 지울수 있게 한다.
  • 그림을 그리면서 이미 그렸던 것을 사용자가 취소하거나 다시 그릴 수 있게 한다.

룩앤필 설계

가능한 한 일찌감치 실제 결과물에 가깝게 앱의 전체적인 룩앤필을 설계하는 것이 좋은 방법이다.
룩앤필 기반 설계를 하면 설계 초기 단계부터 사용자 경험(사용자가 UI를 직접 사용해보는 것)에 중점을 둘 수 있다. 따라서 사용자와 개발자 간의 확실한 의사 소통이 가능하여 사용자 요구를 충족하는 앱을 만들 수 있다. 또한 앱 개발 시에 룩앤필과 UI설계가 사전에 준비되므로 개발자는 자신들이 개발해야 할 코드에 대해 더 분명하게 감을 잡을 수 있다.

아키텍처 설계

위에서는 우리 앱의 기본적인 요구사항을 찾아 유스케이스를 도출하였다. 유스케이스는 우리 앱을 사용해서 누가(who) 무엇을(what) 할 수 있는지를 나타낸다. 따라서 그런 요구사항들(또는 유스케이스들)로부터 설계의 문제를 찾아낼 수 있다.

아래는 원래 요구사항으로부터 찾아낸 문제 영역을 나열하고 살펴본다.

  • 뷰 관리
    • 하나의 뷰로부터 다른 뷰로 전환하기
    • 뷰의 전환을 조절하는 중재자 사용하기
  • 그린 것을 나타내기
    • 스크린에 그릴 수 있는 것은 “무엇”일까?
    • 복합 구조를 사용해서 그린 것을 타나내기
    • 그림으로 그리기
  • 저장되는 그림의 데이터화
    • 그림의 상태(정보)를 파일로 저장하기
    • 저장된 그림의 상태(정보)를 객체로 복원하기
  • 사용자의 앱 운용
    • 그림의 섬네일 목록 조회하기
    • 그린 것을 취소 또는 다시 그리기
    • 스트로크의 색과 크기를 변경하기
    • 현재의 그림을 스크린에서 지우기

뷰 관리

미디에이터 패턴

미디에이터(Mediator)패턴은 여러 객체들의 상호 작용을 처리하는 로직을 갖고 있는 중재자 객체를 사용한다. 그럼으로써 서로 다른 객체 간의 결합도를 약하게 해준다. 그리고 각 객체의 상호 작용을 한군데에서 집중 처리하므로 의존도가 감소될 수 있다.

프로토타입 패턴

복제(clone) 오퍼레이션에 적용하는 패턴
프로토타입 패턴을 사용하는 클라이언트(코드)는 추상 프로토타입 클래스만을 알면 된다. 그리고 런타임 시에는 그 추상 프로토타입 클래스의 서브 클래스 객체(클라이언트가 원하는)가 복제되어 사용될 수 있다.