2. Architecture Style 유형과 사용시 효과를 얻는 품질속성
1.Architecture Style은
1) SW System의 근본적 구조적조직스키마(structural organization schema)
- 기정의된 subSystem의 집합이 제공되며
- 그들의 역할이 확정되며
- 그들간의 관계를 조직하는데 필요한 rules와 guidelines을 포함한다.
2) SW architecture를 구성하는 template
- specify the system-wide structural properties of an application
- fundamental design decision when developing a software system
2. Design pattern은 SW설계시 subsystem 설계시에 자주 사용되는 sub scheme
3. Idiom은 programming language를 명확하게 하는 low level pattern, components, implement단계
4. Hierarchical Software Architecture
- Main subroutine : subroutines를 재사용하고 독립적으로 개인 subroutine 개발, DFD
장 : top down으로 으로 task를 정의하며 시스템을 분해하기 용이, OO design의 subsystem으로 활용
단 : globally shared data가 취약점을 가짐. tight coupling이 발생하여 ripple effect등으로 변경에 취약
- Master-slave : fault tolerance, system reliability, slave는 master의 replication, matesms invocations를 slave로 주며 slave는 다른일을 수행할수도 같은 일을 수행할 수도 있음
parallel computing, accuracy of computataion,replication of server
- Layerd : TCP/IP, 여러개의 layer로 구성 각 layer는 관련 class들의 그룹으로 구성, layer별 하나의 responsibility를 갖음, interface of each layer
specific role and responsibility, abstraction, separation of concerns, isolation concept(변경시 다른 layer에 영향을 주진않는다)
장 : increaing levels of abstraction기반 개발, layer간 독립성, 유연성, component based 기술에 적합, 이식성이 좋음
단 : runtime 성능이 낮음..layer가 많아서..
- Virtual machine : virtual abstraction, a set of attributes/operations, language와 환경을 실행 플랫폼과 분리
장 : 이식성, 개발단순성, 장애모델에 대한 시뮬레이션 용이
단 : interpreter의 본질로 인해 수행 이 느림, 새로운 layer추가로 추가 overhead
- Microkernel : 플러그인특징, additional application feature를 core application에 추가, 확장성,
core system(최소의 기능만을 수행), plug-in modules(독립적,단독컴포넌트, 특수한수행, 추가 특성, 공통코드,)
장 : portability, flexibility, separation of policy and mechanism
단 : scalability, reliability, transparency, performance, complexity of design and implementation
5. Implicit Asynchronous Communication Software Architecture
- non-bufferd event based implicit invocations Architecture Style : event, publisher/subscriber
장 : framework availability, reusability of components, system maintenance and evolution, independency and flexible connectivity, paralle execution
단 : test and debug 어려움, event source 간에 tightly coupling
- Bufferd Message Based Architecture Style : message/queue, independency of components, message format맞아야함
장 : 익명성, concurrency, scalability, reliability of message delivery, supports batch processing ,loose coupling
단 : capacity limit of message queue, 시스템설계 개발 복잡성 증가
6. Distributed Architecture
- Client-Server Architecture Style
장 : responsibility의 분리, 서버 components재사용성
단 : 이기종 인프라에 대해 요구 만족 어려움, 보안위험, server availability and reliability, testability and scalability
- Multi-tier : 엔터프라이즈 application에 많이 사용, 프론트/미들/백엔드 티어 , 1tier(메인프레임), 3티어
- Proxy : proxy object 가 surrogate(대리자)/delegate역할을 함, interface/superclass사용, transparency(신뢰성,은닉)
장 : access control to originals, 메모리절약, 성능이득(cache proxy)
단 : 잠재적 위험성/복잡한기능성
- Dispatcher(Load Balancer) : availability(복구), scalability(확장,성능)
- Broker:invoke , foward, process, 이기종 시스템을 독립적으로 협력적으로 동작, 서버와 client decouple, CORBA, proxy based system
장 : server 투명성, 변경/확장용이성, client 단순성, 서버 이식성, 재사용성, 서버변경용이성
단 : proxies의 부하, 낮은 fault tolerance, proxy가 많아 테스트 어려움
- Message Broker: publishing, subscribing
장 : reusability, maintainability, flexibility
단 : overhead, inderection complexity, debugging and testing어려움
- Service Oriented Architecture
7. Data Flow Software Architectures
- Batch Sequential : data flow carries a batch of data as a whole from one subsystem to another
the data is batch sequential.
reading and writing I/O files drive the data flow explicitly.
cause bottlenecks because it requires batched data as input and output.
장 : simple divisions on subsustems, 각 subsystem은 stand-alone programming
단 : Implementation requires external control, concurrency is not supported, high latency
- Pipe and Filter : process a stream of data, processing step은 filter에 encapsulated, data는 pipe로 이동, active filter/ passive filter
장 : concurrency, reusability, Modifiability(low coupling of filter, new filter adding), simplicity(pipe/filter로 구역정리가 단순), flexibility(sequential/parallel execution지원)
단 : dynamic interaction에 부적합, 동적으로 pipe and filter에 configure적용 어려움
- Process Control : embedded에 적합(가전,차량), control unit, executor processing unit
8. Data-Centered Software Architectures
- Repository : 중앙에 데이터 저장소가 있고 sw component로 주변에서 공유, 수동적 데이터, Repository/Client
장 : data integrity(백업,복구용이), system scalability, reusability, transient data overhead감소
단 : data 저장소 reliability availability 보장필요, data store와 agents간의 높은 의존성, 분산데이터인경우 데이터 이동에 높은 비용발생
- Blackboard : 결정론적결과 없이 어떤 문제를 풀때, 공통 데이터구조를 위해 협동적으로 일하는 독립프로그램들 집합
AI, recognition application, 날씨예측, expert system
blackboard(가정과 사실저장), knowledge source(domain specific knowledge저장), Controller
rule based , self activated system, approximate solution
장 : scalability(knowlege source 추가확장용이), concurrency(parallel수행), 가정실험지원, Reusability(knowledge source agents)
단 : blackboard변경시 agent들에 큰 영향, 부분/대략적 해답만 기대됨, 언제 끝나는지를 알수 없음, Mutiple agents의 동기화 문제,debugging/testing어려움
9. Interaction-Oriented Software Architectures
- MVC : look and feel 특성이 있는 GUI 시스템에 사용
장 :많은 MVC기반 framework toolkits 사용가능
새로운 인터페이스 뷰의 변경이나 추가가 용이, 시스템 영향없이 새로운 기술적용 용이
각 분야(화면,프로그램,데이터)전문가가 같이할때 높은 효율성/생산성
단 : agent-oriented application에는 부적합함(interactive mobie, robotics application)
View, Controller 가 명확하게 영역구분이 되지 않을 수 있음
- PAC(Presentation-Abstraction-Control):mutiple agents, cooperating agents분석
장 : multitasking, multiviewing지원, agent reusability, extensibility, plug/replace 용이, agent 병행수행 지원
단 : agent간 Communication비용이나 Presentation, Abstraction간의 연결관리 비용발생
agent간의 loose coupling과 높은 독립성은 정확한 수의 agent수를 산정하기 어려움
'T-prj > 1.SW공학' 카테고리의 다른 글
설계방법론(UP,ADD) (0) | 2017.09.01 |
---|---|
99회 결과 (0) | 2013.03.29 |
[소공144]소프트웨어 취약점 보완 (0) | 2012.08.20 |
Recent Comment