소프트웨어 아키텍처 vs 시스템 아키텍처 vs 클래스 다이어그램?


11

다음 용어에 대해 상당히 혼란스러워합니다.

소프트웨어 아키텍처

소프트웨어 응용 프로그램 아키텍처는 모든 기술 및 운영 요구 사항을 충족하면서 성능, 보안 및 관리 효율성과 같은 일반적인 품질 특성을 최적화하는 구조화 된 솔루션을 정의하는 프로세스입니다. 여기에는 다양한 요소에 기반한 일련의 결정이 포함되며 이러한 각 결정은 응용 프로그램의 품질, 성능, 유지 관리 성 및 전반적인 성공에 상당한 영향을 줄 수 있습니다. ( 마이크로 소프트 )

시스템 구조

시스템 아키텍처는 시스템의 구조, 동작 및 더 많은 뷰를 정의하는 개념적 모델입니다. 1 아키텍처 설명은 시스템의 구조 및 동작에 대한 추론을 지원하는 방식으로 체계화 된 시스템 설명 및 표현입니다 ( wiki )

클래스 다이어그램

소프트웨어 엔지니어링에서 UML (Unified Modeling Language)의 클래스 다이어그램은 시스템 클래스, 해당 속성, 오퍼레이션 (또는 메소드) 및 오브젝트 간의 관계를 표시하여 시스템 구조를 설명하는 정적 구조 다이어그램 유형입니다. ( 위키 )

이 설명을 읽으면 이들 모두가 응용 프로그램의 다른 모듈 간의 상호 작용을 설명합니다. 그러나 이것들의 차이점은 무엇입니까?
이 용어를 비교하기 위해 생각하고 시도한 것 :

  • 클래스 다이어그램은 시스템 아키텍처의 형태가 아닙니다. 위의 설명 ( structure, behavior, and more views of a system)은 아키텍처에 구현 세부 정보가 없음을 암시하지만 클래스 다이어그램은 구현을 설명하고 아마도 아키텍처보다는 설계 방향에 더 가깝다는 것을 암시하기 때문입니다.
  • 시스템 아키텍처는 데이터베이스와 같은 외부 상호 작용을 포함하는 아키텍처라고 생각하지만 소프트웨어 아키텍처는 응용 프로그램 자체에 중점을 둡니다.

1
아마도 클래스 다이어그램은 소프트웨어 아키텍처 활동 의 결과물 입니다. 건물의 청사진이 건물의 건축가의 결과물과 비슷합니다.
FrustratedWithFormsDesigner

답변:


7

시스템 아키텍처시스템 의 구성 요소를 설명합니다. 예를 들어 다음으로 구성된 주문 입력 시스템이있을 수 있습니다.

웹 프런트 엔드, 비즈니스 계층 서비스 및 데이터 저장소

따라서 이것을 보여주는 높은 수준의 다이어그램이어야합니다.

소프트웨어 응용 프로그램 아키텍처 는 특정 구성 요소의 아키텍처를 설명합니다. 예를 들어 주문 입력 시스템의 구성 요소 중 하나는 웹 프런트 엔드입니다. 응용 프로그램 아키텍처는 해당 구성 요소의 다양한 계층과 상호 작용을 보여줍니다. 반응 형 UI, 모델 뷰 컨트롤러, 웹 서비스 콜 아웃, 로깅 수행 방법 등 각 구성 요소에 대한 아이디어를 제공하고 더 큰 시스템의 일부인 해당 구성 요소의 레이어를 구성합니다.

일반적으로 해당 구성 요소의 구성 방법을 보여주는보다 자세한 다이어그램이 작성됩니다.

마지막으로 클래스 다이어그램 은 소프트웨어 응용 프로그램 아키텍처에 대해 자세히 설명합니다. 예를 들어, 로깅 인터페이스 계약은 어떤 모습입니까? View는 Controller와 어떻게 상호 작용합니까? 이것들은 시스템의 특정 구성 요소에 대한 소프트웨어 응용 프로그램 아키텍처를 자세히 설명합니다.

특정 구성 요소가 크고 복잡한 경우 이들 중 다수가 있어야합니다.


2

몇 가지 추가 사항 :

  • 시스템은 가장 광범위하고 일반적으로 가장 높은 수준이며 가장 자세하지는 않습니다.
  • 시스템의 일부는 소프트웨어로 분류 될 수 있습니다.
  • 소프트웨어의 일부는 클래스 다이어그램을 사용하여 설명 될 수 있습니다.

마지막으로, 아키텍처는 모든 것을 재 구축하지 않고 나중에 다시 시작하기가 어렵거나 불가능한 일회성 선택에 관한 것입니다. 디자인과 차별화되는 아키텍처에 대한 최상의 정의는 "실제로 변경하는 데 비용이 많이 드는 모든 것"입니다. 따라서 아키텍처에서는 일반적으로 솔루션 유형에 관계없이 프로그래밍 언어, 운영 체제, 관계형 데이터베이스 브랜드를 선택할 수 있습니다. 따라서 아키텍처로 분류하는 것은 시스템 자체와 측면과 관련하여 유연성이 어느 정도인지에 달려 있습니다.


0

클래스 다이어그램은 나머지 두 용어와는 상당히 다릅니다. 클래스는 다른 클래스에 제공하는 클래스와 서로 상호 작용하는 방식을 보여줍니다. 그러나 '시스템 아키텍처'및 '소프트웨어 아키텍처'라는 용어는 혼동을 일으키고 추가 설명이 필요합니다.

'시스템'은 소프트웨어 구성 요소뿐만 아니라 하드웨어 구성 요소와 같은 다른 구성 요소를 나타냅니다. 시스템에 소프트웨어 시스템 만 포함 된 경우 두 용어간에 차이가 없습니다. 그러나 시스템에 다른 비 소프트웨어 구성 요소가 포함 된 경우 소프트웨어 아키텍처는 시스템의 시스템 아키텍처와 크게 다릅니다.


시스템 아키텍처에도 GUI 모듈이 포함되어야합니까? @Tushar
KingBoomie

그렇습니다. 소프트웨어 구성 요소 일 필요는 없습니다. @RickBeeloo
Tushar

그러나 사용자 입력을 수락하고 사용자에게 무언가를 표시하려면 소프트웨어 클래스가 필요합니까? 그래서 그것은 또한 소프트웨어 구성 요소 여야합니까?
KingBoomie

예, 아니오. 소프트웨어 시스템의 모든 소비자가 인간 인 것은 아닙니다 :)
Tushar
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.