2017년 2월 10일 금요일

융합 소프트웨어란?

Q: 지능을 가진 기계가 사람의 판단없이 스스로 일을 한다는 것으로 정리가 되네요. 그렇다면 융합 소프트웨어는 무엇인가요?

융합 소프트웨어도 많은 해석이 있습니다만 산업을 중심에 넣어 얘기해보겠습니다. 3차 산업혁명에서 컴퓨터가 등장하기 때문에 거기에 필요한 소프트웨어도 등장을 했습니다. 하지만 당시의 소프트웨어는 아주 기본적인 역할만 하는 최소의 기능만 가진 경우가 많았습니다. 각 산업에서 사용하는 소프트웨어는 기계를 자동화하는데 필요한 소프트웨어라 복잡할 이유가 없었기 때문입니다. 4차 산업혁명의 소프트웨어를 살펴보죠. 지능을 가진 기계가 필요하기 때문에 당연히 인공지능을 가져야 할 것이고 스스로 제어할 수 있는 다양한 IT기술이 필요하고 거기에 맞는 소프트웨어가 필요할 것입니다.
단독으로 소프트웨어가 사용되는 것이 아니라 산업과 융합된 소프트웨어라는 뜻으로 이해하시면 좋을 것 같습니다. 4차 산업혁명을 소프트웨어 관점으로 인더스트리 4.0이라고 말하기도 하는데 소프트웨어 중심으로 산업이 변한다는 의미로 해석할 수 있습니다(그림2).

<그림2> 인더스트리 4.0
출처: 캡제미나이컨설팅

Q: 요새는 거의 모든 산업에서 소프트웨어를 사용하는데 소프트웨어의 중요성이 더 커지는 것 같습니다.

맞습니다. 지금까지도 소프트웨어 산업이라는 말이 있는데 앞으로는 소프트웨어 산업은 없어지고, 대신에 모든 산업에서 소프트웨어가 부자제로 사용될 것입니다. 단독으로 소프트웨어가 만들어지던 시대에서 필요한 기계나 위치에 녹아들어가는 형태가 될 것으로 보입니다.


SI 프로젝트에 애자일 적용


사용자 스토리는 시작과 끝이 존재하고 다른 사용자 스토리와 겹치지 않도록 개발된다면 위 세가지 문제를 해결할 수 있다. 개발자와 고객은 사용자 스토리를 통해 업무 프로세스를 얘기할 수 있고, 사용자 스토리 단위로 개발을 마치기 때문에 요구사항이 변경되어도 다른 사용자 스토리에 영향을 미치는 회귀 오류가 발생할 여지가 없고, 한번 개발이 완료된 사용자 스토리는 다시 살펴볼 필요가 없기 때문에 개발 진척을 정량적으로 명확하게 관리할 수 있다(그림5).

<그림5> 그림4의 사용자 스토리를 스크럼에 적용
Scrum 이미지 출처: https://upload.wikimedia.org/wikipedia/commons/4/43/Scrum_Flow_for_one_Sprint.png

애자일은 프로세스가 아니라 개발 문화를 바꾸는 것이다. 프로젝트에서 의사소통은 기능 단위가 아닌 사용자 스토리로 하게 되면 고객의 프로젝트 이해도와 참여를 높일 수 있다. 개발자들이 놓치지 쉬운 애자일의 장점 중 하나는 완성되어 고객에게 확인 받은(Accepted Deliverables) 사용자 스토리는 다시 손대지 않는다는 것이다.
기존 SI 프로젝트의 진척률을 살펴보면 지난 달 80%의 진척을 보여도 회귀 오류가 발생하면 이번 달 60%로 떨어질 수 있다. 하지만 애자일의 경우 완료된 것은 다시 손대지 않기 때문에 진척률 답게 관리되는 장점도 있다(그림6).

<그림6> 전통적인 SI와 애자일의 프로세스 비교
출처: LG CNS Agile Korea Conference 2012 자료


