수달이네 기술 블로그

1. 소프트웨어 설계(설계, 소프트웨어 아키텍처) 본문

공부/정보처리기사

1. 소프트웨어 설계(설계, 소프트웨어 아키텍처)

슬픈 수달이 2026. 4. 30. 20:47

설계 모델링

요구사항 분석 → 필수 기능 정의 → 구체적인 구현방법 명시

원칙

  • 변경이 쉽도록 구조화
  • 필요한 자료만 사용하도록 규제
  • 모듈 단위로 분할
  • 계층적 구조

소프트웨어 설계 유형

유형 설명 구성요소
구조 모델링 • 컴포넌트의 유형, 인터페이스, 구조, 연결구조, 연결관계특성 모델링 프로시저, 데이터구조, 모듈, 파일 구조
행위 모델링 • 구성요소의 기능, 언제, 어떤 순서로 기능할지 모델링 입출력 데이터, 데이터 흐름, 데이터 변환, 데이터 저장

소프트웨어 설계 유형

유형 설명
자료구조 설계 • 자료구조로 변환하는 과정 설계
아키텍처 설계 • 소프트웨어 시스템 전체 구조, 컴포넌트간 관계 설계
인터페이스 설계 • 시스템 ↔ 사용자의 통신 방법 설계
프로시저 설계 • 모듈의 기능을 절차적 기술로 바꾸는 설계
협약에 의한 설계 • 클래스에 대한 여러 가정을 공유하도록 명세한 설계
• 선행조건: 컴포넌트의 오퍼레이션 사용 전에 참이 되어야할 조건
• 결과조건: 사용후 만족 되어야할 조건
• 불변조건: 오퍼레이션 실행동안 만족되어야 할 조건

소프트웨어 설계 원리

상향식 설계

  • 하위 기능부터 상위기능으로 접근
  • 인터페이스가 성립되어야 기능추가가 쉽다.(기존 컴포넌트 조합)

하향식 설계

  • 상위기능 부터 하위기능으로 접근
  • 레벨이 낮은 데이터 구조의 세부사항은 설계 초기부터 필요
  • 통합이 간단함.
  • 시스템 명세가 명확하거나 새로 개발할때 적합함.

코드 설계

데이터의 분류/조합을 쉽게 하기 위한 사물의 코드 설계(KR, EN…)

  • 표준화, 분류, 식별, 배열, 간소화, 연상, 암호화, 오류 검출

종류

종류 설명
연상코드 코드만 보고 대상을 연상할 수 있게 구성(나라이름:KR)
블록코드 공통성 있는 것 끼리 구분, 각 블록에서 일련번호 부여(전화번호)
순차코드 기준에 따라 순서대로 일련번호 부여(대기 번호)
표의 숫자코드 대상의 물리적 수치를 표시(ex: 길이-넓이-용량을 통한 코드 > 20-10-300)
십진코드 10진수 형태로 표현(바코드)
그룹 분류식 코드 대상을 기준에 따라 대분류, 중분류, 소분류로 구분해 번호 생성(학번)

코드 오류

  • 사본오류(오탈자), 전위오류(순서 바뀜), 생략오류(빼먹음), 첨가오류(더넣음), 이중전위오류(전위오류가 중복)

HIPO(Hierarchy Input Process Output)

하향식 개발 문서화 도구

  • 시스템 분석, 설계에 사용

종류

  • 가시적 도표: 전체 기능을 보여주는 계층 구조도
  • 총체적 도표: 입력, 처리, 출력의 정보를 제공하는 도표(프로그램 기능)
  • 세부적 도표: 총체적 도표에 표시된 기능을 구성하는 기본 요소들을 상세히 기술

소프트웨어 아키텍처

SW 구서용소, 구성요소의 특성, 구성요소 간의 관계를 표현

유스케이스 뷰: 유스케이스, 아키텍처를 도출 설계해 다른 뷰를 검증

  • 외부 행위자에 의해 인식되는 시스템의 기능 요구사항을 보여주는데 초점
  • 사용자, 설계자, 개발자, 테스트 관점

논리뷰: 시스템의 기능적 요구사항의 제공 내역을 설명

  • 설계자 개발자 관점

프로세스 뷰: 자원의 효율적 사용, 병행 실행, 비동기, 이벤트 처리 등을 표현

  • 개발자, 시스템 통합자 관점

구현 뷰: 개발 환경 안에서 정적인 소프트웨어 모듈의 구성을 보여줌

  • 컴포넌트 구조와 의존성을 보여주고, 컴포넌트의 부가적 정보를 정의

배포 뷰: 컴포넌트가 물리적 아키텍터에 어떻게 배치되는가 매핑

  • 시스템의 각 부분의 분산 형태, 설치에 초점

비용 평가 모델

SAAM(변경 용이성, 기능성) , ATAM(아키텍처 품질 속성), CBAM(경제적 의사결정)

소프트웨어 아키텍처 패턴**