본문 바로가기

정보 처리 기사 필기/1. 소프트웨어 설계

1-4 애플리케이션 설계 - 설계 모델링

반응형

설계 모델링

 

1. 설계 모델링

 

개념
  • 요구사항 분석 단계에서 정의한 필수 기능들을 구체적인 구현 방법으로 명시
  • S/W에서 요구되는 기능과 성능 조건에 만족하는 설계 명세서 작성
  • S/W 내부 기능 외 구조, 동작 행위들 모델링하여 분석, 검증, 명세화
  • 프로세스, 컴퓨터 시스템을 명확하고 상세하게 정의
  • S/W 실행 가능하도록 관련 기술과 원칙 적용
절차

 

 

 

2. 구조 모델링 도구

 

N-S(Nassi-Schneiderman) 도표
  • 논리 기술에 중점을 둔 도형 표현 방법
  • 3가지 제어 구조: 순차, 선택, 반복
  • 연속, 선택 및 다중 선택, 반복 등의 제어 논리 구조로 표현
  • 임의의 제어 이동 어렵
  • 그래픽 설계 도구(상자 도표)
  • 프로그램으로 구현 쉬움
  • 조건이 복합되어 있는 곳의 처리를 시각적으로 명확히 식별하는데 적합
HIPO(Hierachy Input Process Output) 도표 하향식 소프트웨어 개발을 위한 문서화 도구
  • 종류
    • 가시적 도표(도식 목차): 전체적인 흐름과 기능 보여주는 계층 구조도
    • 총체적 도표(총괄 도표): 입력, 처리, 출력 등의 프로그램 구성 기능 명확히 표현
    • 세부적 도표(상세 도표): 총괄 도표 구체적으로 표현한 모듈 도표
  • 특성
    • 분석 및 설계 도구로 사용
    • 기본 시스템 모델은 입력, 처리, 출력으로 구성
    • 하향식(Top-Down)개발에 적합
    • 보기 쉽고 이해 쉬움
    • 기능과 자료 의존 관계 동시에 표현
    • 수정 및 유지보수 용이
    • 소규모 프로젝트에 적합
Dijkstra 구조적 설계 방법론
  • 순차, 선택, 반복 구조만 이용하여 소프트웨이어 복잡도 감소 유지보수 쉬움
  • 특징
    • 표준화된 설계 기법
    • 단일 출력 구조
    • 순차, 선택, 반복 구조만을 이용
    • 프로그램 명료성 증대
    • 한정된 범위 내에서 GO TO 문 사용
    • 검증 용이
    • 유지보수 용이
    • 프로그램 이해 쉬움

 

 

 

3. 설계 모델링 구성과 요소

 

 

설계 모델 요소

유형         정적(static)요소 동적(dynamic) 요소
구조 모델 구성 요소 유형 및 유형 계통
구성 요소 배열 결합 관계
구성 요소들의 인터페이스
구성 요소들의 상호 작용 채널
동적 생성 및 소멸
동적 결합과 연결
위치 이동, 복제
행위 모델 입출력 데이터
입출력 매핑
데이터 흐름 채널
데이터 변환
데이터 저장
상호작용 프로토콜
제어
상호작용 실행 경로
상태 전이
처리 순서
입출력 순서
알고리즘

 

 

 

 

소프트웨어 아키텍처

 

1. 시스템 아키텍처

개념
  • H/W, S/W를 포함하는 시스템 전체에 대한 논리적인 기능 체계
  • 시스템의 작동, 컴포넌트, 상호작용, 정보 교환을 설명하는 프레임 워크
설계
  • 시스템 아키텍처(상위) 설계
    • 전체적인 아키텍처 설계
    • 인터페이스 정의
    • 사용자 인터페이스 설계
  • 소프트웨어 아키텍처 설계
    • 모듈 설계
    • 컴포넌트 설계

 

 

 

2. 소프트웨어 아키텍처

 

개념
  • S/W 골격이 되는 기본 구조
  • 구성 요소의 유기적인 결합 형태와 전체 구조
  • 설계 및 구현을 위한 구조적, 비구조적 틀 제공
  • 구성요소인 모듈, 컴포넌트 다룸
  • 뼈대에 해당하여 모듈이나 컴포넌트 들과의 관계 정의
설계
  • 아키텍처 드라이버: 요구사항
  • 아키텍처 설계의 입력물과 출력물
소프트웨어 아키텍처의 비즈니스 품질 속성
  • 시장 적시성(Time to Market)
  • 비용과 이익(Cost and Benefit)
  • 예상 시스템 수명(Predicted Lifetime of the System)
  • 목표 시장(Targeteed Market)
  • 신규 발매 일정 또는 공개 일정(Rollout Schedule)
  • 기존 시스템과의 통합(Integration with Legacy System)
  • 소프트웨어 아키텍처 프레임워크

 

 

 