소비자 지향의 디자인 씽킹 사례 - 인도의 우물 이야기 I






2017년 2월 9일 목요일

융합 소프트웨어의 개념과 발전 방향


증기기관과 기계화로 인한 1차 산업혁명 이후 전기를 중심으로 한 대량생산을 이룬 2차 산업혁명, 컴퓨터를 중심으로 한 자동화 생산을 보였던 3차 산업혁명에 이어 최근에는 거의 모든 산업에서 IT를 중심으로 하는 4차 산업혁명도 등장했다. 산업 관점에서 보면 로봇이나 인공지능과 같은 최신 IT기술을 반영하는 것까지만 볼 수 있지만 소프트웨어 관점에서 보면 각 산업에서 필요한 사항들이 무더기로 나오고 있다. 이번 회에서는 이러한 산업 변화에 따른 소프트웨어에 대해 글로벌 융합 IT사업을 함께 지원하고 있는 고려대학교 국제교육문화연구센터원과 단국대학교 소프트웨어공학연구센터원을 만나 이야기를 들어본다.

Q: 안녕하세요. 4차 산업혁명이라는 말을 많이 들어보기는 했는데 매체에서 얘기하는 것들이 조금씩 다른 경우가 많습니다. 정확한 정의를 부탁합니다.

두가지 용어가 모두 이론이 뒷받침이 된 용어가 아니기 때문에 다양한 형태로 해석을 하는 것 같습니다. 4차 산업혁명이라는 용어는 미국 실리콘밸리에서는 아무도 모른다는 얘기도 나오고 있고요. 하지만 이러한 말을 하는 사람이나 실리콘밸리를 포함한 전세계 모든 사람이나 회사들이 이제 IT가 없으면 아무것도 만들 수 없고 기계가 돌아가기 어렵다는 것을 알고 있습니다.
기계가 처음 나온 1차 산업혁명, 전기가 나왔던 2차 산업혁명, 그리고 컴퓨터가 나왔던 3차 산업혁명까지 산업의 혁신과 변화를 이끌었던 매우 중요한 요소들이 있었습니다. 3차 산업혁명은 컴퓨터를 통해 자동화를 이루었지만 사람이 명령을 내린 것만 할 수 있었습니다. 그런데 사람을 거치지 않더라도 기계들이 스스로 판단해서 움직이는 시대가 도래했습니다. 이 것이 4차 산업혁명입니다(그림1).

<그림1> 산업의 변화
출처: Wikipedia


SI 프로젝트에 애자일 적용 포인트 찾기

SI 프로젝트에 애자일을 적용할 수 없는 이유는 첫번째로 업무에 익숙하지 않은 개발자가 짧게는 3개월에서 길어도 1년을 넘지 않는 기간만 프로젝트에 투입되는 경우가 많았다. 업무도 모르는데 오래 머물지도 않아 있는 동안은 최선을 다하지만 주어진 기간에 맞는 수준까지만 수행하는 경우가 대부분이었다. 그러다 보니 Refactoring, TDD, Reuse 등 소프트웨어공학과 관련된 것은 물론이고 개발 외에는 신경 쓰지 않는 것이 보통이었다.
두번째는 요구사항의 변경이다. 프로젝트 초기에 정해진 요구사항은 프로젝트가 종료할 때까지 가급적 수정하지 않아야 하지만 요구사항의 변경에 의해 개발 중간에 변경되는 경우가 허다했다. 이런 수정은 회귀 오류를 발생시켜 프로젝트 전방위적으로 영향을 미쳤다.
세번째는 기능 중심으로 개발된다는 점이다. SI 프로젝트의 요구사항은 대체로 기능 중심으로 정의된다. 기능 중심으로 정의되면 개발하면서 유즈케이스와 시퀀스 다이어그램의 변경이 수시로 발생한다. 각각의 기능을 연결하면서 예기치 않는 오류가 빈번하게 발생하기 때문이다. 고객은 기능 단위로 일하지 않고 업무 프로세스에 맞춰서 일을 하기 때문이다. 이 세가지를 정리하면 업무를 잘 모르고, 개발 완료된 것이 변경되면 다른 개발에도 영향을 미치고, 마지막으로 고객은 업무 프로세스로 일하지 기능으로 일하지 않는다는 것이다.
해결점을 찾아보면 업무 프로세스 단위로 요구사항을 정의하고 개발하면 문제점이 해소될 여지가 있다. 애자일에서는 고객이 일하는 단위인 업무 프로세스를 사용자 스토리(User Story)라는 이름으로 정의하고 모든 프로세스가 사용자 스토리 단위로 움직인다. 이 것을 그림으로 나타내면 그림4와 같다.

