Javadocs

Chap 3 - 1. 소프트웨어 아키텍처 본문

[ 정보처리기사 ]/[정보처리기사] 1. 소프트웨어 설계

Chap 3 - 1. 소프트웨어 아키텍처

Javatist 2023. 3. 9. 15:30

Point!!

  1.  소프트웨어 아키텍처의 특징과 역할, 설계의 기본 원리를 확실히 파악!
  2.  모듈화의 특징을 묻는 문제가 출제. (모듈의 수가 증가하면 상대적으로 각 모듈의 크기가 작아진다는 것을 중심으로 특징을 정리할 것.)
  3.  추상화의 유형이 아닌 것을 묻는 문제가 출제.
  4.  정보 은닉의 특징을 묻는 문제가 출제.

1. 소프트웨어 아키텍처의 설계

소프트웨어의 골격이 되는 기본 구조이자, 소프트웨어를 구성하는 요소들 간의 관계를 표현하는 시스템의 구조 또는 구조체이다.

  • 소프트웨어 개발 시 적용되는 원칙과 지침이며, 이해 관계자들의 의사소통 도구로 활용.
  • 기본적으로 좋은 품질을 유지하면서 사용자의 비기능적 요구사항으로 나타난 제약 반영하고, 기능적 요구사항을 구현하는 방법을 찾는 해결 과정이다.
  • 애플리케이션의 분할 방법과 분할된 모듈에 할당될 기능, 모듈 간의 인터페이스 등을 결정.
  • 소프트웨어 아키텍처 설계의 기본 원리
    • 모듈화
    • 추상화
    • 단계적 분해
    • 정보은닉
    •  
  상위 설계 하위 설계
별칭 아키텍처 설계, 예비 설계 모듈 설계, 상세 설계
설계 대상 시스템의 전체적인 구조 시스템의 내부 구조 및 행위
세부 목록 구조, DB, 인터페이스 컴포넌트, 자료 구조, 알고리즘

2. 모듈화(Modularity)

소프트웨어의 성능을 향상시키거나 시스템의 수정 및 재사용, 유지 관리 등이 용이하도록 시스템의 기능들을 모듈* 단위로 나누는 것을 말한다. 

 

* 모듈? 

모듈화를 통해 분리된 시스템의 각 기능들. 

서브루틴, 서브 시스템, 소프트웨어 내의 프로그램, 작업 단위 등과 같은 의미로 사용.

 

  • 공통 모듈로 구성하여 프로젝트의 재사용성을 향상시킬 수 있음.
  • 모듈의 크기를 너무 작게 나누면 개수가 많아져 모듈 간의 통합 비용이 늘어나고, 크게 나누면 개수가 적어 통합 비용은 적게 들지만 모듈 하나의 개발 비용이 늘어난다. 
  • 모듈화를 통해 기능의 분리가 가능하여 인터페이스가 단순해짐.
  • 프로그램의 효율적인 관리가 가능.
  • 오류의 파급 효과를 최소화 할 수 있다.

3. 추상화(Abstraction)

문제의 전체적이고 포괄적인 개념을 설계한 후 차례로 세분화하여 구체화시켜 나가는 것.

  • 완전한 시스템을 구축하기 전, 그 시스템과 유사한 모델을 만들어 여러 가지 요인들을 테스트 할 수 있다.
  • 최소의 비용으로 실제 상황을 대처할 수 있고, 시스템의 구조 및 구성을 대략적으로 파악할 수 있다.

추상화의 유형

  • 과정 추상화 - 전반적인 흐름만 파악할 수 있게 설계하는 방법
  • 데이터 추상화 - 데이터의 세부적인 속성이나 용도를 정의하지 않고, 데이터 구조를 대표할 수 있는 표현으로 대체하는 방법
  • 제어 추상화 - 이벤트 발생의 정확한 절차나 방법을 정의하지 않고, 대표할 수 있는 표현으로 대체하는 방법

 

4. 단계적 분해(Stepwise Reinement)

하향식 설계 전략. 

문제를 상위의 중요 개념으로부터 하위의 개념으로 구체화시키는 분할 기법

  • 추상화의 반복에 의해 세분화
  • 소프트웨어의 기능에서부터 시작해 점차적으로 구체화
  • 알고리즘, 자료 구조 등 상세한 내역은 가능한 한 뒤로 미루어 진행

5. 정보 은닉(Information Hiding)

한 모듈 내부에 포함된 절차와 자료들의 정보가 감추어져 다른 모듈이 접근하거나 변경하지 못하도록 하는 기법.

  • 정보 은닉을 통해 모듈을 독립적으로 수행할 수 있다. 
  • 하나의 모듈이 변경되더라도 다른 모듈에 영향을 주지 않으므로 수정, 시험, 유지보수가 용이.
Comments