소프트웨어 아키텍트는 프로젝트에 대한 전체적인 설계 및 구현을 제한하는 핵심 기술적 결정을 포함하는 소프트웨어 구조에 대한 책임을 맡습니다.


주제

 
신호
신호


구현 모델
구현 모델

           
 
POC
POC


참조 구조
참조 구조


전개 모델
전개 모델


설계 모델
설계 모델


소프트웨어 구조 문서
소프트웨어 구조
문서


분석 모델
분석 모델


이벤트
이벤트


인터페이스
인터페이스

 
책임 대상
 

소프트웨어 아키텍트
소프트웨어 아키텍트

기존 설계 요소 통합
기존 설계 요소
통합


구현 모델 구조
구현 모델 구조

           

분배 설명
분배 설명


런타임 구조 설명
런타임 구조 설명


POC 구성
POC 구성


POC의 가시성 평가
POC의 가시성
평가


구조 분석
구조 분석


유스 케이스 우선순위 결정
유스 케이스 우선순위
결정


설계 메커니즘 식별
설계 메커니즘
식별


설계 요소 식별
설계 요소 식별

 
 
수정
 
검토 레코드
검토 레코드


분석 클래스
분석 클래스


소프트웨어 요구사항
소프트웨어 요구사항


설계 서브시스템
설계 서브시스템


설계 패키지
설계 패키지


설계 클래스
설계 클래스


EJB
EJB


구현 서브시스템
구현 서브시스템


설명페이지  맨 위로

소프트웨어 아키텍트는 소프트웨어 구조로 표현되는 주요 기술 결정 추진에 대한 총괄적인 책임을 담당합니다. 일반적으로, 이 역할에는 시스템의 요구사항, 설계, 구현 및 전개 "방향" 등 기술적으로 중요한 시스템 측면을 식별하고 문서화하는 것이 포함됩니다.

또한 아키텍트는 이런 결정에 대한 근거를 제공하고 여러 스테이크홀더의 의견을 조정하며 기술적 위험을 감소시키고, 결정이 효율적으로 의사소통되고 검증되며 고수되고 있는지 확인하는 것을 담당합니다.

관련 정보 페이지 맨 위

이 절은 이 역할에 관련된 추가 정보의 링크를 제공합니다.

 

인력 페이지 맨 위

기술 페이지 맨 위

"이상적인 아키텍트는 문학자, 수학자, 역사 연구에 정통한 사람, 근면한 철학도, 음악에 능통하고 의학에 무지하지 않으며 법학자의 대답에서 배우며 천문학 및 천문학적 계산에 능통한 사람이어야 합니다." - Vitruvius, BC 25년경

요약하여 말하자면, 소프트웨어 아키텍트는 다방면에 능통해야 하고 문제를 빠르게 파악하고 완전한 정보가 없는 경우에 지식에 근거한 비판적인 판단을 내릴 수 있도록 성숙하고 비전 및 폭넓은 경험을 소유하고 있어야 합니다. 보다 명확히 말하면, 소프트웨어 아키텍트 또는 구조 팀의 구성원은 다음과 같은 기술을 겸비하고 있어야 합니다.

  • 경험 - 충분한 요구사항의 이해를 통한 문제점 도메인 및 소프트웨어 엔지니어링 도메인 모두에 대한 경험이 필요합니다. 팀의 경우, 팀 구성원에게 이런 자격을 분담할 수 있지만 최소한 한 명의 소프트웨어 아키텍트는 해당 프로젝트에 대한 글로벌 비전을 제시해야 합니다.
  • 리더쉽 - 여러 팀에 걸쳐 기술적 노력을 조종하고 압력하에서도 비판적인 결정을 내리며 이런 결정을 고수하기 위해 필요합니다. 효율적인 수행을 위해서는 소프트웨어 아키텍트 및 프로젝트 관리자가 긴밀하게 함께 작업하여 기술적 문제는 소프트웨어 아키텍트가 리드하고 관리적 문제는 프로젝트 관리자가 리드해야 합니다. 소프트웨어 아키텍트는 기술적 결정을 내릴 수 있는 권한을 가져야 합니다.
  • 의사소통 - 신뢰를 얻고 설득하며 동기를 부여하며 조언하기 위한 것입니다. 소프트웨어 아키텍트는 규율에 따라 리드하는 것이 아니라 나머지 프로젝트 구성원의 동의에 의해서만 리드할 수 있습니다. 효율적인 수행을 위해서는 관리 팀뿐만이 아니라 소프트웨어 아키텍트가 프로젝트 팀, 프로젝트 관리자, 고객 및 사용자 커뮤니티로부터 존경을 얻어야 합니다.
  • 목적 지향 및 혁신성 - 냉정하게 결과에 집중해야 합니다. 소프트웨어 아키텍트는 공상가나 몽상가가 아니라 프로젝트 배후의 기술적 추진력이라고 할 수 있습니다. 성공적인 소프트웨어 아키텍트의 경력은 불확실한 상태와 압력하에서 내려진 일련의 차선 결정입니다. 필요한 작업을 수행하는 것에 집중할 수 있는 사람만이 이런 프로젝트 환경에서 성공합니다.

전문가적 관점에서 소프트웨어 아키텍트는 역할: 설계자 성능도 처리해야 합니다. 그러나 설계자와는 다르게 소프트웨어 아키텍트는 다음을 수행합니다.

  • 세부 레벨에서 약간의 기술을 알고 있는 '스페셜리스트'가 아니라 상위 레벨에서 다양한 기술을 알고 있는 '제너럴리스트'라고 할 수 있습니다.
  • 폭넓은 기술적 결정을 수행하므로 의사소통 및 리더쉽 기술뿐 아니라 광범위한 지식 및 경험이 중요합니다.
역할 지정 방법 페이지 맨 위

프로젝트가 구조 팀을 보장할 만큼 큰 경우, 구조 팀의 목적은 광범위한 경력을 포함하고 소프트웨어 엔지니어링 프로세스에 대한 공통된 지식을 공유하여 재능을 잘 혼합하는 것입니다. 구조 팀이 여러 팀, 도메인 또는 계약자 대표의 위원회이어서는 안됩니다. 소프트웨어 구조는 담당자가 계속해서 여기에만 전념해야 하는 전시간 기능입니다.

더 작은 규모의 프로젝트의 경우, 한 사람이 프로젝트 관리자 및 소프트웨어 아키텍트 역할 모두를 수행할 수 있습니다. 그러나 가능한 한 이런 역할의 담당자를 분리하는 것이 더 좋습니다. 이것은 한 역할에 대한 시간적인 압박으로 다른 역할을 잘 수행하지 못할 수 있기 때문입니다.

추가 정보 페이지 맨 위

참조 페이지, 특히 소프트웨어 구조에 대한 참조를 참조하십시오.



Rational Unified Process   2003.06.15