관리 메뉴

DevBlackCat

정보처리기사 필수 학습: 공통 모듈 설계 - 설계 모델링 완전 정복!! 본문

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

정보처리기사 필수 학습: 공통 모듈 설계 - 설계 모델링 완전 정복!!

DevBlackCat 2024. 10. 4. 21:08
728x90

1.설계 모델링 

소프트웨어의 모듈과 연결을 그림으로 표현

 

설계 모델링의 원칙

  • 변경 용이성을 위한 구조화
  • 하나의 함수에는 그 기능에 필요한 자료만 사용
  • 독립성이고 기능적인 특성을 지닌 설계

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

분류 설명
아키텍처 설계 - 전체 구조를 파악하며 관계를 정의하고 명세
데이터베이스 설계 - 데이터 구조와 관계를 설계
자료구조와 알고리즘 설계 - 데이터의 효율적인 저장과 처리를 위한 자료구조 및 알고리즘 설계
협약에 의한 설계 ★ - 선행조건/결과조건/불변조건

 

상위 설계

- 대략적인 구조와 관계를 결정하는 초기설계

  • 아키텍처 설계 
  • 데이터 설계
  • 인터페이스 정의
  • 사용자 인터페이스 설계

하위 설계

-상세 설계 단계로 시스템의 내부구조를 상세히 설계

  • 모듈설계
  • 자료구조 설계
  • 알고리즘 설계

상위 설계가 많으니 하위 설계를 외울것!

 

설계의 원리

  • 분할과 정복 - 분할해서 설계
  • 추상화 - 핵심내용만 강조  [과정추상화 , 자료 추상화 , 제어추상화]
  • 단계적 분해 - 세부적으로 분해해서 설계
  • 모듈화 - 큰시스템을 작은 모듈로 나누는 기법
  • 정보은닉 - 상세정보를 외부로 감추는 기법

앞에 종류만 외울것!

 

설계 모델링

  • 구조 모델링 [UML 정적 다이어그램]
  • 행위 모델링  [UML 동적 다이어그램]

 

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

분류 설명
정확성(Correctness) - 정확한 요구사항을 충족하는지 
신뢰성(Reliability) - 오류나 오차없이 동작하는지
효율성(Efficiency) - 필요한 자원을 최소한으로 쓰고 효과적인지
무결성(Integrity) - 비허용된 데이터 변경을 방지하는 메커니즘을 갖추었는지
사용용이성(Usability) -쉽게 배우고 이해하는지
유지보수성(Maintainbilty) -수정이 쉬운지
시험 용이성(Testbility) - 테스트 하기 용이한지
유연성(Flexibility) - 변경사항을 쉽게 통합할수있는지
이식성(Portability) - 다양한 플렛폼에서 이식되는지
재사용성(Reusability) - 기존의 컴포넌트를 재사용할수있는지
상호 운용성(Interoperability) - 효과적으로 통신하고 있는지
가용성(Availability) - 시스템이 장애 없이 사용할 수 있는 시간 비율
확장성(Scalability) - 시스템이 증가하는 부하에 적응할 수 있는 능력
변경 용이성(Modifiability) - 시스템이 쉽게 변경될 수 있는 능력
적응성(Adaptability) - 환경 변화에 적응할 수 있는 능력

 

2.소프트웨어 아키텍처

1. 아키텍처 프레임워크 구성요소

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

 

 

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

  • 논리적 관점(논리뷰)
  • 구현관점: 모듈이 어떻게 구조화 되어있는지 관심을 둔다.
  • 프로세스 관점: 프로세스들이 어떻게 구성되어있는지,액티브 클래스에 초점을 둔다
  • 배치 관점 : 물리적배치에 초점을 둔다.
  • 유스케이스 관점 [+1 사용자]   (유스케이스 뷰) : 사용자의 요구사항을 보여주는데 초점을 둔다

 

3.소프트웨어 아키텍처 패턴 ★

 

아키텍처 종류설명