소프트웨어 아키텍처 프레임워크 구성요소

아키텍처 명세서 - 아키텍처 기록 산출물로 이해 관계자들의 시스템에 대한 관심을 관점에 맞춰 작성한 뷰로 표현
- 개별 뷰, 뷰 개괄 문서, 인터페이스 명세 등
이해 관계자 - 시스템 개발에 관련된 모든 사람과 조직
- 고객, 최종 사용자, 개발자 등등
관심사 - 시스템에 대해 이해 관계자들의 서로 다른 의견과 목표

- 사용자 입장: 품질
- 유지보수자 입장: 유지보수 용이성
- 개발자 입장: 적은 비용과 인력으로 개발
관점 - 개별 부 개발 시 토대가 되는 패턴이나 양식
- 이해관계자들이 시스템이나 산출물들에 대해 보고 싶은 관점
- 서로 관련 있는 관심사들의 집합이라는 관점에서 전체 시스템 표현
- 시스템에 대한 아키텍처 설명에는 하나 이상의 뷰로 구성
근거 - 아키텍처 결정 근거
- 회의 결과, 보고 결과
목표 - 환경 안에서 한 명 이상의 이해 관계자들이 의도하는 시스템 목적, 사용, 운영 방법
환경 - 시스템에 영향 주는 요인으로 개발, 운영 등의 외부 요인 등
시스템 - 각 애플리케이션, 서브 시스템, 시스템 집합, 제품군 등의 구현체

 

 

 

소프트웨어 아키텍처 4+1뷰

유논프구배

유스케이스 뷰 • 유스케이스 또는 아키텍처 도출하고 설계하며 다른 뷰 검증 시 사용
• 사용자, 설계자, 개발자, 테스트 관점
논리 뷰 • 유스케이스 또는 아키텍처 도출하고 설계하며 다른 뷰 검증 시 사용
• 사용자, 설계자, 개발자, 테스트 관점
프로세스 뷰 • 유스케이스 또는 아키텍처 도출하고 설계하며 다른 뷰 검증 시 사용
• 사용자, 설계자, 개발자, 테스트 관점
구현 뷰 • 유스케이스 또는 아키텍처 도출하고 설계하며 다른 뷰 검증 시 사용
• 사용자, 설계자, 개발자, 테스트 관점
배포 뷰 • 컴포넌트가 물리적 아키텍처에 어떻게 배치되는가 매핑해서 보여주는 뷰

 

 

 

3. 소프트웨어 아키텍처 모델

 

계층화 패턴
(Layered Pattern)
  • 기능을 분리한 계층(Layer)
    • 각각 서브 시스템들이 계층 구조를 이루며, 각 하위 모듈들은 특정 수준의 추상화 제공하고, 서로 마주 보는 두 개의 계층 사이에서만 상호 작용 이루어짐
    • 표현 계층(Presentation Layer) - UI 계층(UI Layer)
    • 프로세스 계층(Process Layer) - 서비스 계층(Service Layer)
    • 비즈니스 논리 계층(Business Logic Layer) - 도메인 계층(Domain Layer)
    • 데이터 접근 계층(Data Access Layer) - 영속 계층(Persistence Layer)
  • N-Tier(티어) 패턴(물리적 분리)
    • 1-Tier: 3가지 기능을 한 클라이언트 서버 컴퓨터에 설치, 운영(종속적)
    • 2-Tier: 데이터 베이스는 서버 컴퓨터, 두개는 클라이언트 컴퓨터
    • 3-Tier: 3개의 컴퓨터 시스템에 기능을 각각 분리시켜 운영(독립적)
클라이언트/서버 패턴
(Client/Server Pattern)
  • 하나의 서버와 다수의 클라이언트 컴포넌트로 구성
  • 분산 네트워크 시스템
  • 클라이언트가 서버에 서비스 요청, 서버가 서비스 제공
  • E-mail, 문서 공유, 은행 등 활용
  • 병목 현상, 결합력 감소
  • 보안 취약, 응용 프로그램 복잡
마스터/슬레이브 패턴
(Master/Slaver Pattern)
  • 마스터가 슬레이브에게 작업 분산, 슬레이브가 처리한 결과로 계산
  • 마스터 DB 원본, 슬레이브 복제본 동기화
파이프-필터 패턴
(Pipe-filter Pattern)
  • 데이터 스트림 생성하고 처리하는 시스템
  • 서브 시스템이 입력 데이터 받아 처리하고 다음 서브 시스템으로 결과 넘기는 과정 반복
  • 처리 과정은 필터를 통해, 데이터 스트림은 파이프 통해 흐름
브로커 패턴
(Broker Pattern)
  • 분산 시스템에서 사용
  • 원격 서비스로 상호작용
피어 투 피어 패턴
(Peer-to-peer Pattern)
  • Peer는 하나의 서버 또는 클라이언트
  • Peer 간 서비스 요청/제공 가능
