728x90
반응형

https://youtu.be/bn-JuYCIuBs



1. 소프트웨어 공학 개요

1-1. 소프트웨어의 개요
-  소프트웨어는 수정이 가능한 부드러운 제품임
-  컴퓨터는 하드웨어와 논리적, 물리적으로 동작함
-  소프트웨어를 포함한 시스템을 소프트웨어 시스템이라 부름
-  소프트웨어는 인간의 일을 대신 처리하는 자동화된 기계임
-  소프트웨어는 컴퓨터 언어로 명령을 내리고, 하드웨어로 실행됨

1-2. 소프트웨어의 특성
-  소프트웨어는 신뢰성, 효율성, 이식성, 편리성, 유지보수성, 재사용성 등을 가져야 함
- (중요) 소프트웨어는 신뢰성이 있어야 하며, 컴퓨터에 설치된 시스템이 되어야 함
- (중요) 소프트웨어는 효율적으로 개발되어야 하며, 모든 컴퓨터에 호환되어야 함
- (중요) 소프트웨어는 1대의 컴퓨터에만 국한되지 않고, 다양한 컴퓨터에 이식될 수 있어야 함
-  소프트웨어는 사용자의 요구에 맞게 동작해야 하며, 유지보수성이 높아야 함

1-3. 소프트웨어 공학의 개요
-  소프트웨어 공학은 소프트웨어의 특성과 개발 방법론에 대한 학문임
-  소프트웨어 공학은 컴퓨터 구조, 운영체제, 데이터베이스, 네트워크 통신 등을 다룸
-  산업기사 시스템 설계는 소프트웨어 공학과 유사한 성격을 가짐
-  소프트웨어 공학은 시스템을 설계하고, 프로그램과 데이터를 분석하고 개발함
-  소프트웨어 공학은 컴퓨터를 통해 정보를 처리하고, 관리하는 방법에 대한 학문임

2. 소프트웨어의 특성과 위기

2-1. 소프트웨어의 특성 이해
-  소프트웨어의 기본 요소는 입력, 처리, 출력으로 구성됨
-  입력 요소는 데이터와 프로그램을 포함하며, 처리 요소는 프로그램의 실행과정을 의미함
-  출력 요소는 결과의 재입력이 포함되며, 피드백은 입력과 출력 사이의 차이를 보정함
- (중요) 시스템 소프트웨어의 5가지 요소는 입력, 처리, 출력, 제어, 피드백임

2-2. 소프트웨어 위기의 이해
-  소프트웨어 위기는 소프트웨어의 품질 저하를 의미함
-  소프트웨어 위기는 소프트웨어 개발 속도가 하드웨어 개발 속도에 따라가지 못할 때 발생함
- (중요) 이는 소프트웨어의 요구와 공급 간의 격차에서 비롯됨
-  소프트웨어 위기는 빠른 소프트웨어 공학의 발전이 필요함

2-3. 소프트웨어 위기의 예시와 해결방안
-  소프트웨어 위기는 현재 하드웨어 발전 속도에 뒤처지는 경우 발생함
-  이는 소프트웨어 개발자가 사용자 요구를 충족시키지 못하는 문제를 야기함
- (중요) 소프트웨어 위기를 해결하기 위해서는 적절한 제어와 피드백이 필요함
-  특히, 인적 자원의 부족이 소프트웨어 위기를 초래하는 주요 원인임

3. 소프트웨어 위기와 공학

3-1. 소프트웨어 위기의 이해
-  소프트웨어 위기는 하드웨어 속도를 따라가지 못하거나 사용자 요구 조건을 충족시키지 못하는 것임
- (중요) 소프트웨어 위기를 초래하는 요소는 인적 자원의 부족과 소프트웨어 생산성 저하임
-  기술력과 로또 복권이 미래의 인생 목표가 될 수 있는 유일한 가능성임
-  IT 기업에서 소프트웨어 생산성 저하로 인해 많은 인력 부족 현상 발생함
-  기술자를 양성하여 우리나라에서 소프트웨어를 수출하는 것이 중요함

3-2. 소프트웨어 공학의 개념과 발전
-  소프트웨어 공학은 소프트웨어의 품질과 생산성 향상을 목표로 함
-  소프트웨어 공학은 체계적이고 학문적인 이론에 기반을 두고 빈틈없이 소프트웨어를 잘 만들어내고 위기를 극복함
-  소프트웨어 공학은 60년대에 소프트웨어 위기의식이 생겨났을 때부터 시작되었음
-  70년대에는 구조적 분석 설계 기법이 도입되고, 80년대에는 다양한 분석 설계 방법론이 등장함
-  90년대 이후 객체지향 기술의 도입과 소프트웨어 재사용, 재공학 개념의 등장으로 진보함

3-3. 소프트웨어 생명주기
-  소프트웨어 생명주기는 소프트웨어의 탄생, 운영, 폐기로 구성된 주기적인 개발 과정임
-  소프트웨어 생명주기 모형 중 가장 일반적인 모델은 정의 단계, 개발 단계, 유지보수 단계로 나뉨
-  소프트웨어 생명주기는 정의 단계에서 분석 단계를 거쳐 타당성 검토, 프로젝트 계획, 개발을 진행함
-  소프트웨어 생명주기를 개발 단계로 나누면 개발, 유지보수, 폐기의 순환적 과정이 보임
-  각 단계에서 기술자의 능력, 의사 전달, 프로젝트 복잡도, 관리 능력 등이 소프트웨어 생산성에 영향을 미침

4. 소프트웨어 생명주기

4-1. 소프트웨어 생명주기 개요
-  소프트웨어 생명주기란, 프로젝트를 개발해 출시하는 과정을 말함
-  소프트웨어 생명주기는 분석, 설계, 구현, 유지보수의 단계로 구성됨
-  분석 단계는 요구분석, 타당성 검토, 계획을 포함함
-  설계 단계는 계획설계, 제너럴 설계, 디테일 설계로 나뉨
- (중요) 유지보수 단계는 검사, 테스트, 실행으로 이루어짐

4-2. 소프트웨어 생명주기 모형
-  소프트웨어 생명주기 모형은 폭포수 모형, 단계별 모형, 프로토타임 모형, 나선형 모형, 포지티브 모형, 알라이드 모형으로 나뉨
-  폭포수 모형은 전통적이고 전형적이며, 하향식 모델임
-  타당성 검토, 계획, 분석, 설계, 구현, 테스트, 유지보수가 포함됨
- (중요) 폭포수 모형은 하향식 모델이며, 2개 이상의 단계가 체계적으로 진행되며, 각 단계가 상위 단계에 영향을 미치지 않음
- (중요) 유지보수 비용이 가장 많이 드는 단계임

4-3. 폭포수 모형의 특징
-  폭포수 모형은 전통적이고, 실무에서 사용되는 하향식 모델임
- (중요) 타당성 검토와 계획, 분석, 설계가 각각 포함되며, 분석을 통해 명세서를 도출하고, 이를 바탕으로 설계를 진행함
-  분석 단계에서는 시스템 분석, 요구 사항 검사, 소프트웨어 생산 적합성 판단을 포함함
-  분석 결과를 바탕으로 타당성 검토를 하고, 이후 계획을 수립함
-  이후 분석, 설계, 구현, 테스트, 유지보수를 거쳐 실제 운영되면서 시스템이 가동함

5. 소프트웨어 개발 모델

5-1. 소프트웨어 개발 과정
-  소프트웨어 개발은 크게 업무 분석, 설계, 구현, 임플리먼트, 테스트, 가동, 운영 단계로 나뉨
-  업무 분석과 설계를 시스템 업무분석가와 프로그래머가 담당함
-  가동시키고 운영하는 사람은 오퍼레이터라 부름
-  소프트웨어 개발은 오퍼레이터와 프로그래머로 나뉨
-  자격증은 정보처리 기사, 기술사는 기사급이고, 박사급은 프로그래머 자격증임

5-2. 소프트웨어 개발 모델
-  소프트웨어 개발 모델에는 프로토타입 모델과 나섬형 모델이 있음
-  프로토타입 모델은 사용자 요구사항을 정확히 파악해 개발된 소프트웨어 견본품 모델을 만듦
-  사용자의 요구사항과 맞지 않으면, 모델을 수정하고 시험함
- (중요) 프로토타입 모델은 요구사항을 정확히 반영하는데 중요한 역할을 함
-  나섬형 모델은 위험 분석 기능을 추가한 대규모 프로젝트에 적합한 모델임

