가) 목적
   구현 웍플로우는 다음과 같은 네가지 목표를 갖는다.
  • 계층화된 서브시스템의 관점에서 코드의 체계를 정의
  • 컴포넌트로 클래스와 객체를 구현
  • 개발된 컴포넌트의 단위 테스트
  • 개발된 컴포넌트를 하나의 실행 가능한 시스템으로 통합
   구현 웍플로우의 영역은 개별적인 컴포넌트의 단위 테스트까지로 국한된다. 시스템 테스트와 통합 테스트는 테스트 웍플로우에서 이루어진다.

나) 작업자와 산출물

구현 웍플로우의 작업자와 산출물의 관계
   구현 웍플로우에 포함된 주요 작업자는 다음과 같다.
  • 구현 담당자(Implementer) : 컴포넌트와 연관된 산출물을 개발하고 단위 테스트를 수행
  • 시스템 통합 담당자(System Integrator) : 빌드를 수행
   기타 작업자는 다음과 같다.
  • 아키텍트(Architect) : 구현 모델(계층화와 서브시스템)의 구조를 정의
  • 코드 검토 담당자(Code Reviewer) : 코드의 품질 검사 및 프로젝트 규정의 준수 여부에 대한 검사

   구현 웍플로우의 주요 산출물에는 다음과 같은 것이 있다.
  • 구현된 서브시스템(Implementation Subsystem) : 컴포넌트와 다른 구현된 서브시스템의 콜렉션(collection); 이는 구현 모델을 작은 부분으로 나눔으로써 조직화하는 데 사용된다.
  • 컴포넌트(Component) : 하나의 소프트웨어 코드(source, binary, executable), 또는 정보를 담고 있는 파일(start-up 파일, readme파일); 여러 컴포넌트를 묶어서(aggregate) 하나의 컴포넌트를 만들 수도 있다. 여러 개의 실행파일로 구성된 어플리케이션이 한 예가 될 수 있다.
  • 통합 빌드 계획(Integration Build Plan) : 컴포넌트와 서브시스템을 구현하는 순서와 시스템을 통합할 때 생성될 빌드를 정의한 문서

다) 웍플로우


   앞의 그림은 구현 웍플로우를 나타낸다. 구현 모델의 구조에 기반하여 시스템 통합 담당자는 어떻게 시스템을 통합할 것인가를 정의한다. 서브시스템이나 컴포넌트를 담당하는 구현 담당자는 마찬가지로 서브시스템과 컴포넌트의 수준에서 이를 어떻게 통합할 것인가를 정의하고 코드와 관련 산출물을 개발하고 필요에 따라 코드를 수정하는 등의 실제 구현 작업을 수행한다. 개발이 완료되면 구현 담당자는 단위 테스트를 수행하고 서브시스템의 통합 작업을 수행한다. 이후 시스템 통합 담당자는 서브시스템을 통합하는 작업을 수행한다.
   구현과 설계는 밀접한 관련이 있으며 따라서 설계 요소와 구현 요소 사이에는 분명한 연결고리가 존재한다. 클래스와 코드가 한 예가 될 수 있을 것이다. 많은 경우에 라운드 트립 엔지니어링(round trip engineering)은 설계와 구현을 밀접하게 관련지어 준다. 설계자와 구현 담당자의 역할을 둘 다 수행하는 사람은 설계 모델을 변경하고 이에 맞게 코드를 다시 생성할 수 있으며 또한 구현 내역을 변경하고 다시 이러한 변경을 반영할 수 있도록 설계 모델을 변경할 수 있다. 이러한 방법은 프로세스에서 설계와 구현간의 갭을 없애 설계를 구현으로 변환하는 과정에서의 오류 발생을 피할 수 있게 한다.
라) 도구 지원
   전통적으로 구현은 편집기, 컴파일러, 링커, 디버거와 같은 고전적인 소프트웨어 개발 도구를 사용하여 수행한다. 오늘날에는 이러한 도구들이 통합되어 하나의 통합개발환경을 제공하는 것이 일반적이다. Rational사도 UNIX환경에서 Ada와 C++ 개발환경을 제공하는 Rational Apex라는 도구를 제공한다.

   Rational Rose는 라운드 트립 엔지니어링을 지원하여 설계와 구현 액티비티를 밀접하게 관련지어 준다. 또한 Purify나 Quantify같은 툴은 코드 상의 결함을 발견할 수 있게 한다. Rational의 형상관리 툴인 ClearCase은 개인별 작업공간(Workspace)을 제공하는 것 뿐만 아니라 동시에 컴포넌트와 서브시스템의 통합을 위한 작업공간도 제공한다. 변경 요구와 결함의 추적과 이로 인한 소스 코드의 변경을 관리하기 위해서는 Rational ClearQuest를 사용할 수 있다.

마) 요약
  • 개발주기 동안 점증적인 통합을 하는 접근법은 Rational Unified Process의 주요 특징 중 하나이다.
  • 라운드 트립 엔지니어링은 Rose와 같은 도구에서 지원하는 기법으로써 설계와 구현을 밀접하게 연결시켜 주는 역할을 한다.
본 글의 모든 저작권은 Rational에 있습니다.
Posted by sjokim
,
가) 목적
   분석 & 설계 웍플로우의 목표는 요구사항으로부터 시스템을 구현하는 방법을 기술하는 사양(specification)을 추출하는 데 있다. 이를 위해서는 우선 요구사항을 이해하고 최적의 구현 전략을 선택함으로써 요구사항을 시스템 설계로 변환하여야 한다. 이해하기 쉽고 구축하기 쉽고 발전시키기 쉬운 시스템을 설계하기 위해서는 먼저 프로젝트의 초기단계에서 건실한 아키텍쳐를 설정해야 한다. 그런 다음 설계를 구현환경에 알맞게 수정하는 작업이 이루어져야 한다. 이 과정에서는 성능, 안정성, 확장성, 테스트 가능성 등에 대해 고려해야 한다.

나) 작업자와 산출물

