본문 바로가기

정보처리기사

정처기 공부 04/07

728x90

소프트웨어 아키텍처 비용 평가 모델

  • SAAM(Software Architecture Analysis Method)
    • 변경 용이성과 기능성에 집중, 평가가 용이하고, 경험이 적은 조직에서도 활용 가능하다.
  • ATAM(Architecture Trade-off Analysis Method)
    • 품질 속성 간의 상충 관계 분석이며, 시스템의 아키텍처가 품질 속성 만족에 어떤 영향을 미치는지 판단한다.
  • CBAM(Cost Benefit Analysis Method)
    • ATAM 기반으로, 경제적 의사결정을 고려하여 품질 속성 향상을 위한 아키텍처 변경의 비용과 편익을 평가한다.
  • ADR(Active Design Review)
    • 아키텍처 구성요소 간의 응집도나 일관성 등을 평가하며, 개발 중 특정 시점에서 전반적인 구조를 빠르게 리뷰할 때 유용하다.
  • ARID(Active Reviews for Intermediate Designs)
    • 전체 아키텍처가 아닌 특정 부분에 대한 품질 요소에 집중하며, 중간 설계 단계에서의 부분 평가에 특화된다.

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

소프트웨어 시스템을 여러 시각(뷰)에서 설명함으로써 이해와 설계를 돕는 모델

  • 유스케이스 뷰(Usecase View)
    • 시스템이 사용자에게 제공해야 할 기능을 설명
    • 다른 뷰들을 검증하는 기준 역할
  • 논리 뷰(Logical View)
    • 시스템의 기능적인 설계를 설명(클래스, 객체 등)
  • 프로세스 뷰(Process View)
    • 시스템의 비기능 요구사항(동시성, 성능, 이벤트 처리 등)
  • 구현 뷰(Implementation View)
    • 개발자 입장에서의 모듈 구성(폴더, 코드 단위)
  • 배포 뷰(Deployment View)
    • 시스템이 실제로 어디에 어떻게 배포되는지(서버, 노드 등)

소프트웨어 아키텍처 패턴(Software Architecture Pattern)

시스템을 설계할 때 구조를 어떻게 잡을지에 대한 패턴이다.

  • 계층화 패턴(Layer Pattern)
    • 시스템을 여러 계층으로 나눠 구성되며, 관심사를 분리할 수 있어 유지보수가 용이하다.
    • 예시) 전통적인 웹앱, MVC 구조
  • 모델-뷰-컨트롤러 패턴(MVC Pattern)
    • 사용자 인터페이스를 모델(Model), 뷰(View), 컨트롤러(Controller)로 분리하며, 역할 분리와 UI/로직 분리, 테스트가 용이하다.
    • 예시) 웹 프레임워크(React는 MVVM에 더 가까움, Django/ASP.NET MVC는 정통 MVC)
  • 파이프-필터 패턴(Pipe-Filter Pattern)
    • 데이터 스트림을 여러 필터에 통과시켜 순차적으로 처리하는 구조이며, 필터를 재사용할 수 있고 각 단계가 독립적으로 작동한다.
    • 예시) 데이터 처리 파이프라인, 컴파일러
  • 브로커 패턴 (Broker Pattern)
    • 분산 시스템에서 컴포넌트 간 통신을 중개하는 구조이며, 클라이언트와 서버 간의 직접 연결 없이 유연한 통신이 가능하다.
    • 예시) RPC 시스템, CORBA, 분산 DB
  • 클라이언트-서버 패턴(Client-Server Pattern)
    • 하나의 서버와 여러 클라이언트로 구성된 구조이며, 중앙 집중형으로 관리가 가능하고 다양한 클라이언트에 대응할 수 있다.
    • 예시) 웹 브라우저 ↔ 웹 서버

일정 관리 모델

  • 임계 경로법(CPM, Critical Path Method)
    • 프로젝트에서 가장 오래 걸리는 경로(임계 경로)를 찾아 일정을 계획하며, 일정 지연 위험이 큰 작업들을 식별할 수 있다.
    • 프로젝트 전체 기간을 계산하고, 여유 시간을 분석
  • 마일스톤 일정 관리
    • 중요한 시점(마일스톤)을 기준으로 일정을 관리하는 기법이다.
    • 주요 목표 도달 시점 기준으로 프로젝트 진행을 추적
  • 애자일 방식 일정 관리
    • 스프린트 단위로 짧은 주기로 계획, 실행, 피드백을 반복하는 기법이며, 변경에 유연하고, 빠른 피드백이 가능하다.
    • 칸반보드, 번다운 차트 등
  • 비선형 계획 기법(PERT, Program Evaluation and Review Technique)
    • 작업 간의 의존 관계와 예상 시간을 고려해 일정을 분석하는 기법이며, 비관치/중간치/낙관치 3점 추점방식을 통해 관리한다.
    • 불확실성이 높은 프로젝트에 적합
  • 간트 차트 (Gantt Chart)
    • 작업을 막대 그래프로 시간 순서에 따라 나타낸 도표이며, 전체 일정 개요를 한눈에 파악할 때 유용하다.
    • 작업 간의 일정/진척 상황 시각화에 효과적

인덱스 종류

  • 순서 인덱스(Ordered Index): 정렬된 순서대로 만들어지는 인덱스. 검색 성능이 좋음
  • 해시 인덱스 (Hash Index): 해시 함수를 사용해 빠르게 키를 찾음. 동등 비교(=)에 유리
  • 비트맵 인덱스 (Bitmap Index): 컬럼 값이 적은 경우 효율적인 인덱스. (예: 성별, 상태 등)
  • 함수 기반 인덱스 (Functional Index): 컬럼에 함수를 적용한 결과를 기준으로 만든 인덱스
  • 단일 인덱스 (Singled Index): 컬럼 하나로만 만든 가장 기본적인 인덱스
  • 결합 인덱스 (Concatenated Index): 여러 컬럼을 묶어서 만든 인덱스
  • 클러스터드 인덱스 (Clustered Index): 기본 키(PK) 기준으로 데이터를 물리적으로 정렬하여 저장
728x90

'정보처리기사' 카테고리의 다른 글

정처기 공부 04/13  (0) 2025.04.13
정처기 공부 04/06  (0) 2025.04.06
정처기 공부 04/04  (0) 2025.04.04
정처기 공부 04/03  (0) 2025.04.04
프로그래머스 간단한 논리 연산, 정처기 학습  (0) 2025.03.29