소프트웨어 구조

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

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

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

역사

편집

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

동기 부여

편집

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

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

같이 보기

편집

각주

편집
  1. Naur, Peter; Randell, Brian, 편집. (1969). “Software Engineering: Report of a conference sponsored by the NATO Science Committee, Garmisch, Germany, 7–11 Oct. 1968.” (PDF). Brussels: NATO, Scientific Affairs Division,. 2012년 11월 16일에 확인함. 
  2. P. Kruchten, H. Obbink & J. Stafford (2006). “The past, present and future of software architecture”. 2012년 11월 12일에 확인함. 
  3. “Software Architecture in Practice”. books.google.com. 2023년 11월 2일에 확인함. 
  4. “Software Architecture Review and Assessment (SARA) Report” (PDF). pkruchten.files.wordpress.com. 2023년 11월 2일에 확인함. 
  5. “Softwarearchitektur: Der ultimative Leitfaden”. tectrain.ch. 2023년 11월 2일에 확인함. 
  6. “Foundations for the Study of Software Architecture” (PDF). users.ece.utexas.edu. 2023년 11월 2일에 확인함. 
  7. “Just Enough Software Architecture: A Risk-driven Approach”. books.google.com. 2023년 11월 2일에 확인함. 
  8. “RCDA: Architecting as a risk- and cost management discipline”. zenodo.org. 2023년 11월 2일에 확인함. 

외부 링크

편집