2016년 7월 19일 화요일

머신 러닝의 발전 방향과 소프트웨어 시장에 미치는 영향

AI는 사람과 똑 같은 사고를 갖게 하는데 목적이 있고 최근에는 사물인터넷(Internet of Things), 클라우드 컴퓨팅(Cloud Computing), 빅데이터(Big Data), 모바일(Mobile) 등과 결합되면서 상상 속에 있던 새로운 비즈니스가 만들어지고 있다. AI는 다양한 분야가 연구되고 있지만 그 중에서도 머신 러닝(Machine Learning)의 관심이 급격히 증가하고 있다. 인간을 이긴 구글의 알파고와 IBM의 왓슨처럼 머신 러닝을 기본으로 한 AI가 이제 영화 속이 아닌 현실에서 나타나고 있고, 시간이 갈수록 머신 러닝의 학습 속도는 점점 빨라져 인간의 뇌와 유사해지고 있다. 이번 회는 머신 러닝이 소프트웨어 활용에 어떤 영향을 미치는지 살펴보도록 한다.

머신 러닝의 동작

머신 러닝은 훈련 데이터(Training Data)를 통해 학습된 속성을 기반으로 결과를 예측하는데 목적을 두고 있기 때문에 데이터 마이닝(Data Mining)을 통해 미처 몰랐던 속성을 발견하는 것에 관심을 보인다. 일반적인 소프트웨어는 개발자가 모든 알고리즘, 로직, 명령어 등에서 필요한 것을 선택해 만들어낸다. 하지만, 머신 러닝의 경우는 자율적인 학습으로 최적의 결과를 만들어낸다.

그림1은 머신 러닝이 동작하는 방법을 간단히 나타내고 있다. 기존에도 프로그램에 의해 입력 받은 데이터를 가공하여 원하는 결과를 나타낼 수 있다. 수학에서 미지수 X의 값을 찾기 위해 많은 수식과 공식을 사용하는 것과 마찬가지다. 하지만, 머신 러닝의 경우는 정해진 수식이나 공식 없이 계속 학습을 하면서 결과를 찾아낸다는 점이 다르다. 개발자는 소프트웨어가 결과를 제시하는 방법을 만들어야 하는 것이 아니라 데이터를 어떻게 받아들이고 결과를 어떻게 보여줄 것인지에 대한 고민이 더 많아야 한다. 아래는 머신 러닝의 수행 단계를 나타낸다.

1. 자료 수집: 엑셀, DB 등의 자료, 텍스트 파일 등에서 학습을 위한 자료를 수집
2. 자료 준비: 데이터의 품질을 높이기 위해 누락, 예외 사항 처리 등을 예비 분석
3. 모델 훈련: 적절한 알고리즘으로 훈련 모델을 개발하고 시험 데이터로 모델을 테스트
4. 모델 평가: 모델의 정확성 여부를 시험하기 위해 평가한 후 정밀도를 결정
5. 성능 개량: 모델의 효율성 증대를 위해 더 많은 변수를 포함하여 모델의 성능을 향상






제조업의 소프트웨어 개발 프로세스 개선 활동

제조업에서도 소프트웨어의 필요성은 매우 높다. 더구나 첨단 기술이 점점 늘어나면서 제조 라인의 자동화는 더 체계적인고 효율적인 관리가 필요하기 때문에 소프트웨어의 기능은 더 많아지고 관리되는 데이터도 늘어나는 추세다. 이번 회에서는 제조업에서 사용되는 소프트웨어 개발 프로세스를 올바르게 적용해서 성공할 수 있는 방법이 무엇인지에 대해 살펴보기로 한다. ㈜현대파워텍의 이윤희 팀장을 만나 자세한 사항을 들어본다.


Q: 사례를 살펴보기 전에 제조업의 소프트웨어 개발에 프로세스가 필요한 이유에 대해 간략히 설명해 주시죠.

소프트웨어를 개발하는데 프로세스가 필요한 것은 당연한 얘기일 겁니다. 하지만, 제조업의 소프트웨어는 특히 더 필요합니다. 제조업에는 많은 설비, 장비, 그리고 데이터가 있기 때문에 관리되어야 하는 요소나 사람이 직접 보지 못하는 부분도 상당히 많습니다. 소프트웨어가 반드시 필요한 이유이기도 하고 체계적인 소프트웨어 개발이 필요한 이유이기도 합니다. 그림1처럼 제조업 R&D 로드맵의 핵심이 소프트웨어가 없어서는 되지 않는 구조입니다. 제조업의 고도화를 위해서는 어느 제조업이든 반드시 소프트웨어가 필요하죠.




사용자 스토리 워크샵 사례 연구 - 사용자스토리 정의 편

SI 프로젝트에서도 사용자(고객)가 수행하는 비즈니스를 흐름도로 정의하는 프로세스가 있다. 비즈니스 흐름도, 업무 흐름도 등 다양한 이름으로 정의되지만 사용자가 해야 하는 일을 순서대로 보여준다. 비즈니스 흐름은 사용자가 어떤 비즈니스를 가지는지를 보여주기 때문에 매우 중요한 프로세스이지만 개발 프로젝트에서는 많은 시간을 할애하지 않는 것이 일반적이다. 이번 회에서는 사용자 스토리 워크샵의 사용자 스토리 정의에 대해 살펴보기로 한다. 명확한 사용자 스토리 정의를 통해 애자일 기반 프로젝트의 성공률이 높아지기를 기대한다.


사례 연구 전 확인 사항

사용자 스토리의 필요성

사용자 스토리는 사용자 스토리 워크샵의 핵심 작업 중의 하나다. 사용자가 어떠한 흐름으로 비즈니스를 진행하는지 보여주기 때문이다. SI 프로젝트에도 이와 유사한 비즈니스 흐름도나 업무 흐름도에서 사용자의 업무 흐름을 보여준다. 요구사항을 적용하기 전에는 (As-Is)업무 흐름도, 요구사항을 적용한 후에는 (To-Be)업무 흐름도로 표현된다. 그런데, 이 문서들은 사용자들이 알아볼 수 있는 문서는 아니었다. As-Is는 현재 하고 있는 업무를 나타내는 것이고, To-Be는 개발팀에서 작성하다 보니 시스템 중심으로 작성이 되어 있다. 시스템이 만들어지기 한참 전이기 때문에 사용자가 알아보기 어려운 것이 당연하였다.

사용자 스토리 워크샵의 주요 목적은 사용자와 개발팀 간의 커뮤니케이션이다. 서로 대화가 되기 위해서는 사용자의 업무 흐름이 사용자가 알아보기 쉽게 작성되어야 한다. 사용자 스토리를 만들기 위해 다양한 프로세스가 선행된다.