2015년 10월 27일 화요일

제58회 SW공학 Technical 세미나 안내(10/29(목))

안녕하십니까?
SW Quality Insights 제 58회 SW공학 Technical 세미나에 여러분을 모십니다.
본 세미나는 국내외 SW전문가를 초빙하여 SW개발 관련 최신 기술 동양을 파악하고 개발과정에서의 경험을 공유하는 등 SW개발자와 관리자의 역량강화를 위해 매월 지속적으로 개최하고 있습니다.


소프트웨어 안전성 향상을 위한 코드 리팩토링 기법

자동차 , 원자력 발전소 , 비행기 등과 같은 시설 및 제품들은 다양한 장치들이 상호 협업하고 있으며 , 이들을 제어하기 위한 소프트웨어 시스템이 존재한다 . 이러한 시스템은 소프트웨어 동작과정에서 예기치 못한 오류가 발생하는 경우 , 치명적인 인명 , 재산 , 환경 피해로 이어질 있다 . 소프트웨어에 의해 심각한 피해를 유발할 수 있는 소프트웨어를 Safety Critical Software 라고 하며 , 이들은 예기치 못한 오류를 예방 , 회피 , 억제하는 속성을 의미하는 안전성 (Safety) 을 보장할 수 있어야 한다 .

Safety Critical Software 는 일반적인 소프트웨어 개발 과정과 다르게 안전성을 고려해야 하기 때문에 요구사항 수집부터 운영까지 소프트웨어의 안전성을 향상시키기 위한 많은 활동들이 필요하게 된다 . 기존의 안전성 향상 활동 중에서 대표적인 MISRA-C 코딩 가이드라인과 ISO 26262 기능 안전성 표준은 자동차 등과 같은 안전성을 중시하는 시스템의 소프트웨어 소스 코드 작성 방법을 제시하고 있다 . 

  1. 안전성 향상을 위한 코드 리팩토링 절차
  2. 안전성 향상을 위한 코드 리팩토링 기법
  3. 안전성 향상을 위한 코드 리팩토링 적용 예

가트너가 제시한 빅데이터 전략수립을 위한 4가지 IT핵심요소

최근 개최된 Gartner Business Intelligence Summit 에서 기업의 효과적인 빅데이터 전략수립을 위한 4 가지 IT 핵심요소가 발표되었습니다 . 클라우드 적용 , 데이터 분석역량에 집중투자 , 데이터 거버넌스에 주목 , 조직내 유기적 협업 등이 4 가지 요소입니다 .

 효과적인 빅데이터 전략을 개발하기 위한 CIO규칙

1. 클라우드 수용
  • 데이터웨어하우스는 BI(Business Itelligency) 활동에 대한 기반을 유지시킬 것이나 빅데이터 분석이 될 때 비즈니스는 항상 새로운 종류의 기술을 수용할 필요가 있을 것임

2. 기술에 투자
  • 일부에서는 데이터 과학자라는 용어가 BI 분석가와 통계학자에 대한 미화된 직함이라고 믿고 있으나 “이는 진실이 아니다”라고 Laney가 말함

3. 데이터 거버넌스 역할에 대한 주의
  • 장래에 CDO(a chief data officer)가 당신의 회사에 존재할 것인가? 이러한 CDO를 고용할지 말지 보다 더 큰 의문은 빅데이터에 대한 강력한 데이터 거버넌스 프로그램을 어떻게 구축하는가임 

4. 비즈니스와의 협업
  • IT 부서와 비즈니스의 단절에 교량이 되는 것은 CIO의 가장 최우선적 임무인데 비즈니스는 향후 지속적으로 데이터 주도가 되어가기 때문에 이 둘의 간격을 줄이는 것은 더욱더 중요할 것임

2015년 10월 24일 토요일

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

증권 자동화 시스템으로 보는 리얼타임 시스템

리얼타임 ( 실시간 ) 이라는 단어가 가져오는 의미를 잘못 이해해 많은 이들이 리얼타임 시스템을 매우 빠른 응답을 주는 시스템으로 오해 하고 있습니다 .
리얼타임 시스템의 정확한 정의는 사용할 수 있는 자원이 한정되어 있는 상황에서 작업 수행이 요청되었을 때 제한된 데드라인 안에 결과를 내주는 것을 말합니다 . 생명이나 안정성이 중요시되는 군사 , 자동차 , 비행기 , 우주 탐사 로봇 등에는 필수적인 아키텍처이며 이러한 고 신뢰성 , 안정성을 추구하는 영역에서 프레임워크를 논하고 있습니다 . 연재를 통해 리얼타임 시스템에 대한 전반적인 이해와 실적용 사례를 공유하고자 합니다. 

Ⅰ . 리얼타임 시스템의 이해
Ⅱ . 아직 건재한 Real Time CORBA 의 위치
Ⅲ . 리얼타임 분산 시스템의 아키텍처
Ⅳ . 리얼타임 스케줄링 기법
Ⅴ . 증권 거래 시스템과 리얼타임 시스템

애플리케이션 생명주기 관리(ALM)하에서 지속적 개발의 6가지 비용절감요소

ALM 은 요구사항분석에서 유지관리까지 SW 개발 전주기적 관리 시스템이나 , 시스템 자체에 혼돈을 불러일으킬 수 있는 위험성을 내포하고 있으며 , 이는 곧 비용발생으로 연결됩니다 . 지속적 통합 방법은 SW 통합에서 발생할 수 있는 중요문제를 감소하고 보다 신속하게 SW 를 개발할 수 있다는 장점을 통해 요구사항분석 , 설계 , 테스트 등 각 요소별 비용절감효과를 보이고 있습니다 .