분석 & 설계 웍플로우의 작업자와 산출물의 관계

   분석 & 설계 웍플로우의 주요 작업자는 다음과 같다.
  • 아키텍트(Architect) : 아키텍트는 프로젝트기간동안 기술적인 액티비티 및 산출물에 관련된 작업을 주도하고 또한 필요에 따라 조정하는 일을 담당한다. 아키텍트는 아키텍쳐의 관점에서 전체적인 구조를 설정한다. 다른 작업자와는 달리 아키텍트의 관점은 깊이보다는 넓이에 주안점을 둔다.
  • 설계자(Designer) : 설계자는 클래스의 책임(responsibilities), 연산(operations), 속성(attributes)과 클래스간의 관계(relationships)를 정의하고 구현 환경에서 어떻게 적용될 것인가를 결정한다. 이외에도 설계자는 패키지나 서브시스템(subsystem)을 설계할 책임을 갖는다.

   이외에도 분석 & 설계 웍플로우에는 다음과 같은 작업자가 있을 수 있다.
  • 데이터베이스 설계자(Database Designer) : 설계하는 시스템이 데이터베이스를 포함할 때 필요하다.
  • 아키텍쳐 검토 담당자(Architect Reviewer) 및 설계 검토 담당자(Design Reviewer) : 분석 & 설계 웍플로우의 주요 산출물을 검토한다.
   분석 & 설계 웍플로우의 주요 산출물에는 다음과 같은 것이 있다.
  • 설계 모델(Design Model) : 구축할 시스템의 주요한 청사진
  • 소프트웨어 아키텍쳐 문서(Software Architecture Document) : 시스템을 아키텍쳐의 관점에서 기술한 문서
다) 웍플로우


   앞의 그림은 전형적인 분석 & 설계 웍플로우이다. 분석 & 설계 웍플로우에는 두 개의 상세 웍플로우가 상호 관련되어 있다. 이중 하나는 아키텍쳐에 관련된 것이고 다른 하나는 클래스와 서브시스템(subsystem)의 상세 설계에 관련된 것이다.
   먼저 아키텍쳐 관점에서 웍플로우를 살펴보면 제일 먼저 아키텍쳐 분석 액티비티를 통해 아키텍트는 아키텍쳐가 어떻게 조직되는가를 정의한다. 이 과정에서 아키텍트는 시스템을 위한 모델링 협약(convention), 주요 매커니즘, 기본적인 아키텍쳐상의 패턴을 식별한다. 예를 들어 아키텍트는 계층화(layering) 원칙, 서브시스템을 조직하는 원칙, 재사용 전략 등을 정의한다. 아키텍쳐 분석은 프로세스 계획을 위해서 반드시 필요하다.
   다음으로 충분하게 유스 케이스 분석이 수행되면 결과로 생성된 클래스를 아키텍쳐 설계 액티비티에서 사용한다. 아키텍쳐 관점에서 중요한 클래스를 식별하고 설계 패키지나 서브시스템으로 그룹화하는 일도 수행한다. 그런 다음 서브시스템을 알맞은 계층으로 조직화한다. 병행성 기술(Describe Concurrency) 액티비티는 아키텍쳐를 프로세스 관점(Process View)에서 발전시키는 작업을 의미하며 분산 기술(Describe Distribution) 액티비티는 아키텍쳐를 배포 관점(Deployment View)에서 발전시키는 작업으로 아키텍쳐 설계작업의 연장이라고 할 수 있다.

   이번에는 서브시스템의 설계 관점에서 분석 & 설계 웍플로우를 관찰해 본다. 유스 케이스의 실현(realization)에 대해 기술한 유스 케이스의 분석 결과로부터 설계자는 클래스의 특징과 관계를 식별하고 클래스를 더 자세히 정의한다. 이 과정에서 설계자는 아키텍쳐의 설계를 이용한다. 또한 서브시스템 인터페이스를 정의한다. 서브시스템의 인터페이스는 서브시스템에 포함된 클래스의 설계를 참조하여 만들어진다. 그런 다음, 유스 케이스를 다시 완전하게 설계한다. 유스 케이스의 실현(realization)은 Sequence 다이어그램이나 Collaboration 다이어그램에서 클래스 또는 서브시스템간의 상호 연산(operation)을 통해 완전하게 명시된다.

   시스템이 대규모의 데이터를 포함하고 있을 때에는 데이터베이스 설계자는 persistent 클래스를 데이터베이스의 테이블에 할당하는 등의 작업을 아울러 수행한다.

라) 도구 지원
   앞서 언급한 모델을 표현하는 데 사용되는 언어는 UML이며, 다양한 산출물과 연관된 모델링 지침도 UML로 표현되어 있다. 따라서 모델을 작성하고 관리하는 데 가장 적합한 도구는 Rational Rose이다. Rose는 다양한 프로그래밍언어로 라운드 트립 엔지니어링 기능(순공학 + 역공학)을 제공하여 설계와 코드가 완벽하게 동기화될 수 있게 한다.

   또한 Rational Unified Process는 UML과 Rose를 사용하여 올바르게 분석 & 설계할 수 있도록 유용한 정보를 제공한다. 실시간 시스템의 분석 & 설계에 사용하는 모델링 도구인 Rose RealTime은 설계한 모델의 시뮬레이션 기능도 제공한다. 또한 Rational SoDA를 이용하여 문서 또는 보고서의 작성을 자동화할 수 있다. 예를 들어 SoDA를 이용하여 RequisitePro의 요구사항 분석내역과 Rose의 설계 모델로부터 정보를 추출하여 알맞은 양식의 보고서를 생성할 수 있다.

마) 요약
  • 분석과 설계를 통해 요구사항과 구현사이의 갭을 메우게 된다. 분석 & 설계 웍플로우는 유스 케이스를 사용하여 일련의 객체를 인식하고, 인식된 객체들은 클래스, 팩키지, 서브시스템으로 다듬어 진다.
  • 아키텍트(큰 그림을 담당), 설계자(세부사항을 담당), 데이터베이스 설계자(persistence를 다루기 위한 지식을 필요로 하는 세부사항을 담당)가 분석 설계단계의 책임을 나누어 갖는다.
  • 분석과 설계의 결과는 3가지 아키텍쳐 관점으로 추상화된 설계 모델이다. 논리적 관점(Logical View)은 시스템을 클래스, 서브시스템, 패키지, collaboration과 같은 논리적 요소로 나눈 모습을 나타내며 프로세스 관점(Process View)은 이러한 논리적 요소의 시스템의 프로세스와 쓰레드로의 매핑을 보여준다. 마지막으로 배포 관점(Deployment View)은 분산환경에서 프로세스의 실행될 노드(컴퓨터)로의 매핑을 나타낸다.
  • 별도의 분석 모델이 시스템의 개략적인 모습을 표현하는 데 유용하게 쓰일 수 있는 경우도 있다.
본 글의 모든 저작권은 Rational에 있습니다.
Posted by sjokim
,
가) 목적
    요구사항 웍플로우의 목표는 다음과 같다.
  • 시스템이 무엇을 해야 하는가에 대한 고객과 사용자의 동의 획득
  • 개발자에게 시스템의 요구사항에 대해 충분히 이해할 수 있게 함
  • 시스템의 기능(functionality)을 정의
  • 반복의 계획과 기술적인 내역(technical contents)을 위한 기초 제공
  • 시스템을 개발하는 데 필요한 시간과 비용을 측정하기 위한 기초 제공
  • 시스템의 사용자 인터페이스 정의
    이와 같은 목표를 달성하기 이루기 위해서 요구사항 웍플로우는 시스템의 비전을 어떻게 정의할 것이며 비전으로부터 시스템의 상세 요구사항을 기술하는 유스 케이스 모델을 어떻게 만들 것인지에 대해 설명한다. 이외에도 요구사항 웍플로우는 시스템의 범위를 관리하는 방법과 변화하는 요구사항을 관리하는 방법을 정의하고 또한 사용자 인터페이스의 프로토타입을 정의하는 방법을 정의한다.
 
