UML을 써야 할때와 쓰지 말아야 할 때

[Object Oriented Programming/UML]
요즘 어느 정도 경력이 있는 개발자라면 UML을 작성하거나 , 작성된 UML을 이해하는게 그리 어렵지 않을 것이다. 하지만 내가 98년도에 프로젝트를 진행할 때 UML로 이용하여 설계를 진행한다고 했을때 과연 그게 무엇인지 도저히 감이 오지 않았다. 물론 그 당시에는 관련 책도 별로 없어서 아마존에서 책을 구매했던 기억이 난다. 그 당시 프로젝트를 관리했던 PM은 대학원에서 UML을 전공했으며 여러가지 국책 프로젝트를 UML로 진행한 경험이 있는 PM이었지만 지금 생각해보면 프로젝트 진행시에 UML을 언제 얼마나 사용을 해야 하는지 모르고 진행했던거 같다.

요즘도 많은 프로젝트 설계 시 UML을 작성하는데 엄청난 시간과 에너지를 낭비하는거 같다. 로버트 C.마틴의 UML for java programmer 라는 책을 보면 언제 다이어 그램을 그려야 하는가? 에 대한 답을 쉽게 찾을 수 있다. 아래 내용은 그 책에서 발췌한 내용이다.

다이어 그램을 그려야 할때

- 프로젝트에 참가한 사람들이 설계에서 특정한 부분의 구조를 이해해야 할때
- 특정 요소의 설계 방법에 상이한 의견을 가지고 있어, 의견을 모을 필요가 있을때
- 여러가지 설계 아이디어를 시도해보고 싶을 때
- 누군가에게 특정 코드 일부분의 구조를 설명할 때
- 프로젝트 마지막에 고객이 특정인을 위해 다이어그램을 요구할 때


다이어 그램을 그리지 말아야 할 경우

- 프로젝트 과정에 다이어그램을 그려야 한다는 공정이 들어갔을 때
- 다이어그램을 안그리면 죄책감이나 훌륭한 아키텍트가 아니라고 느낄 때
  . 진정한 소프트웨어 아키텍트는 자신의 설계를 코딩하는 아키텍트이다.
- 코딩 전 포괄적인 문서를 만들기 위해 다이어그램을 그릴 때
- 다른 사람에게 어떻게 코딩을 하는지 보여주기 위해 이용할 때





크리에이티브 커먼즈 라이선스
Creative Commons License

'Object Oriented Programming > UML' 카테고리의 다른 글

UML을 써야 할때와 쓰지 말아야 할 때  (0) 2009/06/02
Class Diagram  (0) 2008/08/06
TAG. UML

삼성 이건희 회장의 명언록

[Good Story]


기회는 깜짝 하는 사이에 지나간다.--순발력을 키워라.

말이 씨앗이다.--좋은 종자를 심어라.

작은 것 탐내다가 큰 것을 잃는다.--무엇이 큰 것인지를 판단하라.

                                          x

돌다라리만 두드리지 말라--그 사이에 남들은 결승점에 가있다.

돈의 노예로 살지 말라.--돈의 주인으로 기쁘게 살아라.

절망 속에서도 희망을 잃지 말라.--희망만이 희망을 키운다.

                                          x

불경기에도 돈은 살아서 숨쉰다.--돈의 숨소리에 귀를 기울여라.

인색하지 말라.--인색한 사람에게는 돈도 야박하게 대한다.

                                          x

좋은 만남이 좋은 운을 만든다--좋은 인연을 소중히 생각하라.

효도하고 또 효도하라--그래야 하늘과 조상이 돕는다.

있을 때 겸손하라--그러나 없을 때는 당당하라.

                                          x

한발만 앞서라.--모든 승부는 한발자국 차이이다.

돈은 돈을 좋아한다.--생기는 즉시 입금 시켜라.

                                          x

.티끝  모아 태산이 된다.--작은 돈에도 감사하라.

마음이 가난하면 가난을 못벗 벗는다.--마음에 풍요를 심어라.

                                          x