5-3. 나섬형 모델과 4세대 모형
-  나섬형 모델은 계획 수립, 위험 분석, 공학적 개발, 고객 평가를 반복적으로 수행함
-  4세대 모형은 사용자와 개발자가 사용할 수 있는 동적 언어를 이용한 비절차적 모형임
-  4세대 모형은 절차 없이 개발된 모형으로, 앞당겨야 할 절차 없이 바로 개발이 가능함

6. 소프트웨어 공학 개론

6-1. 소프트웨어 공학의 등장과 소프트웨어 라이프 사이클
-  소프트웨어 공학은 소프트웨어 개발 과정을 학문으로 만듦
-  소프트웨어 생산성, 비용 절감, 정확한 프로그램 제작을 위한 도구, 절차를 연구함
-  소프트웨어 라이프 사이클은 분석, 설계, 구현, 검사, 유지 보수 단계로 구성됨
-  분석 단계에서는 소프트웨어의 타당성과 요구사항을 조사함
-  설계 단계에서는 업무 분석, 요구사항 분석, 분석을 바탕으로 설계도를 작성함

6-2. 소프트웨어 개발 모형과 병행 개발
-  레이더 모형은 재사용을 통한 병행 개발을 위한 모형임
-  병행 개발을 위해 각 팀별로 병행 개발을 위한 단계를 추구함
- (중요) 리드만이 제시한 소프트웨어 개발 모형을 기반으로 재사용과 병행 개발을 강조함
-  소프트웨어 개발 모형은 분석, 설계, 구현, 검사, 유지 보수 단계로 구성됨
-  소프트웨어 유지 보수는 비용이 많이 들기 때문에 유지 보수 단계를 강조함

6-3. 소프트웨어 공학의 사례와 중요성
-  강사는 실제 회계 관리 프로젝트를 통해 소프트웨어 공학의 중요성을 경험함
-  프로젝트에서 분석과 설계가 가장 중요하다고 강조함
-  코딩과 유지 보수가 가장 비용이 많이 들기 때문에 유지 보수 단계를 강조함
-  소프트웨어 공학은 오랜 시간 동안 산업 전반에 걸쳐 중요한 역할을 해옴
-  소프트웨어 공학은 소프트웨어의 생산성, 효율성, 안정성을 높여줌

화자 1
00:12
전국에 계시는 우리 엠투엠 생방송 안방 가족 여러분 오늘도 뜨거운 가슴으로 두사부 일체일 정신으로 감동의 수업을 함께 하겠습니다. 아 좋아요. 좋습니다. 예 아 자 이제 야 여러분들 이제 대단하다 4과목 이미 우리가 컴퓨터 구조 운영체제 데이타베이스 그다음에 네트워크 데이터 통신 우리가 산업기사 학생들은 정보통신 똑같은 거죠. 그죠 공통과목 4과목 가볍게 맞췄다고 그죠 여러분도 모르는 사이에 이제 컴퓨터의 세계 에 정보처리와 점점 가까워지는 그대 그대가 되었죠.

화자 1
00:59
자 이제 오늘부터는 마지막 과목 이제 우리 기사 학생들은 소프트웨어 공학 소프트웨어공학 우리 산업기사는 시스템 부스가 설계 그죠 그래서 과목이 아 성격이 똑같습니다만 요 어 기사 소프트웨어 공학과 산업기사 시스템 무스 설계는 다르게 강의를 한다는 거죠. 우리 소프트웨어 공학은 계속해서 생중계로 들어가고요. 내가 또 동시에 이제 우리가 산업기사 시대분석에는 강의를 모 하니까 요놈은 앞 시간에 했는 걸 녹화로 아마 여러분한테 나갈 겁니다. 그래서 고려하시고 자 우선 소프트웨어 공항으로 들어가 봅니다. 자 좋습니다. 자 이 소프트웨어 공학은요, 역시 20문제 나오죠. 소프트웨어공학 20문제 출제가 됩니다. 그죠 아주 어 이 소프트웨어 공학 역시 뜨거운 것 같습니다. 개념만 잡아 놓으면 장난이고요. 만약에 암기한다면, 상당히 어려워질 수가 있습니다.

화자 1
01:54
그죠 그래서 아주 개념적인 이야기들이다. 소프트웨어공학 자 요 논문은 이제 총 8개의 챕터에 걸쳐서 우리가 하거든. 예 여러분 좋아요. 어 이 소프트웨어 공학의 개요 소프트웨어 공학의 개요에서 보통 한 2문제 정도 예상되겠죠. 물론 때에 따라서 3문제도 나오지만 평균 한 2문제 정도요 그리고 중요한 게 이제 1 2로 나눠졌는 거 소프트웨어 프로젝트 관리 그죠 그리고 전통적 소프트웨어 개발 방법론 방법론 어떻게 개발하겠다. 그리고 최신 객체 지향 소프트웨어개발 방법론 소프트웨어 공학 아 요 중요하다 그죠 그래서 인제 요 각각에서 이제 보통 4~5문제씩 그죠 4~5문제 정도 나온다 이렇게 생각하면 됩니다. 어 보통 그리고 마지막 소프트웨어 공학의 발전 추세에 있어도 한 2문제 뭐 1~2문제 정도 예상됩니다.

화자 1
02:52
그렇지 그래서 통상 요런 기준으로 우리가 소프트웨어 공학 20문제가 나온다는 거죠. 그래서 시험을 떠나서 어떻게 하면은 품질 좋은 생산 좋은 프로그램을 개발할까 소프트웨어를 만들까 시스템을 만들까 하는 이야기다 그죠 그래서 한번 자 전반적인 이야기 요 정도로 우리가 하고요. 자 이제 한번 첫 번째 챕터 2에서 3문제 나오는 걸로 들어가 봅니다. 소프트웨어 공학의 개요 에 자 이 소프트웨어 시스템 소프트웨어는 여러분 이미 뭐 너무나 잘하는 거죠. 그죠 이 소프트웨어는 뭐고 부드러운 제품 부드러운 제품 즉 수정이 가능하죠.

화자 1
03:32
플렉시블 수정이 가능한 어 제품을 우리는 소프트웨어다 그죠 유연하고 그죠 부드럽고 이런 거 그래서 이제 어 그니까 인제 컴퓨터에서는 바로 수정이 가능한 프로그램을 우리는 소프트웨어라 한다는 말씀 프로그램 즉 소프트웨어는 컴퓨터 하드웨어를 동작시켜주는 우리 인간인연인 명령어들의 집합 즉 프로그램입니다. 그죠 프로그램 그러니까 명령어들이 모여서 인스트럭션들 명령어만 모여 가지고 하나의 프로그램이 되고요. 이 프로그램들을 우리가 총체적으로 뭘 하나 소프트웨어를 하잖아요. 그죠 그래서 어 이 명령어는 뭐로 내리노 컴퓨터가 알아듣는 언어로 내려야 되겠죠. 그래서 이미 우리가 운영 체제에서 컴퓨터가 알아듣는 프로그램 냉귀지 컴퓨터 냉귀지 이미 정의를 다 했습니다.

화자 1
04:24
만나 병태야 그래서 거 이 프로그램 랭귀지는 한번 정리하면은 우리가 저급으로 로우 레벨 랭귀지가 있고 미들 레벨 랭귀지 하이레벨 랭귀지가 있다고 이야기 다 했제 그래서 노우 레벨 랭귀지는 컴퓨터가 바로 알아듣는 일과영으로 구성된 뭐 기계 머신 랭귀지고 중급 언어는 뭐다 1과 0을 모아모아서 특정 기호로 표현 표현하는 언어 모았다에서 어셈블리 랭귀지를 의미하고 이제 고급 언어는 뭐다 우리 이거 인간이 사용하는 자연어 내추럴 랭귀지죠 그죠 내추럴 랭귀지는 또 뭡니까? 번역 개념의 컴파일러 랭귀지가 있고 폭력 개념의 인터프리터 랭귀지가 있다는 거 그래서 컴퓨터 언어 정리를 다 했잖아. 맞나요? 그래서 이런 컴퓨터라는 언어로 우리는 명령을 내렸죠 이 명령에서 컴퓨터 하드웨어는 움직인단 말이에요.

