변동 요인과 모듈화 동인 고려한 설계 최적화
지난 글까지 인터페이스 강도, 고정-변동 특성에 따라서 제품 구조를 최적화하는 방식에 대해서 알아봤습니다. 이번 글은 본 시리즈 마지막 편으로 변동 요인 (사양 요인)과 모듈화 동인 (비사양 요인)으로 제품 구조를 최적화하는 방법에 대해서 알아보겠습니다.
첫 번째는 변동 요인으로 설계를 최적화하는 절차입니다.
먼저 모듈화를 하고 싶은 서브시스템이 갖는 모든 변동 요인 (사양 요인)을 나열합니다. 변동 요인은 서브시스템의 다양성 (Variety)을 일으키는 요인으로 대상 시스템 또는 서브시스템의 사양과 직결되므로 사양 요인이라고 부르기도 합니다. 조사가 다 끝나면, 변동 요인과 시스템의 구성 요소를 연결하는 작업을 해야 합니다.
이전 글의 내용을 복기해 봅시다. 기능 분석을 하면 모듈의 구성 요소와 모듈화 대상 레벨이 결정됩니다. 여기서의 모듈의 구성 요소와 변동 요인 (사양 요인)을 연결시키는 겁니다. 즉, 시스템 또는 서브시스템의 사양이 바뀌면 같이 바뀌는 모듈의 구성 요소를 체크해 놓는 것이죠.
여기서 유의할 점은 이전 글에서 비슷한 방식으로 모듈의 구성 요소에 고정과 변동 특성을 기입했죠?
만약 모듈의 구성 요소의 특성이 변동이라면 반드시 하나 이상의 변동 요인과 체크가 되어야 합니다. 반대로 고정이라면 어떤 변동 요인과도 체크가 되어선 안 되겠죠.
또 하나 유의할 점은 변동 요인을 결정할 때 고정-변동 특성을 고려할 때와 마찬가지로 시계열, 동시계열상 다양성 기준으로 나눌 것인지 결정해야 합니다. 당연히 고정-변동 특성을 선택할 때 기준과 동일해야겠죠.
이후에는 현재 구조에서 구성요소 간의 변동 요인의 패턴이 유사한 것끼리 묶습니다. 물론, 인터페이스 강도, 고정-변동 특성 등을 고려한 후에 추가적으로 개선하는 방식으로 변동 요인의 패턴을 묶어야겠죠. 이 절차에서는 주로 변동부에 해당하는 모듈이 쪼개지게 될 겁니다. 사양에 따라서 분리가 되면, 조합을 통해서 사양 변화에 좀 더 효율적으로 대응할 수 있고, 조합에 따른 다양성 대응도 가능할 겁니다.
두 번째는 모듈화 동인 (비사양 요인)에 따라서 제품 구조를 개선하는 겁니다.
모듈화 동인은 시스템의 비사양적 특성에 따라서 모듈로 나누는 방향을 이끄는 요인입니다. 주로 비기능적 요구사항에 의해서 발생하는 제품 구성요소의 이질적 특성이 요인이 됩니다. 기술적 진화 특성, 재사용성 강도, 공정 유사도, 유지 보수 용이성, 업그레이드 용이성 등이 여기에 해당합니다.
마지막으로 위와 같은 특성으로 모듈로 나누는 것을 추천을 받는데, 여기서도 최대한 유사한 모듈화 동인 패턴을 가지고 있는 것끼리 모듈로 묶습니다.
여기서 개선되는 모듈은 고정부, 변동부 모듈 가리지 않습니다.
정리해 보면, 본 시리즈에서 다룬 설계 개선 절차는 기존 제품 구조를 대체로 그대로 두고 개선하는 방식을 취하고 있죠. 기능 분석을 하고, 모듈화 대상과 모듈의 구성 요소를 선택합니다.
현재 구조는 기본적으로 기능적 응집성, 위치의 인접성을 근거로 이루어진 것으로 봅니다.
해당 제품 구조를 대상으로 다음과 같은 절차를 진행했습니다.
첫 번째는 인터페이스 강도에 따라서 제품 구조를 개선했습니다.
두 번째는 고정-변동 특성을 고려하여 제품 구조를 개선했습니다.
세 번째는 변동 요인 (사양 요인)과 모듈화 동인 (비사양 요인)을 고려하여 제품 구조를 개선했습니다.
매 단계마다 최적의 모듈 크기와 모듈의 수를 감안하여 개선을 진행합니다.
본 글을 통해서 이번 시리즈를 마치겠습니다. 다양한 요인을 기준으로 설계를 최적화하는 절차를 설명했습니다. 복잡해 보이지만 원칙은 하나입니다.
“모듈 내 응집성은 높이고, 모듈 간 의존성은 낮춘다”
이를 위해서 모듈 내에는 최대한 유사한 특성을 가진 구성 요소를 묶고, 다른 특성을 가진 구성 요소는 모듈을 분리하는 방식을 취하는 겁니다.
모든 항목을 취할 필요는 없겠습니다. 한 가지 기준이라도 실무에 적용해 보시면 좋겠습니다.