본문 바로가기
정보처리기사/소프트웨어 설계

소프트웨어 설계 모델링 (1)

by jhwannabe 2023. 7. 8.

소프트웨어의 설계(Design)

소프트웨어 설계 모델링

  • 정의 : 요구사항(기능, 성능)을 만족하는 소프트웨어의 내부 구조 및 동적 행위들을 모델링하여 표현하고, 분석, 검증하는 과정이며 이 과정에서 만들어지는 산출물을 의미
  • 목적 : "무엇을(What)"으로부터 "어떻게(How)"로 관점을 전환하면서 최종 제작할 소프트웨어의 청사진을 만드는 것을 의미

소프트웨어 설계

  • 본격적인 프로그램의 구현에 들어가기 전에 소프트웨어를 구성하는 뼈대를 정의해 구현의 기반을 만드는 것을 의미하며 상위 설계(High-Level Design)와 하위 설계로 구분됨

설계의 기본 원리

  • 분할과 정복, 추상화, 단계적 분해, 모듈화, 정보 은닉

소프트웨어 설계 분류

상위 설계(High-Level Design)

  • 아키텍처 설계(Arichitecture Design), 예비 설계(Preliminary Design)라고 하며 저네 골조(뼈대)를 세우는 단계
  • 아키텍처(구조) 설계 : 시스템의 전체적인 구조
  • 데이터 설계 : 시스템에 필요한 정보를 자료 구조/ 데이터베이스 설계에 반영
  • 시스템 분할 : 전체 시스템을 여러 개의 서브 시스템으로 분리
  • 인터페이스 설계 : 시스템의 구조와 서브 시스템들 사이의 관계
  • 사용자 인터페이스 설계 : 사용자와 시스템의 관계

하위 설계(Low-Level Design)

  • 모듈 설계(Module Design), 상세 설계(Detail Design)라고 며, 시스템 각 구성 요소들의 내부 구조, 동적 행위 등을 결정하여 각 구성 요소의 제어와 데이터 간의 연결에 대한 구체적인 정의를 하는 단계
  • 하위 설계 방법 : 절차 기반(Procedure-Oriented), 자료 위주(Data-Oriented), 객체지향(Object-Oriented) 설계 방법

모듈(Module)이 되기 위한 주요 특징

  • 다른 것들과 구별될 수 있는 독립적인 기능을 가진 단위(Unit)
  • 독립적인 컴파일이 가능해야 하고, 유일한 이름을 가져야 함
  • 다른 모듈에서의 접근이 가능해야 함

소프트웨어 설계 대상

구분 설명
구조 모델링 - SW를 구성하는 컴포넌트의 유형, 인터페이스, 내부 설계 구조 등 구조의 상호 연결 등의 구조를 모델링하는 것
- 구성 요소에는 프로시저, 데이터 구조, 모듈 파일 구조 등이 있음
- 구성 요소들의 연결 구조, 포함 관계를 시스템 구조라 함
행위 모델링 - 소프트웨어의 구성 요소 기능과 구성 요소들이 언제, 어떤 순서로 기능을 수행하고 상호작용하는지를 모델링하는 것
- 시스템 각 구성 요소들의 기능적인 특성을 모델링하는 것
- 입출력 데이터, 데이터의 흐름과 변환, 데이터의 저장, 실행 경로, 상태 전이, 이벤트 발생 순서 등이 행위 모형화에 속함

소프트웨어 설계 방법

구분 설명
구조적 설계 - 기능적 관점으로 소프트웨어에 요구된 기능이나 자료 처리 과정, 알고리즘 등을 중심으로 시스템을 나눠 설계하는 방식
- 시스템의 각 모듈은 최상위 기능에서 하위 기능으로 하향적으로 세분화함
- Coad / Yourdon
자료 중심 설계 - 입출력 자료의 구조를 파악하여 소프트웨어 자료 구조를 설계하는 방식
- Jackson Warner-Orr
객체지향 설계 - 자료와 자료에 적용될 기능을 함께 묶어 추상화하는 개념
- 시스템은 객체로 구성됨
- Yourdon, Sheller/Meller, Rumbaugh, Booch

소프트웨어 구조도

  • 소프트웨어의 구성 요소인 모듈 간의 계층적 구성을 나타낸 것
  • 프로그램 구조에서 사용되는 용어
Fan-in 주어진 한 모듈을 제어하는 상위 모듈 수
Fan-out 주어진 한 모듈을 제어하는 하위 모듈 수
Depth 최상위 모듈에서 주어진 모듈까지의 깊이
Width 같은 등급(Level)의 모듈 수
Super ordinate 다른 모듈을 제어하는 모듈
Subordinate 어떤 모듈에 의해 제어되는 모듈
    예) 모듈 F에서의 Fain-in : 3, Fan-out : 2

  • Fain-in / Fan-out을 분석하면 시스템 복잡도 파악이 가능
Fan-in이 높은 경우 - 재사용 측면에서 잘된 설계로 볼 수 있음
- 시스템 구성 요소 중 일부가 동작하지 않으면 시스템이 중단되는 단일 장애 발생 가능성이 있음
- 단일 장애 발생을 방지하기 위해 중점 관리가 필요함
Fan-out이 높은 경우 - 불필요한 타 모듈의 호출 여부를 확인
- Fan-out을 단순하게 설계할 수 있는지 검토함
  • 복잡도 최적화를 위한 조건 : Fan-in은 높이고 Fan-out은 낮추도록 설계함

 

코드 설계의 개요