마이크로서비스 아키텍처 (Microservice) 독립적으로 배포 가능한 작은 서비스 단위로 구성된 아키텍처. 각각의 서비스는 독립적으로 개발되고 배포됨.
분산 컴포넌트 아키텍처 (Distributed Component) 서로 다른 위치에 있는 컴포넌트들이 네트워크를 통해 상호작용하는 아키텍처. 분산 시스템에서 주로 사용됨.
서비스 지향 아키텍처 (Service Oriented Architecture, SOA) 서비스 간 상호작용을 통해 기능을 제공하는 아키텍처. 각각의 서비스는 명확한 인터페이스를 통해 상호작용함.
피어 투 피어 아키텍처 (Peer-to-Peer) 중앙 서버 없이 노드들이 서로 직접 통신하며 데이터를 교환하는 아키텍처. 파일 공유 네트워크 등에 사용됨.
계층형 아키텍처 (Layered Architecture) 기능을 여러 계층으로 나누어 상호작용하도록 설계된 아키텍처. 프레젠테이션, 비즈니스, 데이터 계층으로 나뉘는 경우가 일반적임.
이벤트 기반 아키텍처 (Event-Driven Architecture) 이벤트가 발생할 때마다 해당 이벤트에 반응하는 컴포넌트들이 상호작용하는 아키텍처. 이벤트 중심 시스템에서 사용됨.
클라이언트-서버 아키텍처 (Client-Server Architecture) 클라이언트가 서버에 요청을 보내고, 서버가 응답을 처리하는 구조의 아키텍처. 웹 애플리케이션에서 일반적으로 사용됨.
몽고스 아키텍처 (Monolithic Architecture) 모든 기능이 하나의 애플리케이션으로 통합된 아키텍처. 작은 시스템에서는 단순하지만, 확장성에 한계가 있음.
퍼블리셔-구독자 아키텍처 (Publisher-Subscriber Architecture) 퍼블리셔가 이벤트를 발행하고, 구독자가 해당 이벤트를 수신하는 구조의 아키텍처. 비동기 처리에 적합함.

 

계층화 패턴

  • n-티어 아키텍처 패턴으로 부른다 (계층적)

클라이런트 서버 패턴

  • 다수 클라리언트와 하나의 서버로 구성
  • 서버는 클라이언트에게 서비스를 제공하고 데이터를 관리 
  • 일반저인 웹프로그램

마스터 슬레이브 패턴

  • 마스터 컴초넌트가 동등한 구조의 슬레이브  [마스터가 다함]
  • 일반적인 실시간 시스템에 사용
  • 연산 통신 조정을 책임진다.
  • 데이터수집 기능을 수행

파이프 필터 패턴 ★

  • 하나의 파이브에 여러 공정이 있음
  • 각처리과정을 실행하고 처리된 데이터는 파이프를 통해 전송 (한쪽방향)
  • 필터이동시 오버해드 발생
  • 입력데이터를 받아 처리하고 결과를 다른 시스템에 보내는 작업

브로커 패턴

  • 컴포넌트들 중간 매개체로 통신을 조절

피어 투피어 패턴

  • 피어라 부르는 컴포넌트끼리 직접 통신

이벤트 버스 패턴

  • 이벤트 버스를 통해 특정 채널로 메시지를 발행 ex)카톡 알림 (이벤트 발생시키니 각 유저에게 알람을 뿌림)

모델 뷰 컨트롤러 패턴(MVC)

  • mvc 패턴  모델,뷰,컨트롤러를 나눠서 개발 [ex.자바]
  • 인터페이스를 비지니스 로직 부분과 분리하는 구조
  • 결합도를 낮추기위한 구조
  • 디자인패턴 옵서버 패턴에 해당하는 구조

블랙 보드 패턴

  • 명확히 정의된 해결 전략이 알려지지 않은문제에 대해서 유용한 패턴

인터프리터 패턴

  • 특정 언어로 작성된 프로그램을 해석하는 컴포넌트를 설계할떄 사용되는 패턴

 

728x90