본문 바로가기

카테고리 없음

구조적 설계의 개념

설계란 시스템 개발단계에서 분석과 구현의 중간단계로서 시스템의 품질, 신뢰도, 융통성, 유지 보수성 등의 시스템 특성을 확립시키는 갓이다. 따라서 구조적 설계기법은 분석과정에서 모형화된 자료흐름도를 기초로 변환 분석과 거래분석을 하여 계층 구조형 시스템으로 설계하는 기법이다. 이때 시스템 설계의 모형화는 설계 구조도를 이용하여 모듈간의 결합 형태를 설명하게 되며, 결합력, 응집력 등의 적용기법을 적용하여 시스템 모듈 구성을 개선할 수 있는 모형화 도구의 설계 지침을 제공하는 자료흐름 중심형 설계기법이다.

 

구조적 설계란 시스템의 구성요소들과 그 구성요소들 상호관계를 최선의 방법으로 설계하는 것이다. 즉 구조적 설계는 소프트웨어의 기능과 프로그램 구조, 모듈을 설계하기 의한 전략, 평가 지침, 문서화 도구를 제공하는 체계화된 설계 기법이다. 이와 같이 구조적 설계는 효율적인 시스템 개발을 위한 설계 기법으로 효율적인 시스템은 이해와 개발을 용이하게 하고, 고도의 신뢰성을 지닌 특성을 갖추고 있어야 한다. 따라서 구조적 설계는 다음과 같은 목표를 가지고 설계되어야 한다.

구조적 설계의 궁극적인 목표는 저렴한 비용으로 시스템을 개발하는 것이다.

1. 동작이 잘 되어야하며 이해하기 쉽다.

2. 신뢰성이 높으며 유연하고 수명이 길다.

3. 점차적으로 개발될 수 있으며 효율적인 운용을 할 수 있다.

 

구조적 설계는 종래의 시스템 설계의 실패를 교훈 삼아 컴퓨터 시스템 설계의 다섯 가지 접근 방식을 제시할 수 있다.

시스템의 요구사항이 무엇인지를 충분히 인식한 후 문제를 어떻게 해결할 것인지를 결정한다.

대형시스템의 복잡성을 극복하기 위하여 분할과 계층구조를 사용한다.

시스템을 블랙박스로 분할하고 블랙박스를 계층구조로 조직화한다.

 

시스템 이해하기 쉽도록 그래픽 도구를 사용한다.

1. 구조차트 - 분할된 모듈들을 계층구도로 조직화하고, 또 그 모듈들이 상호 의사소통을 표시할 뿐만 아니라 프로그램의 구조를 문서화한 그래픽 도구이다.

2. 의사코드 - 프로그램작성에 앞서 특별한 기계나 언어에 관계없이 프로그래머의 생각을 조직화하는데 사용되는 매우 유연한 프로그래밍 언어이다. 또한 구조적 설계의 중요한 도구로 구조차트상의 블랙박스 내부절차를 표현하는데 사용된다.

 

잘 정의된 분석 명세서로부터 설계의 답을 유도할 수 있는 일련의 전략을 제공한다.

1. 변환분석 - 균형 잡힌 시스템을 설계하기 위한 방안으로 입력자료를 적절한 처리를 통해 출력 정보로 만들어내는 변형 과정으로 표현한다.

2. 거래분석 - 자료흐름도상의 거래에 해당하는 부분을 찾아서 그 거래 중심에 따라 여러 가지 작업으로의 동작 경로를 발생하는 과정으로 표현한다.

 

변환 분석과 거래 분석을 통해 작성된 설계도가 어느 정도 우수성을 갖는지를 평가하는 단계이다. 즉 여러 개의 설계 대안을 마련해두고 좋은 설계도를 선택하는 것으로 응집도와 결합도는 가장 대표적인 설계 평가 방법이다. 따라서 제어폭과 공유도 등 많은 평가 기준으로 프로그램 구현에 가장 적절한 효율적인 설계도를 결정한다.

 

