공통 모듈 설계

김덕근·2022년 12월 25일
0

정보처리기사

목록 보기
5/17

설계 모델링

소프트웨어를 구성하는 모듈들을 식별하고, 이것들의 연결을 그림으로 표현한 것

아키텍처 설계->데이터베이스 설계->서브시스템 설계->컴포넌트 설계->자료구조, 알고리즘 설계

아키텍처 설계
시스템을 구성하는 서브시스템들과 그들 간의 관계를 파악하고 명세한다.

데이터베이스 설계
시스템 구현에 사용되는 데이터의 구조를 자세하게 설계하고 명세한다.

서브시스템 설계
각 서브시스템이 담당하는 서비스와 제약사항들에 대해 명세한다.

컴포넌트 설계
서브 시스템이 수행하는 기능을 여러 컴포넌트에 할당하고, 컴포넌트들의 인터페이스를 설계하고 명세한다.

자료구조와 알고리즘 설계
컴퓨터에 자료를 효율적으로 저장하는 방식과 자료구조 내에서 기본적인 연산방법을 설계하고 명세한다


협약에 의한 설계

클래스에 대한 여러 가정을 공유하도록 명세한다.
선행 조건 : 컴포넌트 오퍼레이션 사용 전엔 참이 되어야할 조건
결과 조건 : 사용 후 만족되어야 할 결과조건
불변 조건 : 오퍼레이션이 실행되는 동안 항상 만족되어야할 조건


상위 설계(분석, 설계)
아키텍처 설계 - 데이터 설계 - 인터페이스 정의 - 사용자 인터페이스 설계

하위 설계(구현, 테스트)
모듈 설계 - 자료구조 설계 - 알고리즘 설계


설계의 원리

  1. 분할과 정복(Divide & Conquer)
    하나의 일을 수행할 때 작은 단위로 나누고, 작은 단위를 각각 하나씩 처리하여 전체 일을 끝낸다.

  2. 추상화(Abstraction)
    특정한 목적과 관련된 필수 정보만 추출하여 강조하고, 관련이 없는 세부 사항을 생략함으로써, 본질적인 문제에 집중할 수 있도록 한다.

과정 추상화
데이터 추상화
제어 추상화

  1. 단계적 분해(Gradual Decomposition)
    기능을 점점 작은 단위로 나누어 점차적으로 구체화 하는 방법

  2. 모듈화(Modulization)
    실제로 개발할 수 있는 작은 단위로 나눈다.

  3. 정보은닉(Information Hiding)
    다른 객체에게 자신의 정보를 숨기고, 자신의 연산만을 통해 접근이 가능하도록 한다.


설계 모델링 유형

  1. 구조 모델링
    UML 정적 다이어그램

  2. 행위 모델링
    UML 동적 다이어그램

소프트웨어 아키텍처 품질속성

정확성(Correctness)
신뢰성(Reliability)
효율성(Efficiency)
무결성(Integrity)
사용 용이성(Usability)
유지보수성(Maintainability)
시험 용이성(Testability)
유연성(Flexibility)
이식성(Potability)
재사용성(Reusability)
상호 운용성(Interoperability)

소프트웨어 아키텍처의 특징

간략성
추상화
가시성
관점 모형
의사소통수단

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

아키텍처 명세서
이해관계자
관심사
관점

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

고객의 요구사항을 정리해 놓은 시나리오를 4개의 관점에서 바라보는 소프트웨어적인 접근 방법

  1. 논리 뷰(Logical view)
  2. 구현 뷰(Implementation view)
  3. 배치 뷰(Deployment view)
  4. 프로세스 뷰(Process view)
  5. 유스케이스 뷰(Use case view) (+ 1)

소프트웨어 아키텍처 패턴

  1. 계층화 패턴(Layered pattern)
  2. 클라이언트-서버 패턴(Client-Server Pattern)
  3. 마스터-슬레이브 패턴(Master-Slaver Pattern)
  4. 파이프-필터 패턴(Pipe-Filter Pattern)
  5. 브로커 패턴(Broker Pattern)
  6. 피어 투 피어 패턴(Peer to Peer Pattern)
  7. 이벤트-버스 패턴(Event-Bus Pattern)
  8. 모델-뷰-컨트롤러 패턴(Model-View-Controller Pattern) - MVC
  9. 블랙보드 패턴(Blackboard Pattern)
  10. 인터프리터 패턴(Interpreter Pattern)
profile
안녕하세요!

0개의 댓글