Certificate/정보처리기사

[1과목 소프트웨어 설계] 애플리케이션 설계 - 021. ⭐ 소프트웨어 아키텍처

S_sun 2024. 5. 28. 18:14
  • 소프트웨어의 골격이 되는 기본 구조
  • 구성하는 요소들 간의 관계를 표현하는 시스템의 구조
  • 이해관계자들의 의사소통 도구
  • 좋은 품질 유지
  • 비기능적 요구사항 : 나타난 제약 반영
  • 기능적 요구사항 : 구현하는 방법을 찾는 해결과정
  • 애플리케이션 분할 방법과 분할된 모듈에 할당될 기능, 모듈 간의 인터페이스 결정
  • 모듈화, 추상화, 단계적 분해, 정보은닉

💡 상위설계 & 하위설계

  상위설계 하위설계
별칭 아키텍처 설계, 예비 설계 모듈 설계, 상세 설계
설계 대상 시스템의 전체적인 구조 시스템의 내부 구조 및 행위
세부 목록 구조, DB, 인터페이스 컴포넌트, 자료구조, 알고리즘


1. 모듈화 (Modularity)

  • 프로젝트 재사용성 향상
  • 너무 작게 나누면 개수가 많아져 모듈 간 통합 비용 多
  • 너무 크게 나누면 개수가 적어 통합 비용은 적게 들지만 노듈 하나의 개발 비용 多
  • 기능의 분리 가능, 인터페이스 단순
  • 프로그램의 효율적인 관리 가능, 오류 파급효과 최소화

 

2. 추상화 (Abstraction)

  • 전체적이고 포괄적인 개념 설계 후 차례로 세분화해 구체화시켜 나가는 것
  • 최소 비용으로 실제 상황 대처, 시스템 구조 및 구성 파악


💡 추상화 유형

  • 과정 추상화 : 전반적인 흐름만 파악할 수 있게 설계
  • 데이터 추상화 : 데이터 구조를 대표할 수 있는 표현으로 대체하는 방법
  • 제어 추상화 : 대표할 수 있는 표현으로 대체하는 방법

 

3. 단계적 분해 (Stepwise Refinement)

  • 하향식 설계 전략
    • 위의 중요 개념으로부터 하위의 개념으로 구체화 시키는 분할 기법
  • 추상화의 반복에 의해 세분화
  • 점차적으로 구체화, 알고리즘, 자료 구조 등 상세 내역은 가능한 뒤로 미루어 진행

 

4. 정보 은닉 (Information Hiding)

  • 절차와 자료들의 정보가 감추어져 다른 모듈이 접근하거나 변경하지 못하도록 하는 기법
  • 정보 은닉된 모듈과 커뮤니케이션할 필요가 있을 때는 반드시 필요한 정보만 인터페이스를 통해 교환
  • 모듈을 독립적으로 수행
    • 하나의 모듈이 변경되더라도 다른 모듈에 영향을 주지 않으므로 수정, 시험, 유지보수 용이

 

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

  • 품질 평가 요소 구체화

1) 시스템 측면

  • 성능 : 적절하고 빠르게 처리
  • 보안 : 허용된 접근에 적절한 서비스 제공
  • 가용성 : 장애없이 정상적으로 서비스 제공
  • 기능성 : 요구한 기능 만족스럽게 구현
  • 사용성 : 명확하고 편리하게 구현
  • 변경 용이성 : 다른 플랫폼에서도 동작할 수 있도록 구현
  • 확장성
  • 기타 속성 : 테스트 용이성, 배치성, 안정성

2) 비즈니스 측면

  • 시장 적시성 : 정해진 시간에 프로그램 출시
  • 비용과 혜택 : 유연성이 떨어지는 경우 유비조수에 많은 비용 소모
  • 예상 시스템 수명 : 수명이 길어야 한다면 '변경용이성', '확장성' 중요
  • 기타 속성 : 목표 시장, 공개 일정, 기존 시스템과 통합

3) 아키텍처 측면

  • 개념적 무결성 : 구성요소들 간의 일관성 유지
  • 정확성, 완결성 : 요구사항들의 제약사항들을 모두 충족시키는 것
  • 구축 가능성 : 모듈 단위로 구분된 시스템을 적정하게 분배해 유연하게 일정 변경
  • 기타 속성 : 변경성, 시험성, 적응성, 일치성, 대체성

 

6. 소프트웨어 아키텍처 설계과정

> 설계 목표 설정 → 시스템 타입 결정 → 아키텍처 패턴 적용 → 서브시스템 구체화 → 검토

시스템 타입

  • 대화형 시스템 : 사용자 요구를 처리하고 반응하는 시스템
    • 온라인 쇼핑몰과 같은 대부분 웹 애플리케이션
  • 이벤트 중심 시스템 : 외부 상태 변화에 동작하는 시스템
    • 전화, 비상벨 등의 내장 소프트웨어
  • 변환형 시스템 : 데이터 입력되면 정해진 작업을 수행해 결과를 출력하는 시스템
    • 컴파일러, 네트워크 프로토콜
  • 객체 연속형 시스템 : Database를 통해 파일을 효과적으로 저장, 검색, 갱신할 수 있는 시스템
    • 서버 관리 소프트웨어

협약 (Contract)에 의한 설계

  • 선행조건 (Precondition) : 오퍼레이션이 호출되기 전에 참이 되어야할 조건
  • 결과조건 (Postcondition) : 오퍼레이션이 수행된 후 만족되어야 할 조건
  • 불변조건 (Invariant) : 오퍼레이션이 실행되는 동안 항상 만족되어야할 조건

 

 

📖 Reference
 

2023 시나공 정보처리기사 필기 : 네이버 도서

네이버 도서 상세정보를 제공합니다.

search.shopping.naver.com

728x90
반응형