<그림4> SI 프로젝트에 사용자 스토리 적용


소비자 지향의 디자인 씽킹 사례


  • 경험 디자인과 디자인의 차이






  • 현대카드









2017년 2월 8일 수요일

SI 프로젝트의 애자일 적용 사례 연구 - 프로세스


애자일에 대한 관심도가 높아지던 2000년 중반 이후부터 전통적인 프로세스를 사용하는 경우가 많은 SI 프로젝트에 애자일 프로세스를 적용하는 사례가 늘어나기 시작했다. 프로젝트 초기에 정해진 계약과 고객의 요구사항에 맞춰 개발하기 위해서는 전통적인 프로세스를 따를 수 밖에 없어 애자일을 일부 적용한 정도로는 실패할 수 밖에 없었다. 최근에는 SI 프로젝트에도 애자일을 좀더 많이 적용하려는 노력이 많아지는데 SI의 한계로 인해 많이 지친 것이 사실이다. 이번 회에서는 애자일을 SI 프로젝트에 적용하기 어려운 이유를 살펴보면서 돌파구를 찾아보고자 한다.
SI 프로젝트에 애자일 적용 방안

SI 프로젝트 vs. 애자일

SI 프로젝트는 프로젝트를 시작하는 시점에 모든 환경이 계약에 의해 정해져 있다. 프로젝트 범위, 기간, 심지어는 만들어야 하는 기능까지 정의된 경우도 있다. 반면에 애자일은 프로젝트를 하면서 정의해 나간다. 이러한 이유로 SI 프로젝트는 전통적인 소프트웨어공학에 기반한 프로세스에 가까워 계획적이고 정적인 환경이고, 애자일은 조정이 가능하고 동적인 환경으로 구성된다(그림1).

<그림1> SI 프로젝트와 애자일의 적용 환경 비교
출처: Agile projects and the project context

SI 프로젝트에 애자일을 적용하기 어려웠던 가장 큰 이유는 계약 관계에 있는 고객의 요구사항이 초기에 정해졌다는 것 때문이었다. SI 프로젝트는 모든 프로세스가 고객이 요청한 요구사항을 중심으로 움직이기 때문에 그림1에서 나타난 것처럼 애자일의 장점인 계획을 조정하거나(Adaptive) 동적인 환경(Changing environment) 구성을 활용할 수가 없었다. 해외 사례를 보면 계획 조정에 의해 프로세스나 기간 등이 함께 수정되는 경우가 있어 애자일 적용에 문제가 발생할 확률이 낮지만 우리나라는 최초 계약이 변경되는 경우가 매우 드물다.
여러모로 전통적인 개발 프로세스의 개선 효과를 가지고 있는 애자일을 포기할 수는 없기 때문에 요구사항 정의, 분석, 설계, 개발, 구현으로 구성된 전통적인 프로세스에서 개발과 관련 있는 분석, 설계, 개발 단계에만 적용하게 되었다(그림2). 고객과 관련이 없는 부분만 적용하기 때문에 큰 무리가 없을 것으로 당시에는 판단되었다.