나) 작업자와 산출물

요구사항 웍플로우에서 작업자와 산출물의 관계

    앞의 그림에서 볼 수 있는 것과 같이 요구사항 웍플로우의 주요 작업자와 산출물에는 다음과 같은 것이 있다.

주요 작업자
  • 시스템 분석가(System Analyst) : 시스템 분석가의 역할을 하는 사람은 시스템의 범위를 정의하고 시스템의 기능의 초안을 작성한다. 그리고, 이를 통해 요구사항을 추출하고 유스 케이스를 모델링하는 작업을 주도적으로 수행하며 때로는 조정자의 역할을 한다.
  • 유스 케이스 명세 담당자(Use-case specifier) : 유스 케이스 명세 담당자는 유스 케이스의 요구사항을 상세히 기술함으로써 시스템의 기능(전체 혹은 일부)을 구체적으로 명시한다.
  • 아키텍트(Architect) : 요구사항 웍플로우에서 아키텍트는 아키텍쳐의 관점에서 중요한 유스케이스와 요구사항을 식별하고 정의하는 책임을 진다.

   이외에도 다음과 같은 작업자들이 존재한다.
  • 사용자 인터페이스 설계자(User-Interface Designer)
  • 요구사항 검토 담당자(Requirement Reviewer)
 
   요구사항 웍플로우의 주요 산출물에는 다음과 같은 것이 있다.
  • Stakehoder needs
  • 비전 문서(Vision Document)
  • 유스 케이스 모델(Use-Case Model)
  • 보충 사양(Supplementary specification : 유스 케이스로 표현되지 않는 요구사항을 기술)
  • 요구사항 속성(Requirement attributes) : 다양한 요구사항의 특징과 요구사항간의 의존관계를 정의
  • 유스 케이스 Storyboard
  • 사용자 인터페이스 프로토타입(User-Interface prototype)
  • 경계 클래스(Boundary class) : 분석 모델에서 어떻게 사용자 인터페이스가 실현되는가를 보여 준다.

다) 웍플로우


   앞의 그림은 요구사항 웍플로우 구성을 나타낸다. 웍플로우에서 시스템 분석가는 시스템이 어떤 기능을 제공해야 하는가를 식별(시스템의 범위를 식별)하고, 또한 성능과 같은 기능 외적인 요구사항을 식별한다. 그런 다음 시스템 분석가는 프로젝트의 비전을 작성한다. 비전은 프로젝트에 관련된 이해당사자의 입장에서 작성한 기능으로 표현되며 유스 케이스 모델의 초안을 개발하는 데 밑거름이 된다.
   유스 케이스 명세 담당자에게는 유스 케이스와 보충 요구사항이 할당되며, 유스 케이스 명세자는 이를 상세화한다. 또한 이 과정에서 요구사항 웍플로우의 다른 산출물과 일관성을 유지해야 한다. 따라서 유스 케이스 명세 담당자는 독립적으로 일하지 않고 일반적으로 다른 유스 케이스 명세 담당자, 그리고 시스템 분석가와 의견을 교환하면서 작업한다.
   사용자 인터페이스 설계자는 유스 케이스 명세 담당자가 작업할 때 시스템의 사용자 인터페이스 설계작업을 수행한다. 많은 경우에 이들 작업자들이 상호작용을 함으로써 상승(synergy) 효과를 낼 수 있다.
    아키텍트는 주로 초기의 반복에 관련되어 있으며 시스템 분석가와 유스 케이스 명세 담당자와 공동으로 작업하여 아키텍쳐의 관점에서 중요한 유스 케이스의 무결성을 보장한다. 한편 요구사항 검토 담당자는 개발 팀이 요구사항을 올바르게 인지했는가를 검증한다.

라) 도구 지원
   Rational RequisitePro는 요구사항을 추출하고 추출한 요구사항을 문서와 데이터베이스로 체계화할 수 있게 하며, 요구사항의 범위와 변경에 대한 관리를 수행한다. 유스 케이스를 사용하는 경우에는 RequisitePro를 이용하여 유스 케이스 중 문서로 표현할 수 있는 측면을 자유롭게 기술할 수 있다.
   요구사항의 산출물(예를 들어 유스 케이스 모델, 유스 케이스 시나리오 등)을 비주얼 모델링하기 위해서는 Rational Rose를 사용할 수 있다. 이때 RequisitePro와 Rose는 요구사항의 산출물과 설계 모델간의 일관성을 보장한다. 또한 Rational SoDA는 문서를 자동으로 생성해 준다. SoDA를 이용하여 필요한 문서의 Template을 정의할 수 있으며, SoDA는 Template에 명시된 대로 알맞은 곳에서 정보를 추출하여 문서를 생성한다. SoDA는 특히 여러 종류의 Rational 툴을 사용할 때 유용하게 쓰일 수 있다.

마) 요약
  • 요구사항은 시스템이 만족시켜야 하는 조건(condition) 또는 능력(capacity)을 말한다.
  • 일반적으로 프로젝트를 수행할 때에는 기능에 대한 요구사항,  성능과 같은 비기능적 요구사항 등 여러 가지 유형의 요구사항을 고려해야 한다.
  • Rational Unified Process는 사용자 인터페이스 설계를 사용자 인터페이스를 비주얼하게 형상화하는 것으로 정의한다. 사용자 인터페이스 설계를 통해 다양한 사용편의성(usability)에 대한 요구사항을 다룰 수 있다.
  • 기본적인 요구사항 웍플로우에서는 다양한 작업자가 문제를 분석하고, 이해당사자의 요구(needs)를 도출해 내고, 시스템을 정의하고, 프로젝트의 범위를 관리하고, 변경된 요구사항을 관리하는 작업을 수행한다.
  • 요구사항 추출과 관리는 Rational사의 도구를 사용하여 효과적으로 수행할 수 있다.
본 글의 모든 저작권은 Rational에 있습니다.
Posted by sjokim
,
가) 목적
    비즈니스 모델링의 목표는 다음과 같다.
  • 조직의 구조와 기능을 이해
  • 고객과 최종 사용자, 개발자들이 조직에 대한 이해를 공유
  • 조직을 지원하기위해 필요한 요구사항의 추출
   이러한 목표를 달성하기 위해 비즈니스 웍플로우에서는 비즈니스 모델을 개발한다. 비즈니스 모델은 유스 케이스 모델과 비즈니스 객체 모델로 이루어진다.
 
