본문 바로가기

카테고리 없음

시스템 분석 설계

모듈분해란 하나의 모듈에 포함되어 있는 기능들을 다른 모듈로 분리하여 자신의 하위모듈로 함으로써 시스템의 모듈 구조도를 집행기능과 실무기능을 하는 모듈로 분리해 가능 과정말 말한다. 

모듈분해의 효과는 모듈크기를 줄일 수 있고 시스템을 명확히 할 수 있다. 코드의 중복을 최소로 할 수 있으며, 작업과 관리를 분리할 수 있다. 또한 범용성이 높아지고 구현이 용이하다.

 

따라서 시스템의 모듈분해가 완전히 이상적으로 이루어지면 최상위 단계의 모듈은 완전 집행가능만을 수행하며, 구조차트의 아래로 내려갈수록 점점 실무기능이 추가되어 최하위 단계의 모듈은 완전 실무기능만을 수행하게 된다.

 

판단분리란 인식부분에서 필요한 자료와 실행부분에서 필요한 자료가 서로 다른 모듈에 분리되어 있는 상태를 말한다. 따라서 어떤 결정의 실행부분은 가능한 한 인식부분과 가깝게 있어야한다. 가능한 한 판단분리 현상은 피한다.

제어폭은 한 모듈이 직접 제어할 수 있는 모듈의 수를 측정하는 것으로 너무 크지 않게 7+2로 하는것이 적절하다. 즉 제어폭이란 어떤 직속하부모듈의 수를 말하는 것으로 확산형 이라고도 한다. 제어폭의 크기는 보통7+2가 적당하며, 적을 경우에는 상위모듈로 압축시키는 방법과 내부에 섞여있는 여러 기능들을 분리해내는 방법이 있다. 또한 클 경우에는 과도한 모듈분해를 피하거나 중단단계화를 한다.

 

공유도는 한 모듈을 제어하는 타 모듈의 수가 어느 정도인지를 측정하는 것으로 너무 크지 앟게 7+2로 하는 것이 적절하다. 즉 공유도란 어떤 모듈의 상위모듈의 수를 말하는 것으로 수축형 이라고도 한다. 공유도가 높은 것은 모듈 분해가 잘 되어 있음을 의미하며, 코드의 중복을 피할 수 있고 모듈의 범용성이 높아진다. 

 

프로그램 설계전략은 모형화된 모듈의 세부처리 내용을 명세화하는 절차로서, 주어진 문제를 정확하게 표현하는 구조도를 유도해 내기 위한 전략으로 변환분석과 거래분석이 있다.

 

변환분석이란 변환중심설계 라고도 하며 균형작힌 시스템을 설계하기 위한 주요전략 중의 하나이다. 따라서 분석단계에서의 자료흐름도를 설계단계의 구조차트로 바꾸는 일을 말한다. 이러한 변환분석은 하나의 전략이지 알고리즘은 아니다.

 

분석분석이란 자룔흐름도에서 거래에 해당하는 일련의 단계를 말한다. 따라서 거래의 예로는 입력기기의 스타트 버튼을 누른다던가, 현금자동인출기에서 카드를 입력하다던가, 운영체제에서의 클럭 인터럽트등을 들 수 있다. 이러한 거래분석의 목적은 크고 복잡한 자료흐름도를 시스템이 처리하는 각 거래에 대응하는 작은 자료 흐름도로 분리하기 위함이며, 각 거래에 대응하여 유도되어진 구조차트를 하나의 커다란 구조차트로 통합하기 위하여 거래분석을 한다.

 

대부분의 상업용 자료처리 시스템은 거래를 차지하는 과정으로 이루어졌거나 또는 여러 부분이 거래를 다루고 있다. 이러한 거래중심 시스템의 구조차트를 성공적으로 유도하기 위해서는 거래분석기법이 필요한다.

 

