07. 소프트웨어 아키텍처 설계 전략 명지대학교 융합소프트웨어학부 김정호 교수
Retrospect 소프트웨어 아키텍처 드라이버 소프트웨어 아키텍처 설계 전략 기능 요구사항 비기능 요구사항 입력과 출력의 변형 Use Case 모델링 비기능 요구사항 제약 사항 품질 속성 6가지 factor로 구성된 품질 시나리오로 모델링 소프트웨어 아키텍처 설계 전략 아키텍처 전술 (Tactics) 변경용이성 성능 가용성 보안
목 차 소프트웨어 아키텍처 설계 전략 소프트웨어 아키텍처 전술(Tactics) 소프트웨어 아키텍처 패턴 참조 아키텍처 변경용이성(Modifiability) 성능 (Performance) 안정성 (Availability) 보안 (Security) 소프트웨어 아키텍처 패턴 Layer Blackboard Pipes and Filters Publishers&Subscribers Broker MVC 참조 아키텍처 Spring Hibernate …
Layer 패턴 정의 예제 특정 추상 레벨에 있는 서브태스크들끼리 서로 묶어서 하나의 그룹으로 분류하는 방식 하위 수준의 이슈를 상위 수준에 이슈와 분리시켜 소프트웨어의 재사용성을 높여주는 패턴 예제 네트워크 프로토콜 아키텍처 (e.g. OSI 7 layer) 가상 머신 (e.g. interpreters, JVM)
Layer 패턴 Issues Applications& interfaces Major processes - Separation of concerns Applications& interfaces Major processes Domain classes Mechanisms Services
Layer 패턴
Layer 패턴
Layer 패턴
Layer 패턴
Blackboard 패턴 정의 예제 Shared data, database와 같은 데이터 중심 패턴 중에 하나 명확히 정의된 문제 해법이 없을 때 문제를 풀어가는 하나의 방식을 정의한 패턴 대략적으로 해법을 수립하기 위해 특수한 서비스 시스템의 지식을 조합하는 패턴 예제 AI system Signal processing Radar/sonar Vision processing Speech processing repository Accessor Middleware repository Accessor Shared data DBMS
Blackboard 패턴 1. Start Control::loop 2. Control::nextSource Referenced by : David Garlan, Lecture notes of “17-655/17-755 Architecture for software system”, Institute for software research, CMU, 2011. 1. Start Control::loop 2. Control::nextSource 3. determine potential knowledge sources by calling Blackboard::inspect 4. Invoke KnowledgeSource::execCondition of each candidate knowledge source 5. Each candidate knowledge source invokes Blackboard::inspect to determine if/how it can contribute to current state of solution 6. Control chooses a knowledge source to invoke by calling KnowledgeSource::execAction 7. Executes KnowledgeSource::updateBlackboard 8. Calls Blackboard::inspect 9. Calls Blackboard::update
Pipes and Filters 패턴 정의 예제 데이터 스트림을 처리하는 패턴 데이터는 Pipe를 통해서 Filter로 전달 전달된 데이터는 Filter를 통해 걸러지고 pipe를 통해 다음 Filter로 이동 예제 Unix command system Ex>> cat etc/passwd | grep “joe” | sort > junk
Pipes and Filters 패턴 Programming Language Compiler
Question ?