2016년 1월 6일 수요일

동적 분기 커버리지를 위한 테스트 데이터 자동 생성

많은 목적 지향 테스트 데이터 생성 방법들이 진화 알고리즘 (Evolutionary Algorithm, EA) 에 바탕을 두고 있습니다 .  진화 알고리즘은 자연세계의 진화과정을 모델링하여 복잡한 실세계의 문제를 해결하고자 하는 계산모델입니다 .  진화 알고리즘은 구조가 간단하고 방법이 일반적이어서 응용범위가 매우 넓으며 ,  특히 적응적 탐색과 학습 및 최적화를 통한 공학적인 문제의 해결에 많이 이용되고 있습니다 .  진화 알고리즘을 이용하여 테스트 데이터를 생성하는 방법을 진화 테스팅 (Evolutionary Testing, ET) 라 합니다 .

ET 는 후보 테스트 데이터와 원하는 테스트 데이터간의 차이를 평가하기 위해 적합성 함수 (fitness function) 를 이용합니다 [3].  예를 들면 ,  어떤 프로그램에서  x==5 인 분기 조건이 참이 되게 하는 테스트 데이터를 구하는 문제를 생각해 봅니다 .  이와 같은 분기 조건은  F(x) = |5-x| 와 같은 함수로 간주합니다 .  이때 함수  F(x) 를 최소화하는 입력 데이터  x 는 분기 조건  x==5 를 참이 되게 하는 입력 값이 원하는 테스트 데이터가 됩니다 .  여기에서 분기 조건  x==5 의 분기 거리 (branch distance) 는  |5-x| 로 정의되며 해당 분기가 참이 되기 위해 얼마나 가까이 접근했는지를 나타냅니다 .  예를 들면  x 가  7 과  10 을 각각 가졌을 경우에 분기 거리는  2 와  5 가 됩니다 .  이는  x 가  7 일 때  10 인 경우 보다 분기 조건  x==5 을 참이 되게 하는 경우에 보다 더 가까이 접근했음을 의미합니다 .  만약 탐색 알고리즘이  10 을 먼저 생성하였다면 이를 감소하는 방향으로 탐색을 진행할 것입니다 .

소프트웨어 품질평가를 위한 정적코드분석 툴 8선

정적코드분석이란  SW 를 분석하는 방법 가운데 하나로 ,  그  SW 로부터 만들어진 프로그램을 실제로 실행해보지 않고 분석하는 방법입니다 . SW 시스템 내 잠재적으로 취약한 코드를 찾아내기 위한 정적분석이 점차 증가하고 있습니다 .  상용버전과  SaaS (Software as a service) 로 제공되는  8 가지 정적코드분석 툴을 소개합니다.

소프트웨어 품질 평가를 위한 정적코드분석 툴  8 선
 1. HP Fortify Static Code Analyzer (SCA)
 2. Checkmarx CxSuite 
 3. Syhunt Sandcat®
 4. Parasoft 의 정적코드분석 툴   
 5. VeraCode Static 
 6. Coverity Static Analysis
 7. Klockwork Insight 
 8. CodeSonar®

자세히 보기 →

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

GIT Flow를 사용할 수 있도록 GIT Flow 설치를 진행하고, 무료 GIT Repository 인 GIT Hub에 GIT Flow를 테스트 해 볼 수 있는 GIT Repository를 생성합니다.

GIT  설치
GIT  프로그램은 운영체제에 자동으로 설치되어 있지 않다 . < 그림  1> 의 다음  URL 에 접속해서 운영체제별로 설치합니다 . http://git-scm.com/downloads
MAC OS X  개발자라면 링크에 접속해서  Mac  아이콘을 선택하고  dmg  설치 파일을 설치하고  GIT 을 설치합니다 . 
GIT 을 설치했다고 해서  GIT Flow 를 바로 사용할 수는 없습니다 . GIT Flow 를 설치해야 합니다 .

