2015년 10월 30일 금요일

애자일 기반에서 아웃소싱 활용을 위한 효과적인 적용방안

애자일은 만능이 아니며 여타 개발방법론과 마찬가지로 한계와 문제점을 내포하고 있는데 , 아웃소싱 활용에 있어 그러한 문제점은 더욱 증폭되는 경향이 있습니다 . 효과적인 아웃소싱 활용을 위해서 하이브리드 애자일 모델을 도입하고 내부적 특성에 적합하도록 애자일 방법론을 조정하는 등의 적용방안을 제시하고자 합니다.

애자일 개발방법론은 자체적으로 내제된 문제점과 해결해야할 과제들이 상존해 있으며 , 이는 아웃소싱 상황일 때 더욱 증폭되고 새로운 문제들에 직면하게 됩니다.
본 원고에서는 이러한 문제들을 적절하게 해결할 수 수 있는 일련의 Best Practice 들을 제시합니다.
  1. 하이브리드 애자일 모델(hybrid Agile models)을 적용하여 사전에 프로젝트 위험을 감소
  2. 요구사항 영역 혹은 특정사항에 따라 아웃소싱 인력 및 작업을 구조화
  3. 고객사가 용이하기 적용할 수 있도록 애자일 방법론을 수정
  4. ‘변경지시절차’를 가지고 비통제 범위 및 요구사항을 관리

애자일 관리의 다섯 가지 효율화 방안

애자일 개발방법론의 핵심은 역할과 조직화 등 팀이 프로젝트를 수행하는 데 있어 방해요소가 될 만한 오버헤드를 제거하는 데 있습니다 . 이를 위해 팀을 소규모로 유지하고 , 독립적으로 관리하고 신속한 반복 작업을 수행하는 등의 즉시 적용이 가능한 효율화방안을 소개합니다.

애자일 소프트웨어 개발은 오버헤드를 없애는 것에 대한 모든 것입니다.
애자일 소프트웨어 개발은 소위 “ 워크 어바웃 워크 (work about work)” 라고 불리는 것에서 벗어나 실제 작업을 선호합니다.

애자일 관리의 핵심은 워크 어바웃 워크 문제를 피하는 것이고 이러한 접근방법은 팀원들이 같은 공간에서 작업하는 소규모 팀에게 효과적이며, 많은 애자일 전문가들은 대규모 프로젝트의 복잡함을 해결하기 위해 고안된 DAD(Disciplined Agile Delivery) 와 ASM(Agile Scaling Model) 같은 정교한 접근방법을 제시하고 있습니다.
대규모 팀으로 이루어진 애자일 프로젝트를 수행하기 위해 전문가들에 의해 제안되는 애자일 관리에 대한 팁을 소개합니다.

 1. 소규모 팀의 성과를 우선 수집하기
 2. 팀을 소규모로 유지하기
 3. 조직된 팀을 온전하게 유지하기
 4. 신속한 반복주기를 유지하기
 5. 궁지에서 벗어나는 방법 배우기 


웹 애플리케이션 보안테스팅 수행을 위한 일곱 가지 체크리스트

SW 공학적 관점에서 웹 애플리케이션 (web application) 또는 웹 앱은 인터넷이나 인트라넷을 통해 웹 브라우저에서 이용할 수 있는 응용 소프트웨어를 말하는 데 , 웹 애플리케이션은 클라이언트로서 웹 브라우저를 사용하는 사용자가 매우 많음에 따라 웹 애플리케이션의 보안 취약점에 대한 테스트를 하는 것은 매우 중요한 일입니다.
다음은 웹 애플리케이션 보안 테스트를 수행하는 데 있어서 최적의 결과를 도출할 수 있는데 도움이 되는 필수 요소 체크리스트입니다.

 1. 모두의 기대치를 설정하라
 2. 유용한 툴들을 모아라
 3. 모든 관점에서 애플리케이션을 검토하라
 4. 기본적인 약점을 테스트하라
 5. 스캐너 결과를 다시 한 번 확인하라
 6. 수동으로 결함을 검토하라
 7. 소스 코드를 테스트하라 

2015년 10월 29일 목요일

실시간 리눅스를 위한 동기화 프로토콜의 구현 및 검증

