The software architecture of a program or computing system is the structure or structures of the system, which comprise software elements, the externally visible properties of those elements, and the relationships among them.
정의를 풀어 보면
- S/W아키텍쳐 는 프로그램이나 컴퓨팅 시스템에 존재한다.
제일 먼저 S/W 아키텍쳐는 프로그램이나 컴퓨팅 시스템과 관련되는 단어이다. 프로그램뿐 만아니라 칩에 녹아있는 프로그램들 임베디드 같은 곳에서도 논의되고 심지어 회로도에서도 이야기 될수 있는주제이다.
- S/W아키텍쳐는 프로그램이나 컴퓨팅 시스템의 구조나 구조들을 의미한다. 시스템은 많은 구조를 갖는다. 아키텍쳐가 하나의 구조만을 갖는 것은 아니다. 아키텍쳐를 표현하기 위한 구조들의 후보 집합은 고정하거나 미리 예상할 수 있는 것이 아니다.
- Runtime을 위한 구성요소나 그들의 관계는 : 전송 데이터, 상호 기동, 전달 신호(signal) process, tasks 등등
- Non-runtime을 위한 구성요소나 그들의 관계는 : sub-module, 모듈간의 상속관계, 개발 팀별 구현 대상 할당 class, library 기타 등등
이러한 구조를 이론적으로 3가지 종류로 구분한다.
- Module structures : 이 구조에서 구성 요소는 모듈이라는 구현 단위이다. Module structure들은 시스템에서 필요한 코드 기반의 표현이다.
- Component-and-connector structures : 시스템의 구성 요소는 실행 component와 connector이다. component는 컴퓨팅 단위이고 connector는 component간의 통신 경로이다.
- Allocation structures : S/W 요소와 외부(non-software) 요소와의 관계를 보여준다. S/W는 하나나 그 이상의 외부 요소에서 만들(개발환경)어지고 실행(실행환경)된다.
- 이 구조(들)은 S/W 구성요소들(조각), 구성요소들의 외부 속성(특성, 형태), 그리고 구성요소들간의 관계를 말한다.
- S/W Elements : 이 단어가 처음에는 S/W Component 였다. 그런데 아마두 CBD와의 혼란때문에 또는 컴포넌트라는 단어의 복잡 다단한 정치적 의미때문인지는 몰라도 element로 변경되었다. 특이점은 size에 대한 언급이 없다. 따라서 시스템의 크기 관점에 따라 S/W element의 크기가 달라진다는 의미가 된다. 그래서 어떤 시스템에서는 서브시스템 구성도 정도가 되기도 하고 어떤 시스템에서는 개별 클래스 레벨에서 S/W아키텍쳐가 이야기된다. 사실 size에 대한 이야기는 잘 풀어가야할 숙제 중에 하나이다.
- Externally Visible Properties : 하나의 구성요소는 다른 구성요소에 영향을 줌을 의미한다.
예를 들어: Service 제공, Performance 특성, 에러(fault) 제어, 공유 자원 사용 등을 의미하는데, 각 구성요소는 인터페이스를 통해서 다른 구성요소와 상호 작용한다.
아키텍쳐는 분할된 구성요소에서 public side만을 고려한다. 반대로 보면 S/W아키텍쳐에서는 element 내부의 이갸기는 관심이 없다는 말이 된다. 그리고 S/W Element의 size를 어떻게 보느냐에 따라 visible prop는 크게 차이가 날 수 밖에 없다.
- Relationships : S/W elements간의 관계를 의미한다. 그런데 이것 또한 element를 클래스로 보게 되면 그들 사이의 관계는 코드 상에서의 의존성에 치우치지만 거시적으로 보면 예를 들어 데몬, 연계 시스템들간의 관계등을 볼때는 통신 방법등에 집중하게된다. 어쨌거나 핵심은 S/W element에 대한 관점이다. 이점을 이해하면 S/W아키텍쳐 설계에 대해서 정확히 이해 할 수 있게 된다.
다른 정의들
S/W Architecture = { Elements, Form, Rationale} |
Perry and Wolf, 1992 |
Beyond the algorithms and data structures of the computation
Structural issues include gross organization and global control structure
|
Garlan and Shaw, 1993 |
The structure of the components of a program/system, their interrelationships, and principles and guidelines governing their design and evolution over time. |
Garlan and Perry, 1995 |
The software architecture of a program or computing system is the structure or structures of the system, which comprise software components, the externally visible properties of those components, and the relationships among them |
Bass, Clements, and Kazman 1998 |
An architecture is the set of significant decisions about the organization of a software system, the selection of the structural elements and their interfaces by which the system is composed, together with their behavior as specified in the collaborations among those elements, the composition these structural and behavioral elements into progressively larger subsystem, and the architectural style that guides this organization-these elements and their interfaces, their collaborations, and their composition |
Booch, Rumbaugh, and Jacobson 1999 |
The fundamental organization of a system embodied in its components, their relationships to each other, and to the environment, and the principles guiding its design and evolution. |
IEEE 2000a |
'아키텍처와 공학' 카테고리의 다른 글
RUP Core workflows[1] 프로젝트 관리 웍플로우 (0) | 2009.10.26 |
---|---|
RUP (Rational Unified Process) 이해를 위한 기본 개념 (0) | 2009.10.26 |
엔터프라이즈 환경에서 Software Architecture에대한 나의 생각 (0) | 2009.10.26 |
Architecture 평가 방법론 (0) | 2009.10.26 |
SW아키텍트를위한 TIP (0) | 2009.10.26 |
Posted by sjokim