$ git flow
git: 'flow' is not a git command. See 'git --help'.
Did you mean one of these?
reflog
show

GIT Flow 는 MAC OS X, Linux(Unix), Windows까지 지원합니다.

보안을 위협하는 소프트웨어 취약성 관리방안

SW 취약성 분석을 통해 이를 보완 할 수 있는 우선순위를 확보하고 각 단계별 대응방안 등을 제시합니다.

1. 소프트웨어 보안 취약성의 우선순위를 정하고 관리하는 방법
2. 취약성의 우선순위를 결정하고 이의 개선을 위해 취약성에 우선순위를 정하는 것에 대한 두 가지 주요 질문을 있는데 , 그것은 취약성이 얼마나 심각한가와 해결할 수 있는 방법은 무엇인가
3. 이러한 질문의 해답은 보안팀 및 개발팀 측면에서 개선되어야할 점은 무엇인지 그 시기는언제가 적절한지를 결정
  • 심각도를 결정
  • 노력의 수준을 결정
  • 계획 개발
자세히 보기 →

소프트웨어공학센터 전문위원 채용 공고



직위: 상근 전문위원
상근: 1명(계약기간 2년)

자격요견
  • 산업분야에서 15년 이상의 실무경험(해당 전문분야에 대한 프로젝트 또는 컨설팅 실적 등)을 보유한 분
  • 해당 전문 분야에서 국제적 수준의 탁월한 업적을 이루거나 특수기술을 보유한 분
  • 기술 또는 논문 수상경력, 기술 또는 방법론 개발 등 해당 전문분야에서 대외적으로 그 업적을 인정받은 분
  • 국제적 감각과 미래지향적 비전을 가진분
  • 해당 전문분야에 대한 국제 유명학회 Fellow 수준에 준하는 학문적 탁월성을 성취한 박사학위 소지자 우대
  • 국내 및 해외 거주 외국인으로서 소프트웨어 공학분야의 권위 있는 전문가 우대
직무수행 요건
  • 센터에서 추진하는 프로젝트 및 연구개발에 참여 또는 기술자문 수행
  • 센터의 프로젝트 및 연구 성과의 국내외 컨퍼런스와 학회 발표 등을 통한 SW공학 기술 보급화 확산 노력
서류 제출기간: 2016.01.13(수) 18:00까지

모바일 개발을 위한 데브옵스(DevOps) 적용방안

개인 또는 기업을 막론하고 모바일 컴퓨팅은 사용자뿐만 아니라 개발팀과 운영팀에게도 가장 뜨거운 화두 중 하나입니다 . 이에 따라 각각의 운영체제와 각각의 기기에서 발생하는 수많은 이슈들을 개발과 운영 측면에서 대응할 수 있도록 데브옵스를 모바일 환경에 적용할 수 있는 기본적인 방안을 제시합니다 .

본 원고에서는 데브옵스를 통해 각기 다른 모바일 기기에 설치된 다른 버전의 애플리케이션들의 활용 방법에 관한 이슈들을 다루는 방법에 관해 살펴보고자 합니다.
따라서 기업들이 단순히 모바일 앱 개발뿐만 아니라 환경변화 속에서도 배포방법과 기능의 연속성과 안정성을 담보할 수 있는 방법을 모색하는 것이 중요합니다. 전 세계 기업들은 모바일 컴퓨팅을 더 쉽게 만드는 애플리케이션을 고객들과 사용자들에게 제공하는 것으로 모바일 시장을 더욱 확장하고 보편화되길 원합니다.
모바일 컴퓨팅은 요즘 개발팀과 운영팀에서 가장 인기 있는 주제일 것이며 , 크고 작은 회사들의 대부분 직원들도 작업 수행에 개인 소유의 다양한 모바일 기기를 활용하고 있습니다.
  • 모바일 애플리케이션: 새로운 모색 과정과 행동
  • 모바일 애플리케이션 개발의 위험성
  • 데브옵스의 성능