오픈소스 기반 소프트웨어 프로세스 자동화 개선 방안 Improving Automatic Construction of Software Process based on Open Source 2018. 01. 30. 홍익대학교 소프트웨어공학 연구실 이진협 지도교수 : 김영철 안녕하십니까 오픈소스 기반 소프트웨어 프로세스 자동화 개선 방안을 발표할 홍익대학교 소프트웨어공학 연구실에 이진협 입니다.
목차 1 연구 동기 2 관련 연구 3 개선된 소프트웨어 프로세스 구축 자동화 4 적용 사례 5 결론 및 향후 연구 발표는 연구배경, 관련연구, 개선된 소프트웨어 프로세스 구축 자동화, 적용 사례, 결론 및 향후 연구 순으로 진행하겠습니다. 5 결론 및 향후 연구
0. 프로세스가 없다면? 요구사항 추적 어려움 스케줄 관리 및 통제 어려움 각 단계 별 품질 지표 측정 어려움 전체 참여 Stakeholders 빠른 동의 어려움 각 단계에서의 공정, 활동, 산출물들의 효율적 관리 어려움 프로세스 단계 별 도구의 Plug&Play 어려움
1. 소프트웨어 프로세스 구축 자동화의 필요성? 소프트웨어 프로세스 구축 어려움 1. 소프트웨어 프로세스 구축 자동화의 필요성? 소프트웨어 프로세스 구축 어려움 NIPA(구 공학센터) Visualization 1/2/3 각각 6개월 소요 Visualization 1 : Process 가시화 Visualization 2 : Architecture 가시화 Visualization 3 : Documentation 가시화 전문가(홍익대 SELab : 5명의 박사들)를 통한 구축 최소 3개월 (사례 : 육본 정체단) Visualization을 Season을 3개로 구분해서 Process, Architecture, Documentation 가시화가 있는데 각각 6개월 소요됨. 원래 중소기업들을 위해 나이파가 컨설팅 및 구축 지원해 줬었지만, 이제 없어져서 가이드 받기 어렵고, 전문 컨설팅을 받아야 한다. 그래서 우리 연구실 전문가들이 해도 3개월 걸렸다, 때문에 중소기업에서 이거를 할 이유가 없다. 엄청난 시간, 개발자들이 이걸 왜하는가… 자동화 하면 이런부분에 대한 고민이 없어질 것이다. 기대효과 정체단이 SP 3등급 제출 2등급 받음, 원클릭으로 30분 내 가능 결과적으로 30분 이내 구축으로 엄청난 시간 줄일 수 있다.
2. 관련 연구 (기존 오픈소스도구들) 체인화 지속적 통합 도구 프로젝트 관리도구 이 외 도구들 버전관리 도구 각 단계별로 많은 도구들이 있는데, 단계별로 적합한 도구들을 선택하고, 이들을 체인화하였습니다. 그리고 이 논문에서는 체인화한 것들을 자동화 하는 방법을 제안하였습니다. Redmine, Jenkins, MySQL, Apache, PHP 등 12개 오픈소스 도구 체인화
SWV Environment based on Plug&Play Reusability Measurement 자동화 제안 Process Visualization Architecture Visualization SWV Environment based on Plug&Play Toolchain Webservice Tools Development Database Server Apache Jenkins Redmine Tomcat JDK MySQL Ruby Graphviz SQLite Source Navigator xCode Parser PHP Reusability Bad Smell SVN Server css js dashboard SWV Env One-Click Installation Project Management Environment (Redmine) Continuous Integration Environment (Jenkins) Dashboard (PHP) Integrated Login Web Service Provision Continuously Running Showing Result Reusability Measurement Bad Smell Measurement Automatic Installing One-Click으로 체인화해서 구축 분석 결과 이러한 모듈들이 필요하다. Process에서는 이러한 전체 중에 이런게 필요하고, Architecture 가시화는 이런게 필요하다. 문서화는 아직이다. 재사용 모듈, 배드 스멜 모듈도 만들었다. 이렇게 구축해야지, 원클릭이 되는것이다.
2. 관련 연구 - Redmine 웹 기반 오픈 소스 프로젝트 관리 도구 프로젝트 관리, 요구사항 관리, 이슈/변경/테스트 관리 등의 기능을 제공 Customizing과 plug-in을 통해 원하는 형태의 프로젝트 관리 가능 프로젝트 관리 도구로는 레드마인을 사용하였습니다. 일감, 간트차트, 이슈 관리 등 여러 기능이 있고, 커스터마이징과 플러그인을 통해 원하는 형태의 프로젝트 관리가 가능합니다. 레드마인은 이러한 기능이있다…
2. 관련 연구 - Jenkins 오픈 소스 지속적 통합 도구 자동 빌드가 가능하고, 빌드 시 배치커맨드를 통해 특정 프로그램 실행이 가능합니다. 더불어 1100여개 이상의 플러그인을 제공하고 있어, 다양한 부가적인 활동이 가능합니다. 오픈 소스 지속적 통합 도구 프로젝트 별 지속적 통합, 자동 빌드 가능, 빌드 시 Batch 실행 가능 1100개 이상의 플러그인 제공
2. 관련 연구 – VisualSVN Server 소스코드 버전 관리 서버 VisualSVN server는 서브버전은 소스코드 버전 관리 도구 입니다. Tortoise는 클라이언트가 서브버전 서버에 쉽게 접근할 수 있도록 지원해 주는 도구입니다.
2. 관련 연구 – 첫 번째 Toolchain화 Approach Plug&Play 불가능 Dash Board Apache php MySQL Redmine(Bitnami) Redmine Apache Tomcat(jsp) File (설정파일 및 로그) Jenkins Jenkins(Bitnami) PAL Batch Toolchain XML XSLT 계획서 Process Asset Library PMD Rule Checker Source Code Coupling/Maintainability SQLite Subversion Zoom In/Out Zoom In / Zoom Out User Action 이 그림은 이전 연구에서 구현한 구축 자동화 서비스 입니다. 여기에서도 기본적으로 레드마인 젠킨스를 사용하였지만 비트나미 레드마인을 보시면 통합되어있어, 사용자 입장에서 설치는 간편하지만 MySQL, 아파치 등의 분리가 어렵습니다. 이는 저희가 목표로하는 Plug&Play가 어려움을 의미합니다. Jenkins 또한 Apache Tomcat이 통합되어있어 역시 Plug&Play가 어렵습니다. 비트나미에서는 +
3. 개선된 소프트웨어 프로세스 구축 자동화 구축 자동화 구성 도구 버전 Java 1.8.0_151 Apache 2.4.29 PHP 7.1.11 Tomcat 8.5.23 (mod_jk 1.2.40) MySQL 5.7.20 phpMyAdmin 4.7.5 Ruby 2.3.3 (Rails 4.2.8) Devkit 4.7.2 Redmine 3.4.3.stable Jenkins 2.89 VisualSVN 3.7.1 TortoiseSVN 1.9.7 현재 내가 각 최신의 도구들을 호환되는 버전들을 Fix한 버전이다. 이러한것을 자동화한것이다.
3. 개선된 소프트웨어 프로세스 구축 자동화 실제 구축해본 결과 최소 3개월 최소 10시간 30분 이내 도구 버전 육본 정체단 구축 전문가 구축 구축 자동화 Java 1.8.0_151 최소 3개월 최소 10시간 30분 이내 Apache 2.4.29 PHP 7.1.11 Tomcat 8.5.23 (mod_jk 1.2.40) MySQL 5.7.20 phpMyAdmin 4.7.5 Ruby 2.3.3 (Rails 4.2.8) Devkit 4.7.2 Redmine 3.4.3. stable Jenkins 2.89 VisualSVN 3.7.1 TortoiseSVN 1.9.7 개선된 소프트웨어 프로세스 구축 자동화는 다음과 같은 구성을 가지고 있습니다. MySQL 데이터베이스와 Apache 서버 베이스에 레드마인 phpMyAdmin, php, Tomcat, Jenkins 등을 연동하였습니다. 때문에 필요한 것만 선택하여 설치가 가능합니다. 오른쪽 표는 각 도구들의 버전입니다. 자동 구축이 아닌 일반적으로 이러한 시스템을 구축하는 과정에 버전 호환성에 대해 큰 어려움을 겪습니다. 물론 구글링을 하면 해결은 가능하지만 오픈소스들이 버전이 너무 많아 현재의 정답을 얻기가 어렵습니다. 예를 들면 저 또한 Apache와 Tomcat을 연동할 때, 또는 레드마인을 설치할 때, Ruby, Devkit 설치가 버전이 맞지 않아 구축에 어려움을 많이 겪었었습니다. 하지만 이렇게 구축 자동화를 함으로써 30분 안에 구축이 가능해졌습니다.
3. 개선된 소프트웨어 프로세스 구축 자동화 실제 구축 과정 이 그림들은 실제 자동구축 과정을 나타낸 것 입니다. 프로그램을 실행하고 앞서 말씀 드린 프로세스대로 설치를 진행합니다.
4. 적용 사례 요구사항 이 것은 레드마인의 일감 추적 기능을 이용하여 요구사항으로부터 구현, 구현으로부터 요구사항의 추적성을 보여줍니다. 일감을 등록할 때, 하위 일감과 관련 일감 등록을 통해 링크로 추적이 가능합니다.
4. 적용 사례 분석 이 것은 레드마인의 일감 추적 기능을 이용하여 요구사항으로부터 구현, 구현으로부터 요구사항의 추적성을 보여줍니다. 일감을 등록할 때, 하위 일감과 관련 일감 등록을 통해 링크로 추적이 가능합니다.
4. 적용 사례 설계 이 것은 레드마인의 일감 추적 기능을 이용하여 요구사항으로부터 구현, 구현으로부터 요구사항의 추적성을 보여줍니다. 일감을 등록할 때, 하위 일감과 관련 일감 등록을 통해 링크로 추적이 가능합니다.
4. 적용 사례 구현 이 것은 레드마인의 일감 추적 기능을 이용하여 요구사항으로부터 구현, 구현으로부터 요구사항의 추적성을 보여줍니다. 일감을 등록할 때, 하위 일감과 관련 일감 등록을 통해 링크로 추적이 가능합니다.
추적성 … … 요구사항 추적성 매트릭스로 Forward와 Backward Traceability의 과정은 다음과 같습니다. MD1 O1 MD2 Forward O2 MD3 … R2 UC2 US3 O3 MD4 O4 … MD5 ① 요구사항(R) – 유스 케이스(UC) ② 유스 케이스(UC) – 유스 케이스 시나리오(US) ③ 유스 케이스 시나리오(US) – 객체(O) ④ 객체(O) – 메소드(MD) 유스 케이스(UC) 요구 사항(R) 우선 순위 UC1 UC2 UC3 UC4 UC5 UC6 R1 5 R2 2 R3 R4 4 R5 R6 1 R7 R8 R9 유스 케이스 시나리오(US) 유스 케이스(UC) 우선 순위 US1 US2 US3 US4 US5 UC1 5 UC2 2 UC3 UC4 4 … UC5 UC6 1 객체(O) 유스 케이스 시나리오(US) 우선 순위 O1 O2 O3 O4 O5 US1 5 US2 2 US3 US4 4 … US5 US6 1 메소드(MD) 객체(O) 우선 순위 MD1 MD2 MD3 MD4 MD5 O1 5 O2 2 O3 … O4 4 O5 UC2 US3 O1 O2 O3 O4 MD1 MD2 MD3 MD4 MD5 O1 R2 UC2 O2 US3 O3 O4 요구사항 추적성 매트릭스로 Forward와 Backward Traceability의 과정은 다음과 같습니다. 먼저 Forward에서 Requirement2의 추적성을 보면 UC2로 UC2는 US3로 US3는 O1,2,3,4로 O1,2,3,4는 MD1,2,3,4,5로 연결성을 갖습니다. Backward
추적성 … … 요구사항 추적성 매트릭스로 Forward와 Backward Traceability의 과정은 다음과 같습니다. MD1 O1 MD2 Forward O2 MD3 … R2 UC2 US3 O3 MD4 O4 … MD5 ① 요구사항(R) – 유스 케이스(UC) ② 유스 케이스(UC) – 유스 케이스 시나리오(US) ③ 유스 케이스 시나리오(US) – 객체(O) ④ 객체(O) – 메소드(MD) 유스 케이스(UC) 요구 사항(R) 우선 순위 UC1 UC2 UC3 UC4 UC5 UC6 R1 5 R2 2 R3 R4 4 R5 R6 1 R7 R8 R9 유스 케이스 시나리오(US) 유스 케이스(UC) 우선 순위 US1 US2 US3 US4 US5 UC1 5 UC2 2 UC3 UC4 4 … UC5 UC6 1 객체(O) 유스 케이스 시나리오(US) 우선 순위 O1 O2 O3 O4 O5 US1 5 US2 2 US3 US4 4 … US5 US6 1 메소드(MD) 객체(O) 우선 순위 MD1 MD2 MD3 MD4 MD5 O1 5 O2 2 O3 … O4 4 O5 UC1 UC2 US1 US2 US3 O1 MD3 R1 R2 R3 R4 R5 UC1 UC2 US1 US2 US3 O1 요구사항 추적성 매트릭스로 Forward와 Backward Traceability의 과정은 다음과 같습니다. 먼저 Forward에서 Requirement2의 추적성을 보면 UC2로 UC2는 US3로 US3는 O1,2,3,4로 O1,2,3,4는 MD1,2,3,4,5로 연결성을 갖습니다. R1 US1 R2 UC1 O1 MD3 US2 R3 UC2 US3 R4 R5 Backward
5. 결론 및 향후 연구 결론 향후 연구 소프트웨어 프로세스 시스템 구축 시 요구사항 추적 가능 스케줄 관리 가능 내재화 가능 소프트웨어 고품질화 가능 But, 벤처/스타트업/중소기업에서는 인력부족, 비용 등 문제로 구축 어려움 소프트웨어 프로세스 구축 자동화를 통해 쉽게 시스템 구축 가능 향후 연구 사용자 지정 디렉터리 사용 통합 데이터베이스 구축 >> 모든 산출물 및 데이터 관리 용이 상용도구 Plug&Play LDRA와 같은 상용도구를 Plug&Play하여 정적분석이나 테스트 부분에 더 많은 분석을 할 수 있도록 할 예정입니다.
Q&A Thank You