2015년 8월 26일 수요일

Twitter, Google, Facebook 등에서 활용되는 Top5 오픈소스 웹

웹 애플리케이션 일을 하는 모든 사람들은 호스팅사이트의 레이아웃을 개발하기 위해 많은 시간을 할애하고 있습니다. 새로운 애플리케이션을 호스팅하기 위해 초기부터 사이트를 구축해야 하는 어려움이 있습니다. 이런 점을 해소하기 위해 Twitter, Google, Facebook등에서 활용하고 있는 Top5 오픈소스 기반의 웹 프론트엔드 개발도구를 소개합니다.

Twitter 의 Bootstrap
  • 웹 애플리케이션 개발에 가장 많은 시간이 걸리는 부분은 코딩이 아니라 HTML 와 CSS 그리고 웹 앱이라고 불리는 호스팅할 사이트의 실제 프레젠테이션 레이아웃을 개발하는 것임
  • Twitter 는 이러한 문제를 해결하기 위해 Bootstrap 부트스트랩 (= 홈페이지 제작을 도와주는 오픈소스 기반의 프레임워크 ) 즉 많은 보일러플레이트 (= 재사용 가능한 템플릿 ) 웹 코드를 가진 무료 웹디자인 프레임워크를 구축함

Facebook 의 Codemod
  • Codemod 는 Facebook 이 개발하고 릴리스 하고 있는 오픈 소스 프로젝트들 중 하나로 Facebook 이 수행하는 대부분의 프로젝트들과 마찬가지로 대규모 데이터 유지보수 측면의 생산성을 지원하는 측면에서 데이터와 웹콘텐츠 등을 매우 높은 수준의 레벨로 스케일링하는 것들과 관련이 깊음 이와 같은 이유로 Facebook 이 OS 가 아닌 하드웨어 측면에서의 처리속도를 올리기 위해 PHP 를 C 로 컴파일러하는 HipHop 을 개발하기도 했음
  • Codemod 는 툴이자 라이브러리로서 최대 장점은 리팩토링스 (refactoring=SW 기능을 유지 보수하여 생산성을 향상시키는 기능 / 기법 ) 라고 말할 수 있음
Google 의 ZXing
  • 일명 흑백줄무늬 횡단보도 (=Zebra Crossing) 로 알려져 있는 ZXing(= 안드로이드 바코드 스캐너 ) 은 오픈소스이자 자바로 코딩된 멀티 포맷 1D 와 2D 바코드 이미지 프로세싱 라이브러리임
  • Google 과 ZXing 의 컨트리뷰터들은 프로젝트 C#, C++, Ruby 그리고 아이폰 클라이언트와 객체 -C 라이브러리에 대한 지원을 요구함에 따라 , 여러 언어들을 수용할 수 있는 포트들이 개발됨

Yelp 의 KegMate
  • Yelp 의 엔지니어들은 기호식품으로 맥주를 선택하여 맥주와 아이패드를 결합하는 방법을 찾아내 Yelp KegMate 를 개발하였고 , 이는 일종의 하드웨어와 하드웨어를 제어하는 프로그래밍 기술 그리고 애플리케이션이 결합된 실험적 프로젝트임
  • 이는 하드웨어 , 아두이노 (Arduino, 프로그래밍 가능한 오픈소스 회로기판 ), 플로우 모니터 , 아이패드 또는 안드로이드 타블렛 등을 활용한 새로운 애플리케이션을 개발할 수 있는 단초를 제공함 좀 더 많은 정보를 얻기 원한다면 www.kegbot.org 사이트를 방문

FaceBook 의 Three20
  • CodeMod 를 통해 이미 FaceBook 의 오픈소스 툴을 언급했지만 Three20 라이브러리는 상용화된 아이폰 애플리케이션 개발을 매우 손쉽게 해주는 라이브러리로 앱 개발자들에게 매우 필요하고 볼 수 있음
  •  Three20 은 Facebook, Posterous, Pulse, Meetup.com, SCVNGR 케쥬얼 게임 등을 포함한 앱스토에서 유명한 애플리케이션에서 활용하는 오픈소스 객체지향 프로그래밍 언어인 Objective-C 의 라이브러리임


