2016년 6월 16일 목요일

아키텍처 구조와 관점 중 뷰(View)

아키텍처 구조와 관점 중 뷰(View)라는 것은 SW시스템의 특정 특성들을 보여주는 SW아키텍처의 부분적인 면들을 묘사하는 것으로 특정한 뷰는 SW설계와 관련 있는 특정한 이슈와 연관이 있다. 특정한 뷰는 기능적 요구사항을 표현할 수 있는 논리적 뷰(Logical view), Concurrency 이슈를 표현한 프로세스 뷰(Process view), 분배이슈를 표현한 물리적인 뷰(Physical view), 설계의 구현 단위를 표현한 개발 뷰(Development view), 행동적(Behavioral) 뷰, 기능적(Functional) 뷰, 구 조적(Structural) 뷰, 데이터 모델링(Dat Modeling) 뷰로 나눌 수 있다. 





SW설계는 설계 프로세스로 생성되는 다양한 면(Multi-faceted)들을 가진 산출물(Artifact)이며, 각각 비교적 독립적이며 다른 측에서 바라보는(Orthogonal) 뷰로 이루어진다.


설계


SW설계는 크게 아키텍처 설계와 상세설계로 나누어 볼 수 있다. SW아키텍처 설계(Software Architectural Design)는 상위레벨 설계로 일반적인 설계의 개념과 SW 관점에서의 설계의 역 할을 이해하고 프로세스를 인지하여 설계의 다양한 접근방법과 개념을 이해할 수 있게 된다. SW상세설계(Software Detailed Design)는 모든 SW설계에서 다루어져야 하는 핵심이슈를 분 별하여 효과적으로 설계의 산출물을 작성하는 것이다. 

SW설계를 통해 얻을 수 있는 이점은 SW설계에 대한 기본지식의 이해다. 일반적인 설계의 개념과 SW관점에서의 설계역할을 이해하고 그 프로세스를 인지하여 설계의 다양한 접근방법과 개념을 이 해할 수 있게 된다. 

또한 설계시 다루어져야할 핵심이슈 인식을 위해 모든 SW설계에서 다루어져야 하는 핵심이슈 를 분별하여 효과적으로 설계의 산출물을 작성할 수 있게 되는 것이다. 아울러 다양한 관점에서 SW구조와 아키텍처를 고려함으로서 뷰(View)와 아키텍처 스타일, 설계 패턴 그리고 프로그램 계열(Family of Programs)의 다양한 관점에서 설계를 고려하여 설계를 통해 SW품질을 향상 시킬 수 있다. 마지막으로 SW설계에 사용되는 표기법 및 전략을 분류하고 선택하여 공유하기 용이하게 된다. 



요구사항분석및관리


요구사항이란 이용자가 어떤 문제를 해결하거나 목표를 달성하기 위해 필요로 하는 조건이나 능력 을 의미하며 계약을 수행하거나 표준에 맞추거나 산출물을 만족하기 위해 시스템의 전체 혹은 일부 가 갖추어야 하는 조건이나 능력, 요구의 총체를 의미하기도 한다. 

이러한 요구사항을 구조적, 이론적, 논리적으로 접근하고 최종산출물에 보다 가깝게 구현할 수 있 도록 지원하는 것이 바로 SW요구공학이다. 요구사항의 획득, 분석, 명세, 검증 및 변경관리 등에 대한 제반활동과 원칙, 요구사항 생성 및 관리를 체계적, 반복적으로 수행하고, 요구사항 관리에 포함되는 모든 생명주기활동과 이를 지원하는 프로세스, 시스템 요구사항 문서를 생성, 검증, 관리 하기 위하여 수행되는 구조화된 활동의 집합이기도 하다. 아울러 요구사항 명세를 최종 산출물로 생성한다. 


 
요구공학은 이해관계자 사이에 효과적인 커뮤니케이션 수단을 제공하고 요구사항에 대한 공통 이해 를 설정한다. 요구사항에 대한 손실을 방지하고 에러 감지로 불필요한 비용을 절감하고 구조화된 요구사항으로 요구사항 변경 추적을 가능하게 하는 것이다. 


요구사항의 개발은 이해관계자와 개발자가 함께 이해관계자의 니즈와 시스템 개발시 제약사항을 발 견하여 검토하고 명확화 하는 이해과정인 요구사항 추출단계에서부터 추출된 요구사항을 분석하고 요구사항을 구조화하여 각종 대안들을 결정하는 피드백 역할을 수행하는 분석단계를 지나 분석과정 에서 선별된 기능을 기반으로 요구사항을 명세화하고 요구사항의 승인기준(문서화, 명확성, 간결 성, 이해성, 시험성, 사용성, 추적성, 검증성 등)을 정의하여 요구사항을 확인하고 검증하는 단계로 이루어져 있다. 

