본문 바로가기
국가 자격증

(정보처리기사)소프트웨어공학 '전통적 개발 방법론'의 설계 단계 공부 내용 정리

by JNLC 2024. 1. 31.

지난 시간은 정보처리기사필기 과목 중 하나인 소프트웨어공학의 '전통적 개발 방법론'에서 요구사항 분석 단계를 공부한 내용을 정리했고, 이번 시간은 요구사항 분석 다음 단계인 설계 단계에 대해 공부한 내용을 정리하겠습니다. 저는 유튜브 무료 강의를 통해 공부하고 있습니다.

 

유튜브 무료 인강 링크
기사친구_정보처리기사 [제4과목 소프트웨어공학-04강] 전통적 개발 방법론-설계

 

저는 기사친구 무료인강을 통해 사무자동화 산업기사 시험을 한번에 통과하여 사무자동화 산업기사 자격증을 획득하고 이를 통해 정보통신기술자수첩 초급을 발급받을 수 있었습니다. 그리고 이번에는 정보통신기술자수첩 중급을 발급받기 위해 정보처리기사 자격증을 획득하려고 합니다. 이번에도 무료 인강만 듣고 기출문제집으로 마무리하려고 합니다.

 

소프트웨어공학 설계 단계 썸네일

 

목차

     

    정보처리기사필기 : 소프트웨어공학 - 전통적 개발 방법론 - 설계

     

    소프트웨어공학 과목에서 전통적 개발 방법론의 설계 단계에 대해 공부한 내용을 정리해 보겠습니다.

     

    설계에 대한 핵심 포인트 정리한 이미지
    설계, 구성, 추상화 기법, 제어 계층 구조 용어

     

    (1) 설계 (Design)

    1. 요구사항 분석 단계의 산출물인 요구사항 분석 명세서의 기능이 실현되도록 알고리즘과 그 알고리즘에 의해 처리될 자료 구조를 문서화 하는 것
    2. 소프트웨어 설계 모형
      1. 구성 : 데이터 설계 - 아키텍처 설계 - 인터페이스 설계 - 절차 설계
        • 데이터 설계 : 요구사항 분석 단계에서 생성된 정보를 소프트웨어로 구현하는데 필요한 자료 구조로 변환
        • 아키텍처 설계 : 소프트웨어를 구성하는 모듈 간의 관계와 프로그램 구조를 정의
        • 인터페이스 설계 : 소프트웨어와 상호 작용하는 시스템. 사용자 등과 어떻게 통신하는지 기술
        • 절차 설계 : 모듈이 수행할 기능을 절차적 기술로 바꾸는 것
      2. 설계 모형의 구조도

    설계 모형 구조도 이미지
    설계 모형의 구조도

     

    3. 소프트웨어 설계에 사용되는 대표적인 3가지 추상화 기법

    1. 제어추상화 : 제어의 정확한 메커니즘을 정의하지 않고 원하는 효과를 정하는 데 이용하는 방법
    2. 기능추상화 : 입력 자료를 출력자료로 변환하는 과정을 추상화하는 방법
    3. 자료추상화 : 자료와 자료에 적용될 수 있는 기능을 함께 정의함으로써 자료 객체를 구성하는 방법

    4. 프로그램 구조 (Program Structure)

    1. 소프트웨어의 구성 요소인 모듈의 계층적 구성을 나타내는 것으로, 제어 계층 구조라고도 함
    2. 프로그램의 순서, 선택, 반복과 같은 소프트웨어의 절차적인 처리 과정을 나타내지 않음
    3. 프로그램 구조는 일반적으로 트리 구조의 다이어그램으로 표기 (사각형은 모듈을 나타냄)

    프로그램 구조 : 트리 구조의 다이어그램
    프로그램 구조 : 트리 구조의 다이어그램

    • 프로그램 구조에서 사용되는 용어
    용어 설명
    Fan-in
    (공유도, 팬-입력)
    - 얼마나 많은 모듈이 주어진 모듈을 호출(제어)하는가를 나타냄
    - 주어진 한 모듈을 호출(제어)하는 상위 모듈 수
    Fan-out
    (공유도, 팬-출력)
    - 어떤 모듈에 의해 호출(제어)되는 모듈의 수
    - 주어진 한 모듈이 호출(제어)하는 하위 모듈 수
    깊이(Depth) - 최상위 모듈에서 주어진 모듈까지의 깊이
    넓이(Width) - 같은 등급(level)의 모듈 수
    주종적 모듈
    (Superordinate)
    - 다른 모듈을 제어(호출)하는 모듈
    종속적 모듈
    (Subordinate)
    - 어떤 모듈에 의해 제어(호출)되는 모듈

     

    • 바람직한 설계의 특징 ( = 좋은 설계에 대한 기준)
      1. 설계는 모듈적이어야 함
        • (독립적인 기능적 특성을 가진 요소(모듈)로 구성되어야 함)
      2. 설계는 자료와 프로시저에 대한 분명하고 분리된 표현을 포함해야 함
      3. 소프트웨어 요소(모듈)들 간의 효과적인 제어를 위해 설계에서 계층적 조직이 제시되어야 함
      4. 소프트웨어는 논리적으로 특별한 기능과 부기능을 수행하는 요소들로 나누어져야 함

     

    모듈화 핵심 포인트를 정리한 이미지
    모듈화 핵심 포인트

     

    (2) 모듈화 (Modularity)

    1. 모듈과 모듈화
      1. 모듈(Module)
        • 소프트웨어를 각 기능별로 분할한 것
        • 소프트웨어 구조를 이루는 기본 단위
      2. 모듈화(Modularity)
        • 소프트웨어를 각 기능별로 분할하는 것
    2. 모듈화 장점
      • 융통성, 경제성, 확장성
    3. 모듈의 기능적 독립성
      1. 소프트웨어를 구성하는 각 모듈의 기능이 독립됨을 의미
      2. 기능적으로 독립된 모듈은 특정 기능을 수행하고, 다른 모듈과는 간단한 인터페이스만을 가지므로 개발이 쉽고 재사용이 가능함
      3. 독립성이 높은 모듈일수록 모듈을 수정하더라도 다른 모듈들에게는 거의 영향을 미치지 않으며, 오류가 발생해도 쉽게 발견할 수 있고 해결할 수 있음
      4. 모듈의 독립성은 결합도(Coupling)와 응집도(Cohesion)에 의해 측정되며, 독립성을 높이려면 모듈의 결합도를 약하게 하고 응집도를 강하게 하며 모듈의 크기를 작게 만들어야 함
      5. 결합도와 응집도는 소프트웨어 설계 시 평가 지침이 됨
    4. 결합도
      1. 결합도 (Coupling)
        • 두 모듈 간의 상호 의존도를 나타낸 것
        • 한 모듈과 다른 모듈 간의 상호 의존도 또는 두 모듈 사이의 연관 관계
        • 독립적인 모듈이 되기 위해서는 각 모듈간의 결합도가 약해야 하며, 의존하는 모듈이 적어야 함
      2. 결합도의 종류
        • 결합 정도에 따른 순서 (강한 순서순 : 내용 결합도가 가장 강함) (내·공·외·제·스·자)
          • 내용 결합도→공통(공유) 결합도 →외부 결합도 →제어 결합도 →스탬프 결합도 →데이터 결합도
        • 데이터 결합도 (Data Coupling)
          • 모듈 간의 인터페이스가 자료 요소로만 구성된 경우
          • 모듈이 파라미터나 인수로 다른 모듈에게 데이터를 넘겨주고, 호출받은 모듈은 받은 데이터에 대한 처리 결과를 다시 돌려주는 유형의 모듈 결합도
        • 스탬프 결합도 (Stamp Coupling)
          • 두 모듈이 동일한 자료 구조를 조회하는 경우의 결합도
          • 모듈 간의 인터페이스로 자료 구조(배열이나 레코드 등)가 전달된 경우
          • 자료 구조의 어떠한 변화(포맷이나 구조의 변화)는 그것을 조회하는 모든 모듈 및 변화되는 필드를 실제로 조회하지 않는 모듈에까지 영향을 미치게 되는 결합도
        • 제어 결합도 (Control Coupling)
          • 한 모듈에서 다른 모듈로 논리적인 흐름을 제어하는 데 사용되는 제어 요소가 전달될 때의 결합도
        • 외부 결합도 (External Coupling)
          • 어떤 모듈에서 외부로 선언한 데이터(변수)를 다른 모듈에서 참조할 때의 결합도
        • 공통(공유) 결합도 (Common Coupling)
          • 한 모듈이 다른 모듈에게 제어 요소를 전달하고, 여러 모듈이 공통 자료 영역을 사용하는 경우
        • 내용 결합도 (Content Coupling)
          • 한 모듈이 다른 모듈의 내용(내부 기능 및 그 내부 자료)을 참조하는 경우 내용 결합이라고 함
          • 한 모듈이 다른 모듈의 일부분을 참조 또는 수정하는 경우
    5. 응집도
      1. 응집도(Cohesion) : 모듈 안의 요소들이 서로 관련되어 있는 정도
      2. 응집도의 종류
        • 응집 정도에 따른 순서(강한 순서순 : 기능적 응집도가 가장 강함)(기·순·교·절·시·논·우)
        • 기능적 응집도 (Functional Cohesion)
          • 모듈 내부의 모든 기능 요소들이 단일 문제와 연관되어 수행될 경우의 응집도
        • 순차적 응집도 (Sequential Cohesion)
          • 한 모듈 내부의 한 기능 요소에 의한 출력 자료가 다음 기능 원소의 입력 자료로서 제공되는 형태
        • 교환(통신)적 응집도 (Communication Cohesion)
          • 동일한 입력과 출력을 사용하는 소작업들이 모인 모듈에서 볼 수 있음
        • 절차적 응집도 (Procedural Cohesion)
          • 모듈 내부의 요소들이 여러 관련 기능이 있을 경우 순차적으로 수행할 경우의 응집도
        • 시간적 응집도 (Temporal Cohesion)
          • 특정 시간에 처리되는 몇 개의 기능을 모아 하나의 모듈로 작성 할 경우의 응집도
        • 논리적 응집도 (Logical Cohesion)
          • 사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들로 하나의 모듈이 형성되는 경우의 응집도
        • 우연적 응집도 (Coincidental Cohesion)
          • 모듈 내부의 각 구성 요소들이 서로 관련 없는 요소로만 구성된 경우의 응집도
    6. 효과적인 모듈화 설계 방안
      1. 응집도는 강하고, 결합도는 약해야 함
      2. 복잡도와 중복을 피해야 함
      3. 모듈의 기능은 예측이 가능해야 하며, 지나치게 제한적이어서는 안 됨
      4. 유지보수가 용이해야 함

     

    설계 방법에 대한 핵심 포인트를 정리한 이미지
    설계 방법 핵심 요약

     

    (3) 설계 방법

    1. 데이터(자료) 설계
      1. 데이터 설계는 설계의 첫 번째 작업으로, 요구 사항 분석에서 생성된 여러 모델들을 소프트웨어를 구현하는 데 필요한 자료 구조로 변환하는 것
      2. 자료 구조가 프로그램 구조와 절차적 복잡성에 영향을 주므로 자료 설계는 소프트웨어 품질에 큰 영향을 줌
    2. 아키텍처(구조) 설계
      1. 아키텍처 설계는 프로그램의 구조를 개발하고, 소프트웨어 구성 요소들 간의 관계를 정의하는 것
      2. 구조적(자료 흐름 중심) 설계 절차
        • 정보 흐름의 유형을 설정
        • 흐름의 경계를 표시
        • 자료 흐름도를 프로그램 구조로 사상
        • 제어 계층을 분해(Factoriong)시켜서 정의
        • 경험적 방법으로 구체화
    3. 인터페이스 설계
      1. 인터페이스 설계는 소프트웨어와 상호 작용하는 시스템, 사용자 등과 어떻게 통신하는 지를 기술하는 과정임
      2. 사용자 인터페이스 설계 시 오류 메시지나 경고에 관한 지침
        • 메시지는 이해하기 쉬어야 함
        • 오류로부터 회복을 위한 구체적인 설명이 제공되어야 함
        • 소리나 색 등을 이용하여 듣거나 보기 쉽게 의미 전달을 하도록 해야 함
    4. 절차(프로시저) 설계
      1. 절차(프로시저) 설계는 데이터 설계, 아키텍처 설계, 인터페이스 설계가 이루어진 후에 수행되는 설계 작업으로 모듈이 수행할 기능을 절차적 기술로 바꾸는 것
      2. 데이터 설계, 아키텍처 설계, 인터페이스 설계를 바탕으로 실제 운영되는 소프트웨어로 변환하기 위해 코드에 가까운 추상화 수준의 모듈 명세서를 작성하는 것
      3. N-S 차트 (Nassi-Schneiderman Chart. 나씨-슈나이더만 도표)
        • 구조적 프로그램을 표현하기 위해 고안됨
        • 논리의 기술에 중점을 둔 도형식 표현 방법
        • 조건이 복합되어 있는 곳의 처리를 시각적으로 명확히 식별하는 데 적합함
        • 알고리즘의 제어 구조는 아래의 3가지로 충분히 표현될 수 있음
          • 반복 (Repeat~until, While, for)
          • 연속(순차) (Sequential)
          • 선택, 다중선택 (if~than~else, Case)

     

    정보통신기술자 수첩 인정 기준 알아 보기 링크
    한국정보통신공사협회 자격 기준

    댓글