화자 1
05:17
그래서 이 명령어들이 모여서 뭐다 하나의 프로그램이 되고 또 이런 프로그램을 우리는 총체적으로 뭐라 부른다 소프트웨어다 이렇게 부르는 거죠. 소프트웨어 또는 소프트웨어 시스템 같은 말이에요. 소프트웨어를 불러드렸고 또는 논리적인 시스템은 소프트웨어요. 물리적인 시스템이 뭐다 바로 하드웨어를 의미하지 그렇지 그래서 컴퓨터는 물리적인 시스템인 하드웨어와 논리적인 시스템 소프트웨어가 모여서 우리 인간의 일을 대신 해준다. 우리 인간의 일을 대신 처리해주는 자동화 된 기계다 그죠 그래서 컴퓨터는 데이타 우리 인간의 데이터를 프라세싱 오토 프라세싱 해서 우리 인간의 원하는 정보를 만들어 준다고 해 가지고 컴퓨터는 뭐 한마디로 DPI라고 이미 우리는 뜨거운 걸 쓰므로 다 알고 있죠. 그래서 이런 거 이미 정리됐다. 그러죠 소프트웨어 이 소프트웨어는 이제 하드웨어에 비해서 뭡니까?

화자 1
06:11
논리적이고 유연하고 수정이 가능하고 이 하드웨어는 뭐다 물리적인 전자 장비들이고 그죠 한번 만들어 놓으면 수정할 수 없는 것들 물리적인 요소들 눈에 보이는 것들 이미 정의를 다 우리가 잘 했습니다. 좋고요. 자 그러면 이 과목에서 소프트웨어 특성 품질을 보죠. 소프트웨어는 어떤 특성을 가지고 있느냐 우리가 컴퓨터가 얻은 언어로 소프트웨어를 만들죠 원래 정보처리기사는 뭐하는 사람이고 데이터를 정보로 만들어주는 즉 컴퓨터한테 명령을 내릴 수 있는 사람 어 컴퓨터와 대화할 수 있는 사람 프로그램을 의미하죠. 그죠 그래서 우리 정보처리 기사 산업기사는 프로그램머 IT 기술자를 양성하는 국가 자격증이라는 거 그렇죠.

화자 1
06:58
근데 이놈이 요즘은 또 각종 시험에 가산점을 주다 보니까 공무원 가산점이나 각종 임용고시 가산점이나 가산점 쪽에 많이 이용됩니다마는 IT 강국을 위해서는 뭐 이 소프트웨어 개발자가 많이 양성돼야 된다는 거 늘 내가 이야기하는 것 아닙니까 그럼 이런 좋은 소프트웨어는 어떠냐 특성은 뭐냐 이 소프트웨어는 신뢰성이 있어야 되겠죠. 프로그램은 신뢰성이 없는 프로그램은 프로그램이라 할 수 없제 항상 정확하고 우리 인간의 일을 대신에 어 컴퓨터는 대신시키는 명령어들의 집합이기 때문에 신뢰성 그다음 아주 효율적으로 개발이 돼야 되고 이식성인 이식성이 높아야 된다. 이식성이 뭐다 이 소프트웨어는 1대의 컴퓨터에만 돌아가는 게 아니고 한번 한번 만들어 놓은 소프트웨어는 모든 컴퓨터의 포팅 이식될 수 있도록 다 돌아갈 수 있는 이식성이 높은 게 좋은 거다 이 말이고요. 그다음에 이 소프트웨어는 뭐야? 편리해야 되겠죠.

화자 1
07:52
우리 사용자가 원하는 대로 동작을 해주는 프로그램이어야 된다는 거 그리고 유지 보수성 메인 테너스 그리고 소프트웨어는 항상 수정이 쉬워야 되겠죠. 유지보수 유지보수가 되도록 개발이 돼야 된다는 거 유지보수 항상 업무는 변하니까 그렇제 그리고 또 재사용 유저 아주 중요한 이야기 리유저 재사용 1번 개발된 소프트웨어는 어 1번으로 끝나는 게 아니고 이 모듈 어 이 프로그램 이놈은 또 딴 데도 계속 이용할 수 있으면 좋더라 그죠 재사용성이 용이해야 된다. 이런 것들이 소프트웨어의 특성이다. 그죠 그래서 어려운 건 아니고 살짝살 당연한 거 아닙니까 소비자의 특성은 신뢰성이 있어야 되고 효율성 이식성 편리성 유지보수성 재사용성이 용이해야 된다는 거 당연한 이야기를 한번 눈으로 살짝 보면 되는 거야. 됩니다. 예 좋습니다.

화자 1
08:45
자 그래서 여러분 이제 시스템의 구성요소 또는 소프트웨어의 구성요소 이런 소프트웨어를 또 다루는 논리적인 시스템이라 하잖아요. 그죠 이런 시스템 즉 소프트웨어는 어떻게 구성되느냐 물론 시스템 분석과 설계에서도 합니다마는 또 하나 이제 여러분 저 어 이야기를 하면은 우리 기사 학생들은요, 그 기사 산업기사도 응시해도 좋습니다. 에 그러니까 기사하고 산업기사하고 4과목 똑같거든. 1과목만 달라요. 즉 기사는 지금 배우는 소프트웨어 공학이고 우리 산업기사는 시스템 부서 설계거든. 근데 또 제목만 다르지 또 여러 가지 공통적인 게 너무나 많다 그죠 그래서 소프트웨어 공학을 듣고 우리가 또 인제 시험칠 때 원서를요 기사도 내고 산업기사도 내면 좋습니다. 그죠 어 그래서 가산점도 똑같이 적용되니까. 보통 시험장에 가면은 기사를 시험치고 산업 기사를 치거든.

화자 1
09:40
그죠 기사를 시험치고 산업기사니까 기사 학생들은 둘 다 응시하란 말이야. 기사도 원서 내고 산업기사도 왜 공부와 똑같은데, 뭐 그렇죠. 그래서 자격증 2개 따면 됩니다. 기사 합격하고 산업 기사 합격해도 자격증은 2개 나옵니다. 기사 의문수첩 산업기사 수첩 그죠 기사 학생들은 산업기사를 응시하면 좋다. 왜 소프트웨어 공학 듣고 시험만 치면 되고 혹시 뭐 시스템 분석 설계 공부하고 싶으면 고 과목만 따로 또 들으면 되잖아. 이해되나 꼭 들을 필요는 없습니다만 산업기사는 꼭 합격이 되겠다. 하면은 기사 소프트웨어 공학 듣고 산업기사는 단과 형태로 시스템 무슨 설계만 들으면 되잖아. 그러면은 우리는 산업기사도 응시할 수 있고요. 산업기사 학생들은 뭐 기사를 응시 못합니다. 자격 요건 때문에 알겠제 특히 우리 기사 소프트웨어 공학 듣고요. 시스템 무슨설계 거의 또 과태 과태료 한번 살짝 보고 둘 다 응시해 주면 좋다. 자격증 2개 기사 식당에 두 군데 갈 수 있다.

화자 1
10:39
알겠나 병 대야 돌려야 좋습니다. 자 그런 이야기 자 이런 소프트웨어의 구성 요소는 이제 크게 인제 3요소 요가 입력 처리 출력이 3요소고요. 제어 피드백까지가 포함되면 이제 시스템 소프트웨어에 5요소 이래 이야기하거든. 중 어 뭐 아주 쉽죠 반드시 시스템은요, 소프트웨어 시스템 뭐 이건 뭐 하드웨어 시스템도 1가지다 이 시스템은 크게 반드시 5가지 요소 적게는 3가지 요소를 갖춰야 된다는 거 반드시 입력 파트가 있어야 해야 되겠죠. 프로그램도 그렇고 컴퓨터도 그렇고 입력 설명하자 알겠죠. 데이터를 입력받는 거 데이터와 프로그램 그리고 처리 프라세싱 그리고 그 결과를 출력해 주고요. 또 이 처리가 제대로 되기 위해서 적절한 제어가 일어나야 되고 그리고 피드백은 뭐냐 피드백은 중요합니다.

