2015년 7월 28일 화요일

소프트웨어 아키텍처 분석방법

소프트웨어 아키텍처 분석 목적 및 배경

1. 소프트웨어 아키텍처 분석 목적

시스템의 아키텍처에 대한 가장 중요한 사실 중 하나는 , 비록 소프트웨어가 아직 개발이 되어 있지 않는 상황에서도 소프트웨어 아키텍처는 시스템의 중요한 요소에 대해서 표현하고 있다는 것입니다 . 소프트웨어 아키텍처를 바탕으로 이해관계자 및 아키텍트는 중요한 의사결정을 할 수 있게 될 뿐만 아니라 예상되는 사이드 이펙트 (side effect), 위험요소 및 시스템 구성에 대한 예측을 할 수 있게 됩니다 . 만약 소프트웨어 아키텍처가 없다면 이해관계자나 아키텍트 , 혹은 관리자들이 쉽게 파악할 수 없는 소프트웨어에 대해서 특별한 해결책 없이 의사결정을 해야만 하고 그로 인한 위험이나 불확실성은 시스템의 규모가 크고 복잡해질수록 기하급수적으로 커지게 됩니다 .

아키텍트가 소프트웨어 아키텍처를 파악할 수 있게 되면 , 정교한 의사결정이 가능하게 되고 , 우선순위화도 쉽게 결정할 수 있게 됩니다 . 또한 , 다양한 아키텍처의 팁 및 패턴의 적용이 가능 하여 , 소프트웨어 시스템이 더욱 견고해지고 개발과 유지보수가 용이해 지게 된다 . 이러한 이유로 소프트웨어 아키텍처는 “ 분석 가능한 ” 상태이어야 합니다 . 다시 말해 , 소프트웨어 아키텍처가 분석 가능하면 이해관계자 및 아키텍트는 중요한 의사결정을 내릴 수 있을 뿐만 아니라 , 성공하는 소프트웨어를 위한 다양한 전략 및 패턴의 적용이 가능하고 , 개발자와 테스터들도 분석된 소프트웨어 아키텍처를 기반으로 개발 및 검증이 가능하여 보다 견고한 소프트웨어 시스템을 개발 및 배포할 수 있게 됩니다 . 또한 , 소프트웨어의 지속성 및 업데이트를 고려하여 다양한 소프트웨어 아키텍처의 발전 및 유지 보수가 가능하게 됩니다 . 이러한 소프트웨어 아키텍처의 분석은 심지어 아직 개발이 완료되지 않은 소프트웨어에 대해서도 충분히 적용이 가능합니다 .

2. 소프트웨어 아키텍처 분석 시점

일반적으로 가능한 이른 시점에 소프트웨어 아키텍처를 분석하면 할수록 비용절감의 효과를 크게 노릴 수 있습니다 . 즉 , 문제를 빨리 발견할수록 고치기가 쉬워지며 요구사항이나 스펙 , 특징 , 기능 등 필요한 부분에 쉽게 적용시킬 수 있습니다 . 소프트웨어 품질은 프로젝트의 마지막 부분에 점검하는 것이 아니고 , 가능한 시작점으로부터 시작되고 그 품질 검증이 프로젝트의 마지막까지 , 테스트 마지막 시점까지 연결되고 상속되어야 합니다 .

소프트웨어 아키텍처를 분석하는 시기에 대해서는 특별히 정해진 단계나 프로세스는 없으나 , 일반적으로 소프트웨어 아키텍처를 분석하기 위한 최적의 시점은 디자인 단계로 이야기됩니다 . 그러나 소프트웨어 아키텍처 분석은 많은 단계에서 수행되면 다양한 문제점 분석 및 소프트웨어 아키텍처의 개선을 가져올 수 있기 때문에 , 전체 소프트웨어 프로젝트 라이프 사이클 단계에서 몇 개의 지점을 선택하는 것이 좋습니다 . 만약 소프트웨어 아키텍처가 아직 정해져 있지 않고 많은 의견이 오가는 단계이면 , 여러 가지 의사 결정을 위해 소프트웨어 아키텍처 분석을 실시할 수 있고 , 이미 소프트웨어 아키텍처가 정해지고 개발을 진행하는 단계라면 , 개발이 소프트웨어 아키텍처를 잘 참조하여 개발하고 있는지 혹은 개발에 문제가 있거나 다시 고려해야 할 아키텍처 요소가 없는지 , 아니면 소프트웨어 아키텍처를 재설계할 필요가 있는지를 파악하기 위해서 분석을 실시 할 수 있습니다 . 이미 개발되고 완료된 소프트웨어 프로젝트나 레거시 코드라면 소프트웨어 아키텍처를 분석을 통해서 기존 아키텍처를 쉽게 파악하면서 , 개선이나 유지보수가 필요한 점을 찾을 수도 있고 , 재활용한 컴포넌트나 구조에 대해서 자산화 (asset) 을 할 수 있습니다 . 그리고 다른 시스템이나 다른 구조로 적용 (porting) 을 위한 레거시 시스템의 분석 기준으로도 삼을 수 있습니다 .

결국 , 소프트웨어 아키텍처 분석은 소프트웨어 시스템이 품질 속성이나 시스템의 요구사항을 어떻게 잘 만족시키고 있냐를 다수의 사람들이 쉽게 이해하고 파악할 수 있는 최고의 발굴 행동 이라고 할 수 있습니다 .
더군다나 , 만약에 매우 크고 긴 개발기간을 가진 소프트웨어 시스템이라면 , 개발팀이 소프트웨어 아키텍처 분석을 통해서 전체적인 큰 그림과 디자인을 파악하고 , 후보 아키텍처와 트레이드 오프에 대해서 상호 토론을 통해서 발전시켜 나가는 것이 매우 중요합니다 . 이러한 것을 통해서 개발팀은 중요한 품질 ( 속성 ) 에 대한 팀의 의견을 통일 시키고 지속성장 가능한 소프트웨어 아키텍처를 유지 , 발전 시켜나갈 수 있게 됩니다 .

댓글 없음 :

댓글 쓰기