본문 바로가기
IT 이론/소프트웨어공학

소프트웨어 재사용(Reuse)

by 지식id 2016. 9. 19.
반응형

재사용이라고 하면 단순히 예전에 만들어 놨던 것을 다시 또 사용한다는 단순한 느낌이지만, 실제로는 표준화된 솔루션, 라이브러리, 오픈소스 등이 모두 재사용의 범주에 들어간다고 할 수 있다.


개요 : 이미 개발되어 인정받은 소프트웨어의 전체 혹은 일부분을 다른 소프트웨어 개발이나 유지보수에 사용하는 것

재사용 요소 : 전체 프로그램, 부분 코드, 응용된 지식, 데이터 모형, 구조, 테스트 계획, 문서화 방법 등


즉, 웹페이지 레이아웃을 비슷하게 구현했다면, 다른 개발건에서 나왔던 메뉴얼이 양식을 그대로 차용했다면 이 또한 재사용이다. 정말 포괄적인 범위의 재사용을 말하는 것이다.


재사용의 이점

 - 개발 시간과 비용을 단축시킨다.

 - 소프트웨어 품질을 향상시킨다.

 - 프로젝트 실패의 위험을 감소시킨다.

 - 시스템 구축에 대한 지식을 공유하게 된다.


재사용의 문제점

 - 어떤 것을 재사용할 것인지 선정해야 한다.

 - 시스템에 공통적으로 사용되는 요소들을 발견해야 한다.

 - 프로그램의 표준화가 부족하다.

 - 새로운 개발 방법론을 도입하기 어렵다.

 - 재사용을 위한 관리 및 지원이 부족하다.

 - 기존 소프트웨어에 재사용 소프트웨어를 추가하기 어렵다.

 - 프로그램 언어가 종속적이다.

 - 소프트웨어 요소의 내부뿐만 아니라 인터페이스 요구사항의 이해가 필요하다.

 - 라이브러리 안에 포함시킬 재사용 요소의 명확한 결정 기준이 없다.


위 이점과 문제점들은 다분히 학문적인 내용들로, 모든 재사용에 공통적으로 적용되는 것은 아니다. 쉽게 이해하기 위해 그냥 빈 메모장에 <html> 부터 시작해서 생짜 HTML, PHP, Javascript로 웹사이트를 구축 하는 것과 Bootstrap, jQuery, Codeigniter를 사용해서 웹사이트를 구축하는 차이에 대해 생각해 보면 된다.



재사용 방법


합성 중심(Composition-Based) : 전자 칩과 같은 소프트웨어 부품, 즉 블록(모듈)을 만들어서 끼워 맞추어 소프트웨어를 완성시키는 방법으로, 블록 구성 방법이라고도 한다.

생성 중심(Generation-Based) : 추상화 형태로 쓰여진 명세를 구체화하여 프로그램을 만드는 방법으로, 패턴 구성 방법이라고도 한다.


위 또한 다분히 학문적인 구분으로, 특정 플러그인을 가져다 쓰는 것과 프레임워크를 가져다 쓰는 것을 생각하면 이해하기 쉽다. 홈페이지를 만들 때 로그인 플러그인, 게시판 플러그인, 레이아웃 플러그인 등을 각각 가져다 조합해서 쓴다면 이는 합성 중심이고 코드이그나이터나 라라벨 프레임워크를 도입한다면 이는 생성 중심이다. 어찌 보면 워드프레스를 사용하여 홈페이지를 만드는 것은 이 모두에 해당된다고 할 수 있다.

좀더 큰 규모로 보자면 실제 미국의 소규모 은행들은 전체 은행 시스템을 하나하나 구축 하기 보단 예금 솔루션, 대출 솔루션, 신용카드 솔루션 등의 여러 소프트웨어를 구입해서 사용하는 경우가 많다. 마치 하나의 시스템인것 처럼 인터페이스가 통일되어 있고 연동이 잘 되어 있으면 다행이지만 그렇지 못한 경우 은행 창구에선 카드도 만들고 통장도 만들고 대출도 해 주기 위해서 몇가지 프로그램을 띄워놓고 왔다 갔다 하면서 일을 해야 하는 경우도 허다하다. 재사용의 끝판왕. 국내 금융권에선 재사용보다는 재공학을 중심으로 시스템이 구축/운영된다.

반응형

댓글