화자 1
11:30
여러분 입력 처리 출력은 시스템 소프트웨어 3요소요 제어하고 피드백은 5 요소다 근데 피드백은 뭐냐면 이제 입력을 통해서 처리된 결과가 출력이 돼 나왔는데 결과가 이게 나왔어요. 근데 내가 원하는 결과는 이거예요. 에 그래서 컴퓨터가 처리된 어 소프트웨어로 처리된 결과가 내가 원하는 결과하고 다르지요 에 상이하다 이 말이에요. 다르다 이 말이에요. 에 달랐을 때 어 새로운 결과 내가 원하는 결과를 다시 도출하기 위해서 피드백 피드가 뭐고 먹이를 다시 공급해야 되겠지 데이터를 재입력하는 과정 재입력 과정이 피드백이야 재입력 단계 알겠나 자 재입력은 뭐다 피드백은 어 컴퓨터로 처리했는데 입력 과정 처리 적절한 제어에 의해서 처리가 되고 출력이 됐는데 그 결과가 내가 원하는 결과가 아니란 말이야.

화자 1
12:24
알겠나 그래서 내가 원하는 결과를 얻기 위하여 다시 데이터를 재입력하는 과정은 뭐다 피드백이라는 거죠. 피드백 그래서 자 피드백까지가 시스템의 5요소요 입력 IPO는 3요소입니다. 그죠 그래서 IPOCF는 5 요소다 라는 거 실제 좋습니다. 자 이거 뭐 아주 쉬워 소프트웨어 공학은 여러분들 이제 핵심적인 것만 알면 너무나 쉬운 거잖아요. 나머지는 슬슬 보고 넘어갑니다. 그죠 자 소프트웨어 위기 중요하다 이게 무슨 말이냐 하면 소프트웨어 위기 예 자 소프트웨어의 크라이시스를 하죠. 소프트웨어 크라이시스 예 위기다 이 소프트웨어 위기는 바로 소프트웨어의 품질 저하를 초래합니다.

화자 1
13:13
품질저하 질 높은 프로그램을 개발해야 되는데 떨어지는 에 그러니까 소프트웨어의 이 특성을 만족모하는 소프트웨어 이게 인제 소프트웨어 위기의 결과인데 이 소프트웨어 위기가 뭐냐 이 말입니다. 즉 소프트웨어 개발 속도가 하드웨어 개발 속도에 따라가지 못하는 문제가 위기라고 하는 거죠. 자 이게 뭔 말이냐 현재 여러분 피씨 같은 경우도 우리 여러분 가지고 있는 펜티움 컴퓨터에 있죠. 그런 성능이 64비터예요. 64비트 어 하드웨어는 현재 64비터 컴퓨터입니다. 1번에 64개의 금덩어리를 처리할 수 있는 64개의 금덩어리를 될 수 있는 힘을 가지고 있는 거예요. 이 하드웨어를 지시하는 소프트웨어 즉 소프트웨어 중에서도 OS죠 이 소프트웨어는 현재 여러분 32비트입니다.

화자 1
14:02
32비트 소프트웨어 기술은 현재 31미터 수준이야 어 이거 기계는 기계는요 컴퓨터는 64개의 금덩어리를 될 수가 있는데, 그걸 즉시 내리고 명령 내리는 소프트웨어 기술은 뭐다 32미터밖에 안 되는 거거든. 나는 64개를 될 수 있는데, 맞나 시키는 게 뭐고 32개씩 들어 32개씩 들어 이러는 거예요. 그래서 현재 하드웨어가요 이 프로세스 시피뉴 기술이 어 하드웨어가 훨씬 소프트웨어보다 발전돼 있어요. 배인상 그러니까 하드웨어 시피뉴 소프트웨어 OS죠 하드웨어 대표적인 게 이 프로세스죠 마이크로 프로세스 기술이 소프트웨어 대표적인 게 OS 아니야. 운영체제보다는 배 이상 지금 빠르게 발전돼 있거든. 그죠 이걸 뭐다 소프트웨어 크라이시 위기다 소프트웨어 이게 빨리 발전해야 된다. 이 기계가 이만큼 발전돼 있으면은 이 기계를 움직여주는 명령어들의 형태도 구조 그리고 64비트가 돼야 되는데 지금은 32비트가 표준이죠.

화자 1
15:01
여러분의 사용하는 윈도우가 32비트 OS고 여러분 집에 있는 PENTIUM 컴퓨터는 64비터 플라세심을 가지고 있는 기계약 CPU를 가지고 있는 맞제 그러니까 요런 걸 우리는 소프트웨어 위기예요. 그러니까 소프트웨어 빨리 소프트웨어 공학적으로 발전을 시켜 가지고 하드웨어와 동등한 어떤 속도로 나가야 되겠다는 게 이제 나가지 못하는 게 소프트웨어 위기라는 거죠. 알겠나 요즘 뭐 나와있는 비스타는요 비스타도 여러 가지 버전이 있죠. 그죠 홈프리미어 이런 거는 32비터지만 뭐 비즈니스라든지 엔터프라이즈 같은 경우는 64비터를 구현하고 있습니다. 그래서 지금 소프트웨어 기술이 많이 좋아집니다마는 현재까지 하드웨어에 어떤 속도보다는 늦다는 거죠. 그래서 하드웨어 항상 빠르게 먼저 움직인다는 거 이거 소프트웨어의 크라이시스다 그리고 또는 뭐 또 다른 말하자면, 소프트웨어 요구와 공급 간의 격차죠 그죠 요구 요구는 큰데 공급이 항상 딸리는 겁니다.

화자 1
15:58
어 그것도 소프트웨어 위기라 카고 특히 소프트웨어가 즉 소프트웨어 개발자가 사용자 유저의 요구 조건을 충족시키지 못하는 거도 소프트웨어 위기를 초래하는 거지 그렇지 사용자는요 아주 빠른 프로그램 아주 간편한 걸 요구하는데 이 개발자가 그 사용자의 요구를 따라 가지고 소프트웨어가 따라가지 못하는 문제들 그리고 또는 가장 또 중요한 게 인적 자원의 부족이에요. 현재 내가 뭐하노 100만 양배설을 주장하잖아요. 그죠 지금 여러분들 대졸자 이렇게 많은데 정말 IT 강국 IT 기술자는 정말 턱없이 부족하다 우리 회사도 안 가지고요. 지금 우리가 있는 게 가상 디지털 자재인데요. 여기에 우리 협회들이 있어요. 벤처 기업의 오너들이 정규직으로 모이면 제일 문제가 인적자원의 부족이야 사람이 없단 말이에요.

화자 1
16:51
지금 여러분 세상은요, 취직이 안 돼가 난리인데 여러분 대학 졸업하면 갈 데 없는 난리인데 우리 IT 쪽에서는 사람이 없어서 난리란 말이야. 이 큰 문제죠 그니까 이 대학이 여러분 큰일 났습니다. 정말 기업이 요구하는 시대가 요구하는 기술자를 양성해야 되는데 전혀 기술과는 동떨어진 시대와 동떨어진 학생들만 배출하다 보니까 여러분들은 이태백이 되죠. 20대 태반이 백수 백수인데 우리 IT 기업은 사람이 없어 난리예요. 사람 기술자 특히 소프트웨어 개발자가 없어져 난리예요. 지금 알겠나 그래서 요번 기회에 특별한 인생의 목표가 없는 사람은 우리 IT 세계로 오세요. 병재야 순자야 오너라 아주 괜찮은 세상입니다. 이게 자기 만족이 있고 행복이 있고 꿈이 있는 곳이다. 그래서 기술력 내가 그랬잖아. 앞으로는 연생 역전의 기회는 2가지밖에 없다. 기술 아니면 뭐고 로또 복권해요.

화자 1
17:43
로또 복권 어 그래서 로또 복권보다는 기술이 좋은 거다 그죠 그래서 인제 사람이 없는 것도 인적 자원의 부족입니다. 그죠 IT 기술자가 전 세계적으로 굉장히 부족하고 우리나라에도 여러분들 굉장히 부족하다 그죠 그래서 개인적으로 저도 온라인 오프라인에서 내 제자들 IT 기술자들 양성을 하고 있는데, 아주 부족해요. 그래서 나는 100 천만양명소의 천만 양명소리를 주장하죠. 그죠 그래서 우리나라도 이런 기술자를 양성해서 우리나라에서 쓰고 전 세계 수출하는 그게 휴머니어란 거는 휴머니어 내 말이다. 휴머니어 예 완성 어 완성된 사람 제품화된 사람 기술자를 의미하는 거예요. 그죠 그래서 인적 자원의 부족도 소프트웨어 위기를 초래하는 하나의 요소입니다. 그죠 그래서 이런 것이 다 뭐다 소프트웨어 위기를 발생시킨다.