나) 작업자와 산출물
   비즈니스 모델링에 관련된 주요 작업자는 다음과 같다.
  • 비즈니스 프로세스 분석가(Business Process Analyst) : 비즈니스 프로세스 분석가는 비즈니스 유스 케이스 모델링 작업을 주도적으로 수행하며 때로는 조정자의 역할을 한다. 예를 들어 비즈니스 프로세스 분석가는 비즈니스 액터와 비즈니스 유스 케이스를 도출하고 이들이 어떻게 상호 작용하는가에 대해 기술한다.
  • 비즈니스 설계자(Business Designer) : 비즈니스 설계자는 비즈니스 유스 케이스의 웍플로우를 기술함으로써 전체 조직의 일부의 사양을 상세화한다. 비즈니스 설계자는 비즈니스 유스 케이스를 실현하기 위해 필요한 작업자(액터)와 엔티티(클래스)를 명시하고 비즈니스 유스 케이스의 행위를 명시된 비즈니스 엔티티에 분배한다. 비즈니스 설계자는 비즈니스 작업자와 비즈니스 엔티티의 책임(responsibility), 연산(operation), 속성(attribute), 관계(relationship)를 정의하는 역할을 수행한다.
이외에 비즈니스 모델링에 관련된 기타 작업자는 다음과 같다.
  • 이해당사자(Stakeholder)
  • 비즈니스 검토 담당자(Business Reviewer)
        
비즈니스 모델링 웍플로우의 작업자와 산출물

   비즈니스 모델링 웍플로우의 주요 산출물에는 다음과 같은 것이 있다.
  • 비즈니스 유스 케이스 모델(Business use-case model) : 비즈니스 기능에 대한 모델로서 조직내의 역할과 산출물을 추출하는 데 사용된다.
  • 비즈니스 객체 모델(Business object model) : 비즈니스 유스 케이스의 실현(realization)에 대해 기술하는 객체 모델

   기타 산출물에는 다음과 같은 것이 있다.
  • 보충 비즈니스 사양(Supplementary business specifications) : 비즈니스 유스 케이스 모델이나 비즈니스 객체 모델에 포함되지 않은 필요한 기타 정의를 제시하는 문서
  • 용어집(glossary) : 비즈니스에서 사용되는 주요 용어를 정의
다) 웍플로우

   앞의 그림은 전형적인 비즈니스 모델링 웍플로우이다. 웍플로우에서 비즈니스 프로세스 분석가는 주요 비즈니스 프로세스와 비즈니스에 관계된 당사자를 식별하고 이를 비즈니스 액터와 비즈니스 유스 케이스로 구성된 비즈니스 유스 케이스 모델로 작성한다. 이 과정에서 비즈니스 프로세스 분석가는 비즈니스에 관련된 주요 용어과 개념에 대한 정의를 추출한다.
   한편 비즈니스 설계자는 비즈니스 유스 케이스를 구체화하여 조직에서 필요한 역할(role)과 책임(responsibility)을 식별하고 프로세스의 산출물(deliverable)을 식별해 낸다. 또한 비즈니스 모델이 조직을 제대로 반영하고 있는가 검증할 다양한 부류의 사람들이 비즈니스 검토 담당자가 되어 되어 각기 특정 부분을 검토한다. 어떤 사람들은 상위 레벨의 비즈니스 유스 케이스의 기술을 검토하게 또 다른 사람들은 비즈니스 작업자와 비즈니스 엔티티에 대해 검토한다.
 
라) 도구 지원
   Rational Rose는 UML기반의 비즈니스 모델링 도구로서 앞서 언급한 비즈니스 모델링을 수행하는 데 필요한 모든 기능을 제공한다. Rational RequisitePro는 모델로부터 문서의 관점에서 정보를 추출하여 모델의 구성요소간의 의존관계를 유지할 수 있게 한다. 또한 Rational SoDA는 자동 문서화 툴로서 모델의 문서화를 지원한다. 

마) 요약
  • 비즈니스 모델링은 비즈니스의 구조와 동적인 특성을 이해하기 위해 필요하다. 또한 이는 관련된 사람들이 조직에 대한 이해를 공유할 수 있게 하기 위해, 또한 조직을 지원하기 위한 시스템의 요구사항을 추출하기 위해서도 필요하다.
  • 비즈니스 모델링에는 다양한 소프트웨어 엔지니어링 기법이 적용되어 이용될 수 있다.
  • 비즈니스 모델링에는 다양한 기법이 있다. 따라서 시스템의 특성과 프로젝트에 따라 알맞은 기법을 사용해야 한다.
  • 소프트웨어 요구사항은 비즈니스 모델로부터 추출될 수 있다.
  • 비즈니스 모델링은 Rational사의 도구를 사용하여 효과적으로 수행할 수 있다.
본 글의 모든 저작권은 Rational에 있습니다.
Posted by sjokim
,
가) 목적
프로젝트 관리 웍플로우는 다음과 같은 세가지 주된 목표를 갖는다.
  • 소프트웨어의 비중이 높은 프로젝트의 관리를 위한 프레임웍 제공
  • 프로젝트를 계획하고, 인원 구성을 하고, 실행하고, 모니터링하는 데 사용할 수 있는 지침(guideline) 제공
  • 위험요소의 관리를 위한 프레임웍 제공
Rational Unified Process에서의 프로젝트 관리 웍플로우가 프로젝트 관리에 관련된 모든 사항을 다루는 것은 아니다. 예를 들어 다음과 같은 사항은 다루지 않는다.
  • 인적 자원의 관리 : 고용, 훈련…
  • 예산의 관리
  • 공급자와 고객과의 계약을 관리
반면에 프로젝트 관리 웍플로우는 반복적인 개발 프로세스에서 다음과 같은 사항에 중점을 둔다.
  • 위험요소 관리
  • 반복 계획
  • 반복적인 프로젝트의 진행상황과 평가기준(metrics)을 모니터링

나) 작업자와 산출물
   프로젝트 관리 웍플로우에서는 프로젝트 관리자(project manager)라는 하나의 작업자만이 존재한다. 프로젝트 관리 웍플로우의 주요 산출물에는 다음과 같은 것이 있다.
  • 다음과 같은 산출물을 포함하는 소프트웨어 개발 계획(SDP : Software Development Plan)
    • - 위험요소 목록(Risk list)
    • - 프로젝트 계획(Project Plan)
    • - 측정 계획(Measurement plan)
  • 비즈니스 케이스(Business Case)
  • 반복 계획(Iteration Plan) : 반복마다 하나씩
  • 반복 평가(Iteration Assessment)
  • 기타 주기적인 상태 평가(Periodic status assessment)

   소프트웨어 개발 계획에는 다른 작업자에 의해 작성되는 계획도 포함되어 있다. 예를 들어 다음과 같은 것들이 있다.
  • 형상 관리자(configuration manager)라는 작업자에 의해 작성되는 형상 관리 계획(Configuration Management Plan)
  • 프로세스 엔지니어(Process Engineer)라는 작업자에 의해 작성되는 개발 케이스(development case : 프로젝트에서 사용되는 프로세스)

   다음 그림은 프로젝트 관리 웍플로우에서 작업자와 산출물의 관계를 보여준다.

 