임베디드 SW 개발 방법론 part 2 : 품질확보를 위한 임베디드 SW 개발 방법

임베디드 Software 개발 방법론 각 Phase 별 상세 Activity 를 살펴보고 , 기존의 Software 개발 프로세스와 비교 분석을 합니다 . 
마지막으로는 품질 확보 측면에서 임베디드 Software 개발 방법론을 분석해 보도록 하겠습니다 .

▣ 임베디드 Software 개발 방법론 Activities

그림 1 은 임베디드 Software 개발 방법론의 프로세스입니다 . 크게 3 개 Phase 로 구분되어 되어 있습니다 . Requirement Analysis, Architecture/Design Phase 는 요구사항 분석 , 아키텍처를 중심으로 하는 Inception Phase 이고 , 코드 구현이 중심이 되는Implementation Phase, 마지막으로 Hardware 와 통합된 후 코드를 최적화하는 Optimization Phase 입니다 . 각 Phase 별로 Activity 들을 살펴보도록 하겠습니다.












▣ Plan-driven 방법론 , Agile 방법론과 임베디드 Software 개발 방법론과의 비교
▣ 임베디드 Software 개발 방법론에서의 품질 검증

2015년 8월 25일 화요일

애플리케이션 모의 해킹(침투 시험), 언제, 어떻게 실행할 것인가

보안을 위해 네트워크뿐만 아니라 애플리케이션 테스트를 강화해야할 필요성이 지속적으로 제기되고 있습니다. 모의 해킹(침투시험: Penetration Testing)은 애플리케이션의 보안상 취약점을 파악하는 조사 방법으로, 애플리케이션 기능, 리소스 가용성 등을 고려하여 애플리케이션 테스트를 적시에 수행해야 합니다.

  • 보안은 기밀성 (Confidentiality), 가용성 (Availability), 안정성 ( Integrity) 으로 요약할 수 있음
  • 모의 해킹 (Penetration Testing) 은 악성사용자가 애플리케이션의 보안을 위협할 수 있는 취약점을 조사하는 테스팅 방법임
  • 애플리케이션 모의 해킹의 최고 방법론으로 OWASP Top Ten 이 있음
  • 팀의 생애주기 , 애플리케이션 기능 , 리소스 가용성 등을 고려하여 테스트를 수행하는 적기는 개발 팀마다 다름

애자일 방법론 vs. 폭포수(Waterfall) 방법론, 10가지 주요 차이점

폭포수(Waterfall) 방법론은 요구사항을 완벽하게 취합하여 계획을 잘 세우고 그 계획대로 진행하는 방법론이며 애자일(Agile)은 요구사항을 초기에 완벽하게 취합하는 것이 불가능하기 때문에 개발 주기를 반복하고 고객과 소통하면서 소프트웨어의 품질을 발전시키는 방법론으로 이 두 가지 방법론의 차이점을 바탕으로 개발 조직에게 적합한 방법론을 적용하는 것이 중요합니다.

  • 폭포수 방법론은 1970 년에 창안된 첫 번째 소프트웨어 개발 방법론이며 애자일 방법론은 폭포수 방법론의 과도한 문서업무 때문에 내재하는 낭비를 줄이고자 1990 년대에 고안된 방법론임
  • 폭포수와 애자일 방법론의 개발전략의 10 가지 기본적인 차이점을 통해 프로젝트에 최적화된 방법론을 적용할 수 있도록 살펴보도록 함

  1. 폭포수 : 미리 정의된 요구사항 vs. 애자일 : 프로젝트 과정에 걸쳐 진화하는 요구사항
  2. 폭포수 : 빅뱅 (Big Band) 릴리즈 vs. 애자일 : 빠른 릴리즈
  3. 폭포수 : 계획 중심 vs. 애자일 : 학습 중심
  4. 폭포수 : 고객과의 드문 의사소통 vs. 애자일 : 고객과의 지속적인 의사소통
  5. 폭포수 : 단계별 중간물 전달 vs. 애자일 : 진행하고 있는 작업본을 지속적으로 전달
  6. 폭포수 : 수평적인 단계별로 개발 vs. 애자일 : 기능별 수직 개발
  7. 폭포수 : 프로그래밍은 단순히 공사와 같음 vs. 애자일 : 프로그래밍은 디자인의 확장임
  8. 폭포수 : 마지막에 통합 vs. 애자일 : 초기와 이후 잦은 통합
  9. 폭포수 : 마지막 단계 테스트 vs. 애자일 : 초기와 이후 잦은 테스트
  10. 폭포수 : 문서화된 진행 사항 진단 vs. 애자일 : 개발하고 있는 소프트웨어로 진행 사항 진단

