소프트웨어 구조

소프트웨어 구성요소간 관계 표현 및 설계, 업그레이드의 지침 및 원칙

소프트웨어 구조 또는 소프트웨어 아키텍처(software architecture)는 소프트웨어의 구성요소들 사이에서 유기적 관계를 표현하고 소프트웨어의 설계와 업그레이드를 통제하는 지침과 원칙이다.

소프트웨어 개발 프로세스
활동과 단계
요구사항 분석 · 기능 명세
구조 · 설계
구현 · 테스팅
배치 · 유지보수
개발 모형
애자일 소프트웨어 개발 · 클린룸
DSDM · 순차점증적 개발 · 반복형 개발
RAD · RUP · 나선 모형
폭포수 모델 · 익스트림 프로그래밍
스크럼 · V 모델 · TDD
지원 활동
구성 관리 · 문서화
품질보증 · 프로젝트 관리
사용자 경험 설계
도구
컴파일러 · 디버거 · 프로파일러
GUI 디자이너 · 통합 개발 환경

역사

소프트웨어 설계와 구조 간의 비교는 1960년대 말에 처음 그려졌지만[1] 소프트웨어 구조라는 용어는 1990년대에 모습을 드러냈다.[2]

동기 부여

소프트웨어 아키텍처는 복잡한 시스템을 "지적으로 이해할 수 있는" 추상화이다.[3] 이러한 추상화는 여러 가지 이점을 제공한다:

  • 소프트웨어 시스템을 구축하기 전에 소프트웨어 시스템의 동작을 분석할 수 있는 프레임워크를 제공한다. 미래의 소프트웨어 시스템을 실제로 구축하지 않고도 이해관계자의 요구 사항을 충족하는지 확인할 수 있어 상당한 비용 절감과 위험 감소 효과를 제공한다.[4] 효과적인 아키텍처는 이러한 요구 사항을 충족할 뿐만 아니라 향후 확장성 및 유지 관리도 용이하게 해준다.[5]
  • 아키텍처는 요소와 솔루션을 재사용할 수 있는 프레임워크를 제공한다. 전체 소프트웨어 아키텍처 또는 개별 아키텍처 전략 및 솔루션과 같은 일부 요소를 이해관계자가 유사한 품질 속성 또는 기능을 요구하는 여러 시스템에서 재사용할 수 있으므로 설계 비용을 절감하고 설계 오류의 위험을 줄일 수 있다.[6]
  • 시스템의 개발, 배포 및 수명에 영향을 미치는 초기 설계 결정을 지원한다. 일정과 예산 초과를 방지하려면 영향력이 큰 초기 의사 결정을 올바르게 내리는 것이 중요하다.
  • 이해관계자와의 커뮤니케이션을 용이하게 하여 이해관계자의 요구를 더 잘 충족하는 시스템을 만드는 데 기여한다. 이해관계자의 관점에서 복잡한 시스템에 대한 정보를 제시하면 이해관계자가 명시된 요구사항의 의미를 이해하고 이를 기반으로 설계 결정을 내리는 데 도움이 된다.
  • 이는 리스크 관리에도 도움이 된다. 소프트웨어 아키텍처는 위험과 실패 확률을 줄이는 데 도움이 된다.[7]
  • 비용 절감에 도움이 된다. 소프트웨어 아키텍처는 복잡한 IT 프로젝트에서 위험과 비용을 관리하는 수단이다.[8]

같이 보기

각주

외부 링크