1. 소프트웨어 공학의 이해
1-1. 소프트웨어 공학의 개념과 중요성
- 소프트웨어 공학은 소프트웨어의 품질을 높이는 학문임
- (중요) 사용자의 요구사항을 100% 만족시키는 프로그램을 만드는 것이 목표임
- 소프트웨어 공학은 사용자와 소프트웨어 간의 통신을 중점으로 함
- 소프트웨어 공학의 품질 향상은 프로그램의 신뢰성, 유연성, 이색성 등을 높이는 데 기여함
- 소프트웨어 공학은 컴퓨터공학의 한 분야로 볼 수 있음
1-2. 소프트웨어 공학의 주요 과정과 위기
- 소프트웨어 공학은 분석, 설계, 구현, 검사, 유지보수 단계를 포함함
- (중요) 소프트웨어 공학의 주요 과정은 프로그램의 품질에 영향을 미치며, 위기 관리도 필요함
- 소프트웨어 공학에서 발생하는 위기는 하드웨어 속도에 비해 소프트웨어가 떨어지는 현상임
- 이러한 위기를 극복하기 위해 소프트웨어 공학이 필요함
1-3. 프로젝트 관리와 효율적 요소
- 프로젝트 관리는 소프트웨어 개발 업무를 관리하는 방법임
- 프로젝트 관리 대상은 비용, 기간, 조직, 형상, 품질, 위험 관리 등이 있음
- 효과적인 프로젝트 관리를 위해선 인적, 문제, 제작 관리가 필요함
- (중요) 문제 관리는 사용자 입장에서 문제를 분석하고 기획하는 과정임
- 위험 관리는 위험 요소에 대처하는 방법임
2. 소프트웨어 개발 비용
2-1. 프로젝트 관리
- 사용자와의 문제 분석 및 기획이 중요함
- 공정 관리, 작업 계획 수립이 필요함
- 효과적인 프로젝트 관리를 위한 3대 요소는 비용, 공정 관리, 프로젝트 관리임
- (중요) 소프트웨어 공학 차원에서 비용 관리 시, 제품의 복잡도, 시스템의 크기, 요구되는 신뢰도 등이 비용 결정 요소임
- 인적 자원, 하드웨어 자원, 라이선스, 시스템, 데이터베이스 등이 생산성 요소임
2-2. 비용 산정 기법
- 소프트웨어 개발 비용 산정 시, 하향식과 상향식이 있음
- 하향식은 전문가의 감정과 직관을 바탕으로 비용을 산정하는 방식임
- 상향식은 전문가의 감정을 객관적으로 반영한 방식으로, 개발 단계별 인력 비용을 계산함
- 수학적 산정 기법은 프로그램 소프트웨어의 단가 즉, 비용을 수학적으로 계산하는 방식임
- 시험에 나올 수 있으니, 하향식과 상향식의 차이를 알아두어야 함
2-3. 개발 비용과 시스템 크기
- 시스템의 크기가 클수록, 요구되는 신뢰도가 높을수록 비용이 많이 듬
- 신뢰도가 높으면 개발 기간이 길어지면 비용이 더 많이 듬
- 개발 기간이 짧으면 비용이 적게 드는 것과는 반대 관계가 존재함
- 인력 투입량이 많을수록, 기간이 길어질수록 비용이 많이 듬
- (중요) 비용 산정 시, 전문 지식이 많은 개발자의 판단을 참고해야 함
3. 소프트웨어 비용 산정과 그 기법
3-1. 소프트웨어 비용 산정의 개념과 방법
- 소프트웨어 비용 산정은 프로젝트 전체 비용을 산정한 후, 각 작업별로 단위별 비용을 세분화하는 과정임
- (중요) 전문가나 전문가 그룹의 지식과 경험을 활용하여 비용을 산정하는 기법이 있음
- 이 때, 하향식이란 비용을 각 작업별로 세분화하여 산정하는 방법을 말함
- 또한, 상향식이란 전체 비용을 산정한 후, 각 작업 단위별로 비용을 세분화하는 방법을 말함
3-2. 비용 산정 기법의 세부적 설명
- 원시코드 나인수 기법은 소프트웨어 각 기능의 AOC를 예측하여 노력 동그래미 개발 비용을 산정함
- (중요) 수학적 산정 기법은 개발 비용을 자동화하여 효율적으로 산정함
- 이 때, 코코모 방법은 개발 노력, 기간, 인원, 인적 비용 등을 고려하여 비용을 산정함
- 수학적 산정 기법은 수학적 공식을 활용하여 비용을 산정하는 방식임
3-3. 소프트웨어 개발 유형과 비용 산정 요소
- 소프트웨어 개발 유형은 복잡도 및 원시 프로그램 규모에 따라 조직형, 반분리형, 내장형으로 나뉨
- (중요) 조직형은 5만 나인 이하의 소프트웨어 개발을 주로 사용하며, 각 유형에 따라 비용 산정 요소가 다름
- 코코모 방법은 개발 노력, 기간, 인원, 인적 비용 등을 고려하여 비용을 산정함
- 수학적 산정 기법은 이러한 요소들을 자동화하여 비용을 산정함
4. 소프트웨어 공학 및 비용 관리 기법
4-1. 소프트웨어 공학의 종류 및 규모별 분류
- 소프트웨어 공학의 분류는 규모에 따라 복잡도 및 원시 프로그램의 규모에 따라 결정됨
- (중요) 내장형, 반분리형, 완전형 등 규모에 따른 분류가 가능하며, 조직형 소프트웨어는 반분리형 소프트웨어보다 복잡함
- 윈도우 같은 상업 소프트웨어는 완전형으로 개발되며, 기업 간 결제 프로그램은 대부분 내장형
- 규모에 따라 복잡도 및 원시 프로그램의 규모에 따라 조직형 소프트웨어와 반분리형 소프트웨어가 구분됨
4-2. 수학적 산정 기법의 종류 및 이해
- 푸닝 모형은 소프트웨어의 생명주기 동안의 노력 분포를 가정해주는 모형
- 코코모 모형은 원시코드의 라인 수를 중심으로 비용을 산정
- 기능 점수 모형은 펑션 포인트를 이용해 소프트웨어의 기능별 가중치를 산정
- (중요) 수학적 산정 기법은 하향식과 상향식으로 나뉘며, 각각의 기법은 각자의 특성에 따라 사용됨
4-3. 소프트웨어 공학의 중요성 및 학습 방향
- 소프트웨어 공학은 시스템 설계 등에서 중요한 역할을 하며, 비용 관리, 일정 관리, 사람 관리, 조직 관리, 품질 관리, 위험 관리 등을 통합 관리
- 이에 따라 비용 관리, 일정 관리 등을 잘 하는 것이 중요하며, 시스템 설계에 소프트웨어 공학이 적용되어야 함
- 이는 공부의 깊이와 넓이를 증진하기 위해 시험 공부보다는 전반적인 이해를 통한 학습이 필요함
- 학습 시에는 개인적인 흥미와 학문에 대한 투자를 허용하며, 다양한 공부를 섞어서 학습하는 것이 필요함
화자 1
00:10
자 중국에 계시는 우리 엠프엠 생방송 안방 가족 여러분 계속해서 뜨거운 감동의 수업을 함께 하겠습니다. 좋아요. 자 여러분 좀 쉬었죠. 자 쉬고 이제 마지막 과목 소프트웨어 공학 우리 기사 학생들 산업기사는 인제 시대가 부르듯이 얘기했지 그래서 우리가 바로 앞 시간에 소프트웨어 공학의 개요에서 했죠. 그죠 그래서 소프트웨어 우리가 개념을 다시 잡았고 소프트웨어 이제 어떻습디까 소프트웨어 명령어들의 집합 이런 명령이 모인 게 프로그램이고 프로그램을 우리는 통합적으로 소프트웨어를 하고 이런 소프트웨어를 우린 또 다른 말로 뭐다 논리적 시스템이라고 하지 그제 명령어 프로그램 소프트웨어 시스템 다 같은 말이다. 그죠 그래서 이런 소프트웨어는 이제 뭐 품질 향상 품질이 좋아야 된다. 우리 사용자의 요구사항을 100프로 만져보는 프로그램이 돼야 된다.
화자 1
01:09
정확해야 되고 신뢰성이 있어야 되고 유연해야 되고 이색성이 좋아야 되고 기능성이 뛰어나야 되고 맞나요? 우리 사용자가 지시하는 대로 움직여줘야 된다. 그죠 그래서 이런 소프트웨어의 품질을 높여보자 해서 배우는 게 뭐다 소프트웨어 공학이다. 즉 소프트웨어 위기 소프트웨어 위기를 극복하기 위한 학문이 뭡니까? 컴퓨터공학 소프트웨어 공학이지 맞나 그래서 소프트웨어 크라이시스가 뭔지 그죠 즉 소프트웨어 크라이시스는 정리한다. 하드웨어의 속도에 비해 소프트웨어가 떨어지죠 그러니까 하드웨어는 64비트까지 현재 우리 피씨 환경도 개발되어 있는데, 이걸 운영해주는 소프트웨어 아직까지 삼십이 비트에 머물러 있다.
화자 1
01:52
그죠 물론 최근에 등장하는 비 스타는 육십 사비트 컴퓨팅 환경을 구현합니다마는 이제 아직까지 소프트웨어는 하드웨어를 따라 모으는 거 이걸 위기요 그리고 사용자의 요구성 사항을 충족시키지 못하는 거도 위기고 또는 개발자가 부족한 것도 위기고 맞나요? 그래서 이런 위기를 우리는 공학 차원에서 극복해보자 소프트웨어 공학 개요에서 빼앗습니다. 그리고 이 소프트웨어를 개발하는 과정 그냥 무식하게 개발하는 게 아니고 뭐다 소프트웨어 라이프 사이클 소프트웨어 개발 단계가 있더라 맞나요? 그래서 분석 단계 설계단계 구현단계 검사단계 뭡니까? 유지보수 단계 되겠나요? 그래서 각각의 단계에 대해서 알아놓고요. 우리는 소프트웨어 나이프 사이클의 모델이 있더라 모형이 있더라 해서 가장 전통적인 모형이 뭐다 포포 수용 워터폴 포포 수용 모델이 있고요.
화자 1
02:49
폭포 수용 모델이 있고 그 다음에 뭡니까? 우리는 프로토타입한 거다 사용자의 요구사항을 100프로 받아들이면서 우리 하는 모형 왜 시제품 즉 모델하우스를 만들어 놓고 사용자한테 니가 요구한 소프트웨어 맞나 맞으면 개발 단계에 들어가는 프로토타입 모형이 있고 점진적인 거 뭐 나선형 위험요소 생각나나 위험요소를 가미해가면서 나선형으로 개발하는 나선형 모델이 있고요. 오케이 그다음에 포지엘을 이용한 사지티 모델이 있고요. 그다음A4지엘에다가 즉 사지티에다가 우리가 어떤 기법 재사용 오케이 재공화 리뷰즈 개념을 가미시킬 레이더 모형도 있더라 그죠 그래서 각각의 특징적인 걸 알아놓는 게 1번 챕터의 핵심이었습니다. 좋나요? 좋습니다.
화자 1
03:39
자 그러면은 이제 요번 시간 계속 이어서 프로젝트 관료로 들어가 본다 예 소프트웨어의 프로젝트 관리 자 이 프로젝트가 뭔지 알제 내가 개발해야 할 업무 어 내가 현재 전산해야 할 업무를 우리는 뭐라 한다. 프로젝트란다 그죠 프로젝트 내가 수행해야 할 업무를 프로젝트라 합니다. 업무 되겠죠. 그래서 이 프로젝트를 어 이 업무를 어떤 식으로 관리해야 품질 좋은 생산성 높은 소프트웨어를 개발할까요? 이 문제 아니냐 그래서 프로젝트 관리의 개요 자 프로젝트 관리 정의가 뭐냐 주어진 기간 안에 최소 비용으로 그죠 일정기간이죠. 그죠 기간 자 기간 일정기간 비용 코스트 최소비용으로 사용자가 원하는 그죠 내가 나한테 소프트웨어를 개발한 사람이 원하는 대로 해줘야 되는 거지 소비자한테 맞춰야 되는 거죠.
화자 1
04:38
원하는 생산성 있는 품질 좋은 시스템을 개발하기 위한 전반적인 활동을 우리는 뭐다 프로젝트 관리를 한다. 그죠 어 활동 또는 관리계획을 프로젝트 관리를 합니다. 되겠나 자 뭐 한번 읽어보고요. 프로젝트 관리 대상은 어떻게 해요. 우리가 크게 계획관리 품질관리 위험관리로 나눌 책이죠. 계획관리에는 뭐 비용계 비용 관리해서 비용 뭐니 뭐니 돈이잖아. 하나의 프로그램을 개발하는데 이왕이면은 원가 절감 돈 적게 들고 만드는 게 최고지 맞나요? 그렇제 그러니까 비용 관리를 어떻게 해야 되느냐 10억 가지고 만들래 1억 가지고 만들래 똑같은 건데 그죠 비용 관리 중요하죠. 그다음에 일정관리 중요합니다. 그죠 프로그램 하나 개발하는데 뭐 10년 어 뭐 걸렸어도 누가 모아 가겠노 빠른 시간 안에 정확하게 일정 관리가 프로젝트 관리에서 굉장히 중요한 일정관리 주어진 시간 그래서 보통 우리가 실무에서요 보통 이제 소프트웨어 개발 계약을 하잖아요.
화자 1
05:35
국가프로젝트든 우리 회사 같은 경우는 국가 프로젝트를 매년 합니다. 특히 중소기업층 상대로 해 가지고 이제 우리가 여러 매년 수행을 하지 그렇게 이제 보면은 항상 기간을 줍니다. 국가에서 금액 주고요. 일정 기간 6개월이면 6개월 6개월 동안 모하면 다 돈을 배상해야 돼 그 기간 어 원하는 기간 굉장히 중요하거든. 건물을 만드는 기간 하듯이 그래서 일정 관리를 상당히 중요하게 해보고 그다음 조직관리 뭐니 뭐니 해도 또 사람이잖아요. 그지 그 프로젝트를 개발해 나가는 구성원들 관리를 팀웍 관리를 잘해야 된다니까 어 5명 6명이 1팀 돼서 막 프로그램 프로그램 개발하고 있는데, 막 저끼리 싸우고 티 나와 뿌면 이게 되겠나 그래서 조직관리가 또 굉장히 프로젝트 관리에서 중요한 거고, 그 다음에 형상관리 형상관리 가는 경우는 나중에 합니다. 수정입니다. 수정 적절하게 수정을 잘해줘야 돼요.
화자 1
06:31
컴피그레이션 예 시스템 컴퍼레이션 매니지먼트 에스씨엠이라 하는데 요 뒤에 있는 형상관리 그리고 이제 품질관리 품질 관리 다른 말로 품질보증이라면 같은 말이다. 품질보증 좋은 품질이 되도록 관리하는 거 품질관리 그리고 위험 요소에 대처하는 위험관리 뭐 위험 같은 말이에요. 위험관리 그래서 프로젝트 관리대상은 비용 코스트 비용 기간 뭐 또 쉽게 말해 비용 코스트 기간 기관 관리 일정 관리 조직관리 형상관리 품질 관리 위험 관리입니다. 되겠나 이 관리를 어떤 식으로 소프트웨어 공학 입장에서 하느냐 하는 게 문제 나오제 그래서 뭐 어렵진 않다 이거 프로젝트 관리 내가 전산해야 할 업무의 관리 대상이다. 비용이 됐죠 그죠 비용관리 일정관리 조직관리 형상관리 품질관리 위험관리가 프로젝트 관리 대상 상의요 좋습니다.
화자 1
07:26
그리고 또 여기 참고로 효과적인 프로젝트 관리를 위한 3대 요소 3피가 있죠. 3피 뭐가 뭐냐 피플 사람 일 인적관리 잘해야 돼서 피플 가장 기본이 되는 인적 관리를 잘해야 효율적인 프로젝트 관리가 된다. 사람관리 모함 끝장입니다. 프로젝트를 수행하는 이 개발자 관리 모함이 엉망이에요. 그래서 이 IT는 오너가 이 관리자가 컴퓨터를 모르면은 조직관리를 못합니다. 그지 축구팀도 감독이 축구팀 관리를 잘해야 월드컵에서도 사강하고 하지 맞나 히딩크가 왜 뭐 잘했노 사람관리 잘 했거든. 조직관리 잘 했잖아. 맞나요? 똑같은 이야기다 봐요. 그래서 뭐니뭐니 사람이 관리 잘해야 됩니다. 우리 ITS는 전부 사람이 돈이야 사람이 에 그래서 보통 이제 사람에 대한 문제가 많아요.
화자 1
08:19
인적 관리 그다음에 문제 관리 프라블럼 문제관리 사용자 입장에서 문제를 분석하고 기획해야 됩니다. 문제 관리를 잘 해야 되죠. 어 내가 내한테 개발을 어려워 한 사람하고 완전히 동떨어져 증거 이거 개발하면 뭐 하노 어 개발에 갖다 줘 돈도 안 주는 거 그렇죠. 그 요 사용자 입장에서 본 문제를 분석하고 기획을 잘 해야 되는 거 그 다음에 공정관리 작업 공정기조 그죠 개발에 필요한 전체적인 작업계획 그래 이 3피가 뭡니까? 효과적인 프로젝트 관리를 위한 3대 요소다 삼피 피플 피플 프라블럼 프라블럼 그다음에 뭡니까? 프라세스 그죠 3피 예 알아 놓으시고요. 자 그러면은 예 실제 프로젝트 관리를 과연 어떻게 하느냐 소프트웨어 공학 차원에서 좋습니다.
화자 1
09:05
자 그러면 한번 들어가 봅시다 제일 먼저 비용 산정 비용 관리 함 보자 이제 소프트웨어 공학 차원에서 비용 관리를 잘해야 될 거 아니냐 자 비용관리 자 우리가 소프트웨어를 개발하는데 이 프로젝트를 개발하는 데 드는 비용 결정 요소가 있어요. 그죠 비용을 어 뭐 비용이 비싸지느냐 스펜시브 하느냐 칩하느냐 여기는 인제 요새는 제품의 복잡도 내가 만들어질 제품 소프트웨어 복잡하면 돈이 많이 들어가는 거죠. 복잡도도 비용 결정에 영향을 주고 그럼 시스템의 크기 작은 프로그램보다는 큰 게 훨씬 돈이 많이 들어가겠죠. 대규모 그죠 대규모 국가 프로젝트 개인 기업체 프로젝트보다는 국가 뭐 전자 정부 시스템을 만든다던지 그죠 시스템의 크기 또 요구되는 신뢰도 신뢰도도 비용입니다. 그죠 아주 치밀하게 한치의 오차도 없이 완벽하게 개발해 놓고 하면은 머리카락 다 빠지잖아요.
화자 1
10:03
그러니까 신뢰도가 높으면 높을 그럴수록 이제 돈이 더 많이 들어가는 거예요. 그죠 자 프로젝트 요소 비용을 결정해 주는 요소 프로젝트의 요소는 뭐야? 어 요소는 크게 프로젝트 요소가 있고요. 다원적인 요소가 있고 생산성적인 요소였는데 프로젝트 요소는 그 프로젝트의 복잡도 시스템 그다음에 크기 프로젝트의 크기 다 같은 말이다. 프로젝트 시스템 제품 다 같은 말이에요. 그리고 요구되는 신뢰도 요놈이 프로젝트 요소고요. 자원 요소는 인적자원 인적자원구제 고급기술자 많이 쓰면 비용이 많이 들어가지만 초차보다 각 대학 졸업한 아들보다는 아주 10년 이상 근무한 아주 산전수정 공중 라마카 뉴 고급 기술자 프로 데리고 오면 돈이 많이 들어가는 인적 자원 하드웨어 자원 그죠 좋은 기계 좋은 서버 좋은 기계를 많이 투입되면 그 프로그램 개발 비용이 많이 올라가겠죠. 그렇죠.
화자 1
11:01
하드웨어 시스템 자원도 1가지만 고급 라이선스 데이터베이스 같은 경우도 뭐 텐 유저보다는 멀티유저 디비더 시코엘 같은 SQL이라도 어 뭐 사용자 접속이 많이 되는 거 이 소프트웨어 자원 라이선스 같은 경우에요. 생산성 요소는 개발자의 능력과 개발 기한이죠. 그죠 생산성 요소 에 그래서 개발자의 능력과 개발 기한이 또 비용에 영향을 미칩니다. 참고로 알아 놓으시고 자 그림을 딱 보면은 이 개발 비용과 시스템의 크기는 뭐야? 인제 이게 이렇게 쭉 해놨으면 이게 비례죠 비례 비례한다는 거예요. 비례 에 시스템이 크기가 크면 클수록 비용이 많이 올라가는 거예요. 크기가 크면 클수록 그렇죠. 요거 1번 시험에 나왔기 때문에 요 그림을 함 보세요. 크기하고 그다음에 신뢰도 신뢰도가 높으면 높을수록 비용이 올라가죠 신뢰성 있는 소프트웨어를 만들기 위해서는 비용이 많이 발생한다는 역시 비례다잉 신뢰와 비용 개발비용은 비례고요. 자 요거 한번 잘 봅니다.
화자 1
11:58
개발 기관하고 이런 비용은요, 자 여러분 잘못 생각하면 이게 비례 같지만요 이거는 자 여러분들 이거는 실제 뭐 이게 뭐 반비례보다는 뭐 반비례 무관입니다. 무관 개발 기간이 짧다 캐 가지고 비용이 적게 드는 건 아니에요. 어 개발 기한이 짧은 기간 인력 투입을 많이 해버리면 뭐다 비용이 많이 올라가죠 그런 이야기다 그죠 그래서 잠깐 요 거림만 해봐 개발 비용과 기간은요, 꼭 이제 비례 관계는 아니라는 거지 어 그렇잖아. 사람 1명 투입시켜 가지고 1년 걸리는구나 사람 100명 투입시켜 가지고 한 달 하는 거나 비용은요, 100명 투입 투입시켜서 1달 만에 끝내는 게 비용이 훨씬 많이 올라간다 그 이야기입니다. 짧은 기간에도 비용을 많이 발생할 수 있다는 그걸 그려받는 거다잉 요거 참고로 알아놓으시기 바랍니다. 좋습니다. 자 프로젝트 관리에서 첫 번째 관리 비용관리 공부하고 있다.
화자 1
12:50
비용관리 비용 자 그러면은 이 소프트웨어 개발에 들어가는 비용 산정을 해야 될 거 아니냐 비용산정 이 프로그램은 얼마다 어 얼마니까 얼마 내놔라 그래야 되잖아. 그래서 비용 산정을 무식하게 부르는 게 갑이가 모든 제품은 원가가 있고 가격이 있는데, 그 비용 산정을 어떻게 하느냐 무식하게 하느냐 아니냐 그죠 공학 차원으로 하자 이 말입니다. 어 그러니까 이 소프트웨어는 논리가 논리기 때문에 물리적인 제품 같으면 딱 나옵니다. 얼마다 대충 나오지만 원가 들어가는 게 아니지만, 소프트웨어는 전부 다 머리카락 빠지면서 하는 거 아니야. 머리카락 그렇제 완전히 논리적인 일이에요. 그러다 보니까 이 비용을요 정말 노력과 인원과 비용이 많이 들어가는 건데도 소비자들은 모를 수가 있다. 이 말이야. 눈에 보이지 않으니까 프로그램은 그래서 이 비용 산정 기법이 굉장히 중요하죠. 그죠 자 비용 산정을 어떤 기법으로 하느냐 우리 집중 못해도 원리만 아니면 된다.
화자 1
13:49
병태야 순자야 알겄냐 예 자 이 비용을 산정하는 기법은 크게 하향식 비용산정기법과 하향식 그다음에 상향식 있다잉 하향식은 인제 비용 산정을 이렇게 밑에서 내려가는 거고요. 상향식은 이렇게 비용 산정하는 거네 탑다운 방식과 바텀이 있단 말이에요. 하향식 비용 산정 기법에는 전문가의 감정과 전문가 그릇 같은 거예요. 그죠 전문가 전문가 1명으로 간정하느냐 1~2명으로 하느냐 그룹 위해서 하느냐 뭐 이거예요. 그다음에 델파이 기법이 있습니다. 요거는 요 3가지는 하향식이고 상향식은 이제 엘로씨 해 가지고 나인 오브 코드 이렇게 해가지고 원시 코드나인 원시 프로그램의 코드 나인 수요 원시 코드 소스 프로그램에 코드나인 라인 수를 가지고 금액을 측정하는 엘로시 기법 있죠. 예를 들면 COBOL 같은 경우 저 같은 경우는 COBOL을 대한민국 최고로 사용했습니다.
화자 1
14:45
어 한때 날렸다 이 COBOL 하는 컴퓨터 언어로 프로그램 개발해서 COBOL 같은 경우는 LOT 기법인데 핫라인에 천 원씩 했거든. 100나인이면 얼마고 뭐 되고 만 나인이냐 2만 나인이냐 거기에 따라 금액이 달라지는 거예요. 알겠나 나인 오버 나인 오버 이건 뭐야? 나인 오브 코드죠 그죠 코드의 나인 수입니다. 라인 수 가지고 비용을 산정하는 게 이제 LOT 기법이다라는 거고, 개발 단계별 인월수 기법 인월수 해가지고 뭡니까? 인월수 해가지고 어 1달 1달에 펄스 몇 명이 투입되느냐 1달에 투입된 인력 개발 단계별로 1달 기준으로 몇 명이 투입됐느냐에 의해서 개발 비용을 산정하는 거 있지 전부 다 인력 비용 하느냐 PM이라고 하는 거죠.
화자 1
15:38
수학적 산정 이게 가장 수학적 산정기법 완전히 이걸 수학적으로 한번 만들어보자 해서 수학적 산정 기법 코코목 하는 게 대표적이다. 그죠 현재 컴퓨터 소프트웨어 공학 차원에서 이 프로그램 소프트웨어의 단가 즉 비용을 산정하는 방법이다. 그래서 그게 중요하다 시험에 반드시 나온다 하향식과 상향식이고 하향식은 주로 사람이 대충 전문가가 얼마다 전문가니까 이 소프트웨어 1억이다. 뭐 사람이 하는 거예요. 참 이거 객관성이 없는 거죠. 어 사람이 부르는 게 갑이에요. 전문가가 어 이 프로그램 얼마다 이러는 거고요. 상향식은 상당히 인제 좀 객관성이 있는 거죠. 그죠 한양식은 사람이고 이제 이게 객관성이 좀 없는 거예요. 객관성이 조금 결여됐죠 주관적이죠. 이건 주관적 요건 약간 상향식은 객관적이라고 볼 수 있습니다. 계산적으로 하니까 예 이렇게 보시면 되고 함 보자 살짝 지금부터 이것만 알면 돼 에 시험에 이렇게 나오거든요.
화자 1
16:35
예 상향식이 아닌 거 뭐 하향식이 아닌 거 이래 나오니까 자 눈으로 함 보자 하향식은 어떤 거 전문 지식이 많은 개발자들이 회의를 통해서 비용을 산정하는 비과학적입니다. 그 방법이고 어 비과학적 방법 약간 이제 주관적인 방법이죠. 주관적 사람이 뭐 하는 거 주관적인 방법이다. 이것도 좋아요. 전문가 전문가 얼마다 이런 거예요. 그죠 자 프로젝트의 전체 비용을 산정한 후 각 작업별로 단위별로 작업단위별로 단위별로 비용을 세분화합니다. 세분화 그러니까 우리가 소프트웨어를 이렇게 하나 만들면 여러분들 아 저 아래 한번 해보자 아래항골 아래안거리가 하나의 소프트웨어죠 또 다른 말 시스템이죠. 아래안걸릴 시스템이랍니다. 논리적인 시스템 그럼 아래안글도 수많은 프로그램들 있잖아. 이런 뭐야? 불러오기 프로그램 인쇄하기 저장하기 전부 다 프로그램이다잉 저장하기 뭐 여기 새 이름으로 불러오기 복사하기 뭐 하기 쭉 있잖아요.
화자 1
17:32
예 글자 모양 바꾸 전부 다 프로그램이거든 요런 프로그램의 뭐다 어 요런 프로그램을 하나의 큰 시스템에 들어가는 하나의 요런 프로그램 단위 프로그램이야 단위 단위 프로그램이라 합니다. 요 단위 프로그램 우리는 뭐다 모듈이었나 모듈 독립적인 단위 프로그램 모듈입니다. 모듈 알겠나 요런 단위 프레임들이 모여 하나의 큰 아뢰안거리라는 소프트웨어 아뢰안거리라는 시스템이 만들어지죠 어 회계관리 시스템을 만들면 그 안에 모여 전표 임료 프로그램 데타 제조표 손익 계산서 에 뭐 시 3표 이런 프로그램들이 다 있어요. 고런 프로그램들이 뭐다 단위프로그램 단위프로 그 말이죠. 각 작업별 비용 여 단위별 비용을 세분화해 가지고 요건 얼마 불러오기 프로그램은 100만 원 어 저장하기는 뭐 50만 원 이런 식으로 해서 전문가와 금액을 매겨서 통합하는 방법이다. 이 말이죠. 그러니까 하향식이다. 이 말입니다.
화자 1
18:29
하향식 아래안글이라는 소프트웨어 시스템이 전체가 하향식이죠. 추리구조로 비용을 산정하는 기법입니다. 알게나 그래서 프로젝트 전체 비용을 산정한 후 각 작업일로 비용을 세분화하는 것 즉 하향식이다. 그런 이야기고요. 여기에는 전문가나 전문가 그룹 감정 기법이 있고 델파이 기법이 있더라 자 전문가 말 그대로 산전수정 공중력 다 묶은 사람이나 사람들 그룹이 비용 산정을 의뢰하는 거고, 요거는 개인적이고 주관적일 수가 있는 거고요. 델파이는 뭐다 전문가 감정 기법에 주관적인 편견을 보완 주관적인 편견을 보완하기 위해서 많은 정부나 의견을 종합하여 산정하는 기법 즉 1명의 조정자와 여러 전문가로 구성한 결국 사람인데도 요거는 조정자가 있다는 거죠. 조정자 그 전문가만 이야기 듣는 게 아니고 어 이 전문가 이 전문가 조정자 다 들어보고 통합적으로 계산하는 게 뭐다 델파이 기법이다. 이런 이야기다 그죠 알겠나 요 그런 중요한 거 아니에요. 그쵸.
화자 1
19:24
전문가 이야기만 듣다 보면은요, 객관성을 결여될 수가 있잖아요. 요걸 보완하기 위한 거다 됐나 자 비용 산정 기법 중에서 하향식하고 있습니다. 하향식 음 자 비용 산정 기법이요. 자 상향식 산정기법은 뭐다 프로젝트의 작업 단위별로 비용을 산정하는 전체 비용을 산정하는 겁니다. 전체 상향식 그러니까 작은 소단위 해 가지고 이놈을 묶어버리죠 전체 이렇게 비용하는 거예요. 비용 그러니까 이게 상향식 상향식이제 예 자 이 상향식은요, 상향식 또는 전체 전체화죠 이게 전체화 2위로 올라가는 게 전체화 전체화 다른 말로 종합화 다 같은 말이다.
화자 1
20:23
상향식 상향화 전체와 종합화 통합화 뭐 다 같은 말입니다. 통합화 어 전체와 다 같은 말이죠. 그리고 반대로 하향식은 뭐예요? 하향식은 하향식은 인제 전체에서 각 단위를 세분화하는 거죠. 그러니까 하향식은 에 자 말 장난해 해도 되면 안 돼요. 전체가 아니고 세분 하죠. 세분화 세분화 이제 그죠 그다음에 작업 작업화 아 뭐 같은 말이야. 어 단위화 뭐 이래 같은 말이에요. 에 뭔말인지 알겠나 음 참고로 봐주시고 자 상향식 비용 산정 기법 작업 단위별로 즉 단위 프로그램 별로 비용을 산정한 후 전체 비용을 산정한다. 밑에서부터 금액을 산정하고 난 뒤에 다 통합해서 한다. 이 말입니다.
화자 1
21:17
자 원시 코드 나인수 기법은 뭐다 라인 오브 코드는 소프트웨어 각 기능의 AOC를 예측 자료 다 필요 없고 한 라인이 얼마냐 이 말입니다. 그죠 자 측정 용어 이해하기 쉬워 가장 많이 사용하고 예측치를 이용하여 노력 동그래미 개발 비용 개발 기간 생산성의 비용 산정의 요소가 됩니다. 노력 개발비용 개발 기관 그래서 산정 공식은 여러분 몰라도 좋습니다. 노력 인원수 노력 노력 원하는 건 뭐 이렇게 한다. 개발 비용은 이거다 개발 기관은 이거다 생산성은 이거다 이런 거죠. 그죠 그래서 암기할 필요는 없고 이런 것들이 있더라 정도만 아니면 된다. 그죠 그러니까 여러분 직접 여러분이 실은 소프트웨어 어떤 프로그램의 개발비를 산정해라 이런 문제는 나오지 않는다. 해서 아 사냥식 비용 기법에는 LOC 기법이 있구나 이 사안정 공식은 노력 비용을 구하는 거는 개발기관 곱하기 투입 인원이구나 개발비용은 노력 인원 곱하기도 단위비용이구나 눈으로만 살짝 봐놓자 이 말입니다.
화자 1
22:16
직접적인 문제는 안 나온다 그래서 내가 한번 써봤어요. 그죠 그래서 여러분들이 아 원시코드 라인이 어떤 거다 이 정도만 알면 된다. 개발 단계별 인원수 계산 어 에프오토테스크 그냥 노력 기법인데 요거는 이제 LOT 기법을 보완하기 위한 기법으로 각 기능을 구현시키는 데 필요한 노력을 생명주기 각 등급에 산정하는 겁니다. 즉 LOTC 기법보다는 좀 더 정확하다. 이런 이야기야 조금 더 정확하다. 이렇게 보시면 됩니다. 그래서 여러분들 그렇게 뭐 안 써도 되지만 한번 눈으로 살짝 보는 거다 자 됐고요. 자 그다음에 수학적 산 이게 가장 인제 많이 써야죠 수학적 산정 기법 상향식 비용산정 기법으로 개발비용 산정화의 자동화가 목표입니다.
화자 1
23:03
개발 비율을 일일이 사람이 평가한다든지 뭐 이러지 말고 자동적으로 어떻게 개발 비용을 못 뽑아내느냐 해서 만들어지는 게 뭐다 수학적 산정 기법에는 뭐다 코코모 방법 있고요. 뒤에 또 뭐 어 FP 방법이 있고 여러 가지가 있는데, 우선 코코모가 뭐냐 하면은 컨설트리티브 만드는 데 코스트 비 모드죠 그죠 코코모죠 코코모 건축 비진 건축비용 이건 보엠 보엠카는 사람이 컴퓨터 학자제 이 컴퓨터 공학에 많은 이론을 만들어놨죠 그래서 보엠 사람은 보험이 많이 나온다 영국 사람 영국의 컴퓨터 학자예요. 보엠에 의해 발표 가장 널리 사용되는 비용 산정 기법이 뭐야? 수학적 기법 중 코코모입니다.
화자 1
23:49
코코모 그래서 이거는 비용 산정 주요 요소들이면 요것만 하면 돼 자 코코모 어 코코모 기법으로 비용을 산정하는 데 영향을 주는 요소들이 뭐냐 개발 노력 노력 기간 다음 투입 인원 그다음에 인적 비용 이게 초급자냐 중급자냐 고급자냐 이 말이지 요런 것들이 코코모 비용 산정의 요소들이다. 그죠 요것만 하면 된다. 개발 노력 기간 인원 인적비용 되겠죠. 이 인원수죠 투입인원은 이게 인원수를 의미하고 요 인적 비용은 거의 인원 한 사람의 개발자의 능력이에요. 개발자의 능력 인원의 능력 그죠 이게 초급이냐 왜 동물처리 기사 따면 초급 기술자로 생각하거든. 이 초급기술자는 국가 비용은 1달에 한 230만 원 정도 책정돼 있습니다.
화자 1
24:42
국가 프로젝트를 하다 보면 중급자는 300원이 80만 원 뭐 고급자는 500만 원 이랬듯이 어 그러니까 초급자냐 중급자냐 고급 기술자냐 아니면 뭐 어 재정치처럼 초특급인 양 어 부르는 게 갑이다. 뭐 이런 거 예 개발자의 능력이라는 거지 알겠나 개발 노력 기간 투입 인원수 인적 비용이 코코모 즉 수학적 산정 기법에 코코모 비용의 결정적인 요인이다. 하는 거고요. 자 소프트웨어 개발 유형 즉 개발유형 복잡도 및 원시 프로그램 규모에 따라서 조직형이 있고요. 조직형 반분리형 내장이 있습니다. 조직형은 뭐냐 하면은 주로 응용 프로그램 같은 경우 우리 간단한 뭐 회사의 업무 프로그램 같은 거 이런 거겠죠. 보통 나인으로 따지면 5만 나인 이하 되는 거는 조직형 소프트웨어를 한다.
화자 1
25:31
그리고 인제 데자베이스 시스템 같은 경우 반분리 영역 30만 나인 이하 이거는 반분리형 소프트웨어라고 내장형은 OS 같은 것처럼 30만 나인 이상 프로그램의 이 나인 수가 30만 하면 엄청나죠. 완전히 머리 다 빠지죠 그러니까 윈도우 같은 경우는 마이크로소프사의 완전히 초특급 개발자 5천 명이 만들어냅니다. 아예나 윈도우라는 이 프로그램은 5천 명이 붙어있고요. 어떤 기업체 간단한 결제 프로그램 같은 경우 한 사람이 다 해뿌지 제재해주 혼자서 다 해버립니다. 그렇지 이제 그런 이야기다 그래서 나인의 수 즉 규모에 의해서 복잡도 및 원시 프로그램의 규모에 따라서 조직형 소프트웨어냐 반분리형이냐 내장형이냐 그죠 이렇게 분류해 볼 수가 있고 자 이런 코코모 모형의 종류는 뭐냐 하면 기본형 베이직형 코코모가 있고 중간형이 있고 발전형이 있다는 거 베이직 아직 인터미네이터 뭐예요? 그다음에 디테일드 발전 생산성 상세한 거죠.
화자 1
26:25
그죠 기본 중가 발전력이 있다는 거 제목 정도만 알고 있으면 된다. 예 좋습니다. 수학적 산정기법 중 코코모요 코코모 먼저 우리는 비용 산정을 공부하고 있다. 비용 관리 자 그 다음에 이제 수학 기법 중에 풋남 어 풋납 모형이 있습니다. 그죠 요건 다른 말로 생명주기 소프트웨어 라이프사이클 예측모형이라 한다. 소프트웨어 라이프사이클의 전 과정 동안에 사용될 소프트웨어 라이프사이클에 저 사용될 노력의 분포를 가정해주는 모양입니다. 그죠 대형 프로젝트 동그래미 대형 프로젝트의 노력분포 산정에 이용되는 기법입니다. 그죠 그래서 풋나무 많이 쓰질 않는다. 생명주기 전 과정에 들어갈 노력의 분포를 각 단계별로 뽑아내는 거다 그래서 소프트웨어 생명주기 하면 풋남이다. 하는 것만 생각나고요. 대형 프로젝트에 많이 쓰는 비용 산정 기법이다. 하는 거고, 또 늘 이용되는 게 펑션 포인트입니다.
화자 1
27:25
기능 점수 실제 우리 회사에서 계속 몇 년 동안 중소기업층 프로젝트 소프트웨어를 개발하고 있거든. 중소기업청의 업종별 클러스터 이런 걸 하고 있는데요. 뭐 비용 산정을 저는 이걸 합니다. 풍랑 아 저 펑션 포인트 국가에서 펑션 FP 방법으로 해라고 금액 뽑아내라 이렇게 합니다. 기능별 수 모형입니다. 기능별 그 소프트웨어에 각각 요소들의 기능을 기능화를 점수로 전부 뽑아내 가지고 그 기능점수를 통합해서 그 점수당 얼마 해가지고 금액이 나오는 거예요. 이렇게 해서 국가에서 돈을 주는 거거든. 자 5억이다. 이러면은 국가에서 검토를 쫙 하면 기술사들이 즉 에세이들이 보고 아 맞다. 그래서 5억을 집행하고 이렇게 하는 거야. 그죠 그래서 펑션 포인트 모형 실제 실무에서는 굉장히 복잡해요. 이 FP 펑션 포인트로 소프트웨어 금액을 뽑아낼 수 있다카면 진짜 전문가예요. 우리나라에 몇 명 없어요. 에 그래서 이런 공부를 쭉 해야 되는데 이게 기술사들이죠.
화자 1
28:18
기술사 그래서 주로 인제 우리 회사 같은 경우 제가 다 하는 거지 펑션 포인트로 실제 이걸 신문으로 들어가면 굉장히 복잡해요. 그래서 이게 뭐냐 소프트웨어를 구성하고 있는 각 기능별로 가중치를 부여하고요. 그다음 요인별로 가중치를 합산하여 총기능 점수를 산출해 가지고 이 총기능 점수와 영양도를 이용하여 기능 점수를 구한 후 비용을 이 기능점수 곱하기 비용 해서 나오는 거예요. 그죠 기능 점수를 구한다. 펑션 포인트 그래서 요거를 이렇게 말하면 된다. 펑션 포인트 그러니까 소프트웨어로 소프트웨어 시스템이지 이 시스템은 또 수많은 기능으로 돼 있겠죠. 아까처럼 어 뭐 여러 가지 또 이 기능 밑에 또 기능이 있어요. 많은 기능들이 구성되어 있을 거 아니야. 금 이 이 프로그램들 이 기능들의 점수를 전부 다 구해 가지고 통합하면 기능점수가 총 뭐 300점입니다. 그럼 곱하기 어 1점당 얼마 해 가지고 금액을 뽑아낸다 이 말이야. 그죠 그래서 간단하게 요렇게만 아시면은 됩니다.
화자 1
29:17
되구요. 맞습니다. 맞고요. 자 이런 코코모와 푼납 모형은 자 원시코드 라인 수를 중심으로 비용을 산정하는 거고, 기능 점수 모형은 FP 펑션 포인트를 이용한다는 거 코코모와 성남은 엘오씨 원시 코드 나인을 중심으로 요거는 펑션 포인트다라는 거 이거 정리해 주시면 되겠다. 그래서 여러분들이 직접 소프트웨어 금액을 뽑아내라 하는 이런 문제는 안 나온다 그거는 실무에서도 여러분 나중에 전부 에세이 에세이 정말 저처럼 JHH처럼 높은 경지에 이르렀을 때 인제 이걸 우리가 어떤 프로젝트를 할 때 마스터를 PM이라 합니다. PM 프로젝트 매니저가 되었을 때 여러분 공모를 새로 하게 될 거예요.
화자 1
30:02
그래서 실제로 이 소프트웨어 공학은요, 정보처리보다는 기술사들 상대로 한 과목 이하 그렇지만 아주 그래서 우리가 학부 과정을 중심으로 아주 얕게 공부하는 겁니다잉 그래서 실제 여러분들이 IT에서 전문가가 되고 난 뒤에 또 한참 뒤에 나이가 머리 희끗희끗해져 가지고 좀 이게 산전수전 공지는 다 겪고 폼 좀 나올 때 그때 다시 공부하는 겁니다. 그죠 그래서 지금은 시험 위주로만 좀 하자는 거고요. 이 기능 점수만 가지고도 이거요 3박 4일 강의를 해야 돼 에 그래서 기능 점수 구할 수 있는 사람들 잘 없거든. 그리고 기능 점수 풋납 모형 코코모 되겠죠. 자 코코모 풋납 풍션 포인트 기능 점수 이 3가지는 무슨 방법이다. 오케이 상향식 기법 중에서도 뭐야? 수학적 산정 기법이죠. 수학적 산정 기법이라는 거 제목 정도만 알아도 좋다는 겁니다.
화자 1
30:58
그죠 그래서 우리 앞 시간에 소프트웨어 공학의 전반적인 이야기 소프트웨어 크라이시스 소프트웨어 나이프사이클 핵실 자 요번 시간에는 소프트웨어의 관리 프로젝트 관리 대상 그래서 비용 관리 잘해야 되고 일정 관리 잘해야 되고 사람 관리 잘 해야 되고 조직관리 잘해야 되고 품질관리 잘해야 되고 위험관리 잘해야 아주 좋은 프로그램을 만들 수 있다는 거예요. 그렇죠. 그중에서 딱 비용 관리를 어떻게 하는지 비용 산정 기법을 빼앗습니다. 맞나요? 시험은 요게 나오는 거예요. 그죠 비용산정기법에는 하향식이 있더라 하향식 뭐냐 전체 금액 뽑아내고 단위 단위 프로그램 단위 요소들 모듈의 금액은 뒤에 뽑아 세분화하는 거죠. 전체에서 세분화하는 게 하향식이고 상향식이 뭡니까? 작은 것부터 뽑아서 위로 올라가는 것 전체 통합하는 게 상향식이다.
화자 1
31:53
그죠 그러니까 하향식엔 주로 사람이 많이 하지 누가 전문가나 전문가 그룹 또는 조정자가 있는 데이파이 방금 내가 이야기한 요것만 알면 돼 데이파이 그리고 상향식은 주로 수학적 산정 기법이다. 그죠 맞나 이 수학적 산정 기법에 우리가 뭐다 3가지 코코모 풋남 기능 점수가 있었습니다. 정리됐지 방금 여행 요게 시험 문제 나오는 겁니다. 됐습니다. 그죠 아주 깔끔하게 완벽하게 속성으로 때려잡았다. 좋습니다. 그래서 이제 큰 정보처리 기사 산업기사 막판 이제 좋아요. 그래서 오늘 소프트웨어 공학 이제 2과목 생중계로 방송되었고요. 시스템 분석 설계는 어 이제 내가 동시에 뭐 하죠. 이 생중계이기 때문에 그래서 내가 이미 인제 소프트웨어는 생중계고요. 시스템 분석의 녹화로 디씨알 들어갈 거예요. 아니 어떻게 동시에 들어가나 예 동시에 들어갑니까?
화자 1
32:52
그러면 이제 우리가 이거 저 기사 학생들은요, 시스템 무슨 설계만 강의 들으면 자격증은 2개 따지 왜 4과목은 공통이고 소프트웨어 공학 듣고 시스템 무슨 소개 들으면 기사도 시험 치고 산업기사 시험 치라 이 말입니다. 굳이 또 시스템 분석의 강의를 안 들어도 된다. 안 들어도 왜 거의 똑같습니다. 그죠 조금 걱정되면은 시스템 분석 설계 강의를 듣고 시험 치면은 원서를 기사 내고 사는 기사 2개 내면 동시에 2개의 자격증을 취득할 수 있다는 거 여러분들이 참고로 이야기해 놓는다 좋습니다. 그래서 오늘 한두 시간 동안 수고하셨고 내일도 뜨거운 가슴으로 만나 뵙기를 약속드리며 오늘은 여기까지 하겠습니다.
'전진하(JJH)교수님의 강의 > 정보처리기사 산업기사' 카테고리의 다른 글
[정보처리] 소프트웨어공학 - 소프트웨어공학의 발전 추세 (0) | 2024.08.09 |
---|---|
[정보처리] 소프트웨어공학 - 소프트웨어프로젝트관리 2 (0) | 2024.08.09 |
[정보처리] 소프트웨어공학 - 객체지향소프트웨어공학 2 (0) | 2024.08.08 |
[정보처리] 소프트웨어공학 - 객체지향소프트웨어공학 1 (0) | 2024.08.08 |
[정보처리] 소프트웨어공학 - 전통적소프웨어개발론 2 (0) | 2024.08.08 |