2015년 11월 4일 수요일

2015 SW 안전성 컨퍼런스 발표자료


  • 사례발표1: 의료용 SW 안전성을 위한 IEC 62304체계 구축 사례
  • 사례발표2: 철도 산업 부문의 기능 안전 사례
  • 사례발표3: 원전계측제어 소프트웨어 V&V 적용기술
  • 사례발표4: NIPA주관 ISO 26262 기능안전 표준 동향 및 사례
  • 키노트: SW안전성 확보를 위한 프로세스 구축

2015년 11월 3일 화요일

트리 형태를 이용한 클래스의 단계별 상태 다이어그램 도출 기법에 대한 연구

개발된 소프트웨어 시스템의 안정성 및 품질을 향상시키기 위해서는 소프트웨어의 테스트 과정이 필요하다 . 일반적인 소프트웨어 테스팅은 소프트웨어 시스템 내의 결함을 검출하는 작업을 말하며 프로그램을 실행시켰을 때 결과가 명세서에 기술된 대로 산출되는가를 조사한다 . 소프트웨어 테스트는 설계 단계부터 철저한 검증을 통해 안전성을 확보하기 위한 모델 기반 혹은 정형명세 기반의 테스트와 관련된 연구들이 활발히 진행되어 오고 있다 . 최근에는 상태 다이어그램을 기반으로 한 테스트 기법들이 연구되고 있는데 이러한 상태 다이어그램 기반 연구들은 커버리지를 이용하여 전이를 측정하거나 유 ㆍ 무효한 테스트 케이스를 생성하여 소프트웨어 시스템을 테스트 하는 방법들로 개발된 소프트웨어 시스템의 안정성을 테스트하는 방식으로 연구되고 있다.

  • 상태 다이어그램 도출 및 표기
  • 단계별 상태 다이어그램 도출 기법 적용

SW개발 방법론 : Scrum과 Kanban의 비교

애자일 개발방법론의 대두와 함께 떠오른 Scrum 은 많은 개발자들에 점차 친숙해지고 있으며 , 최근에는 Kanban 이 떠오르고 있어 Scrum 을 마스터한 조직들은 점차 Kanban 으로 옮겨가고 있는 추세에 있습니다 . 이에 따라 Scrum 과 Kanban 을 구분 짓는 차이점과 , 개발방법론 이행시 차별성 , 방법론 간 상호보완 관계 등에 대한 여러 가지 시사점을 제시합니다 .

Scrum 은 개발자들 사이에서 애자일과 동의어로 받아들일 정도로 일반화되었으며 , 최근에는 Kanban 이 점차 떠오르고 있는 추세입니다.
Scrum 을 이행한 많은 조직들이 Kanban 으로 이동하고 있고 많은 ALM 밴더들이 제품에 Kanban 의 특징을 추가하고 있으며 수 많은 컨퍼런스에선 Kanban 의 사용을 의미하는 ‘ 린 (lean)’ 생산방식과 ‘ 흐름생산 (continuous flow)’ 에 관한 세션을 많이 열고 있습니다.
그러나 분명 Kanban 이 무엇이며 Scrum 과 어떻게 다른가 ? 이 둘이 함께 사용될 수 있는가 ? 이번 원고를 통하여 프로젝트 관리자들 및 팀 리더들은 Scrum 과 Kanban 이 어떻게 다르고 어떻게 상호보완적이 될 수 있는지 보다 자세히 살펴보게 될 것입니다.

▶ Scrum 과 Kanban 의 산출물 차이
▶ 개발 프로세스의 진척을 추적하기 위해 사용되는 척도의 차이
▶ 역할과 미팅에 있어 Scrum 과 Kanban 의 차이
▶ 이행측면에서의 Scrum 과 Kanban 의 차이

웹 프론트엔드 엔지니어링의 스킬셋 part 2

UI 개발에 필요한 어드밴스 스킬셋


프론트엔드 개발자가 되기 위한 기본 스킬셋으로 Part 1 에서 다음과 같은 부분을 정의했습니다 .

- 다양한 라이브러리의 사용법에 앞서 순수한 HTML, CSS, Javascript 의 이해
- 브라우저 렌더링 과정의 이해
- 기초적인 물리와 수학
- 프로그래밍 공통 지식

고급 스킬셋은 Part1 에 언급한 기본지식을 기초로 꽤 복잡하고 미려한 UI 를 개발하면서 필요한 스킬들이라 할 수 있습니다 . 간단하고 단조로운 UI 개발인 경우에도 뛰어난 성능을 필요하거나 끊김없는 자연스러운 애니메이션을 구현해야 한다면 역시 기초 지식을 뛰어넘는 기술이 필요할 것입니다 . 프론트엔드 엔지니어링을 다루는 개발자의 고급 스킬셋을 하나하나 알아보겠습니다 .

Ⅰ . 코드 품질관리
프론트엔드 개발분야 역시 프로그래밍을 한다는 관점에서 일반적인 품질관리 기법이 필요로 한다 . 프론트엔드 개발자들은 품질관리에 필요한 것이 무엇이고 , 그것들을 어떻게 자동화과정을 통해 효율적인 코드 관리를 할 수 있는지 까지 알아둘 필요가 있다 .
프론트엔드 개발에서 필요한 품질관리 관련 스킬은 다음과 같다 .

1. code 에 대한 품질측정 방법
2. 단위 테스트 구현
3. CI(Continuous Integration) 지원 도구의 효율적인 활용