화자 1
18:34
이런 소프트웨어의 품질 저하를 초래하더라 다시 소프트웨어 위기는 하드웨어 속도를 따라가지 못하는 거 또 공급 요구의 요구 요구인데 어 공급이 이제 요구를 못 따라가는 거 그다음에 사용자의 요구 조건을 충족시키지 못하는 거 또는 기술자의 부족 이런 것들이 소프트웨어 위기를 초래하더라 그런 말씀이야 좋습니다. 좋아요. 쉽지요 IT 강국 100만양병설 좋습니다. 자 그럼 소프트웨어 공학은 뭐냐 이 말입니다. 소프트웨어 엔지니어링 에서 필요하죠. 한마디로 가장 품질 좋은 소프트웨어를 만들기 위한 도구 방법 절차들을 총칙한 게 공학이다. 이제 소프트웨어 개발하는 것도 공학 차원에서 조직화하고 기술하자는 거제 그렇죠.

화자 1
19:26
그리고 소프트웨어 위기를 극복하기 위한 방안으로 연구된 하나의 학문인데 소프트웨어 공학은 그러니까 소프트웨어 위기가 발생을 하잖아. 이 위기를 막아보자 위기 와서 소프트웨어의 품질을 높이자 이런 게 소프트웨어 공학의 목적이죠. 그러니까 소프트웨어의 품질과 생산성 향상 상상이 소프트웨어 공학의 목적이 되는 거다 그냥 아마 또나게나 만드는 게 아니고 아주 체계적으로 학문적으로 이론에 입각해 가지고 빈틈없이 소프트웨어를 잘 만들어보자 그리고 소프트웨어 위기를 극복하자 품질을 높이자 소프트웨어 생산성을 향상시키자 이게 뭐다 소프트웨어 공학입니다. 소프트웨어 공학 와 배우라고 하면 이거죠. 알겠나 소프트웨어 품질 향상이다. 그죠 품질 향상하기 위해서 도구 방법 절차들을 학문화했는 것들이 소프트웨어 공학이다. 이런 이야기죠 우리가 배우는 과목이다. 그죠 도구 방법 절차입니다.

화자 1
20:18
도구 방법절차 아주 쉽제 자 소프트웨어 공학의 발전을 참고로 잠깐 보면요 이제 60년대 이전에는 뭐 소프트웨어 공학하는 개념이 없었죠. 거의 다가 하드웨어 위주였으니까 그 소프트웨어 공학이 시작이 되었고 60년대에는 소프트웨어 위기의식을 느끼기 시작합니다. 하드웨어는 발전이 잘되는데 소프트웨어는 아주 그 당시에 어셈블리 수준이었죠. 70년대 들으면서 이제 구조적 분석 설계 기법이 도입되제 이제 소프트웨어를 분석 설계도 구조화시키자 구조적 이런 개념이 있었고요. 소프트웨어 생명주기와 개발 도구가 70년대 등장을 하고 왜 80년대에는 다양한 분석 설계 방법론이 등장하고 하드웨어 가격이 또 하락하면서 다양한 소프트웨어가 등장하고요. 이제 90년대에서 현재는 이제 객차지형이죠. 소프트웨어 공학에서 객체지향 기술의 사용 도입으로써 이제 컴퓨터가 대중화되기 시작합니다.

화자 1
21:17
대중화 그리고 4세대 언어 포 제너레이션 랭귀지가 도입되고 소프트웨어 뉴즈 재사용 재공학 개념이 도입이 돼요. 재사용 재공학 개념이 도입이 되더라 그리고 이제 케이스라든지 형상 관리 등의 기술이 진보가 됩니다. 기술이 진보되었다는 거고, 자 이 소프트웨어 생산성을 따지는 요소에는 그죠 투입된 비용 노력 등에 대한 생산량을 의미하는 거고, 자 이런 소프트웨어 생산성 생산성은 뭐고 제일 적은 인원으로 제일 적은 비용으로 가장 품질이 좋은 프로그램을 개발하는 거죠. 그렇지 그러니까 원가는 적게 들고 원가는 적게 들고 이 상품은요, 아주 품질 좋은 게 가장 물건 만드는 데 기본이 됐듯이 이 소프트웨어도 1가지 소프트웨어도 이제 뭡니까? 원가 하는 게 인력이죠.

화자 1
22:12
어 이 소프트웨어를 개발하는데 투입되는 개발자들 투입 인력을 적게 하고 기간이죠. 기간을 짧게 하고요. 그죠 인력과 기간 또는 거기에 비용 비용을 적게 들여가지고 아주 품질 좋은 품질 좋은 우수한 소프트웨어를 만들어내는 게 가장 생산성을 높이는 거 아니냐 당연한 이야기 그 이야기다 그죠 이런 생산성에 미치는 영향들은 뭐다 개발자의 능력이다. 기술자의 능력 에 아주 어 우수한 기술자가 프로그램 개발하는 거 하고 초짜하고 다르죠 그러다 보니까 우리 IT 쪽에는 이제 경력자들을 많이 법제 대학 졸업한 초짜들 데려오면 아무것도 못 하거든. 돈 주고 가르켜 줘야 되기 때문에 그러다 보니까 이제 경력자들을 많이 선호합니다. 그러다 보니까 이제 뭐 이게 막 어 왔다리 갔다리 하죠.

화자 1
22:59
박찬호가 돼가지고 예 개발자의 능력 또 원활한 의사 전달이나 프로젝트의 복잡도 내가 개발할 프로젝트의 복잡한 거 기술 수준 또는 관리능력 등이 소프트웨어 생산성을 좌우하더라 하는 건 당연한 이야기들이다. 그런 이야기들입니다. 좋습니다. 뭐 공부할 건 없죠 이거는 소프트웨어공학 한번 눈으로 봐주는 이야기 그다음에 여러분 소프트웨어 생명주기 자 요번 챕터에서 이게 중요하죠. 소프트웨어의 생명주기다 소프트웨어의 라이프 사이클이다. 이렇게 하죠. 라이퍼 사이클이다. 요 있네 소프트웨어 라이프사이클 생명주기 그니까 여러분 봐봐요. 1송이에 국화꽃이 피더라 피우기 피우기 위하여 천둥도 치고 소쩍새도 울고 비바람도 치듯이 하나의 프로그램 하나의 소프트웨어 하나의 시스템 같은 말이다. 탄생되기 위해서 여러 단계를 거칩니다.

화자 1
23:58
그냥 바로 만들어져 만들어지는 거 아니다. 그죠 이런 걸 우리는 소프트웨어 생명적이 다른 말로 소프트웨어의 개발 단계라 한다잉 개발 같은 말이에요. 개발 단계 개발 과정 다 같은 말입니다. 자 어떤 단계를 거쳐 가지고 소프트웨어는 탄생되고 그리고 운영되고 폐기 되는지 그죠 그런 이야기다 소프트웨어가 개발되기 위하여 분석 단계 설계 단계 구현 단계 그다음에 유지보수를 각 공정단계로 구성한 모델을 우리는 소프트웨어의 나이프 사이클이라 하잖아요. 나이프 사이클 음 그래서 여기 인제 이 소프트웨어 나이프스타입의 모형이 여러 가지가 있어요. 그중에서도 가장 일반적인 소프트웨어 생명주기는 뭐냐면 그게 정의 단계가 개발 단계 유지보수 단계로 이렇게 나눠요 정기 단계는 분석 단계라고 하거든요.

