1. 소프트 아키텍쳐 설계
- 소프트웨어를 구성하는 요소들 간의 관계를 표현하는 시스템의 구조
- 사용자의 비기능적 요구사항을 반영하고 기능적 요구사항을 구현하는 방법을 찾는 해결과정
- 기능적 요구사항 : 시스템이 갖춰야할 필수적인 기능에 대한 요구항목
- 비기능적 요구사항 : 그 외 품질이나 제약사항에 관한 것들
- 기본원리 : 모듈화, 추상화, 단계적 분석, 정보은닉
1-1) 모듈화 (Modularity)
- 소프트웨어의 성능을 향상시키거나 시스템의 수정 및 재사용, 유지 관리 등이 용이하도록 시스템의 기능을 모듈 단위로 나누는 것
- 재사용성 향상
- 모듈의 크기를 너무 작게 나누면 개수가 많아져 통합의 비용 많이 듦
- 모듈의 크기를 너무 크게 나누면 갸수가 적어 통합 비용은 적게 들지만 모듈 하나의 개발 비용이 많이 듦
1-2) 추상화 (Abstraction)
- 불필요한 부분 생략하고 필요한 부분을 강조해 모델 화 하는 것
- 문제의 전체적이고 포괄적인 개념 설계 후, 차례로 세분화해 구체화 시켜나가는 것
- 과정추상화 : 자세한 수행 과정 정의하지 않고 흐름만 파악
- 데이터추상화 : 데이터의 세부적인 속성이나 용도를 정의하지 않고 데이터 구조를 대표하는 표현으로 대체
- 제어추상화 : 이벤트 발ㄹ생의 절차나 방법을 정의하지 않고 대표할 수 있는 표현으로 정의
- 과데제
1-3) 단계적 분해
- Niklaus Wirth에 의해 제안된 하향식 설계
- 추상화의 반복에 의해 세분화
- 소프트웨어 기능에서부터 시작해 절차적으로 구체화
- 상세한 내역은 가능한 뒤로 미루어 진행
1-4) 정보 은닉
- 한 모듈 내부에 포함 된 절차와 자료들의 정보가 감추어져 다른 모듈이 접근하거나 변경하지 못하도록 함
- 모듈을 독립적으로 수행할 수 있어 시험, 유지보수가 용이
2. 소프트웨어 아키텍쳐의 품질 속성
- 시스템 측면 : 성능, 보안, 가용성, 사용성, 기능성, 가용성, 변경 용이성, 확장성, 배치성, 안정성 등
- 비즈니스 측면 : 시장 적시성, 비용과 혜택, 예상 시스템 수명, 목표시장, 공개일정 등
- 아키텍쳐 측면 : 개념 무결성, 정확성, 완결성, 구축 가능성, 적응성, 일치성
3. 아키텍쳐 패턴
- 아키텍쳐를 설계할 때 참조할 수 있는 전형적인 해결방식
- 아키텍쳐 패턴의 장점 : 시행착오 줄임, 예측가능, 안정적 개발
- 아키텍처 패턴 종류 : 레이어패턴, 클라이언트-서버패턴, 파이프-필터패턴, 모델-뷰-컨트롤러패턴
3-1) 레이어 패턴 (Layers pattern)
- 시스템 계층으로 구분해 구성하는 고전적 방법
- 각 서브시스템들이 계층 구조를 이룸
- OSI 참조모델
3-2) 클라이언트-서버 패턴 (Client-Sever Pattern)
- 하나의 서버 컴포넌트와 다수의 클라이언트 컴포넌트로 구성되는 패턴
- 컴포넌트 : 독립적인 업무 또는 기능을 수행하는 실행코드 기반으로 작성된 모듈
- 서버는 클라이언트의 요청에 대비해 항상 대기상태 유지
- 클라이언트와 서버는 요청과 응답의 경우를 제외한 서로 독립적
3-3) 파이프-필터 패턴 (Pipe-Filter Pattern)
- 데이터 스트림 절차의 각 단계를 필터 컴포넌트로 캡슐화하여 데이터 전송하는 패턴
- 필터 컴포넌트는 재사용성이 좋고 추가가 쉬워 확장이 용이함
- 필터 컴포넌트들을 재배치하여 다양한 파이프라인 구축 가능
- UNIX 의 쉘
3-4) 모델-뷰-컨트롤러 패턴 (Model-View-Controller Pattern)
- 서브시스템을 3개의 부분으로 구조화하는 패턴
- 모델 (Model) : 서브시스템의 핵심 기능과 데이터를 보관
- 뷰 (View) : 사용자에게 정보를 표시
- 컨트롤러 (Controller) : 사용자로 부터 받은 입력처리 / 뷰제어 / UI 담당
- 한개의 모델에대해 여러가지 뷰 생성 가능함, 대화형 애플리케이션에 적합
3-5) 기타
- 마스터-슬레이브 패턴 : 마스터 컴포넌트에서 슬레이브 컴포넌트로 작업 분할 후, 슬레이브에게 처리된 결과물을 다시 돌려받음
- 브로커 패턴 : 사용자가 원하는 서비스와 특성을 요청하면 요청에 맞는 컴포넌트와 사용자를 연결해 줌
- 피어-투-피어 패턴 : 피어=하나의 컴포넌트, 각 피어는 클라이언트가 될 수도 서버가 될 수도 있는 패턴, 멀티스레딩 방식
- 이벤트-버스 패턴 : 소스가 특정 채널에 이벤트 메시지를 발행하면, 해당 채널을 구독한 리스너들이 메시지를 받아 이벤트를 처리함
- 블랙보드 패턴 : 컴포넌트들은 검색을 통해 블랙보드에서 원하는 데이터를 찾음
- 인터프리터 패턴 : 프로그램 코드의 각 라인을 수행하는 방법을 지정하고, 기호마다 클래스를 갖도록 구성
'정보처리기사 (필기) > 1. 소프트웨어 설계' 카테고리의 다른 글
[정보처리기사] 1-9. 결합도와 응집도 (0) | 2022.04.19 |
---|---|
[정보처리기사] 1-8. 객체지향 (0) | 2022.04.19 |
[정보처리기사] 1-6. 사용자 인터페이스 및 품질 요구사항 (0) | 2022.04.19 |
[정보처리기사] CBT 모의고사 202108~202203 개념 - 1과목 (0) | 2022.04.18 |
[정보처리기사] 1-5. UML (Unified Modeling Language) (0) | 2022.04.16 |