다) 웍플로우
   아래의 그림은 전형적인 프로젝트 관리를 위한 웍플로우를 보여준다.


라) 요약
  • 프로젝트 관리 웍플로우는 상충되는 목적을 조정하고, 위험요소를 관리하고, 제한요인을 극복하는 데 유용하게 사용될 수 있다. 그리고 이를 통해 고객과 최종사용자에게 요구에 부합되는 제품을 성공적으로 제공할 수 있게 된다.
  • 반복적인 프로세스에서 개발은 단계별 계획(phase plan)과 일련의 반복 계획(iteration plan)에 기반하여 수행되어야 한다.
  • 위험요소는 계획 수립 시 사용하는 중요한 자료이다.
  • 측정(Measurement)은 프로젝트를 통제하는 데 사용되는 핵심 기술이다.
  • 단계별 계획을 수립할 때, 반드시 인적 자원과 일정과 프로젝트 범위에 대한 조정을 해야 한다.
  • 반복의 범위를 정하는 기준은 단계별로 다를 수 있다.
본 글의 모든 저작권은 Rational에 있습니다.
Posted by sjokim
,
방법론(프로세스)은 소프트웨어 개발 과정에서 누가 언제, 어떻게, 무엇을 수행해야 하는가를 기술한다. Rational Unified Process는 다음과 같은 4가지 주요 구성요소로 표현될 수 있다.
  • 작업자(Workers) : '누가(who)'에 해당
  • 액티비티(Activities) : '어떻게(how)'에 해당
  • 산출물(Artifacts) : '무엇을(what)'에 해당
  • 웍플로우(Workflows) : '언제(when)'에 해당

   작업자(worker)라는 용어는 개인이나 그룹(또는 팀)의 행위(behavior)와 책임(responsibility)을 정의한다. 행위는 작업자가 수행하는 액티비티(activity)로 표현되며 작업자는 상관관계를 가질 수 있는 일련의 액티비티와 연관되어 있다. 액티비티들간에 상관관계를 갖는다는 말은 특정 액티비티들이 한 사람에 의해서 수행될 때 성취도가 높아질 수 있다는 것을 의미한다. 각각의 작업자의 책임은 일반적으로 작업자가 생성하고, 변경하고 통제하는 산출물(artifact)로 표현될 수 있다.

1.1 액티비티, 산출물, 그리고 작업자
 
작업자(Workers), 액티비티(activities)와 산출물(artifacts)

작업자(Worker)

   작업자(worker)는 개인이나 그룹의 행위와 책임을 의미한다. 작업자는 개인이 착용할 수 있는 "모자"와 같은 개념으로 생각할 수 있다. 개인이 상황에 따라 여러 다른 모자를 착용할 수 있는 것처럼 개인(또는 그룹)은 경우에 따라 여러 다른 작업자가 될 수 있다. 이러한 비유는 작업자라는 개념을 이해하는 데 큰 도움이 될 것이다. Rational Unified Process에서는 작업자는 주어진 일을 수행해야 하는 역할(role)을 의미한다. 또한 작업자는 하나 이상의 역할을 수행하는 것 외에도 특정 산출물의 소유자(owner)가 된다. 작업자의 예로는 다음과 같은 것이 있다.
  시스템 분석가(System Analyst) : 시스템 분석가의 역할을 하는 사람은 시스템의 범위를 정의하고 시스템의 기능의 초안을 작성한다. 또한 이를 통해 요구사항을 추출하고 유스 케이스를 모델링하는 작업을 주도적으로 수행하며 때로는 조정자의 역할을 한다.
  설계자(Designer) : 설계자는 클래스의 책임(responsibilities), 연산(operations), 속성(attributes)과 클래스간의 관계(relationships)를 정의하고 구현 환경에서 어떻게 적용될 것인가를 결정한다.
  테스트 설계자(Test Designer) : 테스트 설계자는 테스트의 계획, 설계, 구현 및 평가를 담당한다.
 
팀원과 작업자

액티비티(Activity)

   특정 작업자의 액티비티(activity)는 작업자의 역할에 따라 수행해야 하는 단위 업무를 말한다. 각각의 액티비티는 명확한 목적을 갖는다. 예를 들어 모델이나 클래스 또는 계획과 같은 특정 산출물을 생성하거나 수정하는 것이 일반적으로 액티비티의 목적이 될 수 있다. 모든 액티비티는 알맞은 작업자에게 배정된다.
   액티비티는 일반적으로 몇시간에서 몇일정도가 소요되고, 보통 하나의 작업자에 의해 수행되며, 하나 혹은 적은 수의 산출물에 영향을 미친다.
   액티비티의 예
  • 반복 계획(Plan an iteration) : 프로젝트 관리자라는 작업자에 의해 수행
  • 유스 케이스와 액터를 추출(Find use-cases and actors) :시스템 분석가라는 작업자에 의해 수행
  • 설계 검토(Review the design) : 설계 검토 담당자라는 작업자에 의해 수행
  • 성능 테스트 수행(Execute a performance test) : 성능 테스트 담당자라는 작업자에 의해 수행

산출물(Artifact)

   산출물(artifact)은 프로세스에 의해 생성되고 수정되고 사용되는 정보의 단위이다. 산출물은 프로젝트에서 최종 제품을 개발하는 과정에서 생성되고 사용되는 형태를 갖는 산물을 말한다. 산출물은 작업자가 특정 액티비티를 수행할 때 입력으로 사용될 수 있으며 또한 액티비티 수행의 결과로 생성될 수 있다. 객체지향 설계 용어로 말하면, 액티비티는 특정 객체(작업자)에 대한 연산이라고 할 수 있고 산출물은 이러한 액티비티의 파라미터라고 할 수 있다.
   산출물은 다음과 같이 다양한 형태일 수 있다.
  • 유스 케이스 모델, 디자인 모델과 같은 모델
  • 모델의 구성요소, 예를 들면 클래스, 유스 케이스, 서브시스템(subsystem)
  • 비즈니스 케이스, 소프트웨어 아키텍쳐 문서와 같은 문서
  • 소스 코드
  • 실행 파일

