소프트웨어 개발 - 계획

Bam·2023년 5월 23일
0

소프트웨어공학

목록 보기
2/10
post-thumbnail

소프트웨어 개발은 여러 과정을 거치면서 진행이 됩니다. 이 과정을 소프트웨어 개발 생명주기라고도 합니다.

계획 -> 분석 -> 설계 -> 구현 -> 테스트 -> 유지보수

이 중에서 첫 번째 단계인 계획단계에 대해서 이야기해보려고 합니다.


계획

소프트웨어를 개발하기 위해서는 비용, 기간, 자원 등을 잘 고려서 계획을 세워야 원하는 결과물을 얻을 수 있습니다. 계획이 제대로 세워지지 않았따면 일정 지연, 개발 비용 초과, 품질 저하의 결과를 불러일으킬 수 있습니다. 이러한 부정적 결과는 결국 유지보수 비용의 증가로 이어지게 됩니다.

계획 단계에서는 문제 정의, 타당성 분석, 개발 비용 산정, 일정 계획, 위험 분석을 수행합니다.


문제 정의

문제 정의는 소프트웨어 개발에서 가장 먼저해야하는 첫 번째 작업입니다.

목표와 제약 조건을 고려해서 무엇을 개발할 지 명확하게 정의하고, 개발 범위를 결정합니다. 이들은 프로젝트의 초기 타당성과 초기 계획 작성의 기초가 됩니다.

문제 정의는 개발을 하고자 하는 영역의 배경 지식을 필요로 합니다.(업무의 흐름 파악) 금융 소프트웨어를 개발하고자 한다면 금융 분야에 대해 잘 알고 있다면 큰 도움이 되게 됩니다. 또한 현재 운영 중인 시스템을 사용해보거나 고객과 대화해 자료를 수집하고 분석하는 것도 필요합니다.


타당성 분석

타당성 분석은 경제적, 기술적, 법적 타당성을 검토하는 과정입니다.

경제적 타당성

경제적 타당성은 경영자의 입장에서 의사결정에 영향을 미치는 중요한 요소입니다. 경영자 입장에서는 비용을 내고 개발을 하기때문에, 이 소프트웨어가 가져다줄 이윤이나 투자금 회수 등을 고려하게 됩니다. 또한 경제적 타당성 검토 과정에서 시장 분석을 통해 시장성을 확인하게 됩니다.

즉, 경제적 타당성은 투자 효율성과 시장성을 검증하고 개발 여부를 판단하게 되는 과정입니다.

기술적 타당성

다양하고 복잡한 기술들이 등장하면서 요구 기술에 대한 수준이 높아지고 있습니다. 사용자가 요구하는 프로젝트에 최신 기술이 필요로 하다면 기술적 타당성을 검토하게 됩니다.

요구하는 기술에 대해 개발사가 기술을 가지고 있는지를 확인하고 이에 따라 추가적으로 고용하거나 외주 개발을 요청하게 됩니다.

법적 타당성

무료로 제공하는 오픈 소스는 굉장히 편리하고 비용 절감에도 효과적입니다. 그러나 명시된 라이선스를 위반하게 된다면 법적 분쟁으로 이어질 가능성이 매우 높습니다.

따라서 법적인 문제를 발생시키지 않기 위해, 사용하고자 하는 오픈 소스 등의 라이선스를 확인하고 어디까지 무료로 이용가능한지 등을 확인해야합니다. 이런 것들을 검토하는 것이 법적 타당성입니다.


개발 비용 산정

소프트웨어 개발은 개발자의 몸값, 수많은 개발 프로세스 등으로 인해서 개발 비용을 명확하게 산정하기가 매우 어렵습니다.

개발 비용에 영향을 주는 요소들은 다음과 같습니다.

  • 프로그래머의 능력: 프로그래머의 능력에 따라 다른 몸값이 개발 비용에 큰 영향을 줍니다.
  • 소프트웨어 복잡도: 애플리케이션보다 유틸리티 개발이 3배 어렵고, 유틸리티 개발보다, 시스템 프로그램 개발이 3배 어렵다는 브룩스 법칙에 의해 소프트웨어의 복잡도가 개발 비용에 영향을 주게 됩니다.
  • 소프트웨어 크기: 규모가 큰 소프트웨어는 더 많은 인력과 시간을 필요로하고, 복잡도도 높습니다. 따라서 소프트웨어 크기도 개발 비용에 큰 영향을 줍니다.
  • 가용 시간: 개발 기간 단축을 위해 인력과 자원을 늘리는 것은 좋지 못한 생각이라고 합니다. 정상 계획에서 최대 75% 단축이 한계이므로 무작정 자원을 늘려서도 안됩니다.
  • 요구되는 신뢰도: 신뢰도가 높은 소프트웨어는 개발 비용이 높아집니다.
  • 기술 수준: 개발 환경이 좋으면 개발자의 업무가 줄어 개발 기간 단축과 비용 절감을 가져올 수 있다.

이러한 개발 비용 산정 방식에는 하향식, 상향식, 수학적 산정 기법이 있습니다.

하향식 산정 기법

하향식 산정 기법은 과거의 경험을 바탕으로 회의를 통해 산정하는 기법입니다. 전문가 판단 기법델파이 기법 두 가지 방식이 있습니다.

전문가 판단 기법

전문가 판단 기법은 경험이 많은 전문가들의 의견을 듣고 결정하는 방법입니다. 단기간에 개발비를 산정하거나 입찰하는 경우에 사용됩니다. 경험이 중요하지만 반드시 맞는 것은 아니므로 부정확할 수 있습니다.

