2015년 11월 10일 화요일

Devops의 이해와 구현 Part 2

Devops 구현하기 ( 품질 , 프로세스 , 도구 관점에서 )

전통적인 폭포수 개발 모델에서는 코드가 개발이 완료되어야 빌드와 테스트가 이루어질 수 있다 . 코드가 최종 단계에 이르러야 테스트가 수행되므로 테스트 결과는 프로젝트 후반에서 파악할 수 있다 . 테스트를 통과하지 못할 경우 , 변경된 사항과 해결할 문제 사이에 상관관계를 파악하기 어려워 문제 해결에 많은 시간을 낭비하게 된다 . 그나마도 프로젝트 일정과 비용 등의 제약으로 아직 해결하지 못한 문제가 남아 있지만 운영 단계로 넘어가야 하는 경우 품질에 상당한 악영향을 미칠 수밖에 없다 .

저명한 컴퓨터 과학자인 Gerald M. Weinberg 는 품질은 사용자의 요구사항에 부합하는 것이라고 정의하였다 . 즉 , 품질이라는 것은 정도가 있는 것으로 ‘ 얼마나 잘 ’ 이라는 것이 사용자에 따라 달라질 수 있다 . 가령 , 시스템 성능은 얼마나 많은 사용자가 동시에 사용하는지 , 어떤 기능을 주로 사용하는지에 따라 그 기준이 달라진다 . 이는 품질이 절대적인 기준 값이 있는 것이 아니라 전체적 맥락 (context) 하에서 정의되고 주요 품질 속성과 아닌 것을 구분하는 것이 필요하다는 것을 말해준다 .

품질속성 시나리오

SW개발주기상에서 Just-in-time 요구사항 정의

요구관리는 SW 개발주기에서 가장 중요한 첫 번째 단계임이 분명하나 , 문서화된 요구사항은 자주 변경되며 시간낭비에 불과할 때가 많습니다 . 제조업에 적용되는 just-in-time 컨셉은 SW 개발에도 매우 유효함에 따라 , 요구관리가 SW 개발에 있어 시기적절한 역할을 하기 위한 just-in-time 요구관리에 대한 정의와 역할을 제시합니다.

  • 요구사항 정의는 소프트웨어 개발 주기 상 최초단계로서 아주 중요한 의미를 가지나 , 변경되거나 버려질 요구사항을 기록하는 것인 시간을 낭비하는 것에 불과함
  • 제조분야에서 시간낭비를 피하는 기본적 기술은 “just-in-time” 으로 알려져 있는데 이 Just-in-time 개념이 소프트웨어 요구관리에 적용될 수 있음
  • 본 보고서에서는 just in time 요구사항 관리가 제공하는 합리적이고 시간낭비를 없애는 방법을 설명하고자 함

▶ 소프트웨어 개발 주기 : Just-in-time 요구사항
▶ Just-in-time 요구사항은 무엇과 비슷한가 ?
▶ Three Amigos
▶ 예측의 필요성
▶ 조정
▶ 함께 모여 작업

애플리케이션 보안테스팅 전략 수립을 위한 10단계 절차

대부분의 SW 개발 및 테스팅 전문가들은 보안 테스트를 SW 개발주기 상 마지막 단계로 생각하고 있는 경향이 있습니다 . 그러나 SW 보안성 테스트는 제품의 수명과 기업의 비즈니스 전략에 영향을 미치는 중요한 단계임에 따라 품질보증 팀과 함께 개발의 전주기에 걸쳐 전략을 수립하고 이의 실효성 있는 적용이 요구됩니다 .

보안테스팅 전략수립을 위한 10 단계
  1. 애플리케이션 개발 프로젝트 초기에 위협 모델링을 수행
  2. 보안 관리의 기본적 요구사항을 정의
  3. 악용사례를 찾아냄
  4. 입력 확인을 위한 규칙을 정의
  5. 소스코드 분석기를 이용
  6. 소스코드를 기록하기 위해 개발자들을 가이드
  7. QA 주기 동안 공격을 자극하기 위한 동적 스캐너를 사용
  8. 배포환경에 대비하여 애플리케이션을 테스트
  9. 일반적 리질리언시 (resiliency: 탄성 ) 를 테스트
  10. 생산과정에서 정기적으로 애플리케이션을 재 테스트

2015년 11월 7일 토요일

Devops의 이해와 구현 Part 1

Devops 이해하기 ( 개발과 운영은 남이 아니다 !)

Devops 란 무엇인가 ?
매일 새로운 용어가 등장하는 IT 분야에서 요즘 Devops 란 말이 자주 등장하고 있다 . IT 관리자 및 전문가에게 널리 알려진 CIO 전문지에서 “ 놓치지 말아야 할 필수 IT 프로젝트 ” 경력중 하나로 Devops 를 꼽기도 하였다 . Devops 란 무엇인지 살펴보기 위해 위키피디아 (wikipedia) 에서 정의한 내용을 먼저 살펴보자 .