돈이 가는 길은 따로 있다.--그 길목을 지키며 미소를 지어라.

더운밥 찬밥 가리지 말라.--뱃속에 들어가면 찬밥도 더운 밥이 된다.

                                          x

부자 옆에 줄을 서라.--산삼밭에 가야 산삼을 캘수있다.

부자처럼 생각하고 부자처럼 행동 하라.--나도 모르는 사이에 부자가 되어있다.

항상 기뻐하라.--그래야 기뻐할 일이 줄줄이 따라온다. 끝

크리에이티브 커먼즈 라이선스
Creative Commons License

What is Android?

[Android]
What is Android
안드로이드는 OS, 미들웨어 및 중요 어플리케이션을 포함하고 있는 모바일 장치를 위한 소프트웨어이다.

Android SDK 
자바 프로그램밍 언어를 이용하여 안드로이드 플랫폼 상에서 어프리케이션을 개발하기 위해 필요한 API 와 툴을 제공한다.
 
Android Architecture

Applications
안드로이드는  이메일 클라이언트, SMS 프로그램, 달력,지도, 브라우저, 연락처 등을 포함하는 핵심 애플 리케이션의 집합으로 출시할것이다. 모든 어플리케이션은 자바 프로그래밍 언어를 사용할 것이다.

Aplication Framework
  • Content Provider : 어플리케이션으로 하여금  Contacts.와 같은 다른 어플리케이션의 데이터에 접근 가능하게 하거나 그들 자신의 데이터를 공유하게 해준다.
  • Resource Provider : 로컬라이즈드 스트링, 그래픽, 레이아웃 파일과 같은 코드가 아닌 리소스들에 대한 접근을 제공한다.
  • Notification Manager : 모든 어플리케이션으로 하여금 상태바에서 일반적인 경고를 보여주도록 한다.
  • Activity Manager : 어플리케이션의 생명주기를 관리하고 일반적인 네비게이션 백스택을 제공한다.

Libraries
- 안드로이드는 안드로이드 시스템의 다양한 컴포넌트들에 의해 사용되는 C/C++ 라이브러리를 포함한다.
   아래는 핵심 코어 라이브러리이다.
  • System C Library : 임베드 리눅스 기반 장치들을 위해 만들어진 표준기반 C 시스템 라이브러리
  • Media Libraries : PacketVideo's OpenCORE 기반, 이미지 파일 뿐만 아니라 다양한 오디오와 비디오 포맷들의 녹음 재생을 지원하는 라이브러리
  • Suface Manager  : 다수의 어플리케이션에서 디스플레이 서브 시스템과 끊김없는 2D, 3D 그래픽 계층의 접근을 관리
  • LibWebCore : 웹 브라우져 엔진
  • SGL : 2D 그래픽 엔진 
  • 3D libraries
  • Free Type : 비트맵과 벡터 폰트 렌더링
  • SQLite : 모든 어플리케이션에서 사용가능한 강력하고 가벼운 관계형 DB 엔진

Android RunTime
-  안드로이드의 핵심 라이브러리는 자바 프로그래밍 언어의 핵심 라이브러리의 대부분의 기능을 제공한다.

- Dalvik VM은 Dalvik 실행 파일 포맷(.dex) 파일들을 실행하며, 그 포맷은 최소 메모리 공간을 위해 최적화되었다.

-  자바 컴파일러에 의해 컴파일되는 클래스들을 "dx"툴을 이용하여 자바 클래스를  .dex 포맷으로 변경한다.

- Dalvik VM은 쓰레딩과 저수준의 메모리관리와 같은 기능을 위해 리눅스 커널에 의존한다. 


Linux Kernel
- 보안, 메모리 관리, 프로세스관리, 네트워크 스택, 드라이버모델 같은 핵심 시스템 서비스를 위해 Linux 2.6 에 의존한다.

크리에이티브 커먼즈 라이선스
Creative Commons License

'Android' 카테고리의 다른 글

What is Android?  (0) 2009/05/16