1.2 웍플로우(Workflow)

   작업자, 액티비티, 산출물의 단순한 나열만으로는 프로세스를 구성할 수 없다. 프로세스를 이루기 위해서는 가치있는 결과를 생성할 수 있게 하는 액티비티의 순서와 작업자간의 상호작용을 기술할 수 있어야 한다. 웍플로우(workflow)는 의미있는 결과를 생성하는 액티비티의 순서(sequence)를 말한다. UML에서 웍플로우는 Sequence다이어그램, Collaboration 다이어그램, 액티비티 다이어그램으로 표현된다.
 
   앞의 그림은 웍플로우의 예이다. 항상 액티비티간의 모든 의존관계를 표현할 수 있는 것은 아니며 또한 모든 의존관계를 표현하는 것이 항상 유용한 것만은 아니라는 점에 주의해라. 때때로 액티비티들은 웍플로우에서 보여지는 것보다 더 밀접하게 관련되어 있을 수도 있다. 특히 두 액티비티가 같은 작업자 또는 같은 사람에 의해 수행될 때 밀접하게 관련될 수 있다.

1.3 핵심 웍플로우(Core workflows)

 

   앞의 그림은 Rational Unified Process의 구조를 나타낸다. 가로축은 시간의 흐름을 의미하고 세로축은 특정 시간대에서 수행해야 할 액티비티를 의미한다. 도표에서 가로축을 통해 소프트웨어 개발주기가 여러 번의 반복으로 이루어져 있는 것을 확인할 수 있고, 세로축에 있는 9개의 웍플로우 가 반복이 진행됨에 따라 각기 얼마만큼의 비중으로 수행되어야 하는가를 확인할 수 있다.

   그림에서와 같이 Rational Unified Process에는 9개의 핵심이 되는 웍플로우가 존재하는데 이러한 웍플로우는 작업자와 액티비티를 논리적인 관련성에 따라 분류한 것을 의미한다. 9개의 핵심 웍플로우는 다시 6개의 엔지니어링을 위한 웍플로우와 3개의 지원을 위한 웍플로우로 나눌 수 있다.      엔지니어링을 위한 웍플로우에는 다음과 같은 것이 있다.
  1. 비즈니스 모델링 웍플로우(Business Modeling workflow)
  2. 요구사항 웍플로우(Requirements workflow)
  3. 분석 & 설계 웍플로우(Analysis and design workflow)
  4. 구현 웍플로우(Implementation workflow)
  5. 테스트 웍플로우(Test workflow)
  6. 배포 웍플로우(Deployment workflow)
   3개의 지원을 위한 웍플로우는 다음과 같다.
  1. 프로젝트 관리 웍플로우(Project management workflow)
  2. 형상 및 변경 관리 웍플로우(Configuration and change management workflow)
  3. 환경 웍플로우(Environment workflow)
   6개의 엔지니어링을 위한 웍플로우의 명칭은 전통적인 waterfall 프로세스의 순차적인 단계를 연상시키지만 반복적인 프로세스(Iterative Process)에서 이러한 웍플로우는 개발주기동안 여러 차례 반복된다는 점에서 상이하다. 

 
Waterfall 프로세스

   3개의 지원 웍플로우는 말 그대로 개발 과정 중 6개의 엔지니어링을 위한 웍플로우를 지원하는 역할을 한다. 프로젝트 관리 웍플로우는 개발 프로젝트를 계혹하고 관리하는 액티비티를 관장하고, 환경 웍플로우는 개발 환경을 정의하고 관리하는 액티비티를 관장한다. 형상 및 변경 관리 웍플로우는 다양한 개발 과정의 산출물을 형상관리하는 액티비티와 다양한 변경요청을 관리하는 액티비티를 관장한다.

   실제 프로젝트를 위한 웍플로우는 이러한 9개의 핵심 웍플로우를 이용하여 구성되고, 프로젝트를 완성하기 위해 구성한 웍플로우를 여러 차례 반복하게 된다.

   다음 장의 그림과 같이 프로젝트 개발 중 여러 번 반복이 수행될 수 있지만 각각의 반복마다 주안점은 조금씩 달라진다. 초기의 반복에서는 분석에 중점을 두며, 다음 번 반복에서는 점차 분석&설계, 구현쪽에 중점을 두게 된다. 그리고 말기의 반복에서는 테스트와 배포에 중점을 두게 된다.
 
반복적인 프로세스

   아래 그림에서 각각의 반복에서 수행되는 액티비티들을 보다 구체적으로 볼 수 있다.

 
초기 반복에서의 액티비티

 
중기 반복에서의 액티비티

 
말기 반복에서의 액티비티

   다음 글에서는 이들 9개의 핵심 웍플로우 각각에 대해 자세히 설명한다.
본 글의 모든 저작권은 Rational에 있습니다.
Posted by sjokim
,
The software architecture of a program or computing system is the structure or structures of the system, which comprise software elements, the externally visible properties of those elements, and the relationships among them.

정의를 풀어 보면

  1. S/W아키텍쳐 는 프로그램이나 컴퓨팅 시스템에 존재한다.

    제일 먼저 S/W 아키텍쳐는 프로그램이나 컴퓨팅 시스템과 관련되는 단어이다. 프로그램뿐 만아니라 칩에 녹아있는 프로그램들 임베디드 같은 곳에서도 논의되고 심지어 회로도에서도 이야기 될수 있는주제이다.

  2. S/W아키텍쳐는 프로그램이나 컴퓨팅 시스템의 구조나 구조들을 의미한다. 시스템은 많은 구조를 갖는다. 아키텍쳐가 하나의 구조만을 갖는 것은 아니다. 아키텍쳐를 표현하기 위한 구조들의 후보 집합은 고정하거나 미리 예상할 수 있는 것이 아니다.
    • Runtime을 위한 구성요소나 그들의 관계는 : 전송 데이터, 상호 기동, 전달 신호(signal) process, tasks 등등
    • Non-runtime을 위한 구성요소나 그들의 관계는 : sub-module, 모듈간의 상속관계, 개발 팀별 구현 대상 할당 class, library 기타 등등

    이러한 구조를 이론적으로 3가지 종류로 구분한다.

    • Module structures : 이 구조에서 구성 요소는 모듈이라는 구현 단위이다. Module structure들은 시스템에서 필요한 코드 기반의 표현이다.
    • Component-and-connector structures : 시스템의 구성 요소는 실행 component와 connector이다. component는 컴퓨팅 단위이고 connector는 component간의 통신 경로이다.
    • Allocation structures : S/W 요소와 외부(non-software) 요소와의 관계를 보여준다. S/W는 하나나 그 이상의 외부 요소에서 만들(개발환경)어지고 실행(실행환경)된다.
  3. 이 구조(들)은 S/W 구성요소들(조각), 구성요소들의 외부 속성(특성, 형태), 그리고 구성요소들간의 관계를 말한다.
    • S/W Elements : 이 단어가 처음에는 S/W Component 였다. 그런데 아마두 CBD와의 혼란때문에 또는 컴포넌트라는 단어의 복잡 다단한 정치적 의미때문인지는 몰라도 element로 변경되었다. 특이점은 size에 대한 언급이 없다. 따라서 시스템의 크기 관점에 따라 S/W element의 크기가 달라진다는 의미가 된다. 그래서 어떤 시스템에서는 서브시스템 구성도 정도가 되기도 하고 어떤 시스템에서는 개별 클래스 레벨에서 S/W아키텍쳐가 이야기된다. 사실 size에 대한 이야기는 잘 풀어가야할 숙제 중에 하나이다.
    • Externally Visible Properties : 하나의 구성요소는 다른 구성요소에 영향을 줌을 의미한다. 

      예를 들어: Service 제공, Performance 특성, 에러(fault) 제어, 공유 자원 사용 등을 의미하는데, 각 구성요소는 인터페이스를 통해서 다른 구성요소와 상호 작용한다.

      아키텍쳐는 분할된 구성요소에서 public side만을 고려한다. 반대로 보면 S/W아키텍쳐에서는 element 내부의 이갸기는 관심이 없다는 말이 된다. 그리고 S/W Element의 size를 어떻게 보느냐에 따라 visible prop는 크게 차이가 날 수 밖에 없다.

    • Relationships : S/W elements간의 관계를 의미한다. 그런데 이것 또한 element를 클래스로 보게 되면 그들 사이의 관계는 코드 상에서의 의존성에 치우치지만 거시적으로 보면 예를 들어 데몬, 연계 시스템들간의 관계등을 볼때는 통신 방법등에 집중하게된다. 어쨌거나 핵심은 S/W element에 대한 관점이다. 이점을 이해하면 S/W아키텍쳐 설계에 대해서 정확히 이해 할 수 있게 된다.