*구현을 위한 준비*

구현단계를 위해 정리작업을 한다.

논리적인 프로그램을 물리적인 단위로 분리하는 준비작업을 실행한다.

설계 전 정리 작업은 하드웨어와 처리방법, 실행주기에 관한 범위를 결정하는 작업을 한다.

설계 후 정리 작업은 모듈과 모듈간의 인터페이스 방벙에 관해서 결정하는 작업을 한다.

 

구조적 설계 방법론의 기본 원리는 추상화의 원리, 분할과 통치의 개념, 계층적 순서의 개념 즉, 크고 복잡한 프로그램을 여러 개의 작은 서브프로그램으로 나누고, 각 서브프로그램은 다시 더 작은 여러 개의 서브프로그램으로 나누어 개발하는 방법이다. 따라서 그 대표적인 설계 방법으로는 하향식 구조적 설계, 잭슨 설계방법, 워니어-오 방법, 요든의 구조적 방법 등이 있다. 이들은 모두가 기능적 분해 과정을 설계 기술에 응용하고 있다.

 

*하향식 설계 방법*

하향식 설계 방법은 가장 비정형적 설계 기법인데, 이 방법은 처음에 전반적인 시스템이 어떤 일을 하는가를 정의한 후, 점검 기능을 세분화시켜 전체 기능을 부분 기능의 집합으로 분리한 후, 이러한 과정을 각 부분 기능에 다시 적용하여 프로그램 코드로 변환이 가능할 때까지 분해한다.

 

*요든의 구조적 설계 기법*

요든의 구조적 설계 기법은 설계기법과 구현 및 그래픽 문서화 기법등을 조합한 방법이다. 이 기법은 하향식 설계 기법을 개량시킨 것으로 설계 과정을 좀 더 조직화하고, 설계 결과의 타당성을 측정할 수 있는 지침을 가지고 있다. 구조적 설계를 하면 그 결과로 프로시저 요소와 그들의 계층구조 및 그들을 연결하는 데이터들을 보여 주는 구조도가 산출된다.

 

*잭슨의 설계 기법*

잭은의 설계 기법 역시 하향식 설계 기법을 개량한 것이다. 따라서 잭슨의 설계 기법은 자료구조 지향기법으로 자료의 기본적인 특성을 토대로 하여 프로그램의 구조를 유도하며, 기능 지향 기법과 객체지향기법의 중간과정의 방법이다.

 

*워니오-오 설계 기법*

워니어-오 설계 기법 역시 자료 중심의 설계 기법이지만, 잭슨 기법과의 주된 차이는, 잭슨 설계 기법은 입 출력 데이터구조를 모두 묶어서 프로그램 구조를 생성해 낸다는데 반해, 워니어-오 기법에서는 출력 데이터에서 입력 데이터와 프로그램 구조를 생성해 낸다는 점이다. 따라서 설계란 전체 개발 주기의 관점에서 보면 분석과 구현의 중간 단계로서 분석단계에서의 산출물을 이용하여 설계 명세서를 만들어 내는 과정이다. 또한 설계를 잘못한 소프트웨어 체계의 특징을 살펴보면 다음과 같다.

1. 시스템을 작성 코드량에 의해 관리하기 때문에 관리하기가 곤란하다.

2. 다른 공학과 비교하여 볼 때 전문적이고 원리적인 기술 및 기법이 거의 존재하지 않으므로 작업의 만족도가 결여된다.

3. 전체시스템 개발의 반 이상을 테스트 및 오류 수정에 소비하게 되어 비생산적이다.

4. 명백한 이유 없이 동작이 불가능하거나 오류 발생 부분에 대한 암시도 없이 틀린 결과를 출력함으로서 신뢰성이 부족하게 된다.

5. 시스템의 수정에 많은 비용이 소요되어 유지 보수하기가 곤란하다.

6. 미래의 시스템 변화에 대한 적응이 곤란하며 융통성이 결여된다.

7. 완성된 시스템 운용시 비효율성의 문제가 발생한다.