코드 설계

  • 데이터의 사용 목적에 따라서 식별하고 분류, 배열하기 위하여 사용하는 숫자, 문자 혹은 기호를 코드라고 함
  • 대량의 자료를 구별, 동질의 그룹으로 분류하고 순번으로 나열하며, 특정의 자료를 선별하거나 추출을 쉽게 하여 파일 시스템을 체계화한 것을 코드 설계라 함
  • 코드 설계 순서
    1. 코드 대상 선정
    2. 코드화 목적 명확화
    3. 코드 부여 대상 수 확인
    4. 사용 범위 결정
    5. 사용 기간 설정
    6. 코드화 대상의 특성 분석
    7. 코드 부여 방식 결정
    8. 코드의 문서화

코드의 기능

코드의
기본적 기능
코드의
3대 기능
코드의
부가적 기능
- 표준화 기능
- 간소화 기능
- 분류 기능
- 식별 기능
- 배열 기능
- 연상 기능
- 암호화 기능
- 오류 검출 기능

코드 설계 목적 및 특성

목적 특성
고유성 코드는 그 뜻이 1:1로 확실히 대응할 수 있어야 함
분류 편리성 목적에 적합한 분류가 가능해야 함
배열의 효율성 바람직한 배열을 얻을 수 있어야 함
간결성 짧고 간결 명로해야 함
유지보수 편리성 유지 관리가 쉬워야 함
코드의 독립성 다른 코드 체계와 중복되지 않아야 함
코드의 편의성 이해가 쉽고, 사용하는데 편리해야 함
추가 삭제 편리성 추가와 삭제가 편리해야 함

코드 설계 시 고려사항

기계 처리의 적합성 컴퓨터의 처리에 적합하게 함
사용의 편리성 취급하기 쉽게 함
코드의 공통성 공통성이 있도록 함
코드의 체계성 체계적이어야 함
코드의 유연성 확장성이 있어야 함

 

코드의 종류

순차 코드(Sequence Code)

  • 코드화 대상 항목을 어떤 일정한 배열로 일련번호를 배당하는 코드로 확장성이 좋으며, 단순해서 이해하기 쉽고, 기억하기 쉬움
  • 항목 수가 적고, 변경이 적은 자료에 적합하며, 일정 순서대로 코드를 할당하므로 기억 공간 낭비가 적음
  • 누락된 번호를 삽입하기 어렵고 명확한 분류 기준이 없어 코드에 따라 분류가 어려워 융통성이 낮음

블록 코드(Block Code, 구분 코드)

  • 코드화 대상 항목에 미리 공통의 특성에 따라서 임의의 크기를 블록으로 구분하여 각 블록 안에서 일련번호를 배정하는 코드
  • 기계 처리가 어렵고 블록마다 여유 코드를 두어 코드의 추가를 쉽게 할 수 있지만, 여유 코드는 코드 낭비 요인이 됨

그룹 분류식 코드(Group Classification Code)

  • 코드화 대상 항목을 소정의 기준에 따라 대분류, 중분류, 소분류로 구분하고 순서대로 번호를 부여하는 코드
  • 분류 기준이 명확한 경우 이용도가 높으며 기계처리에 가장 적합함
  • 여유 부분이 있어 자료 추가를 쉽게 처리할 수 있으나 자릿수가 길어질 수 있음

10진 분류 코드(Decimal Code)

  • 좌측 부는 그룹 분류에 따르고 우측은 10진수의 원칙에 따라 세분화하는 코드
  • 무한하게 확대할 수 있어 대량의 자료에 대한 삽입 및 추가가 쉬움
  • 자릿수가 많아지고 기계 처리에 불편하지만, 배열이나 집계가 쉬움
  • 주로 도서 분류 코드에 사용됨
코드 의미
100 국문학
200 철학
300 정보학

표의 숫자 코드(Significant Digit Code, 유효 숫자 코드)

  • 코드화 대상 항목의 길이, 넓이, 부피, 무게 등을 나타내는 문자나 숫자, 기호를 그대로 사용하는 코드
  • 코드의 추가 및 삭제가 쉬움
  • 같은 코드를 반복 사용하므로 오류가 적음
코드 의미
127-890-1245 두께 127mm, 폭 890mm, 길이 1,245mm의 강판

연상 코드(Mnemonic Code, 기호 코드)

  • 코드화 대상의 품목 명칭 일부를 약호 형태로 코드 속에 넣어 대상 항목을 쉽게 알 수 있는 코드
코드 의미
TV-39-C TV 39인치 컬러

코드의 오류 종류

오류 의미
필사 오류
(Transcription Error)
입력 시 한 자리를 잘못 기록하는 오류 1234 → 1237
전위 오류
(Transposition Error)
입력 시 좌우 자리를 바꾸어 발생하는 오류 1234 → 1243
이중 오류
(Double Transposition Error)
전위 오류가 두 개 이상 발생하는 오류 1234 → 2143
생략 오류
(Missing Error)
입력 시 한 자리를 빼고 기록하는 오류 1234 → 123
추가 오류
(Addition Error)
입력 시 한 자리를 추가해서 기록하는 오류 1234 → 12345
임의 오류
(Random Error)
두 가지 이상의 오류가 결합해서 발생하는 오류 1234 → 21345

 

728x90
반응형

'정보처리기사 > 소프트웨어 설계' 카테고리의 다른 글

모듈  (0) 2023.07.08
소프트웨어 설계 모델링 (2)  (0) 2023.07.08
UI (2)  (0) 2023.07.08
UI (1)  (0) 2023.07.08
UML (2)  (0) 2023.07.08