다른 정의들

S/W Architecture = { Elements, Form, Rationale}
Perry and Wolf, 1992


Beyond the algorithms and data structures of the computation

  • Designing and specifying the overall system structure emerges as a new kind of problem

Structural issues include gross organization and global control structure

  • protocols for communication, synchronization, and data access
  • assignment of functionality to design elements
  • physical distribution
  • composition of design elements
  • scaling and performance
  • and selection among design alternative

Garlan and Shaw, 1993


The structure of the components of a program/system, their interrelationships, and principles and guidelines governing their design and evolution over time.
Garlan and Perry, 1995


The software architecture of a program or computing system is the structure or structures of the system, which comprise software components, the externally visible properties of those components, and the relationships among them
Bass, Clements, and Kazman 1998


An architecture is the set of significant decisions about the organization of a software system, the selection of the structural elements and their interfaces by which the system is composed, together with their behavior as specified in the collaborations among those elements, the composition these structural and behavioral elements into progressively larger subsystem, and the architectural style that guides this organization-these elements and their interfaces, their collaborations, and their composition
Booch, Rumbaugh, and Jacobson 1999


The fundamental organization of a system embodied in its components, their relationships to each other, and to the environment, and the principles guiding its design and evolution.
IEEE 2000a

http://www.sei.cmu.edu/architecture/definitions.html


Posted by sjokim
,

한때는 C/S가 세상을 풍미하던 시절이 있었다.. 조금 지나니.. 3Tier 미들웨어 가 
신기술로써 자리매김되더니 어느덧 객체 지향 CBD SOA등등의 키워드들이
SI시장을 주도하였었다. 물론 지금도 이러한 단어들이 전혀 무시되는 것은 아니지만
어느덧 일상에 묻히는 꼭... TCP/IP 같은 단어 들처럼.. 조금은 알건알고 한계도 알고..
뭐 그런 단어중에 하나가 되었다.
그중에서 우리가 90년대 후반 부터 SI  개발을 흔들었던 주요 단어를 찾아보면
디자인 패턴, 리팩토링, 프레임웍, CBD, S/W아키텍쳐라고 볼수 있다. 
물론  누군가는 Web Application Server, JaveEE 라고  말할 수 있지만.. 약간은 이론적 관점에서..
보자면 그렇다는 것이다.
그런데.. S/W아키텍쳐가 과연 시장을 주도하거나 영향을 미쳤는가 엄밀하게  S/W아키텍쳐 이론이 
유용하거나 아님 최소한 논란의 대상이라도 되었었는가..? 사실은 아니었다
그럼에도 이 글에서 S/W아키텍쳐에 대해서 이야기 하고자 하는 것은
실제로 유용하기 때문이다. 최소한 CBD보다, 디자인 패턴보다, 리팩토링보다
중요하고 고민해 봐야 하는 주제이기 때문에 본 글에서 S/W아키텍를 이야기 하고자 한다.

SI 개발이라함은 고객의 요구사항을 코드로 만들어 가는 일련의 과정으로 볼 수 있다.
요구사항과 코드 사이의 GAP이 바로 SI 개발에서의 문제이다.
어떻게 하면 요구사항이 코드화 될것인가??

나는 기적이 필요하다고 이야기 한다. 얼마나 많은 돈이 필요한지? 얼마나 많은 시간이 필요한지?
어떤 절차를 따라서 진행해야 할지? 기적이 아니고는 성공할 수 없는 것이 SI 개발 프로젝트이다.
이글을 읽는 분들은 꼭 앞으로 프로젝트를 시작하기 전에 신심을 가지고 교회나 절이나 아니면 고사를 지내기 바란다.^^

이러한 기적 혹은 운에 마껴지던 것은 어떻게 하면 좀더 예상가능하게 진행할 수 있을까 해서 만들어진 것들이 소위 말하는 방법론들이다. 한테는 지금도 그렇겠지만 개발 프로젝트를 수주하기 전에 반드시 사용할 방법론을 제시하고 고객으로 부터 OK를 받아야만 프로젝트를 진행할수 있게 되는 근원이 이것이다. 기적이아니라 좀더 예상 가능하게 하기 위해서다.

그런데 방법론은 주로 절차와 산출물의 집합으로 이루어져 있다. 문제는 HOW TO가 없거나 있어도 알려지지 않고 잇기 때문에..
방법론이 프로젝트의 성공을 담보한다고 누구도 생각하지 않는게 현실이다.

요구사항이 코드로 변화하기 위해서는 대단위의 구성요소(컴포넌트)의 정의, 시스템(상위레벨) 레벨의 추상화등이 적절하게
이루어 져야만 코드화 될 수 있다. S/W아키텍쳐는 바로 이러한 일련의 것들을 고민하는 것이라 볼 수있다.