화자 1
24:49
정의 단계 그게 인제 분석 단계인데 내가 개발해야 할 이 소프트웨어 프로젝트의 타당성 검토 검사 개발해도 될지 안될지 개발해서 어 개발 전보다 생산성이 일어날지 안 일어날지 그죠 타당성검토 그다음에 프로젝트 계획 그다음에 분석 요분석 요런 걸 우리는 정의 단계에서 하는 거거든. 개발 단계는 이제 실제 설계를 해야죠 개발하기 위해서 디자인하고 구현 컴퓨터 언어로 코딩 하는 거죠. 구현하고 그리고 구현되어 있는 프로그램이 소프트웨어가 제대로 됐나 안됐나 검사하는 걸 개발 단계에서 하고요. 유지보수 단계는 이제 개발됐기 때문에 검사에서 이상이 없기 때문에 실제 사용하죠.

화자 1
25:29
운영하고 운영하다가 수정되는 업무를 수정해주는 유지보수 메인터넌스죠 그죠 그래서 그게 정의 개발 유지보수 단계인데 에 그니까 이제 하나의 소프트웨어는 어떻다 분석 그죠 이 분석 그러니까 분석 단계 다른 말로 정의 단계 그죠 그러니까 타당성 검토와 계획 단계와 요구 분석 단계가 인제 이 분석 단계에 인제 1번과 2번은 분석 단계에서 하겠죠. 그죠 그리고 설계는 크게 계략설계 제너럴한 설계 전체적인 설계 디테일 설계 그죠 계략설계 제너럴 디자인 그다음에 디테일 아주 상세히 설계가 있습니다. 설계를 하고 그다음 구현 단계는 이제 구현모의 코딩이죠. 프로그래밍이죠. 코드화한다. 다른 말로 프로그램으로 작성한다. 프로그래밍이라 하잖아요. 코딩 프로그래밍 같은 말이죠.

화자 1
26:24
구현 임플리먼트 단계고 그다음에 이제 구현단계 뭐 구현단계는 여기까지 다 구현단계라 할 수가 있습니다. 그다음에 인제 뭐다 또 검사단계 검사단계 테스팅 그다음에 실행 실제 실행을 한번 해보죠. 그죠 여기고 그다음에 이상이 없으면은 이제 뭐 운영 및 유지보수 단계에서 시스템이 정상화 가동이 되겠죠. 오퍼레이팅이 되죠. 오퍼레이팅 가동이 되면서 이제 전산화가 이루어지되 하나의 소프트웨어 탄생돼서 우리 인간의 업무를 대신해 줍니다. 그러나 어 그래서 소프트웨어 생명주의죠 이게 생명은 프로젝트 내가 개발해야 할 이 프로그램을 우리는 프로젝트 업무를 프로젝트라 하죠.

화자 1
27:11
프로젝트 프로젝트 프로젝트를 한다이 프로젝트 또는 뭐 업무적 업무 업무 그래서 요런 분석 설계 구현 유지 보수 좀 더 구체적으로 이야기하면은 이제 어 요구분석 타당성 검토 계획과 요구분석 그리고 계량설계 상세 설계 코딩 통합 검사 검사 단계 실행단계 운영 및 유지보수요 되겠습니까? 그래서 소프트웨어의 라이프 사이클이다. 이런 사이클을 가지고 어 하나의 소프트웨어가 탄생되더라 그런 이야기입니다. 그죠 자 좋습니다. 자 소프트웨어 그다음에 생명주기 모델을 한번 보자 방금 봤는 것들은 일반적인 거죠. 일반적인 거고, 이걸 이제 각 소프트웨어 공학자들이 에 이 컴퓨터 학자들이 여러 가지 모형을 만들어 놨어요. 그죠 그 모형의 특징들을 잠깐씩 보자 이 말이죠.

화자 1
28:11
그래서 대표적인 생명주기 모델 모형은 한 6가지가 있죠. 그죠 어 가장 고전적인 게 폭포수 모델 워터폴 모델입니다. 어 그 다음에 단계별 모델 그다음에 프로토타임 모델 그리고 나선형 모델 그다음에 포지티 모델 알레이디 모델이 있다. 그죠 그래서 뭐 가끔씩 어 이 중량의 포커스 모델입니다마는 각 모델 소프트웨어의 라이프 사이클의 모형에 대한 문제가 출제가 많이 되죠. 그죠 자 제일 먼저 폭포수 모델을 한번 할까 폭포수 모델 이 폭포수 모델 얘기하면 워터폴이죠. 말 그대로 워터폴 인자 그대로니까 분석 설계 구현 검사 유지보수 단계를 폭포수처럼 만들어 놨다 이 말입니다. 그죠 에 그래서 이놈은 전통적 또 전형적 고전적 모델입니다. 그죠 전통적하고 전형적이고 타이프컬한 모델이다.

화자 1
29:07
그리고 하향식 모델이제 아 반드시 하향식 밑으로 늘어가죠 요 단계가 끝나면 요 단계 요 단계 끝나면 요 단계 아주 체계적으로 이렇게 프로그램을 개발하는 단계라 해 가지고 하향식 모델이 많이 폭포수 폭포는 어 이 폭포는 위에서 밑으로 항상 내려가잖아요. 올라오는 건 없제 그러니까 하향식 모델이란 게 중요한 거고, 반드시 전단계 앞단계 끝나야만 다음 단계를 진행하는 그런 특징을 가지고 있고 2개 이상의 단계가 변경되어 수행되지는 못합니다. 예를 들면 타당성 검토와 계획 같이 진행이 안 된다는 거죠. 에 그래서 폭포스 모델은 제일 먼저 타당성 검토를 하제 그죠 내가 현재 소프트웨어 시스템을 해야 할 프로젝트 이 프로젝트 프로젝트를 한다. 이걸 내가 현재 소프트웨어를 개발해야 할 의무 어 내가 현재 소프트웨어로 개발해야 할 업무를 뭘 한다. 프로젝트랍니다.

화자 1
30:03
프로젝트 어 그럼 이 업무가 이제 전사나 소프트웨어로 만들어져도 될지 안될지 타당한지 안달한지 타당성 검소를 하셨다 타당성 검사 거기 검토 과정에는 이제 뭐 처음에 이제 타당성 이 프로젝트의 요구 요구 사항을 요구 사항을 검사하죠. 검사 그리고 또는 뭐 현장검사 에 어 이 검사를 하는 거죠. 타당성 검사 또는 요구 사항 검사를 하고 그리고 아 이거 소프트웨어로 만들면은 생산적이겠다. 안 만든 것보다는 수작업하는 것보다는 프로그램으로 하는 게 낫겠다. 판단되면 이제 뭡니까? 계획이 들어가죠 프로젝트 계획이 들어가죠 어 계획이 들어가고 난 뒤에 실제 이제 분석이 들어갑니다. 분석 에 시스템 어너리시스 분석 분석 어너리시스가 들어갑니다. 분석이 들어가고 그냥 분석된 요거 분석해서 나온 명세서를 보고 설계 디자인 들어갑니다. 디자인 똑같애요.

화자 1
31:00
우리 집 짓는 거하고 그럼 이제 디자인 설계도를 보고 컴퓨터 노래를 승정해서 구현을 해줬구요. 임플리먼트 다른 말로 코딩 다른 말로 프로그래밍 프로그래밍 컴퓨터를 옮기고 그리고 테스트하죠. 테스트 그죠 이상이 있나 없나 테스트를 해 가지고 이상이 있으면 뭡니까? 이상이 없으면은 인제 개발 완성이죠. 이상 에러지 에러 에러가 발생하지 않으면은 이제 실무에 투입돼서 이제 운영되면서 유지보수 유지보수 이 유지보수에서 비용이 가장 많이 듭니다. 유지보수 그죠 하고 이상 있으면 에러가 발생해 버리면 에 이 에러가 발생하는 걸 우리가 에러를 어 우리 컴퓨터에서는 벌기란다 벌레라 하죠. 벌레 에 벌레 뻑이다. 이러거든요. 뻑뻑 났다 이러거든요. 애락하는 말보다 실무에서는 벅이다. 벌레 아니 나방벌레를 벅이랍니다.

