오늘 포스팅은 형상관리의 개념과 이유에 관해 간략하게 설명해볼까 합니다.

형상관리의 기본적인 것을 알아봅시다.



프로그래밍 패러다임


    오래전부터, 프로그래머에게 사랑을 받고 있는 프로그래밍 패러다임은 단연 객체지향 프로그래밍 이라 할 수 있습니다. 

객체지향 프로그래밍은 항상 절차지향 프로그래밍과 상반적으로 설명되곤 합니다. 

하지만, 이는 조금 잘못된 오해이며, 사실상 객체지향 프로그래밍은 상호 관계는 상반적이 아니라, 상보적 관계입니다. 

프로그램은 절차적으로 수행되는 집합체이며, 이는 객체지향도 마찬가지 입니다. 

다만, 객체지향은 절차적인 부분을 객체에게 맡깁니다. 

프로그래머는 잘 만든 객체를 요구사항에 맞게 알맞게 조합하여 하나의 프로그램을 만드는 것입니다. 

또한 객체지향 패러다임은 프로그래머로 하여금 유지보수를 쉽게 해줍니다. 

현재 패러다임에서의 핵심은 객체, 작게 말해서 클래스를 잘 작성하는 것이라 할 수 있습니다.



클래스를 잘 작성하는 방법


    클래스를 잘 작성하는 방법은 프로그래밍 패러다임에 맞는 개념과 방법론이 잘 적용이 되어야 합니다. 

또한, 유지보수가 쉽게 될 수 있도록 코드를 작성을 해야 합니다. 

유지보수는 코드 뿐만 아니라, 컴퓨터공학적 이론, 요구사항 등이 반영 됩니다. 

그렇다면, 유지보수를 위해서는 클래스를 잘 작성해야 할 뿐만 아니라, 잘 관리를 해야 합니다. 

인간이 어떤 무언가를 관리하기 위해, 오래전부터 사용하는 방법은 '기록' 입니다. 

변경사항을 하나 하나 기억할 수 없으므로, '기록'을 함으로서, 인간은 어떤 무언가를 효과적으로 관리를 해왔습니다.

클래스의 관리도 '기록'의 관점에서 접근 할 것입니다.



어떻게 기록 할까?


    클래스를 기록하는 것은 단순히 코드를 복사한 후 외부 파일로 저장하는 것이 아닙니다.

코드 뿐만 아니라 그 코드에 반영된 컴퓨터 공학적 이론, 기술, 사용자 요구사항 등 많은 요소들이 기록이 되어야 합니다.

또한, 소프트웨어 특성상 '개발환경' 까지 보존 해 줄 수 있어야 합니다.

이러한 것들을 반영한 것을 문서로 기록을 해야합니다.

하지만, 이렇게 작성할 시 문서들은 점점 많아지고, 그로인해 찾아서 읽기가 여간 만만하지 않습니다.

또한 찾더라도, 문서로만 읽은 '개발환경'은 사실상 적용하기가 불가능 합니다.

결국 문서를 넘어서, 프로젝트 그 자체를 기록할 수 있어야 합니다. 즉, '형상관리'를 해줄 수 있는 프로그램 필요해졌습니다.



Git의 등장


    Git이 등장하기 이전에는, 위에서 설명한 형상관리를 하기 위해 SVN을 썼었습니다.

Git이 등장 함에 따라, SVN 보다는 Git을 많이 쓰이는 추세로 바뀌었는데요. 

대표적으로 큰 변화중 하나는 저장방식 입니다. SVN은 중앙 집중 저장 방식인 반면, Git은 분산 저장 방식을 채택했습니다.

그로인하여, 좀더 효과적으로 형상관리를 할 수 있게 됬습니다. 

이러한 Git프로그램 덕분에, 프로그래머는 Git만 잘 사용한다면 프로젝트를 효과적으로 형상관리 할 수 있습니다.

또한, 협업 환경에서의 프로젝트에서도 효과적인 커뮤니티를 위해 반드시 다룰줄 알아야 합니다.  형상관리를 통해 소스코드를 서로 주고 받는 것이 아닌 메인 저장소에서 필요할 때마다 받을 수 있으며, 효과적인 버전 관리로 인해 생산성이 증대됩니다. 



어느곳에 저장할까?


    Git은 로컬저장소원격저장소 라는 2가지 개념의 저장소가 존재합니다. 로컬저장소는 본인의 컴퓨터나 원하는 곳에 만들 수 있습니다.

다만, 로컬저장소로써 기능을 하려면 Git을 이용해 원격저장소랑 연결을 해야합니다.  로컬저장소를 만들어 원격저장소에 remote연결을 하기도 하고, 원격저장소에서 clone하여 로컬저장소를 만들 기도 합니다. 

이때 원격 저장소는 여러가지가 있으며, 대표적으로는 GitHub, BitBucket등이 있습니다.



마치며


    이번 포스팅에서 말하고 싶었던 바는, 형상관리는 단순히 프로젝트를 백업하기 위한 용도로 사용하는것이 아닌, 효과적인 개발을 위해 필수적으로 사용되어야 한다는 점입니다. 저 포함하여 Git을 쓰는 많은 초보 개발자들은, 단순히 '저장'용도로 사용하고 있습니다. 이러한 저장 용도 보다는 클래스를 설계했을시, 또는 개념을 추가했을시 그러한 것들을 잘 반영하고, 기록하기 위해 형상관리를 활용해보는 것을 추천합니다.


'용어정리 > 프로그래밍용어' 카테고리의 다른 글

절대경로, 상대경로란?  (6) 2018.12.06
비즈니스 로직(Business Logic)이란?  (13) 2017.05.24
DTO와 VO란?  (2) 2017.02.08
GET방식 과 POST방식  (32) 2016.12.10
컴포넌트(Component)란?  (8) 2016.10.20

포스팅이 도움 되셨다면, 커피 한잔 후원해주세요!
더 좋은 포스팅 작성에 큰 힘이 됩니다.

Buy me a coffeeBuy me a coffee

+ Recent posts