본문 바로가기

카테고리 없음

구조적 설계 절차

구조적 설계는 하나의 시스템을 그 최대의 기능을 중심으로 하여 적절한 기능 모듈의 크기, 모듈 상호간의 인터페이스, 모듈의 독립성 관계를 고려하여 단계적으로 구체적인 기능 모듈 단위로 세분해가면서 시스템을 구체적인 구조로 설계해 가는 방식을 택한다. 따라서 구조적 설계의 구체적인 작업 방법은 모듈의 분할, 모듈의 수정을 통하여 또는 경우에 따라서 모듈의 분할과 수정을 여러 차례 반복적으로 행하여 시스템의 구조를 완성시킨다.

 

데이터 흐름도 작성은 프로세스에 맞는 구조적 설계도를 유도해내기 위해서는 데이터 흐름도 작성이 기본이다. 구조표의 작성은 프로그램 설계를 계층적 도표로 표현하여 여러 기능별 서브시스템의 인터페이스 관계를 변환 분석이나 거래 분석을 통해 표현한다.

 

추출된 구조차트를 평가하여 수락 가능한 것은 잘 다음어 세련된 구조차트를 만들고, 그렇지 못한 것은 거절하여 구조차트 추출 단계부터 다시 시작한다. 즉, 작성된 구조차트에 대하여 결합도와 응집도 등을 조사하고 모듈 분해 등의 설계 기준에 의해 가장 좋은 구조차트를 선택한다.

 

구조차트 내 각 모듈들의 상세설계를 수행한다. 따라서 세련된 구조차트와 구조적 명세서를 토대로 모듈명세서를 작성한다. 모듈명세서는 의사코드, 의사결정표, 나씨-슈나이더만 다이아그램 혹은 순서도 등을 이용하여 모듈의상세한 내부절차를 구조적으로 표시한 기술서이다.

 

자료사전과 자료구조도에 있는 논리적인 정보를 이용하여, 실제적인 데이터베이스를 설계한다.

설계도 꾸리기는 각 단계의 서로 다른 출력들을 받아들여 설계단계의 최종출력인 설계명세서를 작성한다. 완성된 시스템이 실행되어질 실제 환경이 전체설계에 미치는 영향을 고려하기 위한 목적이다. 따라서 하드웨어의 제약 조건을 고려하여 통합적으로 수행한다.

 

[구조적 설계 도구]

다른 공학 분야와 같이 컴퓨터 시스템 개발 분야에서도 특별한 목적을 위해 적합한 도구를 필요로 한다. 여기에서는 구조적 설계의 중심적인 도구로서, 프로그램 수준이나 시스템 수준의 설계를 위해 사용될 수 있는 구조차트와 구조차트만으로 나타난 각각의 모듈을 설명하는 모듈 명세서에 대하여 설명한다.

 

모듈이란 소프트웨어의 구성요소로서 서브루틴, 단위 프로그램, 단위별 작업 처리 내용, 동일한 작업 처리 내용을 담고 있는 서브시스템 등을 의미한다. 즉 같은 조건하에 내용들은 블록 단위로 처리하도록 하는 기법으로, 독립적으로 번역되는 단위로서 각각의 이름을 가지며, 모든 모듈에 의해 호출이 기능하다. 따라서 보통 복수의 모듈이 하나의 프로그램을 구성하며, 모듈화를 하는 가장 중요한 이유로는 복잡도의 경감과 다수 작업자에 의한 시스템의 병행 생산을 할 수 있다는 것이다. 따라서 모듈이란 어떤 단위 활동들이 모여 특별한 기능을 수행하는 여러 줄의 코드를 말한다. 그러므로 좋은 모듈이란 재사용이 가능해야 하고, 다른 시스템에서 사용이 가능해여 하며, 읽기 쉽고 유지 보수가 가능함은 물론 신뢰성이 있어야 한다.

이 때에 하나의 모듈은 독립성이 유지되도록 설계되어야 하는데, 모듈의 독립성이라 함은 다음과 같은 특성이 있음을 의미한다. 

 

*모듈화의 원리*

복잡한 문제를 독립적인 모듈 단위로 분해하여 해결한다.

단계적으로 시스템을 점차 상세하게 기술한다.