화자 1
31:53
벅 옛날에 그 애니아 컴퓨터가 돌아갈 때요 갑자기 컴퓨터 잘 돌아가다가 써버렸어 그래가지고 컴퓨터를 움직이는 사람이 가보니까 그 컴퓨터 컴퓨터 톱니바퀴로 돌아가는데 그 톱니바퀴 안에 나방벌레가 딱 끼어 있었거든. 그래서 컴퓨터가 작동 안 되고 소프트웨어가 에러가 터지는 걸 그때 거기서 유래돼 가지고 버그이 발생했다. 나방벌레가 벌레가 생겼다 이래 이야기한다. 참고로 알아놔라 예 부엌입니다. 그래서 에러가 발생하면 다시 뭡니까? 분석 단계로 새로 가죠 그죠 어 이렇게 에러를 수정하는 작업을 우리는 무슨 작업이 아니라 디버깅이라 합니다. 디버깅 벌레를 다이 죽이는 작업에서 디버깅을 한다. 벌레를 자 컴퓨터에서 소프트웨어를 수정하는 작업 수정작업을 뭘 한다. 디버깅 왜 디버깅이고 벅 벌레를 다 죽인다 해 가지고 디버깅을 합니다. 그죠 그래서 이게 소프트웨어 왜 라이브 사이클 중에서도 폭포수 모형이죠.

화자 1
32:49
폭포수 타당성 검토를 끝나면은 계획이 들어가고 계획이 끝나면 분석하고 업무분석을 하고 그리고 끝나면 디자인하고 끝나면 구현하고 구현이 끝나면 검사하고 그죠 검사하다가 에러가 발생하지 않으면은 이제 실제 운영되면서 그 프로그램을 약간 약간 수정이 되겠죠. 업무의 업무를 보면서 약간약간 수정되는 거 유지보수 그죠 이런 식으로 시스템이 가동되고 그죠 에러가 발생하면은 에러를 수정하는 작업이 뭐다 디버깅 작업을 한다. 되겠나 하향식 모델이라는 거 폭포수 모델 그죠 폭포수 모델 가장 고전적인 소프트웨어의 나이크 사이클이다. 어 가장 전통적이고 실제 여러분 실무에서 반드시 이런 과정을 거쳐가면서 프로그램이 개발된다.

화자 1
33:35
그래서 여러분 보면은 크게 이야기하면 업무 분석 업무 분석 어닐리시스 에 에이 음 분석 그다음에 설계 디자인 그 다음에 구현 임플리먼트 또는 코딩 그리고 테스팅 그죠 그리고 이제 가동 오퍼레이팅 오퍼레이팅 되죠. 가동되면서 항상 뭐다 메인터랜스 유지보수가 돼야죠 유지보수 에 항상 고정적인 게 아니고 가동되면서 그 업무를 반영해서 약간 약간 수정해 주는 거죠. 그렇죠. 그래서 이 단계예요. 이 단계 근데 업무를 분석하고 설계하는 이런 사람을 우리는 에세이라 합니다.

화자 1
34:20
시스템 애널리스트 언낼리지스터 시스템 업무분석하고 코딩하고 테스팅 하는 사람이 프로그래머에서요 프로그래머 이게 우리는 프로그래머라 하고 프로그램 마 프로그램 작성하는 사람 가동시키고 이제 사용하는 컴퓨터 시스템을 운영하는 사람은 오퍼레이트라 합니다. 오퍼레이터 오퍼레이터 오퍼레이터다 하지 그죠 그래서 컴퓨터에서 인제 이 에세이 이제 저 같은 사람의 에세이 시스템 애널리스트 분석과 그리고 실제 이제 우리 팀장들이 프로그램머가 되는 거고요. 그다음에 고 밑에 부사수들이 컴퓨터를 가동시키는 오퍼레이트가 된다. 그래서 컴퓨터의 직업은 크게 오퍼레이터 그리고 프로그램머 에세이로 나눠집니다. 에세이 그죠 우리 정보처리 기사는 프로그래머 자격증이고 기술사가 뭐다 에세이죠. 에세이 여러분들 기사 자격증 따고 1년 동안 실무 경력이 있고 실력이 있으면은 정보처리 기술사도 있다.

화자 1
35:17
기술사 그래서 기술사가 굉장히 어렵고 완전히 박사급이죠. 그죠 그래서 나중에 기술사까지 애널리스트까지 돼라 데소 알겠나 이런 게 있다는 거 참고로 알아 놓으시고요. 자 폭포수 모델 여러분 봤제 소프트웨어를 개발하는 단계죠 개발단계의 방법론이다. 음 자 그리고 이제 프로타입 모델은요, 원형 모형이다잉 자 요거 자 사용자 요구사항 땡그래미 요구사항 나오면 프로토 타입 요구사항을 정확히 파악하기 위해 실제될 개발된 소포트웨어 견본품의 모델 하우스부터 만들어주는 거죠. 어 사용자가 어 이런 걸 만들어도 가는데 뭐다 다 만들어 가지고 이런 거 나오면 뭡니까? 이거 안 맞죠.

화자 1
36:04
그럼 사용자의 요구사항을 불충족시키는 거지 어 그러니까 실제 만들기 전에 경본품을 딱 만드는 모델하우스 아파트 짓기 전에 모델하우스 딱 만들어 가지고 소비자들한테 니가 살고 싶은 집이 말라 이렇게 모델 하우스 오픈하듯이 그죠 이 프로타임 모델은 뭐고 만들기 전에 사용자 요구사항을 정확히 이론적으로 파악해서 실제 개발된 소프트웨어 견본품 모델 하우스를 만들어 최종 결과물을 예측하는 모형이 프로토타입 포토폴리오 프로토타입 그죠 모델이다. 포포스 모델의 단점을 보완했다. 포포스 모델은 어떻습니까? 타 당선 끝나고 끝나고 끝나고 다 만들어 나오죠. 만들고 난 뒤에 요구사항하고 안 맞으면 다시 만들어야 되잖아요. 그죠 그러니까 고걸 보완했다. 자 프로타임 모형 요구사항을 수집하고 신속한 설계를 하고 그다음에 프로타임 구축 가상 모형을 만들죠 만드는 모델하우스를 만들었고 고객 평가가 들어갑니다.

화자 1
37:04
소비자들한테 당신이 요구하는 의뢰자한테 사용자한테 이 프로그램이 맞나 소프트웨어가 맞나 시스템이 맞나 그죠 프로그램이 맞나 소프트웨어가 맞나 시스템이 맞나 이렇게 물어보는 거고, 그리고 좀 틀리면은 뭡니까? 고객하고 뭐다 프로타입을 조정하죠. 이 모델하우스를 약간 잠깐 수정을 해서 실제 이제 세일에다 구현이 되는 겁니다. 알겠나 그래서 원형모델이다. 뭐는 프로토타입 모델 프로 프로토 타입 프로타임 모델은 모델은 원형모형이라는 거 되겠어요. 사용자의 요구사항을 정확히 파악하기 위해 소프트웨어 견본품을 만든다. 되겠나 좋습니다. 그죠 이정도만 알아도 충분하다 프로타임 모델 그러다 보면은 사용자 요구사항을 최대한 반영을 많이 하겠죠. 그죠 이거 만들어 둬야 하는 사람의 어 그 요구사항들을 만들어주는 게 최고입니다.

화자 1
38:02
그래서 보통 실제 실무에서 가장 중요한 게 뭐냐 하면 이 소프트웨어를 만들고 의뢰하는 사람하고 개발자하고 그 차가 너무 커요 그 차를 인제 굉장히 줄여 가야 되고요. 그러니까 경력자들은 과거 경험이 많은 사람들 그걸 잘 알아서 잘 만들고요. 경험이 없는 사람들은 많은 실수를 하지 그러니까 ITU에는 우리가 경력자가 그렇게 많이 필요한 거예요. 왜 과거 경험 이 짠밥 짠밥이제 그래서 완전히 다르다 그죠 똑같은 어떤 소프트웨어를 만드는데 아 이게 초급자 중급자 고급자에 따라서 완전히 달라집니다. 기간 비용 초급자는 돈 10억 들여서 만들고 이 고급 사용자들은 짠밥 많은 사람들은 1억 가지고 만들어 버리잖아요. 그죠 그래서 그런 것들이다. 결국 인적 자원의 능력이다. IT 기술자의 실력이 컴퓨터는 좌우한다는 거지 알겠나 그런 이야기입니다. 좋습니다.

