2016년 1월 13일 수요일

형상관리 가이드

형상관리(Configuration Management)
형상 항목을 식별하여 그 기능적 물리적 특성을 문서화하고, 그러한 특성에 대한 변경을 제어하고, 변경 처리 상태를 기록 및 보고하고, 명시된 요구 사항에 부합하는지 확인하는 이련의 사항에 대해 기술적 행정적인 지침과 사후 관리를 적용하는 원칙입니다.


  1. 형상관리 필요성
  2. 형상관리의 정의
  3. 형상관리 활동
  4. 형상관리 시스템

2016년 1월 12일 화요일

소단위 조직(VSE)을 위한 국제 소프트웨어 공학 표준 동향

그어느 때보다 , 시스템 통합주체들의 경우 , 하부시스템들의 납품을 위해 수많은 요구사항들을 올바르고 , 빠르고 , 그리고 비용 효과적으로 전개해 나가려는 회의를 공급자들과 나누면서 그들에게 의존하는 형태를 보이고 있습니다 . 대형 시스템의 공급망은 피라미드 구조를 가지고 있는데 , 만약 발견되지 않은 결점들이 있다면 이들은 하위 수준의 컴포넌트에 남아있게 됩니다.
이러한 컴포넌트가 상위 수준 컴포넌트로 통합되면 결점은 여전히 발견되지 않게 되는데 , 예로 < 그림 1> 에서 설명된 바와 같이 대형 제조업체는 발견되지 않은 결점들을 지진 채로 가장 하위 수준 공급자에 의해 생산된 컴포넌트를 하나의 제품으로 통합하게 되고 , 이러한 결함 있는 컴포넌트는 제조사에게 수백만 달러 손실의 결과를 초래할 수 있습니다 .



시스템 및 소프트웨어는 매년 점점 커지고 복잡해지고 있으며 점차적으로 , 품질 , 생산성 , 생명주기시간 , 비용 등에 따라 조직의 경쟁 , 적응 , 생존 능력이 결정되어 갑니다 . 최신의 자동차가 가지는 시스템은 1 억 라인의 코드 , 80 개 프로세서 , 5 개의 버스 시스템에 이르고 있습니다 . 산업은 최대 25 명까지 갖는 기업 , 조직 , 프로젝트 , 부서 즉 , 아주 작은 엔터티 ( 이하 VSE : very small entity) 가 가치 있는 제품 혹은 서비스를 만드는데 공헌하고 있다고 인식합니다 .

효과적인 모바일 애플리케이션 성능 테스팅 수행을 위한 7가지 팁

모바일 환경에서의 품질보증은 지금까지 웹이나 PC 환경 하에서의 테스팅과는 다른 요소들이 존재하고 있습니다 . 다양한 모바일 기기와 네트워크 조건 등의 제약 하에서는 성능 테스팅 측면에서 우선순위를 설정해야 하며 , 현재 모바일 성능 테스팅의 초점은 사용자경험에 두고 있음에 따라 이의 효과적인 수행을 위한 7 가지 팁을 제시합니다 .

기존 웹과 데스크탑 환경에 익숙한 테스터들은 모바일 품질 보증에 있어 완전히 새로운 도전에 직면해 있습니다.
모바일 기기 및 네트워크 조건에 의해 제한되는 모바일 환경 하에서 테스트 프로세스 상에 있어 우선순위들을 재평가해야할 필요가 있고, 현재 개발자와 테스터들의 주안점은 사용자 경험의 희생 없이 애플리케이션을 단순화하는 것으로 고객 ( 또는 사용자 ) 들이 사용하는데 불편 없는 애플리케이션을 구축하고 , 모니터링하며 , 업데이트하기 위해 실제 사용자 시나리오를 시뮬레이션 하는 독창적인 방법 강구해야 한다는 것 입니다.

따라서, 모바일 테스트를 처음 시작하거나 익숙하지 않은 경우 , 도움이 될 만한 몇 가지 사항에 대한 팁을 제공합니다.

성능 테스팅 수행을 위한 7가지 팁
  1. 모바일 애플리케이션에 있어 테스트팀의 중요성
  2. 모바일 테스팅의 첫 번째 단계
  3. 모바일 애플리케이션 테스트 우선순위 설정
  4. 모바일 보안에 있어 주의할 점
  5. 네트워크 조건에 따른 대응 방법
  6. 모바일에서 가장 가치 있는 기술
  7. 빠른 출시 주가 달성 방법

코드리뷰(Code Review), 과연 유용한 것인가

코드리뷰 (code review) 는 개발자가 작성한 코드를 다른 개발자가 정해진 방법을 통해 검토하는 일을 말하며 , 등위 검사 , 제 3 자 검사라고도 합니다 . 그러나 한 조사결과에 따르면 개발자들이 코드리뷰를 수행하지 않는 가장 큰 이유는 시간부족 때문입니다 . 따라서 과연 코드리뷰는 개발자들이 완료일정의 압박에도 불구하고 수행해야 할 가치가 있는 것인지 또는 다른 대응요소가 존재하는 것인지에 대한 견해를 제시합니다 .

