본문 바로가기

소프트웨어아키텍처

[SA강좌] Part 1-12 소프트웨어 아키텍처와 개발 프로세스의 관계 소프트웨어 아키텍처와 개발 프로세스의 관계 소프트웨어 아키텍처와 개발 프로세스와의 관계는 어떻게 정의되는것인지 살펴보자. 사실상 소프트웨어 키텍쳐를 중심으로 개발 프로세스를 구성하여야 하며 그것에 대한 관계는 다음과 같다. 소프트웨어 아키텍처와 다른 작업과의 관계 그림 Ⅱ-5, 소프트웨어 아키텍처와 다른 작업과의 관계 그림 Ⅱ-5은 소프트웨어 아키텍처와 개발 프로세스 상의 다른 작업과의 관계를 보여준다. 소프트웨어 아키텍처 설계는 요구사항 분석과 하드웨어 아키텍처를 참고하며 소프트웨어 아키텍처 설계가 완료되면 요구사항과 하드웨어 아키텍처도 영향을 받아서 수정되어야 한다. 요구사항의 경우는 소프트웨어 아키텍처가 정립되면 비기능적인 요구사항들이 구체화된다. 하드웨어 아키텍처는 소프트웨어를 동작하기에 적합한지.. 더보기
[SA강좌] Part 1-11 아키텍트의 의무와 가져야 할 역량 아키텍트의 의무 시스템의 목표를 찾아라 고객이 기대하는 것이 무엇인가? 시스템에 필요한 기술은 무엇인가? 지금 쓸 수 있는 기술은 어떤것들이 있는가? 현재 기술과 새로운 기술에 맞춰 고객의 기대와 비즈니스 목표를 고려한 전략을 세우고 유지하라. 아키텍쳐의 일관성을 유지하라. 설계와 관련된 기술 분야의 위험을 감지하고 대비하라. 우선 순위를 결정해서 반복 개발 계획을 제안하라. 아키텍트가 가져야 할 역량 아키텍트가 가져야 할 역량을 기술 측면과 사업 전략 측면, 조직 측면에서 나누어 설명한다. 기술 아키텍트가 알아야 할 것 아키텍트는 무엇을 해야 하는가? 갖춰야 할 자질 도메인과 관련 기술에 대한 이해 어떤 기술적인 이슈가 프로젝트 성공의 핵심인지 개발 기술과 설계 기술 모델링 Tradeoff analys.. 더보기
[SA강좌] Part 1-10 아키텍트의 역할 정의 아키텍트의 역할 정의 아키텍트는 개발 프로젝트에서 초기에 기술적인 부분에 대하여 의사결정을 진행한다. 또한 프로젝트가 진행될 수 있도록 기술적인 이슈들을 해결한다. 아키텍트가 프로젝트의 각 phase마다 해결하는 문제는 다음과 같다. 표 Ⅱ-1. 프로젝트의 각 phase마다 아키텍트가 수행하는 역할 단계 아키텍트가 수행하는 역할 Inception Architecture prototyping Make/buy trade-offs Primary scenario definition Archtecture evaluation CASE tool, 개발 툴 등 각종 툴 사용 방안 설계 문서 템플릿 결정 설계자와 개발자의 작업 규칙 결정 Elaboration Architecture baselining Primary sc.. 더보기
[SA강좌] Part 1-9 다른 아키텍처와의 관계 다른 아키텍처와의 관계 소프트웨어 아키텍처는 Enterprise Architecture에 포함된 business architecture, data architecture, Technical Architecture등을 참고하여 상세화 한다. 그림 Ⅱ-3. 소프트웨어 아키텍처와 다른 아키텍처와의 관련성 다른 아키텍처는 소프트웨어 아키텍처가 작성되기 전에 완성되어 있으며 소프트웨어 아키텍처의 입력으로 받아들인다. 그러나 소프트웨어 아키텍처가 작성되면 다른 아키텍처의 변경이 불가피하며 소프트웨어 아키텍트는 다른 아키텍처도 변경해야 한다. 소프트웨어 아키텍처 문서에는 다른 아키텍처도 참고 자료로 포함해야 한다. 그림 Ⅱ-4. 아키텍처 팀이 받아들이는 입력물과 생산하는 출력물 IT Architecture 기업의 I.. 더보기
[SA강좌] Part 1-8 소프트웨어 아키텍처에 포함되지 않는 것 소프트웨어 아키텍처에 포함되지 않는 것 소프트웨어 아키텍처는 하드웨어, 네트워크, 물리적인 시스템에 대한 아키텍처를 포함하지 않는다. 따라서 소프트웨어 아키텍처 설계서는 시스템 안에 포함된 소프트웨어 만을 보여주며 시스템은 컨텍스트로서만 표현된다. 예를 들어 하드웨어 모델명, 하드웨어 구성, 라우터, 랜카드에 대한 정보는 소프트웨어 아키텍처에 포함되지 않는다. 이를 그린다는 것은 그 것에 종속된다는 의미이므로 '추상화'하려면 해당 정보가 표시되면 안된다는 것이다. 세부적인 구현 사항은 소프트웨어 아키텍처에 포함되지 않는다. 예를 들어 컴파일러 옵티마이제이션, DLL을 shared로 할 것인지, static으로 할 것인가는 소프트웨어 아키텍처에 포함되지 않는다. 이는 별도의 의사결정과정과 후반부에서 처리한다. 더보기
[SA강좌] Part 1-7 소프트웨어 아키텍처의 특징과 역활 소프트웨어 아키텍처의 특징 소프트웨어 아키텍처의 특징은 다음과 같다. 첫째, 소프트웨어 아키텍처는 시스템에 대한 추상화이다. 따라서 지엽적인 정보는 포함하지 않는다. 큰 그림만을 가지고 있는다. 둘째, 소프트웨어 아키텍처는 한가지 다이어그램으로는 결정되지 않으며 여러 관점의 다이어그램으로 이루어진다. 각각의 세부적인 것이 아니라, 건축물의 투시도와 같으며, 옷 디자이너의 스케치와 유사한 성격을 가진다. 소프트웨어 아키텍처의 역할 소프트웨어 아키텍처가 시스템 개발에서 담당하는 역할은 다음과 같다고 볼 수 있다. 첫째, 관련 당사자들 사이의 의사 소통의 수단이다. 둘째, 개발 프로젝트 초기 단계에서 의사결정 도구이다. 아키텍처는 품질 요소를 결정하며 프로젝트 조직에 영향을 끼친다. 셋째, 시스템의 전체 구조.. 더보기
[SA강좌] Part 1-6 소프트웨어 아키텍처의 구성요소 소프트웨어 아키텍처의 구성요소에 대해서 상세하게 살표보면 다음과 같은 구성 요소로 이루어짐을 알 수 있다. 시스템의 구성요소와 구성 요소 들 사이의 연결 관계 시스템의 설계와 진화를 통제하는 원칙과 가이드라인 시스템 구성 요소들의 collaboration ( 성과 ) 시스템이 어떻게 확장되고 수정될 것인가에 대한 결정 시스템의 구성 요소들이 가지고 있는 기술 다음 그림은 소프트웨어 아키텍처의 구성요소를 보여준다. 그림 Ⅱ-1. 소프트웨어 아키텍처 산출물 그림 Ⅱ-1를 보면 소프트웨어 아키텍처는 세가지로 구분된다. Meta-Architecture는 아키텍처를 설계하기 위한 일반적인 지침이다. Meta-Architecture는 소프트웨어 아키텍처가 무엇인지 결정하고 아키텍처를 설계하기 위한 일반적인 의사 결.. 더보기
[SA강좌] Part 1-5 소프트웨어 아키텍처의 정의 소프트웨어 아키텍처의 정의 가장 먼저 다른 사람들의 소프트웨어 아키텍쳐에 대한 정의에 대해서 알아보고 이 곳에서 사용할 소프트웨어 아키텍쳐의 정의에 대해서 알아보도록 한다. 아직도 소프트웨어 아키텍쳐에 대한 '정의'는 무수히 많은 곳에서 정의되고 정답자체가 아직은 모호한 분야라고 할 수 있으므로, 각자 머릿속에 그 '정의'를 선택하거나 정의할 수 있고, 그 부분들에 대해서 생각해 봐야 한다. 소프트웨어 아키텍처의 정의들 고전적인 정의 ANSI/IEEE Std 1471-2000정의 Bass, Clements, Kazman의 정의 소프트웨어 아키텍처는 시스템의 구조, 시스템의 구조들에 대한 구조이다. Dewayne E. Perry, Alexander L. Wolf의 정의 소프트웨어 아키텍처는 특별한 형태를 .. 더보기
[SA강좌] Part 1-4 소프트웨어 아키텍처란? 소프트웨어 아키텍처 란? 본격적인 소프트웨어 아키텍쳐의 개념에 대해서 알아보도록 하자. 그렇다면, 소프트웨어 아키텍쳐란 무엇이며, 아키텍트란 누구이며, 그의 역할과, 소프트웨어 아키텍쳐를 통하여 개발 프로세스와 어떤 영향을 가지며, 소프트웨어 아키텍쳐와 다른 아키텍쳐가 어떤 관계를 가지는가에 대해서 알아봐야 한다. 이 곳에서는 실제 CBD나 개발방법론에 대해서 서술하지는 않는다. 다음 강의 때에 CBD와 연관성이 있는 부분에 대해서 서술해볼 것이다. 이 그림은 실제 CBD로 개발되어지는 개발 프로세스에서 산출물과 개발흐름에 대해서 포괄적으로 서술되어진 그림이다. 이러한 CBD의 전체적인 산출물 구조는 다음과 같다. 이 곳에서는 소프트웨어 아키텍쳐가 중요하므로 전반적인 프로세스에 대해서는 서술하지 않도록 .. 더보기
[SA강좌] Part 1-3 본 강좌의 목적 본 강좌의 목적 본 강좌의 목적은 다음과 같다. 첫째, 아키텍트가 프로젝트 시작 시점에서 투입되어 무엇을 하는지 시나리오를 작성할 수 있게 하며 둘째, 소프트웨어 아키텍처가 개발 프로젝트에 정착될 수 있도록 하고 셋째, 아키텍트의 역할에 대해서 정의를 하며 넷째, 아키텍트와 프로젝트의 구성 요소 사이의 관계에 대해서 이해를 한다. 다섯째, 소프트웨어 아키텍처가 포함된 개발 프로젝트의 프로세스는 무엇인가에 대해서 알아보고 여섯째, 아키텍트가 프로젝트에서 결정해야 할 항목은 무엇인가에 대해서 고민하는 것이다. 더보기