Apple Human Interface Guidelines - Characteristics of Great Software(1/7)
Apple에서 제공하고 있는 Apple의 HI Guideline에서 PC가 아닌 다른 곳에서도 사용될 수 있고 쓸만한 부분을 한글로 정리를 하려는 목적에서 이 글을 쓴다.
먼저 Characteristics of Great Software와 Human Interface Design 부분을 정리하려고 한다.
능력이 되는 한 원본 글을 손상하려고 하지 않겠지만 내공이 부족한 관계로 자의적으로 해석해서 변경하는 부분도 종종 있을 것이다.
Characteristics of Great Software
소프트웨어가 느리다고 느끼게 되면, 사용자는 그 제품을 덜 사려고 할 것이다.
사용자에게 응답하는 시간보다 더 오랜 시간을 처리하는데 사용한다면 최적화 알고리즘을 사용하더라도 느리게 될 수 있다.
개발자는 Mac OS X에서 성능에 영향을 주는 요소들을 배우는데 시간을 들여야만 한다.(이는 모든 플랫폼에서 마찬가지)
이러한 요소들에 대해 이해하는 것은 소프트웨어의 디자인과 구현에 있어 더 나은 선택을 할 수 있게 된다.
Guidelines
먼저 Characteristics of Great Software와 Human Interface Design 부분을 정리하려고 한다.
능력이 되는 한 원본 글을 손상하려고 하지 않겠지만 내공이 부족한 관계로 자의적으로 해석해서 변경하는 부분도 종종 있을 것이다.
Characteristics of Great Software
- High Performance
- Ease of Use
- Attractive Appearance
- Reliability
- Adaptability
- Interoperability
- Mobility
소프트웨어가 느리다고 느끼게 되면, 사용자는 그 제품을 덜 사려고 할 것이다.
사용자에게 응답하는 시간보다 더 오랜 시간을 처리하는데 사용한다면 최적화 알고리즘을 사용하더라도 느리게 될 수 있다.
개발자는 Mac OS X에서 성능에 영향을 주는 요소들을 배우는데 시간을 들여야만 한다.(이는 모든 플랫폼에서 마찬가지)
이러한 요소들에 대해 이해하는 것은 소프트웨어의 디자인과 구현에 있어 더 나은 선택을 할 수 있게 된다.
Guidelines
- Performance 문제를 식별하기 위해 metrics를 사용하라.
- 절대로 가정에 의해 소프트웨어의 performance를 조정하려고 하지 마라.
- 초기에 baseline metrics를 수집하고 목적에 반하는 경과를 측정하기 위해 개발하는 동안 metrics를 수집하는 것을 지속해야 한다.
- Performance가 떨어지는 것이 보이면 문제를 해결하기 위해 즉시 수정하라.
- Legacy API 보다는 modern API를 사용하라.
- Modern 인터페이스는 Mac OS X를 위해 만들어졌고 최신 기술과 가능한 최고의 performance를 수행하는 디자인 정보의 이점을 취할 수 있다.
- (이 부분은 Mac OS X가 아닌 다른 OS 또는 플랫폼에서도 동일하게 적용할 수 있다.)
- 소프트웨어의 수행 목적에 가장 가까운 적합한 기술을 사용하라.
- 예를 들어, Cocoa는 배포된 객체를 사용하는기에 좀더 편하지만, 소프트웨어가 네트워크 상에서 최대 performance가 필요하다면 CFNetwork나 BSD 소켓이 좀 더 나은 선택이 될 것이다.
- (이 부분은 Mac OS X가 아닌 다른 OS 또는 플랫폼에서도 동일하게 적용할 수 있다.)
- 코드의 반응성을 개선하기 위해 쓰레드를 사용하라.
- 쓰레드에 의해 제공되는 parallelism(병렬 처리)의 이점을 이용하면 상당한 performance 이점을 제공할 수 있다, 특히 멀티프로세서 시스템에서.
- 정보를 위해 시스템의 폴링을 하지 마라.
- 폴링은 CPU 시간의 상당량을 소비하고 대부분의 modern API에서 불필요하다.
- 대부분의 modern API는 상태 변화나 요청 데이터가 유효할 때 당신에게 알려주는 비동기화 메커니즘 방식을 제공하고 있다.
- 폴링 대신 이러한 비동기화 콜백 메커니즘을 사용하라
- 불필요한 I/O operation을 제거하라.
- 하드나 광학 드라이브에 액세스하는 것은 모든 컴퓨터에서 가장 느린 operation 중 하나다.
- 이러한 operation을 최소화하는 것은 상당한 performance의 향상을 가져온다.
- Mac OS X의 가상 메모리 시스템의 이용하여 메모리 사용을 최적하 하라.
- Mac OS X에서 가상 메모리가 동작하는 방식을 이해하면 메모리를 더욱 효율적으로 사용할 수 있게 된다.
- (하드웨어의 capacity가 빠르게 커지면서 이러한 부분이 많이 빠지고 있지만 PC가 아닌 mobile 기기에서는 아직도 메모리는 중요한 이슈이므로 해당 시스템 또는 플랫폼이 갖는 메모리 시스템을 충분히 이해하고 메모리를 최적화해야 할 것이다.)
- 소프트웨어가 해당 리소스를 실제로 필요로 할 때까지 리소스를 로딩하는 것을 피하라.
- 초기에 리소스를 로딩하는 것은 메모리를 낭비하고 리소스가 사용되기 전에 paging사용한 리소스를 paging하는 경우를 만들어낸다.
- 리소스를 필요로 할 때까지 기다리고 적절한 때에 cache하라.
- Mach-O 실행 포맷을 사용하라.
- Mach-O는 Mac OS X의 고유 실행 포맷이며 모든 시스템 프레임웍에서 사용된다.
- Legacy Code Fragment Manager(XCFM) 실행 포멧을 사용하기 위해서는 추가적인 를 사용하기 위해서는 인 Mach-O를 사용할 것;Legacy Code Fragment manager(CFM) 실행 포맷은 코드와 시스템 라이브러리 사이에 추가적인 브리징(bridging) 코드가 필요하다.
- 이러한 브리징은 연결하는데 시간이 드는 작은 performance 패널티가 발생한다.
- (Windows는 따로 이러한 부분이 없는 것으로 알고 있기 때문에 이부분은 크게 신경쓰지 않아도 될 것 같다.)
출처 : Apple Human Interface Guidelines
'개발 > App Developer' 카테고리의 다른 글
Apple Human Interface Guidelines - Characteristics of Great Software(3/7) (0) | 2010.09.06 |
---|---|
Apple Human Interface Guidelines - Characteristics of Great Software(2/7) (0) | 2010.09.06 |
아이폰/아이팟 터치용 웹 애플리케이션 개발 팁 12개 (0) | 2010.09.06 |
성공적인 웹앱(web Apps)을 위한 10가지 특별한 원칙 (0) | 2010.09.06 |
X-code 단축키 (0) | 2010.09.06 |