BLOG main image
분류 전체보기 (344)
NWC Consulting (1)
서비스 (173)
출판 (169)
일반 (0)
195,318 Visitors up to today!
Today 34 hit, Yesterday 86 hit
daisy rss
2013.05.06 19:52

아키텍처는 설계결정들의 컬렉션을 적용한 결과라고도 말 할 수 있을 것이다.

저자들은 설계결정을 7가지 카테고리로 나누고 있다.

책임 할당(Allocation of responsibilities)Coordination mode, 데이타 모델(Data model), 자원 관리(Management of resources), 아키텍처 요소들 사이의 매핑(Mapping among architectural elements), Binding time decisions, 기술 선택(choice of technology)

 

책임 할당(Allocation of responsibilities)

할당할 중요한 책임이 무엇이고, 그 책임을 어떤 요소에 어떻게 할당할 것인지에 대한 결정

Identifying the important responsibilities, including basic system functions, architectural infrastructure, and satisfaction of quality attributes.

Determining how these responsibilities are allocated to non-runtime and runtime elements (namely, modules, components, and connectors).

이러한 결정들에 대한 전략에는 기능 분할(functional decomposition), 실세계 객체들을 모델링(modeling real-world objects), 시스템 동작의 주요 모드들에 기반한 그루핑(grouping based on the major modes of system operation), 유사한 품질 요구사항들에 기반한 그루핑(grouping based on similar quality requirements)과 같은 것들이 있다.

 

Coordination model

소프트웨어는 설계된 메커니즘을 통해 서로 상호작용하는 요소들에 의해 동작한다. 이러한 메커니즘들을 모아 coordination model이라고 한다.

coordinate해야 하는 요소와 coordinate하지 못하도록 해야 하는 요소들을 식별하고, coordination의 특성들 정하고, 커뮤니케이션 메커니즘 선택에 대한 결정 

Identifying the elements of the system that must coordinate, or are prohibited from coordinating.

Determining the properties of the coordination, such as timeliness, currency, completeness, correctness, and consistency.

Choosing the communication mechanisms (between systems, between our system and external entities, between elements of our system) that realize those properties. Important properties of the communication mechanisms include stateful versus stateless, synchronous versus asynchronous, guaranteed versus nonguaranteed delivery, and performance-related properties such as throughput and latency.

 

데이타 모델(Data model)

주요 데이터 추상들과 그들의 오퍼레이션들과 속성들을 선택하고, 일관된 데이터 해석을 위한 메타데이터 작성하고 데이터를 조직과 관련된 결정

Choosing the major data abstractions, their operations, and their properties. This includes determining how the data items are created, initialized, accessed, persisted, manipulated, translated, and destroyed.

Compiling metadata needed for consistent interpretation of the data.

Organizing the data. This includes determining whether the data is going to be kept in a relational database, a collection of objects, or both. If both, then the mapping between the two different locations of the data must be determined.

 

자원 관리(Management of resources) 

소프트웨어 시스템은 제한된 하드웨어 자원(CPU, memory, battery, hardware buffers,
system clock, I/O ports)과 소프트웨어 자원(system locks, software buffers, thread pools, and non-thread-safe code)을 갖는다.
공유된 자원은 관리되어야 한다.

어떤 자원이 관리되어야 하고, 어떤 시스템 요소가 각각의 자원을 관리하고, 어떻게 자원이 공유되고, 어떤 전략을 경쟁에 사용하고, 다른 자원의 포화상태에서의 영향이 어떠한지를 결정 

Identifying the resources that must be managed and determining the limits for each.

Determining which system element(s) manage each resource.

Determining how resources are shared and the arbitration strategies employed when there is contention.

Determining the impact of saturation on different resources.

 

아키텍처 요소들 사이의 매핑(Mapping among architectural elements)

아키텍트는 두 종류의 매핑을 제공해야 한다. 첫 번째는 서로 다른 유형의 아키텍처 구조에 속하는 구성요소들 사이의 매핑이고, 두 번째는 소프트웨어 요소와 환경 요소와의 매핑이다.

첫 번째 매핑의 예: 개발 단위(모듈)을 실행 단위(쓰레드나 프로세스)에 매핑

두 번째 매핑의 예: 프로세스를 프로세스가 실행되는 특별한 CPU에 매핑

 

Binding time decisions

설계결정은 누가, 어느 시점(개발 주기의)에 할 것인가에 따라 좀 더 다양하게 분류될 수 있을 것이다. 따라서 나머지 6개의 카테고리의 속하는 설계결정들은 연관된 binding time decisions을 갖는다.

Binding time decisions introduce allowable ranges of variation. This variation can be bound at different times in the software life cycle by different entities from design time by a developer to runtime by an end user. A binding time decision establishes the scope, the point in the life cycle, and the mechanism for achieving the variation. 

 

기술 선택(choice of technology)

모든 아키텍처 결정은 궁극적으로 특별한 기술을 사용해서 실현되기 때문에 아키텍트는 기술들을 결정해야 한다.

설계 결정을 실현하기 위해 사용할 기술들과 기술들을 지원할 도구들을 결정하고, 기술 지원에대한 내부적 외부적 지원 정도와 기술 선택에 대한 부수적 효과와 새로운 기술이 존재하는 기술들과 호환될 수 있는지를 결정

Deciding which technologies are available to realize the decisions made in the other categories.
Determining whether the available tools to support this technology choice (IDEs, simulators, testing tools, etc.) are adequate for development to proceed.

Determining the extent of internal familiarity as well as the degree of external support available for the technology (such as courses, tutorials, examples, and availability of contractors who can provide expertise in a crunch) and deciding whether this is adequate to proceed.

Determining the side effects of choosing a technology, such as a required coordination model or constrained resource management opportunities.

Determining whether a new technology is compatible with the existing technology stack. For example, can the new technology run on top of or alongside the existing technology stack? Can it communicate with the existing technology stack? Can the new technology be monitored and managed?

 

저작자 표시 비영리 변경 금지
신고
Name
Password
Homepage
Secret

티스토리 툴바