반응형
1. 시스템의 청사진, 소프트웨어 아키텍처
가. 소프트웨어 아키텍처의 정의
- SW 구성요소들의 기능과 요소들 사이의 상호작용 및 관계를 다루는 기술 명세서
- 프로그램 및 시스템의 컴포넌트, 컴포넌트들 간의 상호관계의 구조이며, 이들을 설계하고 전개하기 위한 지침과 원리
나. 소프트웨어 아키텍처의 정의
- stakeholder간의 관점 조율을 통한 시스템 최적화 및 통일된 의사소통
- 요구사항들 간의 개념상의 충돌 조정
- 시스템 분석의 명확성과, 표준화를 통해 유연하고 신속한 추가/변경으로 비즈니스요구를 실현함
다. 소프트웨어 아키텍처의 필요성
구분 | 필요성 | 내용 |
고객측면 | 의사소통 | 이해관계자 이해도 증진 및 의사소통 |
고객측면의사결정 | 초기 중요한 의사결정 | |
개발측면 | 재사용 | 재사용 촉진(표준화, 좋은 구조/경험) |
개발측면진화성 | 추가/변경의 용이성 | |
개발측면시스템분석 | 시스템 명시화 |
2. 소프트웨어 아키텍처 프레임워크 – IEEE 1471
가. 주요 구성요소
구성요소 | 내용 |
이해관계자 | SW개발에 관계된 모든 사람과 조직 |
관심사 | 각 이해관계자들의 요구사항 |
View | 시스템을 바라보는 다양한 관점 |
Patten(Style) | 반복되는 문제의 해결 방법을 제공 |
관계 | 요소들 간의 상호 작용 미 ㅊ관계 |
- 아키텍처 프레임워크는 유연하고 확장성 는 아키텍쳐를 개발하기 위한 틀
나. 소프트웨어 아키텍처 개발 프로세스
프로세스 | 세 부 내 용 | CSF |
현황분석 | - 시스템 요구사항, 비즈니스 목적, 개발조직 / 전문가의 경험 식별 및 도출 | 추적성 부여 |
아키텍쳐 프레임워크 |
- 정보 시스템을 바라보는 이해 당사자의 관점과 VIEW POINT를 반영한 표준 프레임워크 도출 | 통일된 관점 적용 |
품질요소 식별 |
- 시스템, 비즈니스, 아키텍처 관점의 품질요소 - 신뢰성, 기능성, 민첩성, 개념적 일관성 등 |
요소별 배타성 확인 |
품질요소 우선순위 식별 |
- 품질시나리오 도출 Utility Tree 활용한 품질요소별 우선순위 가시화 - 사용자와의 공조가 중요 |
품질 특성고려 |
관점정의 | - 소프트웨어 개발과 관련된 이해당사자별 주요 관심사항 도출 | 시각화 |
아키텍처 스타일 |
- 기 개발된 관점별 아키텍처 스타일을 시스템 환경에 맞게 선택 | 시스템 특성 고려 |
평가,선택 | - 선택된 아키텍처 후보를 평가하고 최종 선택 | ATAM분석 |
테일러링 | - 시스템 특성에 맞게 아키텍처를 조정 | 사용자승인 |
다. 설계 방법론
종류 | 설명 |
ABD (Architecture Based Design) ☞ 카네기 멜론대학 SEI 개발 |
1. 기능분할 - 아키텍처 스타일 선택 - 템플릿 정제 - 기능 검증 - 동시성 뷰 생성 - 배치뷰 생성 - 품질 시나리오 검증 - 제약사항 검증 |
ADD (Attribute Driven Design) |
1. 분해 모듈 선택 - 선택한 모듈 분해 정제 - 아키텍처 동인결정 - 아키텍처 스타일 선택 - 모듈 실체화 기능 할당 - 하위 모듈의 인터페이스 정의 - 유스케이스와 품질요소를 정제하고 검증해서 하위모듈의 제약사항으로 변환 - 모듈을 분해할 필요 없을때까지 반복 |
3. 소프트웨어 아키텍쳐 뷰와 스타일
가. 시나리오 기반의 4+1 View
- 특정뷰가 모든 시스템을 설명하긴 어려움
- 하나의 시나리오에 담긴 요구사항 구현을 위해 4개의 뷰가 함께 참여하고 영향을 줌
나. 아키텍처 스타일
구분 | 설명 | |
시스템 구성 |
저장소 구조 | 서브시스템들이 단일 중앙저장소에 자료를 접근, 변경 |
MVC 구조 | 모델, 뷰, 제어구조라는 세가지 서브시스템으로 구성 | |
C/S 구조 | 서버는 클라이언트라 불리는 서브시스템에 서비스 제공 | |
계층 구조 | 시스템이 계층적으로 분할, 하위 시스템이 제공하는 서비스를 상위 층의 시스템이 사용 | |
모듈분해 스타일 |
기능지향 파이프라이닝 |
서브시스템이 입력데이터를 받아 처리하고 결과를 다른 시스템에 보내는 작업의 반복 |
객체지향 | 서브 시스템이 서로 통신하는 객체들로 구성 | |
제어스타일 |
중앙 집중 | 한 서브시스템이 전체 시스템제어 |
이벤트기반 | 각 서브시스템이 외부 이벤트에 반응 |
다. 일반적인 소프트웨어 아키텍처 설계
- 아키텍처 요구사항 파악 -> 참조아키텍처 준비 -> 아키텍처 모델링 -> 아키텍처 프로토타이핑 -> 아키텍처 배포
4. 소프트웨어 아키텍처 개발 시 고려사항 및 효율적 실무활용방안
가. 소프트웨어 아키텍처 개발 시 고려사항
관점 | 구분 | 고려사항 |
분석관점 | 현황분석 | - 시스템 요구사항/비즈니스 목적 고려한 분석 |
분석관점프레임워크 | - 재사용 표준을 위한 일관된 관점으로 개발 | |
개발관점 | 대안결정 | - 아키텍처 스타일 평가 체크리스트 활용 필요 |
개발관점테일러링 | - 테일러링 표준을 정의하고 활용지침 마련 필요 |
나. 효울적 실무 활용 방안
- 품질 특성 기반으로 품질향상이 되도록
- 효과적인 의사소통을 위한 베이스라인 관리 및 추적성 보장
- 기술변화에 유연하게 대응할 수 있는 수단으로 활용
5. 업무순환 아키텍처 비즈니스 사이클(ABC:Architecture business cycle)
가. 정의
- 아키텍처, 기술, 비즈니스, 사회환경에 영향을 주고 받는 사이클 관계
나. 소프트웨어 프로세스와 아키텍처 비즈니스 사이클
아키텍처 활동 | 내용 |
사업적 요소 창출 | 비즈니스 요구사항 반영 |
요구사항 이해 | 기능적 요구사항 도출, 품질 속성 |
아키텍처 수집 | 통합, 가능한 수집 |
아키텍처 의사소통 | 명확한 문서화 작업 |
아키텍처 분석 | 제작한 아키텍처 평가 |
아키텍처 기반 개발 | 외부 구조와 인터페이스 |
아키텍처 준수 확인 | 아키텍처 실제 적용 여부 확인 |
반응형
'TechNote > 소프트웨어 공학(SW)' 카테고리의 다른 글
006. 소프트웨어 아키텍처 평가 방법론 (0) | 2022.09.30 |
---|---|
005. 소프트웨어 아키텍처 스타일 (0) | 2022.09.30 |
003. 요구 공학 (0) | 2022.09.29 |
002. Software Development Life Cycle의 정의 (0) | 2022.09.29 |
001.소프트웨어 공학 (0) | 2022.09.29 |
댓글