이벤트-버스 패턴
(Event-bus Pattern)
  • 이벤트 소스(Event Source): 처리 결과나 데이터
  • 이벤트 리스너(Event Listener): 특정 채널의 메시지 구독
  • 채널(Channel): 서버, 클라이언트, 컴포넌트
  • 이벤트 버스(Event Bus): 메시지 경로
MVC 패턴
(Model-View-Controller Pattern)
  • 인터페이스가 변경에 영향을 덜 받도록 만든 모델
  • 각 부분은 별도 컴포넌트로 분리되어 있으며 서로 영향 받지 않고 개발 작업 수행
  • View: 사용자에게 데이터 보여주는 부분
  • Controller: 데이터와 비즈니스 로직 사이 상호동작 관리
  • Model: 응용 프로그램의 데이터
블랙보드 패턴
(Blackboard Pattern)
  • 블랙보드(Blackboard): 소스 저장 메모리
  • 지식 소스(Knowledge Source): 특정 데이터, 블랙 보드에 저장된 데이터
  • 제어 컴포넌트(Control Component): 모듈 선택, 설정 및 실행 담당
인터프리터 패턴
(Interpreter Pattern)
  • 특정 언어나 명령어 해석하는 컴포넌트 설계

 

 

 

 

코드 설계

 

1. 코드

3대 기능
  • 식별
  • 분류
  • 배열
추가 기능
  • 간소화
  • 표준화
  • 연상
  • 암호화
  • 오류 검출
코드 설계의 원칙
  • 적은 자릿수
  • 고유성
  • 정렬과 분류의 편리성
  • 적응성 및 확장성
  • 기계 처리의 용이성
  • 표의성
코드의 특성
  • 단순성
  • 표의성
  • 분류성
  • 용이성
  • 고유성
  • 확장성
  • 영속성
  • 편리성

 

 

 

 

2. 코드 설계

  • 코드 설계 고려 사항
    • 정보 체계화 유무
    • 정보 처리 효율성 유무
    • 정보 호환성/표준화 유무
    • 갱신/추가 시 확장 용이
    • 1:1로 대응

 

 

 

3. 코드 유형 분류

순차 코드(Sequence Code) 일정한 일련번호 부여하는 방법
블록코드(Block Code) 공통 특성을 몇개의 블록으로 구분하여 부여
10진 코드(Decimal Code) 좌측은 그룹 분류, 우측은 10진수로 세분화하는 코드
그룹 분류 코드(Group Classification Code) 각 분류별로 개개의 대상 표현하게 한 후 합쳐 구성
연상 코드(Mnemonic Code) 대상의 연상이 가능하도록 코드에 반영
표의 숫자 코드(Significant Digit Code) 물리적 수치를 이용하여 만든 코드
합성 코드(Combined Code) 2개 이상의 코드 조합

 

 

 

 

파일 설계

순차 파일
(Sequential)
  • 엔트리(Entry) 순차 파일
  • 키(Key) 순차 파일
  • 특징
    • 기록 밀도가 좋음
    • 어떤 매체라도 용이하게 사용
    • 처리하는데 불편하여 이용도 낮음
    • 파일 내용 추가, 변경, 삭제 어려움
    • 파일 복사, 일괄 처리에 사용
인덱스(색인) 순차 파일
(Indexed Sequential) 
  • 인덱스 순차 파일 구성 방법
    • 인덱스 구역(Index Area)
      • 트랙 인덱스(Track Index)
      • 실린더 인덱스(Cylinder Index)
      • 마스터 인덱스(Master Index)
    • 기본 데이터 구역(Prime Data Area)
    • 오버 플로우 구역(Overflow Area)
  • 특징
    • 순차/랜덤 처리 병행 가능
    • 레코드 삽입/수정 용이
    • 인덱스 저장 공간/오버 플로우 처리위한 별도 공간 필요
    • 랜덤 편성 파일과 비교해 액세스 시간이 느림
    • 삽입/삭제 많아지면 파일 재편성 필요
    • 레코드 추가/삭제 시 파일 전체 복사 미필요
랜덤 편성 파일
(Random Organizaion) 
  • 기록 순서나 코드 순서와 같은 논리적 순서와 관계없이 특정 방법으로 키 변환에 의해 임의로 자료 보관하고 처리 시에도 필요한 장소에 직접 접근하여 원하는 정보 액세스

 

 

 

 

 

 

 

 

Reference

https://book.naver.com/bookdb/book_detail.naver?bid=17134434 

 

이기적 정보처리기사 필기 기본서

- 기초부터 탄탄히 잡아주는 영진닷컴의 이기적 수험서!영진닷컴이 자랑하는 수험서 브랜드 ‘이기적’ 시리즈는 쉽고 풍부한 내용으로 기초부터 튼튼하게 쌓아주는 합격의 동반자입니다. 기

book.naver.com

 

반응형