해당 프로젝트는 건국대학교 컴퓨터공학과 학부 3학년 1학기 - 'Software Modeling & Analysis (소프트웨어 모델링 및 분석) (현 객체 지향 개발 방법론) 수업에서 진행하는 프로젝트입니다.
프로젝트는 "OOO 그림판", "OOO 엘리베이터" 와 같은 추상적인 주제를 기반으로 RUP (Rational Unified Process) 를 대학교 학습용으로 테일러링한 OSP (Object Space Process) 의 각 활동을 수행하며 진행됩니다.
OSP 는 추후 OOPT (Object-Oriented Process with Traceability) 와 OSDEF (Object-oriented based Software Development Education Framework) 로 보완 확장되며 상세 내용은 아래 논문에 작성되어 있습니다.
정세진, 이동아, 김의섭, 장천현, 유준범, "OOPT: 소프트웨어공학 교육을 위한 객체지향 소프트웨어 개발 방법론", 정보과학회논문지, Vol.44, No.5, pp.510-521, 2017.
정세진, 유준범, "OSDEF: 객체지향 소프트웨어 개발 실습을 위한 통합 프레임워크", 정보과학회논문지, Vol.46, No.8, pp.774-786, 2019.
프로젝트는 한 학기 동안 진행하며 중간고사 이후 부터는 "소프트웨어 검증" 수업을 듣는 한 팀이 매칭되어 검증 팀과 협업을 진행합니다.
프로젝트에서 수행한 활동 및 활동은 발표를 기준으로 설명하고자 하며 내용은 다음과 같습니다.
OSP Stage 1000 - Planning
첫 단계는 OSP Stage 1000 - Planning 로, 해당 단계는 소프트웨어 개발 프로젝트를 기획하는 것으로, 요구사항을 도출하고 프로젝트 계획서를 완성하는 것을 목표로 합니다.
교수님께서 정해주신 추상적인 팀 프로젝트 주제 "유아용 OOO 영어 놀이학습 프로그램" 를 구체화를 시키고 구체화된 주제를 가지고 프로젝트를 기획합니다.
먼저 전체 개발 스케쥴, 예산, M/M (Man Month) 등을 상세화를 하여 개략적인 계획을 작성하고, 그 후 프로젝트의 당위성을 비즈니스 측면으로 분석 후 요구사항을 도출하여 Use Case 를 작성합니다.
기능 요구사항은 Hierarchy 를 가지도록 작성을 하며 비기능 요구사항도 포함하여 도출 / 작성합니다.
※ OSP Stage 1000 - Planning 단계 산출물
OSP Stage 2030 - Analyze
두번째 단계는 OSP Stage 2030 - Analyze 로, 해당 단계는 실제적인 개발의 첫 단계로 앞의 Stage 1000 단계에서 작성한 내용을 기반으로 대상 시스템과 사용자 간의 상호작용의 관계에 대한 동작을 포함하여 시스템의 기초적인 동작이나, 구성에 대해 분석하는 단계입니다.
Analyze 단계는 앞서 정의한 Use case 를 시스템과 User 의 상호작용을 하는 형태로 개정/확장하고 개정한 Use case 를 기반으로 Domain Model (Class Diagram 형태) 을 정의합니다.
그 후, 개발할 소프트웨어 시스템을 블랙박스로 간주한 후, 시스템과 통신/사용하는 User 와 시스템간의 상호작용 (event sequence) 을 분석하여 System Sequence Diagram 을 정의합니다.
※ OSP Stage 2030 - Analyze 활동 단계 산출물
OSP stage 2040 - Design
세번째 단계는 OSP Stage 2040 - Design 로, 해당 단계는 앞의 2030 Analyze 에서 분석한 내용을 구현이 바로 가능한 수준으로 설계하는 단계입니다.
먼저 앞 단계에서 작성한 요구사항을 구현이 가능한 수준 (ex. Interface 함수, 변수 형태로 표현 등) 으로 확장하고 시스템의 UI, 아키텍처를 개정하고 앞서 정의한 System Sequence Diagram 의 각각의 Event 마다 시스템 내부의 Interaction 을 정의합니다.
그 후 앞서 정의한 모든 내용을 정적 설계 내용인 Class Diagram 으로 정의합니다.
※ OSP Stage 2040 - Design 단계 산출물
소프트웨어 검증 팀과의 협업
네번째 단계는 "소프트웨어 검증" 팀과의 첫 협업 단계로, "소프트웨어 검증" 팀에서 구축한 CTIP (Continuous Test & Integration Platform) 환경을 전수받고 SW 버전 관리, 이슈 관리 등의 운영을 어떻게 할지 합의합니다.
※ 소프트웨어 검증 팀과의 협업
구현 & Unit Test
다섯번째 단계는 구현 & Unit Testing 단계로, 설계한 내용을 검증팀과의 합의한 내용을 기반으로 Java 언어로 개발하고 거의 JUnit 을 이용하여 Unit Test 를 수행합니다.
※ 구현 & Unit Test 단계 산출물
System Test
여섯번째 단계는 시스템 테스트 단계로, 검증 팀에서 수행한 시스템 테스팅 결과를 기반으로 코드를 수정하고 테스팅 결과에 대한 대응서를 작성하는 단계입니다.
해당 단계를 진행하기 위해 단계 초반에 프로그램, 프로그램 메뉴얼, 분석 및 설계 문서를 전달하고 설명해줍니다.
※ System Test 대응 단계 산출물
Static Analysis
마지막 단계는 Static Analysis (정적분석) 단계로, 검증 팀에서 구축한 CTIP 내의 정적 분석 툴을 이용하여 분석한 내용을 전달해주면 해당 내용을 기반으로 코드를 수정하고 정적 분석에 대한 대응서를 작성하는 단계입니다.
※ Static Analysis 대응 단계 산출물
정리
해당 프로젝트는 처음으로 기획 - 분석 - 설계 - 구현 - 검증팀과의 협업을 통한 SW 수정 등을 경험하는 프로젝트로 이전 프로젝트에서는 하지 못했던 것들을 많이 경험했던 프로젝트입니다. 특히, 프로젝트를 제대로 진행하기 위해서는 여러 사람과의 커뮤니케이션이 필요하다고 생각이 되며 (ex. 기획 단계에서는 전문가 인터뷰, 검증단계에서는 검증팀과의 협업), 이는 회사와 같이 큰 프로젝트에 참여했을 때 많이 도움이 된다고 생각합니다.
해당 프로젝트의 상세 활동 내용 및 산출물은 아래에서 확인 가능합니다.