Ⅱ . 성능 개선 스킬
1. 대규모 프로그램의 구현 방법
2. 다양한 라이브러리와 스펙의 이해
3. 그 밖의 스킬들

자세히 보기 →

2015년 10월 31일 토요일

지속적인 통합을 위해 갖추어야 할 4 가지 기본 요건

지속적인 통합 (Continuous Integration) 은 팀의 구성원들이 자신들의 작업한 내용을 자주 ( 통상 최소 매일 주기 ) 통합하는 개발 지침을 말합니다 . 이러한 지속적인 통합은 복잡한 프로젝트 수행 시 야기되는 문제점들을 적시에 제거해주며 프로젝트 진행을 좀 더 손쉽게 하는 장점이 있음에 따라 , 지속적인 통합을 위해 갖추어야하는 관리방안 , 시스템 환경 등 4 가지 기본요건에 대해 소개합니다 .

▶ 원칙 1: 관리(Management) 
지속적 통합이 실행방안이 되기 위해 개발자들은 소스코드관리(Source code management:SCM)시스템을 이행할 필요가 있음. 

▶ 원칙 2: 자동화 테스팅(Automated testing)
• 애플리케이션의 자가 테스팅 자동화(Automated self-test)는 지속적통합에 있어서 매
우 중요한 부분인데, 이는 테스트 프레임워크인 ‘xUnit1)’와 같은 도구를 사용함에 따라 얻을 수 있음.

▶ 원칙 3: 자동화된 빌드(Automated build)
자동화된 테스트와 함께 ‘지속적통합’ 프로세스의 또 다른 중요한 부분은 시스템이 용이하게 작업 애플리케이션으로 변형될 수 있도록 하는 것임.

▶ 원칙 4: 리포팅 서버(Reporting server)
앞서 밝힌 3가지 이슈가 다루어졌을 때 프로젝트는 ‘지속적 통합 원칙’이 부합된다고 볼 수 있음.

자세히 보기 →

출시제품의 SW 품질확보를 위한 DevOps 도입 접근법

오늘날 대부분의 조직들은 개발단계에서의 SW 품질확보에 주력하고 있으나 , 일단 제품이 출시된 이후에는 SW 품질유지에 무관심한 경향이 있습니다 . 이러한 문제점은 주로 개발팀과 운영팀 간의 협업이 이루어지고 있지 않음에서 기인하고 있으며 , 제품출시 이후 SW 품질관리의 책임이 누구에게 있는가도 불확실함에 따라 , 이를 위한 DevOps 도입 접근법을 제시합니다.

▶ 소프트웨어 배포 전 개발팀과 운영팀의 팀워크 
“소프트웨어 개발 후반부에 문제를 지니고 있다면 소프트웨어 배포의 위험은 매우
심각해진다. 그것이 DevOps 팀워크가 배포 전에 상당히 이루어져야 하는 이유이다.”라고 ALM Consultant인 Howard Deiner는 말함.

▶ QA의 또다른 이름
SW 생산 QA절차는 생산 모니터링이라 불리며 생산엔지니어에 의해 수행되고 생산 디렉터에게 보고 함.

▶ 생산 QA의 애자일 방법론 
애자일의 주요 공헌은 개발과 운영의 협업이라는 DevOps 프로세스를 가능하게 한 것임.

웹 프론트엔드 엔지니어링 (web front-end engineering) 의 스킬셋 part 1

UI 개발에 필요한 베이직 스킬셋



Ⅰ. 웹 프론트엔드에서의 공학

1. 웹 프론트엔드란?
웹 프론트엔드(Web Front-end)는 웹 개발에서 UI(User-Interface)부분이다.
Server-side의 반대 개념이며 웹 브라우저(web-browser)를 통해서 표현되는 부분이다.
다시 말해 웹브라우저를 탑재하고 있는 기기에서는 웹이 존재하고 웹UI영역이 존재한다고 할 수 있다. 

2. 웹 프론트엔드에서의 다양한 공학지식이 필요한 이유
소프트웨어 개발은 어느 분야에서나 공학적인 지식이 필요하다. 웹 프로그래밍의 영역도 공학적인 요소가 필요한데 일반적으로 서버사이드 관련 된 기술에 집중되어 있다.
프론트엔드 개발도 소프트웨어를 만들어가는 과정이라는 점에서 역시 일반적인 공학적 지식이 필요할 것이며, 프론트엔드에 특화된 지식들과 기술도 존재한다.

3. 국내 웹 프론트엔드 분야의 상황 
국내에서는 웹개발자 대비 프론트엔드 전문 개발자는 상대적으로 부족하다. 웹 UI개발자는 일반적으로 HTML/CSS만을 주로 다루거나 Javascript 언어만을 집중적으로 다루는 경우가 많고 디자인과 HTML/CSS와 같은 측면을 다루는 분들도 많다.
UI개발분야 다시 말해, 프론트엔드 개발 분야는 ‘구조/스타일/동적인제어’가 조화롭게 이루어져야 하는 것인데 아직까지 이를 모두 전문적으로 다루는 개발자가 부족한 현실이다.

Ⅱ. 기본 Skill-set

1. 프론트엔드의 필수지식 : HTML, CSS, Javascript 
2. Browser 동작의 이해
3. 기초 학문의 필수적인 지식들 (물리와 수학)
4. 프로그래밍 공통 스킬셋