개발방법론이 개발직무의 동기유발성에 미치는 영향에 대한 분석

애자일방법론은 소프트웨어 개발의 새로운 트렌드입니다 . 오늘날 기업은 빠르게 사용자의 요구변화에 효과적으로 대처하기 위한 노력으로 애자일 방법론을 채택하고 있으며 , 대부분의 경우 , 소프트웨어 개발에 많은 향상이 발생하였습니다 . 일부 연구에서는 , 소프트웨어 개발자의 동기부여가 향상에 기여하는 요인이라고 언급하였습니다 . 그러나 애자일 방법론의 어떤 측면으로 인해 그들이 동기부여가 되지는 아직 알 수 없었습니다 . 본 연구의 목적은 전통적 개발방법론과 애자일 방법론 소프트웨어 개발자의 직무특성 간 잠재적인 동기에 대해 조사 비교하는데 있습니다 . 경험적 분석을 위한 연구 자료는 국내 4 곳의 IT 기업의 77 명의 개발자에 의해 수집되었으며 , 방법론에 따라 개발자의 잠재적인 동기부여에 큰 차이가 있다고 분석되어졌습니다 . 애자일 개발자는 타 방법론 개발자에 비해 더 동기부여가 될 수 있으며 , 개발자의 직무특성이 방법론에 따라 차이가 있는 것을 자세히 보여주었습니다 .

2015년 8월 22일 토요일

제 15차 SP인증을 중심으로 한 SW프로세스 교육


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

미래창조과학부가 주최하고 SW공학센터가 주관하는 금번 교육은 수강생의 경험과 SP인증기준과의 비교 분석을 통해 스스로 SW프로세스 개선점을 체득할 수 있는 실습 기회를 제공합니다.

애자일과 아웃소싱의 효과적 결합을 위한 가이드

애자일 방법론 적용에 있어 그 자체만으로 많은 z문제점과 과제가 있지만 아웃소싱과 결합될 경우에는 공간, 시간, 언어 등의 상이성으로 이러한 문제점들이 배가되고 새로운 문제점들이 나타납니다. 그러나 하이브리드 애자일 모델의 적용, 업무 영역별 업무와 인력 조직 등 다양한 BEST PRACTICE들을 잘 활용함으로써 이러한 문제점을 적절하게 대처한다면 프로젝트를 성공적으로 이끌 것으로 기대됩니다.


  • 하이브리드 애자일 모델을 활용한 선행 리스크 축소
  • 요구사항 영역별로 (requirement areas or features) 아웃소싱을 위한 업무와 인력을 조직화
  • 고객 친화적으로 애자일 방법론을 변형
  • 변경 지시에 의해 놓치는 영역 (runaway scope) 과 요구사항에 대한 관리
  • 교차배치형 (interleaved) 품질 보증 (QA: Quality Assurance)