DevOps 란 ?
DevOps(Devops = Development + Operations) 라는 합성어는 소프트웨어 개발자들과 IT 종사자들 사이의 의사소통 , 협업 , 융합을 강조한 소프트웨어 개발 방법론이며 , 소프트웨어 개발과 IT 운영간의 상호 의존관계에 대한 산물이다 . DevOps 는 조직에서 소프트웨어 상품과 서비스를 신속히 생산하는 것에 도움이 되는 것을 목적으로 한다 .

Devops 가 아닌것은 ?
Devops는 새로운 부서가 아니다

새로운 개발문화로써의 Devops
Devops는 개발과 운영을 자동화해주는 도구를 설치한다고 해서 만들어지지 않는다. Devops를 새로운 개발 문화로써 인정하고 이를 조직에 정착시키는 핵심이다. 개발자와 운영자는 서로 존중하며, 신뢰를 해야 한다. 각자의 전문성과 책임을 인정해야 한다. 운영자는 새로운 기능을 배포하는데 개발자를 믿어줘야 하고, 개발자는 운영자가 제안하는 인프라를 신뢰하고 따라야 한다. 서로가 투명하게 공유하고 협력해 나가는 것이다. 개발자는 자신의 코드가 어떠한 영향을 주는지 알려야 하고, 운영자는 개발자에게 운영할 시스템에서 배포할 방법을 제공하는 것이다.

자세히 보기 →

소프트웨어 개발주기에서 위협모델링의 적용

위협모델링이란 시스템이 직면할 수 있는 보안 위협을 고려할 수 있도록 도와주는 것으로 , 즉 , 시스템의 잠재적인 취약점 제거 전략을 수립할 수 있도록 하며 , 제한된 리소스에 초점을 맞추고 주의를 기울이게 합니다 . 이에 개발중인 애플리케이션에 대해서 위협 모델링 개발의 기본 요소를 제시합니다 .
  • 소프트웨어 개발 주기상 , 초기에 누가 어플리케이션을 공격할지 어떠한 방법으로 공격하는지를 고려하는 것은 중요함
  • 이러한 프로세스는 위협모델링 (threat modeling) 으로 알려져 있으며 , 대부분의 개발팀들에게 이 개념이 익숙하지만 위협 모델링의 많은 기초적인 사항들에 대하여는 전문가들의 비밀 작업장처럼 숨겨져 있음
  • 위협모델링은 복잡하거나 굳이 공식적일 필요는 없는데 , 본 원고에서는 위협 모델링이 무엇이고 어떻게 수행하는지를 다룰 것임

▶ 개요
▶ 위협 모델링 프로세스
▶ STRIDE 에 대한 이해
▶ 결론

요약기반 대규모 소스 코드 유사성 평가

소프트웨어의 개발이 활발해짐에 따라 소스코드 복제 , 도용이 증가하고 있으며 , 이로 인한 분쟁도 증가하고 있습니다 . 따라서 소스코드 복제에 대한 유사도 검사 또한 매우 중요시되고 있습니다 . 개발 시간 단축 , 성능 향상을 위해 소스코드 복제가 일어나고 다른 기업 , 개인 간의 분쟁을 유도하게 됩니다 . 분쟁을 결정짓거나 사전에 방지하기 위해 소프트웨어 유사도 검사가 필요합니다 .

유사성을 측정하는 기존의 도구는 대부분 텍스트 / 토큰 비교 [1, 2, 3, 4] 방법을 사용한다 . 텍스트 / 토큰 비교는 소스코드의 텍스트나 토큰을 나열하여 비교하는 방법으로 다른 비교 방법에 비해 수행속도가 빠르다는 장점이 있습니다 . 하지만 기존의 툴들은 불필요한 소스 코드에 대해서 잘못된 유사성을 감정하는 한계가 있습니다 . 예를 들어 프로그램 개발 툴에 의해 자동으로 삽입된 소스코드 , 주석 , 변수 선언문의 위치 등은 유사도 측정에 있어 방해요소가 될 수 있습니다 . 대규모 소프트웨어의 소스코드를 그대로 비교하면 수행시간의 증가로 인해 기존 툴에 직접 사용하기에는 어려움이 있습니다 . 또한 소스코드를 도용 시 소스코드를 의도적으로 변형을 하게 되면 복제한 소스코드이지만 검출도구에서는 유사하지 않다고 판단 할 수 있습니다 .
  • 대규모 소프트웨어의 유사도 검사 방법
  • 소스코드 요약 기법과 유사도 비교 방법
  • 대규모 소프트웨어의 유사성 비교

요약기반 유사성 평가 절차

자세히 보기 →

2015년 11월 6일 금요일

제21차 SP인증을 중심으로 한 SW프로세스 교육안내 (11/12(목)~13(금), 경북 포항)

지역SW기업의 SW개발품질관리 선진화 및 역량강화 일환으로 마련된 [제21차 SP인증을 중심으로 한 SW 프로세스 교육]에 여러분을 모십니다.

본 교육은 국내 중소SW기업과 개발 조직의 SW프로세스 품질 향상과 신뢰성 확보에 목적이 있습니다. SW개발자, 품질 담당자, 테스트 담당자 등을 대상으로 SW프로세스 개념과 SP인증 기준 이해를 바탕으로 실제 업무에 필요한 SW프로세스 교육을 진행합니다.

신청하러 가기 →