요구사항 기법은 가장 전통적인 방식으로 분석과 고객 간의 인터뷰 내용을 바탕으로 요구를 추출하는 Interview가 있으나 이해관계자들의 비협조, 애매모호한 단어, 과장, 누락의 위험이 있다. 또한 What과 How에 대한 프레임을 작성하여 고객으로부터의 요구사항에 대한 스토리 를 작성하는 시나리오방식이 있다. 유즈케이스가 대표적이며 이해관계자들이 제시하는 프레임 을 이해하거나 시나리오를 작성해야 하는 추가 작업이 뒤따른다. 추가적으로 프로토타입(구체 적이지 못한 요구사항에 대해 UI 또는 MOCKUP 등을 통해 고객과의 피드백으로 요구추출), Facilitated Meeting(이해관계자들의 모임을 구성하여 브레인스토밍을 통해 요구추출), Observation(WBS를 통해 각 분석가별 분석대상 업무의 할당, 사용자의 비즈니스 수행, 현행 시스템 이용 관찰 등을 통해 요구추출), JAD(PROTO를 통한 고객과 개발자간 밀접한 관계로 서로 간 의사소통의 결과를 제시) 등이 있다.



2016년 6월 15일 수요일

SPICE모델 단계 및 프레임워크

SPICE는 SW프로세스 전반을 심사하여 조직의 SW개발 프로세스를 개선하고 개발자의 개발능력을 향상시킴으로서 개발위험을 통제하기 위한 목적으로 ISO에서 추진하는 SW품질 표준화심사평가 모 형으로 SW프로세스 전반을 심사하고 그 결과에 따른 조직의 프로세스를 개선해 나가는 활동에 대 한 표준화 방법이다. 



 
PRINCE2 모델은 영국정부(OGC; Office of Government Commerce)에 의해 개발되어 전 세계 적으로 사용되고 있는 관리방법론으로 주로 IT분야에서 많이 이용된다. PRINCE2는 다양한 산업계 와 기초 환경으로부터 가장 잘 입증된 경험들을 활용하며 문서들에는 항상 템플릿이 제공되고, 명확한 의사결정시기가 있는 것이 특징이다.
PRINCE2는 프로세스 기반의 접근방법을 이용하여 각 프로세스들이 프로젝트 수행동안에 수행되 어지는 관리활동을 정의하고 있다. 프로세스는 Starting up a Project(SU), Directing a Project(DP), Initiating a Project(IP), Managing Stage Boundaries(SB), Controlling a Stage(CS), Managing Product Delivery(MP), Closing a Project(CP), Planning(PL)로 구성 된다. 


SW프로세스 개선


SW프로세스란 SW를 개발하기 위해 수행하는 일련의 활동을 의미한다. SW를 만들기 위해 필요한 활동들을 명확히 하고 품질확보와 납기를 지키기 위한 방법으로서 SW프로세스를 정립해야 한다.
효과적인 SW프로세스를 만들기 위해서는 프로세스를 정의하고, 필요한 도구를 결정하여 프로세스 를 실행해야 한다. 그리고 지속적인 개선을 통해 SW기술변화를 프로세스에 반영하고 수행자들에게 책임과 교육을 추진하여 결과를 피드백 하는 것이 해당 조직의 SW프로세스를 최적화하는 것이다. SW프로세스는 일반적으로 요구사항 수집 및 분석, 설계, 구현, 시험의 단계를 가지고 조직의 특성 에 따라 활동이 정의된다. 





SW프로세스의 구조적 특징, 특성, 역할들로 이루어진 집합된 형태를 SW생명주기라고 부른다. SW생명주기는 SW개발 단계에 SW개발전략이나 전사적 정책을 통합시킨 것으로 개발방법, 개발환경에 대한 도구, SW 개발의 시작부터 끝까지 효과적으로 관리하기 위해 만들어진다.
SW프로세스 모델의 유형 결정요소는 문제유형, 관점, 개발 방침에 따라 결정되며, 일반적으로 SW개발 기본 프로세스 모델(생명주기 모델, ISO 12207)을 많이 참조하고 있다.
 

SW개발 프로세스가 정립되면 SW개발 방법론과 함께 적용하여 SW개발을 추진하게 된다. SW개발 방법론은 과거 고전적 방법론(구조적 방법론〉정보공학방법론〉객체지향 방법론〉CBD〉SOA)에 서 애자일 방법론으로 유행이 전이되는 상황이다. 개발 패러다임의 변화와 과거 미시적 접근방법에 서 거시적 방법으로 변화됨에 따라 객체〉컴포넌트재사용〉아키텍처 재사용〉프레임워크〉엔터프 라이즈 아키텍처(EA)로 변화하고 있다.1)
근래에는 SW개발 방법론으로 MDA(Model Driven Architecture)와 Agile이 주목받고 있다. MDA는 새로운 플랫폼과 기술을 도입하거나 환경적 변경요구에 따른 상호운영상 문제를 해결하기 위해 OMG가 제정한 기존의 모델링 표준들을 이용하는 개발적인 SW개발 기술이다. MDA의 특징 은 모든 컴포넌트 기술 요소들에 대한 표준 메타모델을 정의하고 표준 메타모델을 기반으로 각 구성 요소를 정의함으로 모든 컴포넌트 기술 요소들에 대한 호환성과 상호 운영성을 보장할 수 있다.

2016년 SW프로슈머 평가단 모집