[CISA 이론 정리 - 3장] 05 구조적 방법론

반응형
반응형

1. 등장 배경

① 쇼프트웨어 개발이 증가하면서 이른바 소프트웨어 위기가 발생하였다.

② 소프트웨어 위기(Software Crisis)란 기존 소프트웨어의 기능을 변경하거나 하나의 소프트웨어를 다른 소프트웨어의 기능과 연계하는 비용이 급증하는 현상이다.

③ 이러한 문제를 해결하기 위해 소프트웨어를 체계적이고 정량적인 접근법으로 개발하고 유지 보수하는 소프트웨어 공학(software engineering)이 등장하였다.

④ 소프트웨어 공학 분야가 개척되면서 초기에 등장한 개념이 바로 구조적 방법론이다.

⑤ 개념이 제시된 순서는 구조적 프로그래밍, 구조적 설계, 구조적 분석이다.




2. 구조적 프로그래밍(Structured programming)

① 구조적 프로그래밍의 핵심은 프로그램의 구획화(compartmentalization)이다.

② 즉 프로그램을 서브프로그램들로 구획하여 전체 구조를 수월하게 파악할 수 있게 한다.

③ 또한, 프로그램 품질과 소스 코드 가독성(readability)을 향상하여 생산성을 향상한다.

④ 이를 위해 프로그램을 ‘begin’으로 시작하여 ‘end’로 끝나는 블록(block) 구조, 즉 모듈 (module) 단위로 개발한다.

⑤ ‘goto’문을 사용하지 않고 반복(iteration)이 필요한 연산은 루프(loop) 안에 포함시킨다.



3. 구조적 설계(Structured design)

① 구조적 설계의 핵심은 프로그램을 계층 구조로 분할된 모듈들의 합으로 설계하는 것이다.

② 이렇게 하면 개발과 유지 보수 작업의 생산성이 향상될 뿐만 아니라 다른 모듈에 대한 프로그래머들의 지식이 제한되기 때문에 보안이 향상된다.

③ 잘 설계된 모듈은 모듈의 응집성은 높고 모듈간 결합성은 낮아야 한다.


응집성(Cohesiveness)

• 모듈을 구성하는 기능들이 논리적으로 상호 연관되어 있는 특성

• 서로 관련성이 없는 처리 기능들이 모듈에 포함되지 않아야 한다.


결합성(Coupling)

• 모듈과 모듈이 물리적 또는 논리적으로 상호 연관되어 있는 특성

• 모듈들은 상호 독립적으로 기능하며 상호 연동할 필요가 적다.



④ 구조적 설계에서는 다음과 같은 대표적인 기법이 사용된다.


구조도(Structure Chart)

• 시스템을 구성하는 모듈들을 계층 구조로 묘사한 그림

• 전체 시스템의 구성을 직관적으로 파악할 수 있게 도와 준다.


모듈 명세서(Module Specification)

• 유사 코드(Psudo-code)로 간략하게 작성한 소형 명세서

(유사 코드 사례)

 if b = 0 then, print “B cannot be 0.”;

 else c = a ÷ b and print c.

• 프로그래머들은 모듈 명세서를 근거로 할당된 모듈을 개발한다.



4. 구조적 분석(Structured analysis)

(1) 의의

① 구조적 분석은 시스템이 지원할 비즈니스 프로세스를 하향식(top down)으로 분할하고 시각적으로 표현한다.

② 대표적 기법에는 ERD(Entity Relation Diagram)와 DFD(Data Flow Diagram)가 있다.



(2) 배경도(Context diagram)

① 시스템을 최상위 수준에서 조망하는 다이어그램이다.

② 시스템 내부의 기본 구성 요소들과 시스템 외부의 요소들이 어떻게 상호 작용하는지 표현한다.

③ 배경도는 개발 대상 시스템의 경계선과 시스템 외부 요소들을 파악할 수 있게 도와준다.



(3) 개체 관계도(ERD: Entity Relationship Diagram)

① ERD는 데이터 객체 간 상호 관계를 표현하는 시각적 기법이다.

② 구조적 설계와 분석을 위한 도구와 기법은 굳이 구분하지 않는 경우가 많다.

③ 대신에 SADT(Structured Analysis and Design Techniques)로 통칭하기도 한다.

④ 예를 들어 ERD는 분석적 분석 및 설계 모두를 지원하는 기법이다.



(4) 데이터 흐름도(DFD: Data Flow Diagram)

① 특정 프로세스를 구성하는 하위 프로세스들 사이의 데이터 이동을 보여 주는 시각적 기법이다.

② DFD가 프로세스 간 관계를 보여 준다면, ERD는 데이터 객체들 간의 관계를 보여 준다.

③ 배경로부터 시작하여 시스템을 프로세스 단위로 하향 분할하면서 작성한다.

④ 최하위 프로세스 수준에서 작성된 DFD는 각 프로그래머가 개발할 모듈에 대응된다.

⑤ 따라서 프로그래머들은 모듈별 DFD와 모듈 명세서를 사용하여 프로그래밍하게 된다.



(5) 데이터 사전(Data Dictionary)

① 프로그램에서 사용되는 모든 데이터 항목의 표준 명칭, 의미, 형식, 길이, 용도, 원천 등을 정의한다.

② 이를 통해 서로 다른 모듈에서도 데이터 항목을 일관성 있게 표현하고 식별할 수 있다.

③ ERD, DFD, 미니 명세서 등을 작성하고 프로그램을 개발할 때 참조한다.




반응형

댓글

Designed by JB FACTORY