03. 소프트웨어 아키텍처 개념 명지대학교 융합소프트웨어학부 김정호 교수
목 차 아키텍처 아키텍처 필요성 아키텍처 발생 아키텍처 역사 아키텍처 정의 아키텍처 가시화 아키텍처 예제
아키텍처 필요성 다양한 건축물
아키텍처 필요성 다양한 건축물
아키텍처 발생 소프트웨어 시스템의 복잡성이 증가 인간 능력의 한계 소프트웨어 기술의 신속한 변화 소프트웨어 시스템의 복잡성이 증가 Ubiquitous/pervasive computing Dependable/dynamic/self-healing systems 수만 라인의 코드 인간 능력의 한계 개발 프로젝트에 이해 관계자는 수백명에 이른다. 소프트웨어 기술의 신속한 변화 MFC, J2EE, Eclipse, MDA, SOA, Web2.0, etc.
아키텍처 발생 소프트웨어 개발 프로젝트의 이해 관계자들
아키텍처 발생 Product Product 돈, 시간 기 술 시스템의 대형화 기술의 복잡화
아키텍처 가시화 건축물 평면도
아키텍처 가시화 건축물 단면도
아키텍처 가시화 건축물 배치도
아키텍처 가시화 건축물 입체도
아키텍처 가시화 소프트웨어를 본적이 있는가? 소프트웨어를 만져본 적이 있는가? 소프트웨어 이해관계자의 소프트웨어 인지능력 차이 발생 소프트웨어 가시화 필요성 증대
아키텍처 역사 1980’s 1990’s 2000’s 격식 없는(Informal) 박스와 라인 다이어그램 사용 임의로(ad hoc) 진행 1990’s 아키텍처 설계에 대한 언어, 개념, 도구가 생기기 시작 개발 조직에서의 아키텍트의 가치 인정 2000’s 설계 언어와 도구에 아키텍처 개념 도입 아키텍처 설계 방법론 & 표준 등장 Translated from @2004, Antony J. Lattanze and David Garlan
아키텍처 역사 @2004, Antony J. Lattanze and David Garlan
아키텍처 정의 당신의 정의는? 각각의 서버는 다수의 사용자 요청을 동시에 처리해야 하며 이 정보를 기업의 데이터 베이스에 넣어 서로 공유한다. 어떠한 클라이언트 프로그램도 DB에 바로 접속할 수 없다. J2EE를 사용한다. 골격, 기본, 틀
아키텍처 정의 "프로그램 혹은 컴퓨팅 시스템의 소프트웨어 아키텍처란 소프트웨어 구성요소, 이들 구성요소의 가시적인 속성, 그리고 구성요소 사이에 관계로 구성된 시스템의 전체적인 구조 또는 구조들을 말한다“ [Bass 03]. A software Architecture for a system is the structure or structures of the system, which comprise elements, their externally-visible properties, and the relationships among them.
아키텍처 정의 "소프트웨어 아키텍처는 소프트웨어 시스템들의 큰 규모의 구조와 실행에 관한 연구이다" [Shaw 89]. 소프트웨어 "아키텍처란 다음과 같은 것에 관한 중요한 결정들의 집합이다. [Jacobson 99][Kruchten 01] 1)시스템의 구조를 나타내는 구조적 구성요소와 그들을 결합시키는 인터페이스, 2)그들의 협동을 통해 나타나는 구조적 구성요소와 행위적 구성 요소들의 결합을 점진적으로 서브시스템에 맵핑을 하는 것, 3)구조를 이끌어 나가는 아키텍처 스타일의 선택"
아키텍처 정의 IEEE 1471 아키텍처 정의 소프트웨어 아키텍처란 "시스템의 근본적인 조직형태로써, 그것은 구성컴포넌트들과, 그들 서로와 환경에 대한 관계 그리고 그 설계와 진화를 관장하는 원칙들에 담겨있다"
아키텍처 정의 IEEE 1471 아키텍처 정의
아키텍처 정의 ISO/IEC 42010 아키텍처 정의 아키텍처란 "시스템의 근본적인 개념 혹은 특성으로, 환경에서의 시스템에 대해, 시스템의 요소 및 그 관계에 대해, 또한 그 설계와 진화의 원칙에 대한 것이다. The fundamental concepts or properties of a system in its environment embodied in its elements, their relationships, and in the principles of its design and evolution
아키텍처 정의 ISO/IEC 42010 아키텍처 정의
아키텍처 예제 Box and Line ?
아키텍처 예제 Stacks and Box ?
아키텍처 예제 계층? 시스템 통합 계층 프레젠테이션 계층 비즈니스 계층 기간계 데이터 계층 내부 사용자 계층 (대외 연계, 대내 연계(EAI)) 프레젠테이션 계층 (영업 화면 구성(JSP), 기간계 화면 구성(X-internet)) 비즈니스 계층 (Framework, RBMS, Image, Workflow, Batch) 기간계 데이터 계층 내부 사용자 보안 계층 (Login, Policy) 내부 사용자 계층 (현업 직원) 사용자 서비스 통합 계층 (사용자(EP)) 연동 시스템 계층 (대외 기관, 내부 채널) 운용자 계층 외부사용자 계층 (외부 영업(모집인, 대리점)) 외부 사용자 보안 계층 (Login, Policy, PKI) 영업 데이터
아키텍처 예제 서비스 흐름? EAM (Enterprise Asset Management) LDAP (Lightweight Directory Access Protocol)
목 차 아키텍트 아키텍트 필요성 아키텍트 정의 아키텍트 역량
아키텍트 필요성
아키텍트 필요성
아키텍트 정의 소프트웨어 아키텍트란? 이해관계자(고객, PM, 개발자 등)와 지속적인 대화를 통해 소프트웨어 시스템의 목표를 명확히 하는 communication의 달인 소프트웨어 아키텍트는 소프트웨어 시스템 구축을 위한 소프트웨어 아키텍처를 설계(수립) 하는 고급 엔지니어 소프트웨어 아키텍처를 수립하는 과정에서 발생하는 다양한 논쟁과 상충 사안을 해결하는 협상 전문가 소프트웨어 아키텍처가 시스템 구축에 정확하게 구축되도록 지속적으로 lead, Help, check하는 강력한 리더 이해관계자가 원하는 아키텍처를 작성할 수 있는 추상화 능력을 가진 사람
(Framework, DB, Java, etc.) 아키텍트 역량 소프트웨어 아키텍트가 갖춰야 할 자질 기능/ 품질 (참조) 아키텍처 패턴 아키텍처 평가 Business 도메인 (증권, 은행, 공공, etc.) 소프트웨어 아키텍처 설계(수립) Technology 도메인 (Framework, DB, Java, etc.) 리더십 의사소통
아키텍처를 이해시킬 수 있는가? – 정답: 추상화 아키텍트 역량 아키텍처를 이해시킬 수 있는가? – 정답: 추상화 human’s capability Abstract (less details) Concrete (more details)
아키텍트 역량 이런 아키텍처를 이해시킬 수 있는가?
아키텍트 역량 이런 아키텍처는 이해시킬 수 있는가?
Question ?