소프트웨어 개발에서 재사용성이 중요한 이유는 품질과 생산성에 직결되기 때문이다. 이 세트의 문항들은 CASE(Computer Aided Software Engineering)를 통해 재사용성이 어떻게 높아지는지를 보여준다. CASE는 컴퓨터를 이용하여 소프트웨어 공학 활동을 지원하는 도구로, 주요 목적은 소프트웨어 개발 과정의 자동화다. 자동화를 통해 소프트웨어 모듈의 재사용성을 높일 수 있고, 자동화된 기법의 적용으로 소프트웨어의 품질을 향상시킬 수 있다. 유지보수 측면에서도 CASE 도구는 문서화나 코드 생성 등을 도와 유지보수를 돕는다.
재사용 대상이 되는 것은 모듈이다. 모듈은 프로그램의 기능을 독립적인 단위로 나눈 것으로, 설계에서 모듈의 크기를 적당하게 유지하고 모듈 간 접속 관계를 분석해 복잡도를 줄이며 결합도를 낮추는 지침이 잘 지켜질수록 독립적인 단위로서 다루기 쉬워진다.
공통으로 쓰는 모듈은 명세가 뒷받침되어야 재사용이 원활해진다. 공통 모듈에 대한 명세 기법의 명확성 원칙은 해당 기능에 대해 일관되게 이해하고 한 가지로 해석될 수 있도록 작성하는 것으로, 여러 개발자가 같은 모듈을 다시 쓸 때 오해의 여지를 없앤다. 아키텍처 차원에서는 파이프-필터 구조에서 각 필터가 독립적으로 작동한다는 점이, 처리 단위를 교체하거나 다시 조립하는 구조적 여지로 언급된다.
예제
시험에서는 CASE의 목적을 묻는 문제에 재사용성 증대가 옳은 보기로 등장하고, 사용자 교육용이라는 보기가 오답으로 섞인다. CASE는 개발 자동화, 품질 향상, 유지보수 용이, 재사용성 증대를 목표로 하는 개발 지원 도구임을 확인하는 것이 출제 포인트다.
대표 기출 3문항
명백한 역할을 가지고 독립적으로 존재할 수 있는 시스템의 부분으로 넓은 의미에서는 재사용되는 모든 단위라고 볼 수 있으며, 인터페이스를 통해서만 접근할 수 있는 것은?
Model
Sheet
Component
Cell
정답과 해설 보기
정답 ③ · 명백한 역할을 가지고 독립적으로 존재하며 인터페이스로만 접근 가능한 재사용 단위를 묻는 문제이다. 컴포넌트는 시스템의 부분으로서 재사용 가능한 모든 단위를 포괄하는 넓은 의미의 개념이며, 외부에서는 정의된 인터페이스를 통해서만 접근할 수 있다는 특징을 가진다.
인터페이스를 통해 접근 가능한 독립적인 시스템 부분이자 재사용 가능한 단위는 컴포넌트(Component)의 정의에 부합한다.
소프트웨어 재사용으로 인한 영향이 아닌 것은?
품질 향상
생산성 인하
생산성 향상
비용 절감
정답과 해설 보기
정답 ② · 소프트웨어 재사용이 가져오는 영향이 아닌 것을 고르는 문제이다. 재사용은 이미 검증된 컴포넌트나 모듈을 다시 활용하므로 품질 향상, 생산성 향상, 비용 절감이라는 대표적인 긍정적 효과를 가져온다.
소프트웨어 재사용은 개발 효율을 높여 생산성을 향상시키므로, 생산성 인하는 재사용의 영향이 아니다.
소프트웨어 재사용에 관한 설명으로 거리가 먼 것은?
소프트웨어의 개발 생산성과 품질을 높이려는 방법이다.
소프트웨어 재사용의 방법에는 합성중심(composition-based)과 생성 중심(generation-based) 방법으로 나눌 수 있다.
재사용 부품의 크기는 클수록 재사용율이 높다.
소프트웨어의 재사용은 프로젝트의 실패 위험을 줄일 수 있다.
정답과 해설 보기
정답 ③ · 소프트웨어 재사용에 대한 설명 중 거리가 먼 것을 고르는 문제이다. 재사용 부품의 크기가 커지면 특정 요구에 맞게 수정하고 통합하기 어려워져 오히려 재사용률이 낮아진다.
소프트웨어 재사용 시 부품의 크기가 지나치게 크면 변경 및 통합이 어려워 오히려 재사용률이 낮아지므로, 적절한 크기의 모듈화가 중요하다.