미 IT 전문지에서 600 명 이상의 개발자들을 대상으로 수행한 최근 조사에 따르면 코드리뷰를 수행하지 않는 가장 큰 이유는 개발자들에게 시간이 없다는 것입니다.
오늘날 모든 현대인들이 시간에 대해 압박을 받고 있으며 , 모든 개발자들에게도 가장 중요한 문제 중 하나입니다. 코드리뷰에 시간이 많이 걸리는 것이 문제라기보다는 기업 또는 개발팀에서 코드리뷰에 드는 시간을 할당할 여유가 없다는 것이 문제입니다.
일부에서는 형식적이고 수동적인 코드리뷰에는 많은 시간이 소요되고 , 대부분의 사람들은 의심의 여지없이 코드리뷰에 시간을 들이는 것은 비생산적인 것이라고 주장할 수 있습니다.
  • 도구기반 코드리뷰의 차별성
  • 결함이 실제로 수정됐는지 확인하기
  • 결함에 대한 비용에 대해 생각하기
  • 자명한 사실

2016년 1월 9일 토요일

GIT Flow를 활용한 효과적인 소스 형상 관리 Part 3

Source Tree 를 이용한  GIT Flow  실습


그동안 터미널 (Terminal) 에서  GIT Flow 를 사용하는 법을 학습했습니다 . GIT Branch  전략을 매번 터미널에서 작업하기란 쉽지 않습니다 .  그러나  UI  툴을 이용한다면 빠르게  GIT  명령어와  GIT Flow  명령어를 통해 능률을 높일 수 있습니다 .  대표적인  GIT UI  툴인  Source Tree(http://www.sourcetreeapp.com) 를 이용해서 쉽게  GIT  명령어 뿐 아니라  GIT Branch  전략을 사용해 효율을 높이도록 실습하고자 합니다 .  소스 간의 충돌을 최소화하여 효율적인 개발이 가능해 특히 대규모 인원의 개발에서 주로 쓰이는  GIT Flow 를 소개하고 ,  예제를 통해 실무 활용 방안을 살펴보고자 합니다 .


Source Tree 는  < 그림  1> 과 같이 좌측 화면에서  Branch, Tag  정보를 가운데 화면에서는 히스토리 (History)  이력 ,  하단에서는 무엇을 수정했는지 파일 이력 ,  우측 하단에서는 파일  diff  이력을 보며 개발의 편이성을 높인 툴입니다 .  자주 쓰는  GIT  명령어는 상단 아이콘 바 (Bar) 에 위치하고 있어서 터미널 없이도 개발할 수 있는  UX 를 제공하고 있습니다 .

클라우드 테스팅 설계를 위한 우선순위 설정하기

클라우드 환경이 점차 일반화됨에 따라 클라우드 환경 하에 새롭게 개발되거나 또는 기존 애플리케이션이 클라우드 환경으로 이식되고 있습니다 .  이에 클라우드 테스팅은 클라우드 환경 하에서 트래픽 등을 고려한 부하 테스팅 ,  성능 테스팅 등을 포함하여  SW 품질 제고를 위한 주요한 프로세스로 부각되고 있음에 따라 ,  클라우드 테스팅 설계를 위한 우선순위 설정 등이 매우 중요합니다 .

현재의 애플리케이션을 클라우드 환경으로 전환 시 ,  새로운 차원의 테스팅 이슈에 직면함에 따라 올바른 기술과 경험을 보유하는 것은 대규모 클라우드 테스트 설계 시 필수적입니다.
애플리케이션 환경을 클라우드로 이동하는 첫 번째 근본원인은 바로 확장성 (scalabilit) 인데 ,  데이터 트래픽과 데이터 전송을 처리하는 용량 (Capacity) 은 컴퓨팅 자원을 추가하는 것으로 쉽게 증가시킬 수 있습니다.

이러한 자원의 설정방법은 다양하고 이에 따른 여러 가지 예상치 못한 오류나 실패가 발생할 수 있음에 따라 현실세계에서 발생할 수 있는 시나리오를 시뮬레이션 할 수 있고 유지 가능한 테스트 설계는 선행 계획 수립에 상당한 시간이 걸립니다.


 

GA-SVM을 이용한 결함 경향이 있는 소프트웨어 모듈 예측

현대 사회는 소프트웨어가 강조된 제품과 시스템들 ,  그리고 다양한 운영 환경에 의존하고 있t습니다 .  또 시스템들의 기능이 매우 많고 복잡하며 높은 신뢰성을 요구하지만 시스템의 시험 기간이 매우 길고 시험에 대한 충분한 정보도 부족합니다 .  과거에 개발한 시스템의 정보를 이용하여 현재 시스템의 결함 경향을 분석하면 현재 시스템의 시험을 수행하는데 많은 중요한 정보를 줄 수 있습니다 .  즉 ,  어떤 모듈에서 결함이 발생할 경향이 높은 것으로 예측되면 이 모듈을 재설계하여 재개발하거나 시스템의 시험을 주의 깊게 할 수 있는 정량적 기준을 제시할 수 있습니다 .
이러한 결함 발생 경향이 높은 모듈예측을 위해 회귀모델 (regression model) 과 분류모델 (classification model) 을 사용합니다 .  결함경향성 여부를 판단하는 많은 연구들에서 제안한 모델들은 대부분 메트릭 벡터들로 설계 개체들을 정량화한 후 이들을 위험 그룹과 비 위험 그룹으로 분류하는 분류모델들이었습니다 .  의사결정트리 분류기 ,  규칙기반 분류기 ,  신경망 ,  지지도벡터기계 ,  나이브베이지안 분류기 등의 분류모델들이 결함유발 소프트웨어를 증명하는데 사용되고 있고 훈련 알고리즘으로는 복잡한 통계기법들이나 인공지능기법들이 사용되고 있습니다 .