화자 1
38:52
프로토타임 모델 좋고 자 낯선형은 뭐냐 나선형은 이제 보엠이라는 컴퓨터학자가 제안했는 건데 포포스 모델의 장점과 프로토마이드 장점에 뭐 위험분석 동그래미 위험분석하면 나선형이다. 위험분석 기능을 추구한 모델입니다. 나선형 꽈배기 모형 가장 현실적인 모형으로 대규모 프로젝트에 적합 대규모 프로젝트에 적합하다는 거죠. 그러니까 4단계를 뭐야? 자 계획 수립 단계 그리고 위험 분석 위험 분석이 들어가고 그다음에 개발 공학적 개발 고객 평가를 4단계로 해 가지고 꽈배기처럼요 조금조금씩 나선형 계획수립 위험분석 요렇게 요런 식으로 나선형 이제 나선형 나선형 이런 식으로 개발 단계를 4단계로 분류해 가지고 반복해 나가는 아 이런 모델이제 이게 나선형 모델이라 합니다. 뭐 위험분석 기능을 추가했다. 어디에 폭포수 모델의 장점과 프로타임 모델의 장점이었어요. 되겠나요?

화자 1
39:48
자 나선요 계획 수립 위험분석 공학적 개발 고객평가 이놈을 뺑빽뱅 조금씩 쪼금씩 쪼금씩 반복적으로 수행하면서 소프트웨어를 개발하는 모형이다. 뭐가 나선형 모형은 모델은요, 좋습니다. 나선형 그 다음에 인제 포 사지티 포 제너레이션 테크니컬해 가지고 4세대 4세대 모형은 뭐냐 사용자와 개발자가 쉽게 사용할 수 있는 뭐 동그라미 포지엘 4세대 언어를 이용한 비절차적 모형입니다. 절차가 없는 모형이다. 앞당계 전부 절차가 있었죠. 무슨 단계 무슨 단계인지 절차가 없는 모형이고 중요한 건 포지엘 포지엘 같은 경우 인제 객체 지향 언어들이죠. 그죠 요구사항 수집을 하고 설계를 하고 뭐 포지를 이용해서 생성한다. 뭐 소프트웨어를 그리고 검사하는 단계다 그죠 그래서 포지엘 관한 말 아시고요.

화자 1
40:45
자 R 레이더 모형은요, 어 뭐냐 하면 혼합모델에서 이 4GT 기법의 모형에다가 리우저 재사용 리우저 재사용을 이용하여 각 팀별로 병행 개발을 위한 병행 개발을 위한 모형입니다. 병행개발 동그라미 그렇죠. 그래서 네이디 모형은 뭐 책에도 잘 안 나오지만 제가 한번 썼다 그죠 그래서 레이디 모형은 재사용 동그라미 재사용하면 레이디 모형 뭐 병행 개발을 위한 모형이다. 병행해서 개발에 들어가는 각 단계를 병행해서 추구를 한다는 거 그죠 RAD 모형이었습니다. 그래서 이 소프트웨어 공학의 개요 어렵지 않제 그래서 여러분들 소프트웨어 중요한 건 뭐였습니까? 소프트웨어 공학이 왜 등장했느냐 소프트웨어 공학은 소프트웨어 개발하는 과정을 학문으로 만드는 거죠.

화자 1
41:27
그래서 소프트웨어 공학과 컴퓨터 공학과 대학에서 이제 공학 차원에서 이제 컴퓨터 프로그램을 이제 만들어 내가는 과정 왜 하느냐 소프트웨어의 품질 저하를 막기 위한 즉 소프트웨어 위기를 극복하기 위한 학문이 이제 아니 그러나 소프트웨어 생산성 있는 돈 적게 들고 재빠르게 정확한 프로그램을 만들기 위하는 그 도구 방법 절차들을 연구하는 학문이 뭐다 소프트웨어 공학이고 이 소프트웨어를 개발하는 단계를 우리는 뭐라 한다. 소프트웨어의 라이프 사이클이라 하고요. 그 단계는 크게 뭐다 분석 단계 설계 단계 구현 단계 검사 단계 유지 보수 단계가 있더라 그죠 그래서 분석 단계는 뭐다 크게 보면은 내가 이거 개발해야 할 소프트웨어의 타당성 검토를 하지 타당성 조사를 합니다.

화자 1
42:16
아 그러면 개발해도 좋다 하면 그 다음에 뭐가 들어가노 어 근데 인제 분석이 들어가죠 그 업무분석 요구사항 분석 어널리시스 분석 단계를 마치고요. 그리고 설계 들어갑니다. 설계 제너럴한 설계 전체 설계를 하고 DITAL 하나하나씩 전부 설계도를 만들어냅니다. 설계도를 만들고 난 뒤에 이제 적당한 컴퓨터 언어를 선정해서 코딩 구현 개발 등하제 개발 단계 등화재 직접 대가리 딱 빠져가면서 개발을 하잖아요. 그래서 개발이 끝나고 나면은 제대로 됐나 안됐나 가는 게 뭐다 검사 단계죠 그래서 검사 단계에서 에러가 발생하지 않으면 완제품이다. 완성이 돼서 실무에 투입이 돼서 이제 컴퓨터 프로그램이 커뮤니티 돌아가자 돌아가면서 우리 인간의 업무를 대신 해주고 그리고 바뀐 업무는 유지보수 메인터넌스요 계속 메인터넌스를 통해서 계속 가동이 되고 나중에 사용 안 하면 폐기를 하는 거고요.

화자 1
43:11
에러가 발생하면 디버깅 수정 작업을 거치고 이런 사이클을 우리는 뭘 한다. 소프트웨어의 생명주기다 하나의 소프트웨어가 탄생에서부터 죽을 때까지 분석 설계 구형 검사 유지보수 단계를 거치면서 소프트웨어는 돌고 돈다 돌고 돈다는 그런 이야기 알겠죠. 실무에서도 정확하게 그 과정대로 일을 합니다. 그래서 특히 소프트웨어는 여러분의 영원한 스승 제재치가 산전수전 공주전 다 겪었다 수많은 프로젝트를 내가 했잖아요. 그래서 어 참 이 강의할 때마다 아주 새로운 게 많아요. 그래서 내가 제일 처음 프로그램 개발했던 게 여러 가지가 있는데요. 실제 회계 관리하는 걸 만들었거든. 회계관리 만들 때 이 과정을 그대로 그걸 겪었습니다. 그래서 만들고 난 뒤에 내가 만든 게 이제 중소기업의 3천만 원씩 그 당시 팔렸거든. 90년 91년도예요.

화자 1
44:08
그리고 그건 어 만들고 난 뒤에 포항 앞바다에서 대승통곡을 했고 그때 인생의 가장 큰 행복을 맛봤던 거예요. 행복은 돈이 아니고 그죠 돈이 아니고 내가 꿈꾸던 걸 내가 못하는 걸 할 수 있게 되는 그 과정에서 이 과정을 다 거쳤고요. 그래서 가장 중요한 단계가 실은 분석 설계나 코딩은 별거 아니다. 분석 설계가 굉장히 중요합니다. 그리고 코딩 검사 유지보수 가장 비용이 많은 드는 단계는 뭐다 실은 유지 보수다 그래서 컴퓨터 소프트웨어는 크게 개발 과정이 있고 개발 구축이죠. 그리고 운영단 운영이 있거든. 실은 비용은요, 개발 쪽에 들어가는 것보다 나의 운영 운영비가 훨씬 많이 들어가요 그래서 메인터넌스의 가장 큰 비용이 들어간다는 거죠. 여러분들 착각하면 안 된다. 개발 비용보단 개발해 놓은 놈을 운영 유지 보수하고 운영하는 데 비용이 엄청나게 많이 들어가요 그래서 개발비 운영비 이렇게 보통 분리를 하거든.

화자 1
45:06
그래서 고런 것도 알아놓으시고 자 오늘 소프트웨어 공학 첫 시간 계류를 가지고 했죠. 그렇죠. 이 시험 나오는 건 만화재 소프트웨어의 라이프 사이클에서 나오겠죠. 뭐 그리고 소프트웨어 크라이시스가 뭔지 그렇죠. 요 두 놈이 바로 시험에 등장하는 문제들이다. 그거 아니면 낼 게 없더라 됐나요? 자 요렇게 해서 소프트웨어 공학 첫 번째 챕터 개요를 마칩니다. 그죠 한 10분 쉬다가 이제 다음 챕터로 만나 뵙겠습니다. 잠시 후에 돌아오겠습니다.

728x90
반응형
posted by 아이윤맨
: