본문 바로가기

Dev.../소프트웨어 아키텍처

[SA강좌] Part 1-12 소프트웨어 아키텍처와 개발 프로세스의 관계

소프트웨어 아키텍처와 개발 프로세스의 관계

소프트웨어 아키텍처와 개발 프로세스와의 관계는 어떻게 정의되는것인지 살펴보자. 사실상 소프트웨어 키텍쳐를 중심으로 개발 프로세스를 구성하여야 하며 그것에 대한 관계는 다음과 같다.

소프트웨어 아키텍처와 다른 작업과의 관계

그림 Ⅱ-5, 소프트웨어 아키텍처와 다른 작업과의 관계

그림 Ⅱ-5은 소프트웨어 아키텍처와 개발 프로세스 상의 다른 작업과의 관계를 보여준다. 소프트웨어 아키텍처 설계는 요구사항 분석과 하드웨어 아키텍처를 참고하며 소프트웨어 아키텍처 설계가 완료되면 요구사항과 하드웨어 아키텍처도 영향을 받아서 수정되어야 한다. 요구사항의 경우는 소프트웨어 아키텍처가 정립되면 비기능적인 요구사항들이 구체화된다. 하드웨어 아키텍처는 소프트웨어를 동작하기에 적합한지를 판단하여 수정되어야 한다. 소프트웨어 아키텍처는 상세 설계의 입력물로 작용하며 구현에 대한 가이드라인을 제공한다.

소프트웨어 아키텍처와 개발 프로세스의 관계

소프트웨어 아키텍처가 하는 역할은 프로젝트의 각 phase마다 다르다.

  • Inception phase

아키텍처 팀은 설계 팀과 함께 사용자의 요구사항을 듣고 비기능적인 요구사항을 추출한다. 아키텍처 팀을 구성하고 프로젝트 관리자에게 아키텍처 팀이 어떤 역할을 수행할 것인지 알려준다. 또한 아키텍처의 초안을 작성한다. 또한 어떤 제품을 것인지 개발할 것인지도 결정한다.

  • Elaboration phase

요구사항을 받아서 아키텍처를 설계하고 구현한다. Elaboration 전반적으로 아키텍트 팀이 리드하며 여기에는 핵심적인 Use Case 대한 설계 구현이 포함된다. 따라서 설계자와 개발자를 포함시켜야 한다. 또한 아키텍트를 평가할 있도록 테스팅 인력도 포함시켜야 한다. 그리고 설계 문서 템플릿, 개발 문서 템플릿, 설계에서 개발로의 이행 방안, 사용 방법등의 문서도 작성한다. 아키텍처는 Elaboration 끝에서는 반드시 결정이 되야 한다. 아키텍처가 안정화 되었다고 판단하면 아키텍트 팀에 포함된 설계자, 개발자, 테스팅 인력을 재배치해야 한다.

  • Construction

phase에서는 시스템 구현에 초점을 맞추어 프로젝트 팀이 배치된다. 아키텍처 인력은 최소화되고 개발 이슈가 재기되었을 아키텍처를 재구성한다. 아키텍처 팀은 개발인력을 리드하고 시스템 전반의 구성을 교육시키고 컨설팅하는 역할을 담당한다.

  • Transition

단계는 테스팅과 이행에 초점을 두고 있다. 따라서 테스팅과 이행을 위해 테스팅 조직, 지원 조직과 긴밀히 협조한다.