리눅스는 오픈 소스 기반의 범용운영체제로서 , 실시간성을 제공하는 시스템에는 적합하지 않다 . 그러나 사용의 편이성과 기존의 가용한 응용이 많은 장점 등이 있기 때문에 , 리눅스 운영체제에 실시간성을 지원하기 위한 연구가 지속되어 왔다 . 이러한 연구는 RT-Linux, RTAI, L4/Fiasco, ADEOS, Xenomai, XtratuM 등에서 찾아볼 수 있다 . 리눅스 커널 자체에서 실시간성을 지원하고자 하는 시도는 리눅스 커널 2.2.X 버전부터 도입된 실시간 선점형 (Real-time preemption) 커널이 있다 . 실시간 선점형 커널은 연성 실시간 시스템을 지원하기 위하여 원래의 스핀락 (raw spinlock) 으로 보호되는 임계 영역 (critical section) 이나 ttys 와 같은 오래된 코드들 외에는 커널의 대부분이 선점 가능하도록 한다 . 이를 위해서 대부분의 커널 스핀락 (spinlock) 은 뮤텍스 (mutex) 로 대체되고 , 모든 인터럽트는 커널 쓰레드로 변경된다 .

실시간 운영체제에서는 응용의 수행시간을 예측가능하게 만들기 위하여 우선순위 역전 (priority inversion) 현상이 반드시 제어되어야 한다 . 실시간 선점형 커널에서는 우선순위 상속 (priority inheritance) 이 지원되어 이를 제어하도록 되어 있다 . 그러나 우선순위 상속은 연쇄 블로킹 (chained blocking) 및 데드락 (deadlock) 문제를 해결하지 못하는 단점이 있다 . 본 원고에서는 RT 패치를 적용한 리눅스 커널에 PCP(Priority Ceiling Protocol) 을 구현하여 연쇄 블로킹 및 데드락 문제를 해결하였다 . PCP 의 구현 방법은 두 가지가 있으며 , [8] 에서 제시된 원래의 PCP 와 그 변형인 IPC(Immediate Priority Ceiling) 이다 . 본 원고에서는 이 두 가지를 모두 구현하여 그 성능을 측정 , 비교하였다 .

Ⅱ 실시간 시스템의 동기화 문제
Ⅲ 실시간 리눅스와 동기화 프로토콜 구현
Ⅳ 동기화 프로토콜의 성능 분석

테스트 자동화 : 언제 어떻게 그리고 얼마만큼 하는 것이 효과적인가

테스트 자동화는 테스터에 의존하는 수작업 테스팅 방법과 비교해서 비용이 효과적이며 , 시간을 절감할 수 있다는 점에서 장점이 부각되고 있습니다 . 그렇다면 , 프로젝트 개발단계에 있어 어느 시점에서 테스트 자동화를 수행하며 , 어떠한 방법에 의해서 , 어느 정도 수준으로 적용하는 것이 효과적인가에 대한 내용을 제시합니다.

▶ 핵심 프로그램 요인
▶ 언제 자동화 하여야 하는가
▶ 어떻게 테스트 자동화 프로그램을 이행하는가
▶ 얼마나 자동화하여야 하는가

리얼타임 시스템 프레임워크 및 아키텍처 part 2

전투기로 보는 리얼타임 시스템의 메시지 아키텍처

고 신뢰성과 안정성을 요구하는 전투기의 메세지 아키텍처를 설명하고자 합니다 .

전투기는 다양한 센서들로 구성되며 , 이 센서가 수집한 정보들을 통해 다양한 입 / 출력이 발생한다 . 레이더 ( 공급자 - 센서 ) 를 통해 주위로부터 수집된 정보를 조종기 계기판 ( 수요자 - 계기판 ) 과 조종석의 유리 창에 HUD ( 수요자 - HUD) 에 동시에 전달되어야 하며 , 같은 정보를 조종사가 보기에 빠른 판단을 하기 위해 수치적인 데이터가 아닌 위험도를 색상으로 등급화하여 전달하는 것도 필요하다 .

Ⅰ . 다양한 센서와 입출력 장치로 구성된 전투기
Ⅱ . Event Channel 아키텍처
Ⅲ . Event Channel 의 제약사항
Ⅳ . 리얼타임을 지원하기 위한 Event Channel 의 내부구조
Ⅴ . 개선된 전투기의 아키텍처

2015년 10월 28일 수요일

[SW공학 동영상 8화] 성공하는 SW만들기 이상은소장


  • 성공하는 소프트웨어란?
  • 올바른 SW 개발을 위해 중요한 것은?
  • SW 개발 전에 반드시 고려해야 할 기술적 사항은?
  • SW공학과 서비스공학의 핵심요소?
  • 관련된 글로벌 사례
  • 성공하는 SW개발을 위해서