DevBlackCat
정보처리기사 필수 학습: 공통 모듈 설계 - 설계 모델링 완전 정복!! 본문
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
'정보처리기사 > 소프트웨어 설계' 카테고리의 다른 글
정보처리기사 필수 학습: 인터페이스 요구사항 완전 정복!! (1) | 2024.10.15 |
---|---|
정보처리기사 필수 학습: 공통 모듈 설계 (2) 완전 정복!! (0) | 2024.10.07 |
정보처리기사 필수 학습: 화면설계 완전 정복! (1) | 2024.10.04 |
정보처리기사 필수 학습: 분석 자동화 도구 완전 정복! (0) | 2024.10.01 |
정보처리기사 필수 학습: 모델링 기법 완전 정복! (2) | 2024.10.01 |