델파이 기법

델파이 기법은 전문가 판단 기법에 조정자라는 역할을 추가하는 기법입니다. 조정자는 전문가들이 편견이나 분위기에 휩쓸리지 않도록 중재합니다.

전문가들이 각자 비용을 산정하고 그 결과를 공유하고 조율합니다. 이것을 반복해 일치된 비용이 나오면 그것을 개발 비용으로 산정합니다.

상향식 산정 기법

상향식 산정 기법은 프로젝트의 세부 작업 단위별로 비용을 산정한 후 전체 비용을 합산하는 방식입니다. 소스 코드 라인 수 기법개발 단계별 노력 기법이 있습니다.

소스 코드 라인 수 기법

소스 코드 라인 수 기법(LOC, Line Of Code)은 소프트웨어 각 기능의 코드 수의 비관치, 낙관치, 중간치를 측정해서 예측지를 구한 뒤 이를 통해 비용을 산정하는 방식입니다.

  • 비관치: 한 모둘의 라인 수를 가장 적게생각할 때의 예상 라인 수
  • 비관치: 한 모둘의 라인 수를 가장 많게생각할 때의 예상 라인 수
  • 중간치: 한 모둘의 라인 수를 보통으로 생각할 때의 예상 라인 수
  • 추정 LOC: (낙관치 + (중간치 * 4) + 비관치) / 6

비용은 노력, 개발 비용, 개발 기간, 생산성으로 나뉩니다.

  • 노력(인/월수, M/M): (참여인원 / 월) * 개발 기간 = 추정 LOC / 1인당 원평균 코드 생산 수
  • 개발 비용: (M/M) * 단위 비용
  • 개발 기간: (M/M) / 참여 인원
  • 생산성: LOC / (M/M)

개발 단계별 노력 기법

개발 단계별 노력 기법은 각 기능을 구현하는데 필요한 M/M을 소프트웨어 개발 생명주기의 각 단계에 적용시켜서 각 단계별로 산정하는 방식입니다. LOC보다 더 정확하게 산출됩니다.

수학적 산정 기법

수학적 산정 기법은 수학적 계산 방식을 이용해 개발 비용을 산정합니다. COCOMO기능 점수방식이 있습니다.

COCOMO

COCOMO(COnstructive COst MOdel)은 LOC에 중점은 둔 방식입니다. 프로그램의 유형에 따라 다른 가중치를 부여하거나, 4가지 특성(제품, 컴퓨터, 개발자, 프로젝트)에 따라 15가지로 특성을 분류한 후 인건비를 한 번 더 보정해서 계산합니다.

가중치는 단순형, 중간형, 내장형(임베디드)로 나뉩니다. 단순형은 업무용 소프트웨어, 중간형은 운영체제, 데이터베이스 관리 프로그램, 내장형은 하드웨어와 밀접한 소프트웨어를 의미합니다.

내장형쪽으로 갈수록 더 높은 가중치를 부여합니다.

총 개발 기간은 소프트웨어 유형과 상관없이 고정 값(2.5)을 곱해서 산정합니다.

기능 점수 산정

기능 점수 산정은 사용자 관점에서 소프트웨어의 기능을 정량화해서 소프트웨어 개발 비용을 산정합니다. 주로 개발 비용, 유지보수 비용, 필요 자원 산정에 사용됩니다.

기능 점수 산정의 장점은 다음과 같습니다.

  • 요구사항만으로 기능을 추출해 측정
  • 객관적 요구사항만으로 측정
  • 모든 개발 단계에서 사용

단점은 다음과 같습니다.

  • 높은 분석 능력 요구
  • 기능 점수 전문가 필요
  • 내부 로직 위주의 소프트웨어에는 부적합
  • 개발 공수보단 개발 규모 측정에 적합

일정 계획

일정 계획은 작업을 어떤 순서로 진행하거나 소작업의 개발 순서, 기간, 필요 자원 등을 계획하는 단계입니다.

일정 계획은 작업 분할 구조도(WBS, Work Breakdown Structure)으로 수행합니다. WBS는 목표 달성에 필요한 활동과 업무를 세분화하는 작업이라고 할 수 있습니다. 프로젝트의 구성을 계층 구조로 분류해서 전체 범위를 정의하고 작업을 관리하기 쉽게 세분화합니다.

이 계층 구조에서 최하위 항목을 작업 패키지라고 하며, 이 패키지에 담당자를 할당할 정도로 작게 나눕니다.

WBS를 통해 개발과와 사용자가 의사소통을 하거나, 팀원의 역할 분담이 명확해집니다.

일정 계획 기법엔 네트워크 차트간트 차트를 활용합니다.

네트워크 차트는 WBS의 작업 순서, 소요 기간을 네트워크 그래프로 표현하고, 중요한 작업이나 중점 관리할 작업을 명확히 하는데 사용합니다.

간트 차트는 일정을 관리하는 bar 형태의 표입니다. 프로젝트의 주요 활동을 파학하고 각 ㅎ뫅동의 일정을 시작하는 지점과 끝나는 지점을 막대로 연결합니다.


위험 분석

위험 분석은 계획 단계에서 발생할 수 있는 위험 요소 목록을 만들고 그에 대한 대비책도 마련하는 단계입니다. 위험 예방을 하지 못한다면 추가 비용과 지연이 발생하게됩니다.

위험 관리는 위험 요소 식별 -> 위험 분석 -> 위험 계획 수립 -> 위험 감시의 순서로 이루어집니다.

0개의 댓글