거래분석이 개발되기 전까지 프로그래머는 거래타입을 무시한 채 트랜잭션 사이에서 구별되는 코드를 구분하기 위하여 플래그나 스위치 등의 수단을 이용하여 왔다. 이렇게 설계된 시스템은 전형적으로 유연성이 낮고 오류발생이 쉬울 뿐 아니라 이해하기가 어려운 특성을 갖고 있다.

 

설계가 끝남으로써 시스템에 대한 구조도가 완성된 것이며, 프로그래밍을 위한 준비가 되어 있는 것이다. 그러나 코드를 생성하기 전에 프로그래밍과 테스팅이 용이하게 이루어지도록 하기 위해 먼저 수행되어야 할 2단계가 있다. 즉, 논리적 설계를 물리적으로 실체화하는 패키징 단계와 구현 전략의 선택 단계이다.

 

패키징은 구조도에 있는 모든 모듈을 기계가 한번에 수용할 수 없기 때문에 한정된 크기로 프로그램을 작성한다는 것은 비현실적이다. 이러한 문제를 해결하기 위한 개념이 패키징이다. 패키징은 시스템을 구현 단위로 나누는 의사 결정과 그에 따른 행위들의 집합을 말한다. 즉 패키징이란 논리적 설계를 실제적으로 구체화하는 것으로 시스템의 전체모듈들이 서로 다른 시간에 같은 기억장소를 점유할 수 있도록 여러 적재단위로 할당하는 작업을 말한다.

 

최적화는 시스템을 구조적으로 설계함으로써 정확성, 이해성, 유지 보수성의 이점이 있게 된다. 효율성은 위의 평가 기준이 만족된 후 고려될 수 있다. 즉, 유효성은 시스템이 올바르게 수행되느냐를 의미하는 것인데 반해서, 효율성은 시간이나 기억 장소 영역을 적게 사용하는 것을 의미한다.

일반적으로 효율적인 시스템이 잘 실행되기를 바라는 것보다 잘 실행되는 시스템을 효율적으로 잘 만드는 것이 용이하다. 따라서 시스템을 먼저 구현하고 난 후에 최적화를 하는 것이 바람직하다.

*최적화의 기본원칙*

처음부터 효율적인 시스템을 구축하기보다는 구축된 시스템을 이용하여 효율성을 증진시키기가 용이하다.

성능 평가시험에서 문제점이 발생한 경우만 최적화한다.

시스템 중 최적화의 가치가 있는 부분만 최적화한다.

 

구현은 설계단계에서 생성된 구조도 및 시스템 설계 명서세를 근거로 하여 구현할 모듈을 선택한 후 코드를 작성하고 테스트한다. 시스템을 구현하기 위해서 가장 먼저 수행해야 할 단계는 모듈에 대한 구현 순서를 결정하는 것이다.

 

전통적 접근방법은 시스템의 각 부분들을 코딩하여 모든 부분들과 함께 처리하고 시스템이 동작하도록 노력하는 방법이다. 점진적 접근방법은 한 모듈을 구현하여 현 모듈조합에 결합한 후 이를 시험하고 잘못된 부분을 수정하는 과정을 설계된 모든 모듈이 끝날 때까지 구현계획에 따라 반복하는 방법이다.

 

하향식 접근방법의 처리방은 설계구조도의 상위 모듈을 먼저 구현하고, 다음에 구현될 모듈을 구현계획에서 정의된 통합순서에 따라 점증적으로 내려오면서 구현하는 방법이다.

상향식 접근방법의 처리방법은 설계구조도의 하위 모듈을 먼저 구현하고, 다음에 구현될 모듈은 구현계획에서 정의된 통합순서에 따라 점증적으로 위로 올라가면서 구현하는 방법을 말한다.

절충식 접근방법은 상향식 구현 방식과 하향식 구현 방식을 조합한 방식으로서 시스템의 하단 반쪽을 상향식으로 수행하여 중간에서 만난다.