아키텍쳐란 비즈니스와 기술적 결정의 산물이다. 시스템에 대한 업무요건, 조직 구성, 요소 기술을 정의하고 결정하는 것이다.
좀더 formal하게 말하면 "비즈니스 요구상을 처리하기 위한 기술적 솔류션의 시작점"이다.
말이 너무 어려운감이 있다 쉽게 풀어 서 우리가 프로젝트를 할때를 상상해 보자..
통상의 경우 킥오프 미팅을 한다. 고객전산담당자들고 개발 리더들과 PM등등이 모여서 간단하게 자기 소개하고
프로젝트 의의와 고객 경영진의 방향에 대해서 공유하게된다. 그리고 나면 고객 전산담당이 
RFP의 큰 줄기에 대해서 이야기 하고는 프로젝트 수석 개발자가 어떨게 개발하겠습니다. 라고 간략하게 전달하게된다.
무슨 방법론을써서 무슨 프레임웍을 쓰구 등등을 이야기 하면서 잘해봅시다 하구 
저녁에 소주한잔하게된다.
이때부터 그 프로젝트는 이미 아키텍쳐의 큰  줄기를 결정한 것이다.
자바웹, Struts 프레임웍, 톰켓, 오라클, 10명이 6개월간 뭐 등등.. 
뭐 이쯤하면 프로젝트 팀원 중에 한명은
친구를 만나서 자신이 참여하게될 프로젝트에 대해서 어런것들을 이야기 하게된다.
그럼 친구는 화면이 몇개나 되는데? 사용자가 몇몇이나 되는데? 테이블은 ? 등등.. 뭔과 볼륨을 알기 위한
질문들은 하고나면,,, 음! 고생좀 하겠네.. 아님 ,. 너무 널널하게 가는거 아냐?? --
이 대화 속에서 우리는 두사람이 이미 시스템에 대한 큰 그림을 그리고 있는 것을 알 수 있다.(틀렸나??)

다음날 프로젝트 팀원들은 기대반 불안반으로 회사에 출근하고 나면 PM은 사람들을 모아 놓구.. 향후 일정이 어떻고
역할이 어떻고.. 당장 뭘 해야 하고 등등을 이야기 하기 시작한다.
업무 파악하랴, 분위기 적응하랴, 어떨결에 2~3일, 1~2주 혹은 1~2개월 지나면  개발 리더는 개발자들을 모아 놓고 
칠판에 그림을 그리고 일장 연설을 한다. 우리의 프레임웍구조는 어떻구 주저리 주저리 알듯말듯...
화면에 BOX하구 LINE 혹은 화살표 동그라미를 그리면서 몇시간을 이야기 한다.

그개발 리더는 아키텍쳐를 설명했을 것이다. (주로 소프트웨어에 중심을 두고)
 


Posted by sjokim
,
아키텍쳐는 다양한 방법으로 평가될 수 있다. 크게 4가지의 범주로 구분할 수 있는데, 구분은 다음과 같다

  • Scenario-based assessment

    시나리오 기반의 평가는 직접적으로 품질 요소(Quality Attribute)를 위해 정의된 Profile에 의존하여 평가하는 방식이다. 기술적으로 시나리오에 기반하고 있기 때문에 시나리오의 정밀함에 따라 평가 결과도 정밀해질 수 있다. ATAM이나 SAAM 등이 시나리오 기반의 평가 방법이다.

  • Simulation-based assessment

    시뮬레이션 기반의 평가 방식은 간단하게 BMT를 연상할 수도 있다. 물론 시뮬레이션 기반의 방식은 일부 또는 추상화된 형태의 구현과 이를 기반으로 한 평가가 이루어진다.

  • Mathematical model-based assessment

    수학적 모델을 기반으로 한 static 평가가 이루어진다. 기준의 모델을 기초로 다른 점들을 수치화하고 이를 기초로 평가하게 된다. 품질을 추정하는 데 사용될 가능성이 높다.

  • Experience-based assessment

    제목 그대로 경험 기반의 평가 작업이다. 아키텍쳐 수립은 수학적인 활동과 예술적인 활동이 복합적으로 발생한다. 그래서 아키텍쳐 수립작업은 수학적 작업도 있지만 창조적/감각적으로 작업해야 하는 경우도 많다. 이런 감각적 작업에서 만들어진 결정들은 정량적인 분석이 어려운 경우가 많고, 품질을 평가하기 위해 정형화된 모델을 갖지 못하는 경우가 더 많다. 이러한 경우에 경험은 또 하나의 중요한 평가 수단으로 활용된다.

이러한 평가 방법들은 한가지만 사용되는 것이 아니라 복합적으로 적용되는 경향이 있다.

대표적인 평가 방법론

  • Architecture Tradeoff Analysis Method(ATAM)
    • 시나리오 기반임
    • 모든 quality attributes를 평가함
    • 특히 다음 사항을 찾아내는데 중심을 둠
      sensitivity to various attributes exists
      quality attribute tradeoffs occur
    • 정량적/정성적 분석/평가를 수행함
    • 시스템의 quality attribute에 관심이 있는 모든 관련 당사자들을 평가에 참여 시킴
  • Software Architecture Analysis Method(SAAM)
    • 단순하며, 시나리오 기반임
    • 주로 maintainability, modifiability, robustness,flexibility 등의 Quality에 관심을 둠
    • 주로 수정/변경에 필요한 리소스를 가정하고 이를 기반으로 평가함


Posted by sjokim
,
  1. 일련번호 채번은 개발 초기부터 중점 관리해야 한다.
  2. 등록과 조회를 한 TX로 묶지 않는다.
  3. 일괄 처리는 건수를 제한하고 가능한 한건씩 만 TX으로 묶는다.
  4. 로그정책을 명확히 하고 디버그 로그량을 최소화 하며, 개발자들에게 로그가 성능에 미치는 영향을 인식 시킨다.
  5. TP 서비스와 자바가 XA로 묶이는 경우 동일 TABLE을 Access하지 않도록 설계한다.
  6. TX내에서 NONE-DB처리(파일,검색,SOCKET,압축 등)를 하지 않도록 한다.
  7. 동적 SQL은 Query 튜닝을 어렵게 하는 경향이 있다.
  8. TX 타임이 길다는 것은 Connection 점유시간과 Update Lock 타임이 길어 진다는 것을 의미한다.
  9. 8번 상황에서 사용자가 동일 버튼을 중복 클릭시 Update Lock때문에 시스템에 부하를 가중시킬 수 있다.
  10. WAS 인스턴스를 업무단위로 분리하지 말고, 전체 업무를 처리하는 인스턴스 수를 늘린다.(리소스 효율화)
  11. TX 성격이 상이한 경우(long term vs short term) Connection Pool을 별도로 설정한다.
  12. 대량의 로그를 생성하는 경우 단일 수행 시는 응답 속도가 빠르나, 부하가 증가할 경우 응답시간 지연의 원인이 된다.


Posted by sjokim
,