본문바로가기

 소프트웨어 아키텍처가 되는 길

 UML  2016. 9. 13. 10:24  창조컨서턴트

소프트웨어 아키텍처가 되는 길


금일 부터 소프트웨어 아키텍처가 되는 길에 대해 연재 하려 합니다. 

저도 처음에 불가능한 길이라고 생각 했습니다. 그러나, 한 발짝 한 발짝 다가 서면 결코 불가능한 길이 아닌 길입니다.

무엇 보다 소프트웨어 아키텍처가 되기 위해서는 습관이 중요합니다. 

자기 주변에 일어 나는 모든 일을 글로 정리하는 습관을 가진 다면 많은 도움이 되실 겁니다. 


1. 아키텍처란 무엇인가?

: 제가 생각 하는 아키텍처란 '소통' 이라 생각합니다.


사전적인 단어는 "Architecture : 1. 건축학   2. 건축 양식   3. 아키텍처, 컴퓨터 시스템의 구성" 라고  합니다. 


Architecture의 대표적인 것이 건축, 사진, 컴퓨터, 미술 일 것 입니다. 

건축, 사진, 컴퓨터, 미술 의 궁극적인 목적은 많은 사람에게 작품의 철학과 목적을 최대한 공유하는 것일 겁니다. 

만일, 작품이 완성되었으나, 누구도 공유하지 않는다면, '소통'에 실패한 것일 겁니다. 


'소통'을 원활하게 하기 위해서 많은 노력을 합니다. 

건축은 사람과 가까운 양식을 짖기도 하고, 자연과 가까운 양식을 짖기도 합니다. 

사진은 구도와 렌즈를 이용해 다양한 시각을 보여주기도 합니다. 

미술은 작가의 다양한 기법으로 자기의 내면을 표현하기도 합니다. 

컴퓨터는 CPU 속도도 올리고, 용량도 늘리고, 그래픽 속도도 올리고, 가격도 하락 시키기도 합니다. 


그러나, 많은 사람과 공유하지 않은 작품은 사라지기 마련입니다. 


2. 소프트웨어 아키텍처란 무엇인가?

: 저는 아키텍처란 '소통' 이라 생각한다고 말씀 드렸습니다.


소프트웨어 아키텍처도 다르지 않다고 생각합니다. 

사용자는 UI를 이용하여 소프트웨어를 평가 하기도 합니다. 그러나, 그 속에는 많은 것을 요구합니다. 

사용자와 '소통' 을 잘하여, 소프트웨어를 설계한다면 많은 사람과 공유하겠지만,

'소통'이 이루어지지 않는다면 공유도 힘들어 질 것 입니다.


2.1. 소통 방법

: 소프트웨어 아키텍처 란 책을 찾아보면 많은 책도 있지만, 보기도 어려운 책도 많습니다. 

책을 보기 전 이 어려운 책의 목적이 무엇인가 그 것을 알고 보는 것이 중요할 것 같습니다.


이 책들의 목적은 소프트웨어를  만들기 전에 요구하는 사람들 간 '소통' 을 잘 하기 위한 방법 입니다. 

  1) 소프트웨어 요구 정의서

  2) 소프트웨어 디자인

     - 디자인 패턴

  3) UML ( Unified Modeling Language) 

  4) 객체지향 개발

  5) 소프트웨어 재사용

  6) 소프트웨어 테스팅

  7) 소프트웨어 관리


2.2. 소프트웨어 요구 정의서

  : 소프트웨어 아키텍처에 있어 가장 중요한 것이 무엇이냐고 물어 본다면, 저는 두말 할 것 없이 "요구 정의" 라고 할 것이다. 

지금까지 아키텍처란 '소통' 이라고 말을 했다. '소통' 이란 단어는 "요구 정의" 라고 볼 수 있다.

요구 정의는 소프트웨어 개발 시간의 1/2 필요하다고 생각한다. 


요구 정의는 소프트웨어를 요청한 사람과 기나긴 '소통' 이다.

지속적인 대화를 통해 필요한 사항들을 정리하고 기능 사항에 불필요한 요소들을 제거해 나가야 한다.


이런 대화 속에는 다툼이 벌어지기도 한다. 

소프트웨어 아키텍처는 "적을 만들지 않는 대화법" 을 배워야 한다. 

대화에 있어서 내 것만 주장하면 다툼이 있기 마련이다. 요구를 정리 하는 데 있어서도 도움이 되지 못 한다. 


대화의 기본 원칙

 1) 감정으로 대화를 하지 마라.

  :  대화를 하다 보면 나도 모르게 감정이 격해지는 경우가 있다. 

     사람이 감정에 몰입하게 되면 내가 어디 있는지 모르게 된다. 그건 나 뿐만 아니라 상대방도 마찬가지이다. 

     감정의 선을 넘게 되면 아무것도 되지 않는 경우가 발생한다. 

     감정의 선이 있음을 예의 주시하며 대화를 하라.

2) 상대방 입장에서 대화를 진행하라.

  : 대화법에 보면 적을 만드는 방법은 간단하다. "하지만", "그렇다고 하더라도", "그건 문제죠", "그럼 그만둬요"

   그러나, 동지로 만드는 방법도 간단하다. "그렇군요", "맞습니다.", "그럴 수도 있겠네요", "생각해봐야겠네요"

   우리의 뇌는 부정적이면 부정으로, 긍정적이면 긍정으로 흘러 간다.

   내가 상대방을 이해하고 있다고 언급하면 나에게 호감을 주게 되는 것이다.

3) 하나를 주고 둘을 가져와라.

   : 상대방과 얘기를 하다 보면 내 것만 고집해서는 안 될 때가 있다. 그럼 나는 무엇인가 양보를 해야 한다.

     이 때 나의 작은 것을 양보하고, 큰 것을 얻을 것을 생각하고 이야기를 나눠야 한다.


다음 시간에는 요구 정의를 문서로 정리하는 방법에 대해 알아보도록 하자.