1. 요구사항 검증 비용
  • 요구사항 수집 및 검증은 ALM의 치명적인 비용요소중 하나인데, 요구사항이 적절히 수집되고 검증되지 않는다면 실제적인 요구사항과 일치되지 않은 잘못된 솔루션의 설계와 개발로 인해 시간을 낭비할 수 있음

2. 설계 검증 비용
  • 조기의 빠른 구축을 수행하는 지속적 개발은 개발 팀들이 중요한 설계 의문사항들을 우선순위화하도록 하고 설계 대안들을 프로토타입 할 수 있도록 하며 그것들을 조기에 테스트할 수 있도록 함 

3. 테스트 비용
  • 지속적 개발에서는 테스트가 자동화되고 구축작업에 편입되어, 테스트 자원과 시간이 자동화된 테스트를 설계하는데 사용됨

4. 회귀 오류와 재작업 비용
  • 회귀 오류 비용은 지속적 개발 절차인 자동화된 검토, 구축, 테스트 프로세스에 의해 완전히 회피될 수 있음

5. 통합 비용
  • 지속적 개발은 모든 모듈이 하나의 시스템으로 통합되도록 절차화 함

6. 릴리즈 비용
  • 지속적 개발은 개별적 릴리즈 주기에 대한 필요성을 부정함

효과적 개발 및 운영을 위한 10가지 필수 DevOps 툴

DevOps 는 개발 및 운영체계를 통합하여 , 빠른 서비스 개발과 반영을 위해 개발된 개발모델로 기존의 개발팀과 운영팀이 합쳐지는 등 변화의 폭이 매우 큼으로 인해 적용하기 어려움 . 이에 효과적인 개발 및 효율적인 운영을 위한 오픈소스 및 상용화 등 10 가지 필수 DevOps 툴을 소개합니다 .

1. Git and GitHub
  • 버전관리 시스템으로 알려진 Git은 코드의 버전을 저장하기 위한 저장소(repository)이고 GitHub은 코드가 다운로드 되고 공유될 수 있는 공개 관리 저장소(repository)임

2. Jenkins
  • 젠킨스는 Agile창시자 중 한 명인 마틴파울러씨가 주창한 지속적 통합(Continuous Integration)을 구현하기 위한 자바 오픈소스 소프트웨어로서 웹 어플리케이션의 형태를 하고 있음

3. Berkshelf
  • Riot Games에 의해 유지되는 이 오픈소스는 올바른 버전의 cookbook2)이 실행되는 것을 보장하기 위해 Chef서버로의 패치 및 배포 관리 방법을 제공함

4. Perforce
  • Perforce Software 사에 의해 개발된 이 제품은 버전관리 시스템으로 분산개발환경에서 즉각적이 대응성이 있어 지역적으로 분산되어 있는 팀간 공동 개발작업 등을 지원함

5. Nagios
  • 코드의 변경이 시스템 환경에 어떻게 영향을 미치는가를 모니터링하는 것은 어플리케이션 배포에 결정적임

6. Sensu
  • Sensu는 Nigios와는 오픈소스 모니터링 프레임워크임

7. LogStash
  • LogStash는 이벤트와 로그를 관리하는 툴로, 로그를 수집하고 파싱, 저장하여 추후 검색 등을 통해 사용할 수 있도록 웹 인터페이스를 제공함

8. Test Kitchen
  • 인프라 관리 자동화 솔루션기업인 Opscode 사에서 배포한 Test Kitchen 툴은 사용자의 cookbook 개발 과정에서 시뮬레이션이 가능함

9. Vagrant
  • 개발을 진행하다보면, 개발환경 구성에 굉장히 많은 시간이 필요하며, 참여하는 개발자의 수만큼 개발환경 구축에 드는 시간은 배가 되어 비효율적이며, 구축된 개발환경마다 버전 관리하기도 쉽지 않은 일임

10. Foodcritic
  • Foodcritic는 Chef를 조사하고 테스트하기에 매우 좋은 오픈소스로 페이스 북 시스템 엔지니어인 Phil Dibowitz가 추천함

2015년 10월 23일 금요일

소프트웨어 제품 라인에서 형상관리의 현실적인 이슈와 발전 방향

소프트웨어 제품 라인 공학과 연계하여 다양한 형상관리에 대한 꾸준한 연구가 진행되어 왔으나 이러한 결과를 적용하기에는 현실에서 존재하는 여러 가지 제약 및 예외적인 상황이 있다 . 본 원고는 기존의 소프트웨어 제품라인의 형상관리 기법 및 이러한 기법의 적용이 현실적으로 어려운 이유와 앞으로 나아갈 방향에 대해서 제안한다.

소프트웨어 제품 라인의 형상 관리 모델
  1. 소프트웨어 제품 라인의 일반적인 형상관리 모델
  2. 크루거(Krueger) 모델
  3. Evolution-based 형상 관리 모델

현실적 이슈
  1. 환경적 변화 전파 이슈
  2. 초고도 결합도 제어 이슈
  3. 관리 시점적 이슈

문제 해결을 위한 발전 방향
  1. 결합도 관리를 위한 저장소(Repository) 연동 관리
  2. 기능별 옵션 관리를 통한 변화 전파 자동화