각 모듈은 추상화를 통해 세부적인 것과 무관하게 설계를 수행한다.

이런 단계적 명세화를 통해 큰 시스템을 해결한다.

또한 모듈화를 함으로써 얻을 수 있는 이점은 다음과 같다. 이러한 모듈의 설계는 외부 설계와 논리 설계로 나눌 수 있다

 

*모듈화의 이점*

상당한 경비 절감의 효과를 얻을 수 있다. 즉 개발과 지원 단계가 간소화되어 많은 시간과 노동력을 절감할 수 있기 때문이다. 프로그램의 신뢰도 향상을 가져온다. 즉, 프로그램의 오류가 상당히 줄기 때문이다.

 

*모듈의 특성*

시작과 끝이 명확하고 모듈의 이름은 그것을 대표할 수 있는 의미를 가져야 한다.

즉, 이름으로 미루어 보아 그 모듈의 기능을 알 수 있어야 한다.

이름으로 모듈을 부를 수 있고 불리어질 수 있다.

모듈은 업무 성격이 비슷한 처리에 부품처럼 공통으로 사용할 수 있다.

모듈은 서로 결합되어 종속적으로 실행되지만 번역 만큼은 독립적이다.

모듈은 이름을 정의하여 필요시 사용되고 전달되는 매개 변수를 제공한다.

모듈의 작성은 분담하여 독립적으로 작성할 수 있다.

모듈마다 사용할 변수를 새로 정의하지 않고 계승하여 사용할 수 있다.

 

1. 입력과 출력 : 호출한 서브 모듈로부터 들어오는 자료와 호출한 서브 모듈에 돌려주는 자료를 말한다.

2. 기능 : 입력을 사용한 출력의 생성, 즉 출력을 생성시키기 위한 입력은 변환 방법이다.

3. 기관 : 기능을 수행하기 위한 절차적 코드와 논리를 나타낸다.

4. 내부자료 : 모듈의 고유 작업 영역으로서, 모듈 내에서만 사용하는 변수 자료이다.

 

*모듈 작성시 주의 사항*

적절한 크기로 작성돠어야 하고 모듈의 내용이 다른 곳에 적용 가능하도록 표준화하여야 한다.

모듈간의 기능적 결합도를 최소화하고 모듈내에 요소들끼리의 응집도를 최대화하여야 한다.

자료의 추상화와 정보은닉의 성격을 갖도록 해여하며, 보기 좋고 이해하기 쉽게 작성해야 한다.

 

*모듈 명세서*

모듈 명세서란 모듈의 기능을 작성한 것으로서, 설계 구조도상의 각 모듈의 내용을 구체적으로 표현한다. 이러한 표현 방법으로는 모듈간의 인터페이스를 명세화하는 방법과 의사코드를 이용하여 명세화하는 방법이 있다.

1. 모듈 인터페이스의 기능 명세서 : 모듈의 기능을 정의하기 위해서 너무 많은 내용이나 너무 적은 내용을 최선의 절충안인 인터페이스 명세서를 작성하는 것이다.

2. 의사코드의 모듈 명세서 : 의사코드는 인터페이스 명세서보다 모듈을 보다 더 상세히 기술하는 방법으로서 무엇을 수행하는가? 로부터 어떻게 기능을 수행하는가? 에 대하여 나타낸다.

 

구조차트란 원활한 업무수행을 위하여 모듈을 상호 체계적으로 조직화시켜 알아보기 쉽게 그려놓은 도표를 말한다. 즉 구조차트는 주요 설계 결정사항 및 개념을 기록하는 모듈식 계층도로서, 모듈간의 기능 및 접속관계를 나타낸다. 구조차트는 다시 그 다음 부 단계의 입력사항이 된다. 따라서 구조차트는 상하 계층적인 방법으로 프로그램 구조를 표현한 도형으로, 프로그램 내의 각 요소들간의 관계를 표현하며, 구체적으로는 자료와 제어가 모듈간에 전달되는 과정을 표시한다. 떠라서 복잡한 시스템 구조를 표현하기 위해 구조적 설계에서 사용되는 주요 도구가 구조차트이다. 이러한 구조차트는 반복되는 서브시스템의 표현으로 처리절차는 최좌측 하위 레벨에서 우측으로 진행한다.