협업을위한소프트웨어공학 ( 부제 : 다같이코딩하는데한사람이만든것처럼만들기 ) 1. 개요 프로그래밍은매우수작업에의존적인일이다. 산업혁명이발생하기전직물제조와같이도구의도움은있어도사람의손이많이가는그런작업이다. 백지장도맞들면낫다 라는말이있다. 쉬운일이라도협력하여하면훨씬쉽다는말인데하물며, 프로그래밍작업이쉬운일인가 ( 제대로한다면 ). 프로그래밍에는다른자원이거의들지않는대신인적자원이매우많이사용된다. 그리고그사람들은협업해서혼자서만들지못할거대한프로그램을만든다. 지금까지는혼자서프로그래밍을해왔지만당장에팀프로젝트가학교과제인마당에언제까지혼자할수없는일이다. 그래서협업을하기위한방법을서술하고자한다. 혼자와는달리여러명이서프로그래밍을한다면, 서로의생각과의견을하나로맞춰서방향성을갖고진행할필요가있다. 이게소프트웨어공학이다. 다른게아니다. 협업을하면소프트웨어공학은필수적으로따라온다. 그래서협업을하기위한소프트웨어공학을한번다뤄보도록한다. 2. 소프트웨어 (for 팀프로젝트 ) 공학의용례 우선팀프로젝트를막코딩을하거나아무생각없이하게되면일어나는현상을생각해보자. a. 버스기사가캐리 그림 1. 타요! b. 차라리혼자할걸 그림 2. 개허탈
끝은비참하다. 이를막기위해아래의이미지를보자. 예시를위한프로젝트이다. 예시를위한 프로젝트를설명한다. 1. 협업을위한소프트웨어공학 그림3. 예시프로그램이프로젝트는지정한앱을지정한시간이되면사용하지못하도록중지 (kill) 시키는안드로이드어플리케이션이다. ( 사용대상 : 자기절제가부족한어린아이나, 시험기간의학생등 ) 이프로그램의작동을전체적으로소개하면다음과같다. 그림 4. 예시프로그램프로세싱순서
이프로그램은시작하면다음과같은순서로작동한다. 처음시작을하면어플리케이션과잠금시간의목록이나오고어플리케이션과잠금시간을설정하면, 데이터베이스에저장한다. 그리고앞의과정과는상관없이백그라운드프로세스로현재시간을주기적으로읽는다. 그리고설정한시간이되면데이터베이스에저장되어있던프로세스킬을실행할어플리케이션목록을불러와서설정한시간이끝날때까지주기적으로프로세스킬을실행한다. 3. 소프트웨어개발과정 앞으로이프로젝트를만드는과정을협업을위한소프트웨어공학으로나타내본다. 3.1 소프트웨어개발절차협업을위한소프트웨어공학을하려면우선소프트웨어공학에따른소프트웨어개발절차에대해서알아야한다. 소프트웨어개발절차는다음과같다. ORD ->SRR -> SDP -> SDD -> SRS -> STP -> STR -> 배포 ORD: Operational Requirements Document : 운용요구서 SRR : System Requirement Review : 시스템요구검토 SDP : Software Development Plan : SW 개발계획서 SDD : Software Design Description : SW설계명세서 SRS : Software Requirement Specification : SW요구사항명세서 STP : Software Test Description : SW시험계획서 STR : Software Test Report : SW시험보고서 이절차는어떤소프트웨어공학론이라도사용하는개발순서이다. 어떻게사용하는지익숙한소 프트웨어공학론을예시로설명한다. 3.2 소프트웨어공학모델 그림 5. 폭포수모델 그림 6. V 모델
그림 7. 나선모델 그림 8. 애자일모델 흔히사용하는모델들도결국이과정을거친다. 간략하게거치는가. 복잡하고크게거치는가의 차이일뿐이다. 이방법으로프로그래밍의윤곽을정하면팀원들과알맞은분업으로시너지를낼 수있는프로그래밍을할수있다. 3.3 SRR : System Requirement Review : 시스템요구검토 SRR 은프로그래밍을하기위해처음해야하는일이라고볼수있다. SSR 은산출된아이디어의 요구조건을정리하는일이다. SRR 에서주로해야하는일은다음과같다.
A. 무엇을하는프로그램인가? B. 프로그램을만들때필요한것은무엇인가? C. 어떤환경으로설계할것인가? D. 할수있을만한가?( 인원, 자원, 역량등 ) 결과물 : 검토회의결과보고서 3.4 SDP : Software Development Plan : SW 개발계획서 SDP는소프트웨어를개발하기위한계획서를작성하는단계이다. SDP에서해야하는일은다음과같다. A. 전체의일정을대략적으로정하기 B. 인원계획을대략적으로정하기 C. 개발환경을대략적으로정하기 D. 할수있을만한가?( 인원, 자원, 역량등 ) 결과물 개발일정표 인원계획표 SDE (Software Development Environment) 계획서 SDD 계획서
3.5 SDD : Software Design Description : SW 설계명세서 SDD 는본격적으로소프트웨어를디자인하는과정이다 SDD 에서하는일은다음과같다. A. 프로그램기능분석 그림 9. 잠금설정액티비티 ( 화면 ) 의기능과내부기능분석 B. 인원분배 그림 10. 기능에맞는인원분배 인원분배는가장중요한일중하나이다. 인원분배의핵심은사용하는기술을최대한몰아서배 분해야한다. 이기능을구현하고할줄아는사람은팀내한사람으로족하다.
C. 시퀀스다이어그램 그림 11. 시퀀스다이어그램 시퀀스다이어그램은프로그래밍을하면서시간순서에따라무엇이어떤순서로흘러가는볼 수있다. D. I/O Mapping table 작성 그림12. 데이터출력의 I/O분석데이터출력을하려면 GUI측에서데이터베이스의함수를호출할때전달하는정보인매개변수의형태를데이터베이스측과 GUI프로그래머측이통일하여알고있어야한다. 리턴을하게되어도리턴형을둘다알고있어야한다. 그림 13. 데이터입력의 I/O 마찬가지로상호간에작동하는리턴형과매개변수의형태를파악하고있어야한다.
표 1. 데이터입출력자료형과형태, 용도분석 어떤용도로누가호출하며, 어떤데이터가상호간에전송되는지는필수로알아야하는팀프로 젝트를하면서필요한가장중요한것중하나이다. 3.6 SRS : Software Requirement Specification : SW 요구사항명세서 SRS 는 SDD 에서정한소프트웨어설계를상세히하여기능을서술하는일이다. 다음의기능을 SRS 로정의해보는예시를들어본다. 그림 14. 앱목록출력기능 앱목록출력기능은그야말로스마트폰에설치된어플리케이션의목록을그림 14 의모양대로출 력하는기능이다. 이기능을구현하는방법을서술하면아래와같다.
1. 앱목록추출기능 1.1 View 앱목록은리스트뷰로표시한다. 앱아이콘, 목록은패키지명으로추적해서추출한다. 1.2 Touch Select Action 앱선택해제는토글버튼으로표시한다. 데이터베이스응답시간이 n초이상걸릴시실패처리한다. 이벤트발생시데이터베이스에바로저장한다. 그리고할수있으면 Use Case 와같은기능을사용해도좋다. 그림 15. UseCase 예시 Use Case 는사용자가할수있는경우의수를표시한다이어그램이다. 3.7 STP : Software Test Description : SW시험계획서 STP는코딩을다하고난뒤의프로토타입의프로그램을테스트하기위한계획을서술하는단계이다. STP에서할수있는일은두가지가있다. A. 개인이할수있는단계에서의테스트 B. 통합테스트에서테스트개인이모듈별로테스트를하고통합을한뒤전체적인테스트를한다. 3.8 STR : Software Test Report : SW 시험보고서 STR 은 STP 에의해계획된테스트를하고난보고서이다. 이를바탕으로문제점을개선하며개발 을마무리한다.
이상으로협업을위한소프트웨어공학에대한소개를마치도록한다. 이글을보는사람들은팀프로젝트의경험이미숙한사람이많을텐데, 가장중요한것은팀원들의역량을파악하고할수있을만한것인가, 아닌가를잘파악하는것이라하겠다. 학교프로젝트에서가장적당한수준의프로그램은가장책임감있고잘하는사람이살짝버거우면서혼자하면퀄리티가낮아질만한수준이적당하다. 프로젝트가실패하지도않지만팀원들의어깨를조금이나마빌릴수있기때문이다. 이상으로협업을위한소프트웨어공학의소개를마친다.