2016년 4월 25일 월요일

유지보수와 역공학 (1)


SW생명주기의 유지보수 단계는 보증기간 또는 인수의 구현 단계를 따라 시작되지만 유지보수 활동은 일찍 시작된다. 유지보수는 SW생명주기의 주요활동임에도 불구하고 대부분의 조직에 타활동에 비해 중요시 되었지만 이제는 SW개발에 투자하기 보다는 기운용되는 SW 최대한 유지하려는 기조에 맞춰 주목받고 있는 상황이다. 과거 Y2K 문제는 SW유지보수에 관심을 갖게 하였고 오픈소스 패러다임은 타인에 의해 개발된 산출물에 대한 유지보수의 필요성을 더욱 부각시켰다.11)
유지보수는 사용자 요구사항을 지속적으로 만족시키기 위해 필요하며, 시스템은 수정적 (corrective) 수정적 SW 행동으로 인해 변경된다. 유지보수의 목적은 결함 교정(correct), 설계 향상, 구현 향상, 시스템과의 연동(interface), HW, SW, 시스템의 기능사용을 위한 프로그램 적용, 기존(legacy) SW 이전(migrate), SW 폐기 등이 있다.




유지보수자의 활동은 개의 주요 활동으로 요약될 있는데 SW 일일 기능에 대한 제어 유지보 , SW 수정에 대한 제어 유지보수, 기존 기능의 완전화(perfecting), SW 성능의 수용 불가한 준으로 낮아짐에 대한 방지로 나눌 있다.

2016년 4월 22일 금요일

리스크관리 (위험과 이슈)


SW개발 프로젝트의 수행에 있어서 위험요소는 지금까지 수행된 모든 프로젝트에 내제 되어 있음에 불구하고 위험요소가 지닌 불확실성(발생가능성, 영향도, 대안의 적합성 )으로 인하여 위험요 소들을 추적하고 관리하는 것은 매우 어려운 현실이다.
SW개발이 단순 패키지가 아닌 통합시스템이라는 부분까지 확장되는 현실에서 프로젝트 수행의 모와 복잡성이 점점 커지고 있다. 대규모 개발조직이 장기간에 걸쳐 다양한 구성요소들을 개발, 합하게 되면서 각각의 위험요소들이 기하급수적으로 증가하게 되고 프로젝트 수행시 효과적인 위험 관리가 프로젝트 성공의 핵심요인으로 부상하게 것이다.9)
프로젝트 관리자가 뛰어난 사람인지 아닌지를 판단할 있는 방법은 여러 가지가 있다. 그중 하나 위험관리에 대한 부분이다. 위험에 대한 정의가 명확한 편인데도 불구하고 현장에서는 위험 (Risk) 이슈(Issue) 대한 구분이 어려운 상황이다.
 
위험은 아직 발생하지 않은 확률적 사건이고 이슈는 발생해서 프로젝트의 발목을 잡고 있는 문제점 이다. 결국 위험이 발견되면 이슈가 된다고 볼수 있다. 이것이 위험관리와 이슈관리를 혼동하는 이유이기도 하다. 이러한 위험은 관리되어야 한다. 위험이 추상적인 상태에서는 문제로 되기전 (이슈화 되기 ) 대응책을 생각해 내는 과정인 것이다.

비용산정


SW개발비용의 산정은 하향식 산정방법과 상향식 산정방법으로 나뉜다. 현장에서 가장 선호하는 방법은 하향식 산정방법으로 경험과 전문지식이 많은 개발자들이 참여한 회의나 토론을 통해 산정 하는 방식이다. 하향식 산정방법은 전문가의 판단(expert judgment) 델파이(Delphi) 산정방 법이 있지만 도출된 결과를 객관화하거나 정량화하기 힘들어 SW개발에서는 대략의 비용 사이즈를 도출할 많이 사용한다.
상향식 산정방법은 하향식 산정방법의 비과학성을 보완하기 위하여 개발할 시스템을 WBS 등으로 정의하고 구성요소에 대한 산정을 독립적으로 수행한 이를 합산하는 방식을 의미하며, 국내 에서 가장 많이 활용되었던 SW사업대가기준에서 제시하고 있는 코드라인, 스텝수, 본수, 기능점수 (FP) 등이 대표적인 방법이다.


프로세스와 프로젝트 매트릭스(2)


SW 발전으로 설계시 요구사항은 기술 매트릭스를 통해 설계품질을 평가하고 소스코드 테스트 소요되는 방식에 영향을 미치게 된다. 프로젝트 매트릭스의 목표는 두가지다. 첫째는 프로젝트 지연을 방지하고 잠재적인 문제 위험을 완화시키고 일정을 최소화하는데 활용된다. 둘째는 지속적으로 제품의 품질을 평가하는데 사용하고 필요시 품질향상을 위한 기술방식을 수정할 되는 것이다. 결함 측정을 통해 결함을 최소화 시키면 개발품질의 향상을 통해 프로젝트 기간 동안 필요한 재작업의 또한 감소하게 되고 이는 전체 프로젝트 비용의 감소로 이어지게 된다.
SW공학의 최우선 목표는 적시에 높은 품질의 시스템 또는 SW제품을 생산해 내는 것이다. 목표 달성하기 위해서는 검증된 SW프로세스 내에서 현대적인 도구와 효과적인 결합을 통해 적용해야 한다. 매트릭스는 요구사항의 품질과 설계모델, 소스코드, 테스트 케이스를 평가하기 위해 활용될 있다.