dahliahye 님의 블로그

[정보처리기사] 실기_ 소프트웨어 구축_소프트웨어 설계 본문

자격증/정보처리기사

[정보처리기사] 실기_ 소프트웨어 구축_소프트웨어 설계

dahliahye 2026. 3. 13. 16:58

소프트웨어 구축- 소프트웨어 설계 

1. 소프트웨어 설계의 기본 원칙 

 

1) 소프트 웨어의 설계 

요구사항 명세서를 바탕으로 소프트웨어가 실제 구현될 수 있도록 구체적이 설계서를 작성하는 단계 

소프트웨어의 전반적인 구조와 내부적인 구현 방법이 포함된다. 

2) 소프트웨어 설계의 종류 

  • 상위 설계 :  아키텍쳐 설계 - 데이터 설계 - 인터페이스 정의 - 사용자 인터페이스 설계  

      아키텍쳐 설계:    시스템의 전체적인 구조 정의 

      데이터 설계:       시스템에 필요한 정보와 데이터베이스 구조 설계 

      인퍼페이스 정의: 시스템의 구조 및 서브시스템 간의 인터페이스 정의 

      사용자 인터페이스 설계 : 사용자 편의를 고려하여 사용자와 상호작용 하는 인터페이스 설계 

 

  • 하위 설계:   모듈 설계 - 자료구조 설계 - 알고리즘 설계   

       모듈 설계:  각 모듈의 내부를 명세하고, 이를 알고리즘으로 구체화   

       자료구조 설계:  데이터 저장 구조와 변수 등 상세 정보 설계 

       알고리즘 설계:  처리 절차와 알고리즘을 설계하여 업무 구현  

 

3)  소프트웨어 설계의 원리 

  1. 분할과 정복( Divide & Conquer) 

      큰 소프트웨어를 여러 작은 서브시스템으로 나누어 개발 하는 방법

   

  2. 추상화 (Abstraction) 

     복잡한 상황을 간단하고 핵심적인 요소로 단순화 하여, 이해하기 쉽게 표현 

     

     <추상화 기법> 

     과정 추상화: 상위 수준에서 수행 흐름만 설계

     데이터 추상화: 복잡한 데이터 구조를 단순하게 표현 

     제어 추상화: 명령어 들을 단순화 하여 표현 

 

3. 단계적 분해 (Stepwise Refinement) 

    - 기능을 점진적으로 세분화 하여 단계별로 나누어 설계 

 

4. 모듈화 (Modulization) 

    시스템을 독립적으로 개발 가능한 모듈로 분리, 모듈을 독립적으로 개발, 테스트, 유지보수 할 수 있도록 함. 

 

5. 정보 은닉 (Information Hiding) 

    객체가 내부 정보를 외부에 노출하지 않도록 접근을 제한하여 데이터의 기능을 보호 한다. 

    캡슐화와 밀접 연관 

 

6. 결합도와 응집도 

    좋은 설계는 결합도를 낮추고, 응집도를 높여 모듈간의 독립성과 기능의 집중성을 유지 

 

 

2. 설계 모델링 

  1) 설계 모델링의 개념 

     - 소프트웨어의 구조와 기능을 그래픽적으로 표현, 공통된 이해를 촉진한다. 

     - 개발 과정을 체계적으로 계획 하는 단계 

  

 2) 설계 모델링의 원칙

    - 변경이 용이 하도록 구조화 해야 한다.  

    - 특정 기능 수행에 필요한 자료만을 사용하여 효율성을 높임. 

    - 요구사항 분석 결과를 기반으로 설계를 명확하게 표현 

    - 시스템을 모듈 단위로 나누어 독립적이고 체계적으로 설계 

 

3) 설계 모델링의 유형

  

   1. 구조 모델링 

      - 시스템의 구성요소와 그 사이의 구조적 관계를 모델링 

      - UML 정적 다이어그램을 사용하여 시스템의 정적 구조 표현    

   2. 행위 모델링 

     - 소프트웨어 구성요소의 기능 수행 순서와 방 식을 모델링, 동적 행동을 명확히함.  

     - UML 동적 다이어그램을 사용, 구성 요소간의 동적 상호작용을 표현 

 

 4) 소프트웨어 설계 절차 및 유형 

 

     - 아키텍쳐 설계: 

       시스템의 전체 구조와 서브시스템 간의 관계 

     - 데이터베이스 설계:

       시스템에서 사용하는 데이터 구조 설계, 관리의 일관성 확보

     - 서브시스템 설계:

       각 서브시스템의 기능과 제약사항을 명세, 기능을 독립적, 명확하게 정의함.  

     - 컴포넌트 설계:

       각 기능을 수행하는 컴포넌트를 설계하고, 컴포넌트 인터페이스를 명확하게 정의 

     - 자료구조와 알고리즘 설계:

       데이터 저장 방식, 기본 연산 방법을 설계-> 데이터 처리 효율성 높임 

     - 협약에 의한 설계:

       클래스에 대해 조건을 명세, 시스템의 안정성 유지 

         * 선행 조건: 컴포넌트 오퍼레이션 사용 전에 반드시 참이 되어야 하는 조건 

         * 결과 조건: 오퍼레이션 사용 후 만족 해야 하는 조건 

         * 불변 조건: 오퍼레이션이 실행 되는 동안 항상 만족 하는 조건