본문 바로가기

SA

[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 본 강좌의 목적 본 강좌의 목적 본 강좌의 목적은 다음과 같다. 첫째, 아키텍트가 프로젝트 시작 시점에서 투입되어 무엇을 하는지 시나리오를 작성할 수 있게 하며 둘째, 소프트웨어 아키텍처가 개발 프로젝트에 정착될 수 있도록 하고 셋째, 아키텍트의 역할에 대해서 정의를 하며 넷째, 아키텍트와 프로젝트의 구성 요소 사이의 관계에 대해서 이해를 한다. 다섯째, 소프트웨어 아키텍처가 포함된 개발 프로젝트의 프로세스는 무엇인가에 대해서 알아보고 여섯째, 아키텍트가 프로젝트에서 결정해야 할 항목은 무엇인가에 대해서 고민하는 것이다. 더보기
[SA강좌] Part 1-2 소프트웨어아키텍처를 도입하면서 달성되는 목표 소프트웨어 아키텍처를 도입하면서 달성되는 목표 소프트웨어 아키텍처를 도입함으로써 다음과 같은 목표를 달성할 수 있도록 한다. 그 목표는 크게 다음의 세가지로 들 수 있다. 첫째, 견고하고 안정적이며 고품질의 시스템을 구축할 수 있다. 둘째, 시스템 구축 시 발생하는 문제들을 초기 단계에서 해결할 수 있다. 셋째, 아키텍트의 역할을 명확히 정의하여 20%의 고급 인력으로 80%의 프로젝트 인원을 리딩할 수 있다. 아키텍트는 비용과 목표에 대해서 가장 많은 고민을 하여야 한다. 최고의 개발자들로만 구성하여도 프로젝트는 실패할 수 있다. 튼튼하고 품질 좋고 나중에 문제 발생하지 않고, 비용이 적게든다면 최선이지 않은가? 그림 Ⅰ- 1. 아키텍처 적용 시 장점 그림 Ⅰ- 1은 소프트웨어 아키텍처 도입 시 시스템.. 더보기
[SA강좌] Part 1-1 시작배경 이 문서는 제가 운영하는 SA까페에있는 내용을 정리하여 블로그에 재오픈하는 내용입니다. 몇가지 내용을 첨삭하여서 올리는 내용으로 많은 분들이 읽으시고 참조하신다면 저도 즐겁고 보는 분들도 즐거울듯 합니다. 요즘들어 아키텍트나 SA에 대해서 많이 이야기가 되고 있는데... 그 전반적인 것에 대해서 한번 정리하고 가능하면 쉽게 설명하려고 애썼는데... 문서나 강좌를 해보니... 많이 어렵습니다. ~.~ 그래도... 많은 분들이 보셨으면 해서.. 다시 한번 정리합니다. ~.~ 소프트웨어 아키텍처 Part 1 I 시작 배경 이 문서에는 소프트웨어 아키텍쳐에 대한 전반적인 소개자료와 기초개념에 대해서 설명하고 있다. 먼저, 소프트웨어란 무엇인가에 대해서 다시한번 생각해보자. 여러가지 설명과 이해가 다 다르겠지만,.. 더보기