Chap. 4 소프트웨어관리 Software Engineering C2014 SELAB
목차 소프트웨어관리 소프트웨어일정관리 소프트웨어예산관리 계획서작성 2
4.1 소프트웨어관리 (1) 소프트웨어관리 프로젝트개발계획을책임지며주어진시간과예산안에 요구사항대로결과가나올수있도록관리하는것 관리대상 계획관리 : 프로젝트계획, 조직계획, 일정계획, 비용산정 품질관리 : 품질통제, 품질보증 위험관리 : 위험식별, 위험투영 ( 추정 ), 위험평가, 위험관리 3
4.1 소프트웨어관리 (2) 프로젝트관리를위한핵심적관리대상 (3P) 사람 (People) : 인적자원 선임매니저, 프로젝트매니저, 실무자, 최종사용자 프로세스 (Process) : 작업계획 소프트웨어개발에필요한기본골격을제공 문제 (Problem) : 문제인식 프로젝트를시작하기전에처리해야될문제를분석하고, 기술과관리상의제약사항이식별되어야함 문제를분석할때소프트웨어범위를결정하는데, 이때내용, 정보목적, 기능과성능그리고제약조건등을고려함 소프트웨어관리가어려운이유 생산물이무형 s/w 개발과정에대한확실한이해가어려움 대형소프트웨어시스템은 one-off 프로젝트경향 4
관리활동 각프로젝트에공통적으로포함되는관리활동 제안서작성 프로젝트비용산정 프로젝트수행에필요한 예산규모예측 일정계획, 문제점예측, 해결책준비 프로젝트내용, 비용, 추진일정, 타당성등 프로젝트계획과스케줄링 프로젝트감독과검토 진행상황관찰, 비용과진행과정의차이비교 프로젝트수행에필요한 인적요소의조직구성 프로젝트조직구성 프로젝트상황에 관해보고할책임 5 보고서작성과발표
프로젝트계획및예측 (1) 소프트웨어개발및관리활동을효과적으로수행하기위해 먼저개발목표와실시과정에대한계획을수립한후수립된계획에 따라개발및관리활동을통제 프로젝트계획 프로젝트가실행되기전에필요한자원, 비용, 일정, 성능등을예측하는작업 신뢰성있게예측하는방법 이미수행된유사프로젝트참조 프로젝트를작은단위로분리하여예측 경험적예측모델을활용 6
프로젝트계획및예측 (2) 프로젝트계획을수립하는목적 프로젝트에필요한정보를모아서합리적인추정이가능 목표, 요구사항, 제약사항등을분명하게할수있음 관리자가필요자원, 비용, 일정등을합리적으로예측가능 소프트웨어개발과정에잠재된위험성을최소화할수있음 프로젝트계획수립시가장먼저고려해야하는요소 프로젝트의규모파악 과거정보의이용가능성 위험성 (Risk) 구조적불확실성의정도등 개발공정과제품생산에대한계획을신중히세우지않으면, 개발과정중제품비용증가, 품질저하등이일어날수있음 7
프로젝트계획및예측 (3) 프로젝트계획수립단계 문제정의 소프트웨어개발영역결정 ( 소프트웨어의기능, 성능, 신뢰도등 ) 추진전략수립 개발계획수립 계획수립후의산출물 시스템정의서, 프로젝트계획서 8
관리구조 - 계층형팀 (1) 계층형팀 (Hierarchy Teams) = 혼합형팀 프로젝트책임자가여러명의프로그래머를목적에맞게작은그룹으로나누고, 각그룹마다중간관리자를두는계층형관리방식 9
관리구조 - 계층형팀 (2) 특징 책임프로그래머팀과민주적팀의중간형태 5~7명의중급프로그래머를작은그룹으로만들어고급프로그래머가관리하게만들고모든그룹을프로젝트리더가관리하도록하는기법 초보자와경험자를분리하여경험자는초보자에게작업을지시하고, 초보자는지시에따라작업을하고경험자에게보고하는형식으로대규모프로젝트에적합 모든구성원들은상하좌우구성원들과유기적인관계를가짐 가장우수한프로그래머가관리자로승진할경우 2중의부정적효과가발생 유능한프로그래머가반드시유능한관리자는아님 오히려숙련된프로그래머만잃어버리는결과를가져올수있음 10
관리구조 - 책임프로그래머팀 (1) 책임프로그래머팀 (Chief programmer team) = 중앙집중형팀 책임프로그래머가요구분석및설계, 중요부분의프로그래밍및 기술적판단을담당하는중앙집중형관리방법 전문가들 책임 프로그래머 백업 프로그래머 프로젝트행정관 도구장 프로그래머 문서편집장 외부 communication 라이브러리안 언어 / 시스템전문가 테스터 11
관리구조 - 책임프로그래머팀 (2) 특징 한사람에의하여통제할수있는비교적작은규모의소프트웨어개발에적합 책임프로그래머의능력에따라의사결정이이루어지는팀구성 의사결정경로가줄어개발과정이신속 초보프로그래머의훈련을위한좋은조직 책임프로그래머의개인능력에크게의존하는팀구성방식 책임프로그래머의기술적, 관리적능력에민감 12
관리구조 - 책임프로그래머팀 (3) 팀구성원 책임프로그래머 (Chief Programmer) 프로젝트계획, 요구분석과설계, 중요한부분의프로그래밍등모든기술적판단을내림 경험이많고필요한자격요건을갖춘사람 프로그래머 (Application programmer) 책임프로그래머지시에따른원시코드작성, 테스트, 디버깅, 문서작성등을담당 라이브러리안 (Librarian, 프로그램사서 ) 프로그램리스트, 설계문서, 테스트계획등을관리 프로젝트와관련된모든사무적인기능을담당 백업프로그래머 (Backup programmer) 여러기술적인문제에대한자문등의책임프로그래머의업무지원 13
관리구조 민주적팀 민주적팀 (Democratic Teams) = 분산형팀 목표설정과의사결정은팀원모두의의견을따르며, 개개인의의사를최대한존중하는분산형관리방법 특징 각요원이의사결정에자유롭게참여할수있으며, 구성원모두가동등한책임과권한을가짐 팀구성방법들중가장많은의사소통경로를가짐 복잡한장기프로젝트에적합 팀구성원의작업만족도를높이고이직률을낮게하며, 팀구성원사이의의사교류를활성화시키므로 대규모프로젝트에는부적합 불필요한의사교환으로의사결정시간이지연 프로젝트를이끌책임자의부재로인해개인의책임, 권한을약화시킴 14
관리구조 SWAT 팀 SWAT 팀 (Skilled With Advanced Tools Teams) SWAT 는 Skilled With Advanced Tools 를의미 특징 특정도구나경험에매우능숙한사람들을모아서그도구나경험으로문제를해결하는것 RAD(Rapid Application Development) 와같이점진적소프트웨어개발방식을갖는프로젝트에서이용 주로 4, 5명으로구성되는소규모의팀 대화채널은매우단순하며형식적 절차적인회의보다는서로일상생활에서처럼한사무실에서대화 브레인스토밍 (brain storming) 과같은형식으로대화 SWAT 리더는관리자이며개발자 15
프로그래머생산성 (1) 프로그래머생산성평가이유 생산성평가없이프로젝트스케줄링 ( 일정 ) 이불가능 개선된소프트웨어공학의실제적이고관리적인기법의몇가지장점은생명주기전과정에걸쳐서실제사용하여생산성이향상되었다는결과를보여줌으로써증명될수있으므로 소프트웨어는무형이기때문에직접적으로생산성을측정할수없으므로, 실제평가대상은개발비용임 프로그래머생산성측정방법 Code line/month 가장일반적인방법 Object Instruction/Month Page/Month Test case/month 16
프로그래머생산성 (2) Code line/month : 한달간프로그래머가작성한코드의라인 프로젝트를완성하기위해필요한소스코드의전체라인수를한달간프로그래머가사용한전체시간으로나눈것으로계산됨 분석, 설계, 코딩, 테스팅, 문서화의시간이모두포함 코딩은전체개발시간에비해상대적으로작음 문제점 Jones 문제제시 코드의라인이무엇을의미하는지를정확히결정할수없다.» 프로그램은선언문, 실행문, 주석문으로이루어졌고, 코드의라인을확장하는매크로명령어도포함 코드라인에대해서로다르게정의» 실행문만간주하는경우, 실행문과선언문만간주하는경우, 문장의종류에상관없이빈라인만제외한모든라인을간주하는경우 이러한경우, 프로그램생산성에대한공정한측정방법이쉽게비교될수없음 17
프로그래머생산성 (3) 고수준언어와저수준언어의개발시간 저급언어프로그램은고급언어프로그램보다라인수가많음 => 고급언어를사용하는프로그래머보다저급언어를사용하는프로그래머가생산성이더높게나타남 코딩시간이프로젝트를수행하는데필요한시간의절반보다도훨씬적음에도불구하고생산성이코딩단계에의해좌우되는것은모순 18
프로그래머생산성 (4) 예 ) 어셈블리언어 5,000 라인 vs 고급언어 1,500 라인 어셈블리언어 고수준언어 분석 3주 3주 설계 5주 5주 코딩 8주 4주 테스팅 10주 6주 크기 5,000라인 1,500라인 노력 28주 20주 생산성 714/ 월 300/ 월 수량이나시간으로표현되는모든생산성측정방법의문제점 완성된시스템의품질을고려하지않음 코드생산성향상이시스템유지보수비용을감소시키지않는다는것을의미 소프트웨어개발기간중코딩에소요되는시간은일부 프로그래밍언어의수준에따라생산성의차이가큼 19
프로그래머생산성 (5) 생산성에영향을주는요소 사용자인터페이스의복잡성 요구사항정의시사용자의참여여부 팀의전체적인경험정도 프로그래머가실제프로그램개발에사용한총시간 20
4.2 소프트웨어일정계획 (1) 프로젝트일정계획 프로젝트일정계획은소프트웨어관리자가필요로하는일 소작업중에서병행처리가가능할수있도록작업과일정계획들사이의상호종속관계를고려 CPM(Critical Path Method) 기법을사용하여소작업사이의상관관계를고려하여프로젝트의총소요시간을계산 일정을예측할때관리자는프로젝트의모든단계에서문제가없다고는가정하지않음 잠재적인문제나애로점들을예견하고, 우발적인연산을준비하기위하여 -> 이정표, 재검토, 개발노력의진전을정확히반영하는명세화작업을시도 21
4.2 소프트웨어일정계획 (2) 프로젝트이정표 (Project Milestones) 프로젝트개발과정중구분된단계의끝을의미 해당작업의완료확인후다음단계로진행 상급자에게작업완료에따른보고서제시 예 ) 잘된이정표예 : 상위설계완료, 테스트계획형식화 잘못된이정표 : 코딩 80% 완료 -> 정확한의미파악 X 생명주기의보고서작성이정표 22
4.2 소프트웨어일정계획 (3) 일정계획 (Scheduling) 개발프로젝트의프로세스를이루는소작업들을파악해내고그순서와일정을정하는것 소프트웨어개발기간이지연되는것을예방하고프로젝트가계획된순서대로진행되도록일정을계획 소작업사이의상관관계 ( 한작업의종료후시작가능한작업 ) 들을고려하여프로젝트에걸리는총기간산출 일정계획을표현하는도구 : WBS, PERT/CPM, Gantt Chart 등 일정계획서 : 프로젝트진행을관리하는기초자료 23
4.2 소프트웨어일정계획 (4) 일정계획수립순서 1 소프트웨어개발모형을결정하고각단계에필요한작업을분해하여 WBS(Work Breakdown Structure) 로표현 2 3 4 5 각작업의상호의존관계를 CPM 네트워크로나타냄 CPM 네트워크에각작업소요기간을정하고프로젝트완료에필요한최소기간을산출프로젝트의규모산출방법 ( 예 :COCOMO 모형 ) 을사용하여소요되는 MM(Man-Month) 를구하고, 이것을기초로기간을산출하여 CPM 네트워크와비교한후수정확정된결과를간트차트 (Gannt chart) 로작성 24
4.2 소프트웨어일정계획 (5) WBS(Work Breakdown Structure : 작업분류구조 ) 프로젝트전체작업을여러개의작은관리단위인소작업으로분할하여계층적으로기술한업무구조 특징 하향식 (Top-down) 계층구조로나타낼수있음 큰단위의일을소단위의일로분해하기위한도구로사용 관리가능한규모의소작업은업무지시를위한단위가됨 간단한전체적인프로젝트의윤곽을보여주며간트차트에서활동 (activity) 이나작업의기준이됨 WBS에서프로젝트관리자는소작업에대한작업소요일을측정해야함 25
4.2 소프트웨어일정계획 (6) 프로젝트를효율적으로진행하기위한일정계획을수립하는기술 PERT(Program Evaluation and Review Technique : 프로그램평가와검토기술 ) CPM(Critical Path Method : 임계경로방법 ) PERT (Program Evaluation and Review Technique : 프로그램평가와검토기술 ) 프로젝트에필요한전체작업의상호관계를나타내는네트워크 프로젝트의작업들과작업들사이의관계를그래프로표현 각작업의불확실성을고려하여낙관적일때, 가능성이있을때, 비관적일때로나누어각단계별로종료시기를결정하는방법 작업들이계획되기전에작업들사이의의존관계를보여주기위해개발 26
4.2 소프트웨어일정계획 (7) CPM (Critical Path Method : 임계경로방법 ) 경비 ( 예산 ) 와개발일정 ( 기간 ) 을최적화하려는일정계획방법 특징 시간과비용을고려해서최적화하는방법즉, 최소의비용으로최대의효과를위한방법 임계경로 (Critical Path) : CPM 네트워크에서가장긴경로, 프로젝트진행에필요한총기간 프로젝트최단완료시간을구하는데사용 프로젝트에대한업무를네트워크로구성하여프로젝트시작부터끝까지수행해야할업무들에대해그림이나표형태로표현하는네트워크 (CPM Network) 를이용하여주요핵심경로 ( 최장경로 ) 를측정하는도표 작업들사이의병행작업을계획할수있으며, 프로젝트종료시점추정에유리 WBS를구성하고있는관리단위들의상호의존성을분석하여각공정간의선행관계와작업의소요기간을나타내는프로젝트네트워크 각작업에필요한가장근접한시간을예측하는것으로정확한시간측정은어려움 27
4.2 소프트웨어일정계획 (8) 간트차트 (Gantt Chart ) 프로젝트작업을수평적으로일정에따라표현해주는일정표 특징 개발과정전단계를한눈에파악할수있음 작업의병행처리과정을인식시켜줌 프로젝트의각공정들이언제시작하고종료되는지를막대도표로표시 각단계별로진행사항을알수있도록표시한프로젝트일정계획및이정표로생명주기단계, 일정계획 ( 작업일정 ), 이정표, 작업기간등이포함 프로젝트에대한작업일정을보여주는것이지작업을발견해내는데도움을주지는못함 CPM 네트워크 : 작업이적시에진행되는지를점검하는데사용 간트차트 : 자원의활용및인원배치에도움을줌 28
4.2 소프트웨어일정계획 (9) < CPM 네트워크 > T5, < 소작업리스트 > 10 일 29
4.2 소프트웨어일정계획 (10) 가능경로기간 ( 일 ) 시작-T1-M1-T3-M4-T9-M6-T11-M8-T12-완료 55 시작-T1-M3-T6-M4-T9-M6-T11-M8-T12-완료 45 시작-T1-M1-T7-M7-T10-완료 43 시작-T2-M3-T6-M4-T9-M6-T11-M8-T12-완료 52 시작-T2-M2-T5-M7-T10-완료 40 시작-T4-M2-T5-M7-T10-완료 35 시작-T4-M5-T8-완료 35 임계경로 (critical path) : T1-M1-T3-M4-T9-M6-T11-M8-T12 (55 일 ) 30
4.2 소프트웨어일정계획 (11) < 간트차트 > 31
4.2 소프트웨어일정계획 (12) < 프로그래머 / 태스크할당 > < 스텝할당도표 > 32
4.2 소프트웨어일정계획 (13) - 문제 1. 이프로젝트의일정계획을위한 CPM 네트워크를그리시오. 2. 임계경로 (Critical Path) 를찾고최소완료시간을계산하시오. 33
4.3 소프트웨어예산계획 (1) 소프트웨어예산계획 프로젝트수행에필요한예산의규모를예측하는작업 소프트웨어계획단계에서정확한비용예측 알려지지않은요소가산재 매우어려움 계약을위해서뿐만아니라프로젝트의 scheduling을위해서도필수적 소프트웨어생명주기를통해계속적인통제와조정이필요 34
4.3 소프트웨어예산계획 (1) 35
4.3 소프트웨어예산계획 (2) Boehm(1981) 에의해제시된소프트웨어비용산정방법 알고리즘모델 (algorithmic cost modeling) : 특정한소프트웨어척도와프로젝트비용과과거의정보를바탕으로개발된모델 소프트웨어개발비용에영향을미치는중요한변수를한개또는여러개의수식에대입하여비용추정하는방법 전문가의판단 (expert judgment) : 전문가의판단에의한소프트웨어비용산정 유추에의한산정 (estimation by analogy) : 기존에작업했던프로젝트를유추해서프로젝트비용산정 파킨슨의법칙 (Parkinson's law) : 작업은가능한시간내에서는계속되고비용이있으면다쓰게된다는의미 능력별지급 (pricing to win) : 프로젝트에대해지불할수있는비용그자체로산정, 실제상황에가장공통적인비용산정방법 하향식산정 (top-down estimation) : 제품의전체적인특성을고려하여결정되고이비용은각구성부분에할당 상향식산정 (bottom-up estimation) : 각구성의비용이산정되고, 이비용이전부더해져최종적인비용이산출 36
4.3 소프트웨어예산계획 (3) 비용결정요소 소프트웨어제품의비용에영향을미치는요소 프로젝트자체요소, 자원요소, 생산성요소 1) 프로젝트자체요소 (project factors) 무엇을개발해야하는가에따라소요경비는크게좌우되고, 문제의복잡도 (complexity), 시스템의크기 (size), 요구되는신뢰도 (reliability) 등 예 ) 소프트웨어복잡도와개발비용 37
4.3 소프트웨어예산계획 (4) 2) 자원요소 (resource factors) 개발에필요한각종자원들의투자정도에따라개발비용은크게달라질수있음 자원의종류 : 인적자원, 하드웨어자원, 소프트웨어자원 3) 생산성요소 (productivity factors) 프로젝트에대한자원의투자가어떠한결과를나타내느냐는것이생산성을의미 소프트웨어생산성은 MM(Man-Month) 당제작되는평균원시코드라인수로정의 이를결정하는요소들은개발자의능력, 경험및주어진개발기간등다양함 38
소프트웨어비용산출방법 (1) 1. 하향식산정방법 전체시스템차원에서비용을산정하고서브모델의비용을산정하는방법 일반적으로가장많이사용되는방법이며, 경험과전문지식이많은개발자들이참여한회의에서토론을통하여산정 ( 과거유사한프로젝트비용을검사함으로써추정 ) 1) 전문가의판단 (expert judgment) 소프트웨어개발기술에관한경험이많은전문가의판단에따라비용을산출하는방법 경험과지식을갖춘 2 명이상의전문가에게의뢰 장점 : 간편함, 신뢰감을줌 단점 : 낙관적, 비과학적 ( 기술적요인을간과하기쉬움 ), 객관성부여의어려움 ( 개인적차이가큼 ) 사소한문제로인한결정이나그룹내의한사람에의한독단으로가면문제가발생 39
소프트웨어비용산출방법 (2) 2) 델파이 (Delphi) 식산정방법 회의의부작용을방지하면서전문가의의견일치를얻기위하여 1948년랜드사 (Rand Co.) 에서개발 전문가의판단방법의단점을보완한방법 전문가들이편견이나분위기에지배받지않도록조정자 (coordinator) 를필요로함 델파이식비용산정방법의진행과정 1 2 3 4 5 6 조정자가시스템정의서와비용산출양식을전문가들에게제공조정자는전문가들이비용산출에관한토의를위한회의를소집전문가들은익명으로각자의산정작업을완료조정자는그룹산정과개인산정에관한내용을요약하여제시조정자는산정내용의차이가많을때, 그문제에초점을맞추어회의를소집전문가들은다시익명으로산정작업을실시 의견의일치를이룰때까지이과정을반복 40
소프트웨어비용산출방법 (3) 2. 상향식산정방법 서브시스템의개발비를산정한후에합산하여전체시스템의비용을산정하는방법 하향식방법의비과학성을보완 개발할시스템을작업분류구조 (WBS) 로정의하고, 각구성요소에대한산정을독립적으로실시한후이를합산하는방식 프로젝트를위한소작업에소요되는기간을구하고, 여기에투입되어야할인력과투입인력의참여도를곱하여최종인건비를계산 41
소프트웨어비용산출방법 (4) 1) 원시코드라인수 (line of code) 기법 WBS상에서분해된시스템의기능들을각각필요한원시코드라인수로산정함 가장효율적인방안은, 프로젝트관리목적으로대두된 PERT(project evaluation and review technique) 의예측공식을이용하는것 확률론에서배타분포도에근거하여낙관치, 기대치및비관치의확률적집합으로예측치와이의편방편차를산출 2) 개발단계별노력산정기법 시스템의각기능의구현에필요한노력을각생명주기의단계별로산정하여원시코드라인수기법보다더정확성을기하고자하는방법 인건비는전문가마다다를수있으므로이를개발비산정에반영시키는목적도있음 예 ) 평균인건비는 MM당 200만원, 시스템분석가나설계자는 MM당 250만원, 프로그래머나테스터는 MM당 150만원 42
소프트웨어비용산출방법 (5) 3. COCOMO (Constructive COst Model) 방법 Boehm(1981), 원시프로그램의규모에의한비용산출방법 실제소프트웨어개발프로젝트들의기록을통계분석한결과로산출 진행예정인프로젝트의여러특성들을고려할수있도록개발자에게융통성부여 소프트웨어제품, 프로젝트형태, 개발환경, 개발인력요소에따라 15개의특성값이부여 완성될시스템의규모 (LOC) 를추정하고이를준비된공식에대입하여투입노력 (MM) 과개발기간 (TDEV) 예측 특징 소프트웨어개발비용산정기법중에서미리준비된식과표를이용하여비용을산정할수있는알고리즘방식기법 LOC와 FP 기반측정방법이 분해기법 을사용한반면, COCOMO 모델은 경험적추정모형 을나타냄 제품의복잡도에따라 organic 소프트웨어, semidetached 소프트웨어, embedded 소프트웨어로분류하며, 제품의원시명령어의수에의한 PM(Person/Months) 를단위로비용산정예측방식을제안 PM(Person/Months) : 프로젝트를개발하는데필요한프로그래머인원 / 월 (MM) 의관계 KDSI(thousands of delivered source instruction) : 제품의최종원시코드의명령어수 43
소프트웨어비용산출방법 (6) 제품복잡도에따른프로젝트개발모델 (3 가지유형 ) 유형 Organic mode Semidetached mode Embedded mode 설명 50KDSI(5 만라인 ) 이하의프로젝트 일반응용프로그램 과학기술계산용, 급여관리프로그램, 일반업무용등 300KDSI(30 만라인 ) 이하의프로젝트 개발지원도구 컴파일러, 워드프로세서등 300KDSI(30 만라인 ) 이상의프로젝트 시스템프로그램 운영체제, 통신모니터등 시스템소프트웨어, 하드웨어, 소프트웨어, 운영제약이하나의시스템으로형성되는항공기운항제어시스템과같은초대형규모의시스템 44
소프트웨어비용산출방법 (7) 비용추정단계및적용변수의구체화정도에따른분류 Basic COCOMO Intermediate COCOMO Detailed COCOMO 프로젝트크기나특성과는관계없이원시코드라인수만으로비용을계산 소프트웨어크기나개발모듈에의해산정 (LOC 에의존 ) Basic COCOMO 을토대로계산하나, 다음 4 가지특성의 15 가지요인을가미하여곱한가중치계수 ( 노력승수 ) 사용 a. 제품의속성 : 요구되는신뢰도, 데이터베이스크기, 제품의복잡도 b. 컴퓨터의속성 : 수행시간의제한, 기억장소의제한, 가상기계의안정성, turnaround 시간 c. 개발요원속성 : 분석가능력, 개발분야경험, 가상기계의경험, 프로그래머의능력, 프로그램언어의경험 d. 프로젝트속성 : 소프트웨어도구의이용, 프로젝트개발일정, 소프트웨어공학의활용도 시스템을모듈, 서브시스템으로세분하여 Intermediate COCOMO 방식적용 소프트웨어환경과구성요소가사전에정의되어있어야하며, 개발과정의후반부에주로적용 Intermediate COCOMO 산정공식을그대로사용하되, 노력승수 = 개발공정별노력승수 * 개발공정별가중치 45
소프트웨어비용산출방법 (8) Basic COCOMO 추정된 LOC를프로그램크기에대한함수로표현해서소프트웨어개발노력 (MM) 과개발기간 (TDEV) 을계산 소프트웨어를개발하는데드는노력 : MM = a(kdsi) b 프로젝트를완성하는데요구되는시간 : TDEV = c(e) d 개발유형 투입노력 (MM) 개발기간 (TDEV) Organic MM = 2.4*(KDSI) 1.05 TDEV=2.5*(MM) 0.38 Semidetached MM = 3.0*(KDSI) 1.12 TDEV=2.5*(MM) 0.35 Embedded MM = 3.6*(KDSI) 1.20 TDEV=2.5*(MM) 0.32 프로젝트산정을시작하는데유용하지만프로젝트크기와유형을 제외하고는프로젝트에영향을미치는많은요인들이제외 46
소프트웨어비용산출방법 (9) 예 1) 32,000 DSI (=32 KDSI) 로예상되는 Organic mode 의소프트웨어프로젝트 MM = 2.4 * (32) 1.05 = 91 man-months TDEV = 2.5 * (91) 0.38 = 14 개월 FSP = MM/TDEV = 91/14 = 6.5 7 명 생산성 = DSI/MM = 32,000/91 = 351.648 352LOC/MM 한달에일할수있는날을 22 일로가정 352/22=16 한사람이하루에약 16 라인작성 예 2) 128,000 DSI 의크기인 embedded mode 소프트웨어프로젝트 MM, TDEV, FSP, 생산성, 한사람이하루에작성할명령문라인수 47
소프트웨어비용산출방법 (10) Intermediate COCOMO : Basic COCOMO의확장 4가지종류 15개의요인을적용하여계산 제품의특성 요구되는소프트웨어신뢰도 (RELY) Reliability Database 크기 (DATA) Database size 제품의복잡도 (CPLX) Complexibility 컴퓨터의특성 : 소프트웨어생산성에영향을주는 Hardware 의제한조건 수행시간의제한 (TIME) Constant of performance time 기억장소의제한 (STOR) Constant of storage 가상기계의안전성 (VIRT) Safely of Virtual Machine Computer의 Turnaround 시간 (TURN) Turnaround time of computer 개인의특성 분석가의능력 (ACAP) Analysis capability 개발분야의경험 (AEXP) Area of Experience 가상기계의경험 (VEXP) Experience of Virtual Machine Programmer의능력 (PCAP) Capability of programmer Programming language의경험 (LEXP) Experience of programming language 프로젝트특성 최신 Programming 기법의이용 (MODP) Modern Programming 소프트웨어도구 (TOOL) Tool 요구되는개발일정 (SCED) Schedule 48
소프트웨어비용산출방법 (11) 15 가지특성에따른승수값 49
소프트웨어비용산출방법 (12) Intermediate COCOMO 에서의비용예측절차 1 명목개발노력 (Nominal Development Effort) 추정 2 시스템개발에따른 15가지특성을고려하여노력승수결정 3 개발노력추정 개발노력 = 명목개발노력 * 노력승수 4 총투입 MM( 개발노력 ) 을 TDEV( 개발기간 ) 로나누면적정투입인원수가산출 FSP=MM/TDEV 5 FSP와 TDEV를이용하여소요인건비를산출 COST = FSP * TDEV * 월평균임금 50
소프트웨어비용산출방법 (13) 예 ) Micro computer 상에서개발하는 Embedded 유형의소프트웨어 조건1) Intermediate COCOMO 모델의노력승수는아래값을제외하고모두중간등급 (1) 의값 RELY 1.15, STOR 1.21, TIME 1.10, TOOL 1.10 조건2) Basic COCOMO에의해산정된노력개발 (MM) = 45 MM 조건3) 월평균임금 : $7,000 개발노력 = 명목개발노력 * 노력승수 = 45 * 1.15 * 1.21 * 1.10 * 1.10 = 76 Man-Months 개발일정 = 2.5 * (76) 0.32 = 9.99 10 개월 적정투입인원 = 76/10 = 7.6 8명 비용 (cost) = FSP * TDEV * 월평균임금 = 8 * 10 * 7000 = $560,000 51
소프트웨어비용산출방법 (14) 장점 단점 비교적정확한모델 소프트웨어개발비견적에유연성부여 소프트웨어제품을하나의개체로보고승수들을전체적으로적용 대부분의대형시스템은서로상이한서브시스템으로구성 서로적용되어야하는개발유형이다를수있음» 일부분은 Organic mode이고, 일부분은 Embedded mode인경우도있음» 일부분에대해서는신뢰도가매우높아야하고, 일부분에대해서는신뢰도가낮아도되는경우도있음 52
소프트웨어비용산출방법 (15) Detailed COCOMO Intermediate COCOMO의보완 전체시스템을서브시스템또는모듈단위로분리하여 Intermediate COCOMO 적용 MM, TDEV의계산은 Intermediate COCOMO와동일 노력승수의결정 = 개발공정별노력승수 * 개발공정별가중치 전체시스템의비용 = SUM( 각서브시스템의비용 ) 53
소프트웨어비용산출방법 (16) COCOMO 는간단한수식이므로쉽게도구로구현가능 예 ) KDSI 및 Development Mode 등기본입력을선택 54
소프트웨어비용산출방법 (17) 4. Putnam 추정모형 ( 생명주기예측모형 ) 동적다변수모델 ( 동적모델 ) : 각개발기간마다소요인력을독립적으로산정가능함 시간에대한함수로대형프로젝트의노력분포산정에이용 5. 기능점수 (Function Point) 모형 소프트웨어의각기능에대하여가중치를부여하여요인별가중치를합산하여소프트웨어의규모나복잡도, 난이도를산출하는모형 최근에는유용성과간편성때문에관심이집중되고있으며, 기능점수기법은라인수에기반을두지않는방법 정보처리규모는사용자입장에서본시스템의기능을외부입력, 외부출력, 외부조회, 내부논리파일, 외부인터페이스파일등의 5가지유형으로나누어각기능의복잡도를고려하여측정 55
위험분석및관리 위험분석및관리 소프트웨어팀이앞으로의개발에대한불확실성을이해하고관리해주는단계 위험분석 : 프로젝트에내재된위험요소를인식하고그영향을분석하여이를관리하는활동 위험 (risk) 프로젝트진행중에발생하여프로젝트의정상적인납기, 원가및품질등에영향을줄수있는모든사건 프로젝트진행중식별되고관리및해결되어야할프로젝트관리요소 일정지연위험은작업사이의의존도를제한함으로써낮출수있음 56
4.4 계획서작성 소프트웨어개발계획서 프로젝트관리자, 기술진, 고객에게프로젝트의범위와자원을상호협의할수있도록하기위해작성 프로젝트의성격이나사용자의요구에따라다양 구성 1. 개요 1.1 프로젝트개요 1.2 프로젝트범위및목표 1.3 용어, 약어 2. 자원및일정예측 2.1 인력 2.2 비용 2.3 일정 3. 프로젝트구성 3.1 작업구성 3.2 조직구성 57 4. 관리계획 4.1 변경관리 4.2 위험관리 4.3 비용및진행관리 5. 기술계획 5.1 개발방법론 5.2 문서화 6. 회의일정및진행방법 7. 개발환경 8. 테스트방법 9. 유지보수 10. 부록
58