728x90
반응형

https://youtu.be/oSMy3WR9c3U



1. 소프트웨어 개발

1-1. 소프트웨어 개발의 생명주기
-  소프트웨어의 탄생과 죽음을 고려한 생명주기를 강의함
-  소프트웨어 개발의 초기 단계인 분석 과정을 설명함
- (중요) 분석 과정에서 DFD, 소단위 명세서, DBS, 개체 관계도, 상태 전이도 등을 사용함
-  분석 도구를 요구명세서나 분석명세서로 불림
-  분석 단계의 산출물이 시스템의 요구를 명세화한 요구명세서임

1-2. 설계 도구와 방법론
-  설계 단계에서 상향식과 하향식 설계 방법을 설명함
-  상향식 설계는 소 단위부터 설계하여 위로 통합하는 방식임
-  하향식 설계는 큰 그림에서 세분화하여 구체화하는 방식임
-  하향식 설계에는 모듈화가 중요하며, 모듈 간의 결합도가 강한 모듈이 우수함
-  히포, 총괄도표, 독식, NS 차트 등 하향식 설계 도구를 소개함

1-3. 전통적 소프트웨어 개발 방법론
-  전통적 구조적 소프트웨어 개발 방법론을 다룸
-  프로젝트 관리, 분석, 설계, 구현, 검사, 유지보수 등 단계를 소개함
- (중요) 전통적 방법론에서 1과 2로 배우는 프로젝트 관리, 구조적 방법론, 객체 지향적 방법론, 유지보수를 강조함
-  분석, 설계, 구현, 검사, 유지보수의 단계적 접근법을 설명함
-  문제 풀이와 마찬가지로 각 단계별 핵심 포인트를 암기하는 것이 중요함

2. 프로그래밍과 언어의 구현 방법

2-1. 프로그래밍과 구현의 이해
-  프로그래밍은 적절한 컴퓨터 언어를 선정하여 프로그램으로 옮기는 과정임
- (중요) 구현은 설계된 설계명세서를 기반으로 모듈 단위로 설계하고, 코딩하는 단계임
-  테스트는 만드는 과정에서, 디버깅과 단위 테스트가 독립적으로 이루어져야 함
-  코딩의 기본 원칙은 설계를 원칙으로 해야 하며, 간단명료하게 해야 함
- (중요) 테스트는 없어야 하며, 단위 테스트까지가 구현 단계임

2-2. 구조적 프로그래밍의 특징
-  구조적 프로그래밍은 복잡성을 줄이고, 분기 없이 코딩하며, 모듈 단위로 작성함
-  하향식 프레임 작성, 순차, 반복, 선택 구조로 제어하며, 단일 입구와 단일 출구 구조로 작성함
- (중요) 프레임은 입력 단일 입구로 들어와 처리되어 단일 출구로 나가도록 작성함
-  목표는 프로그래밍 언어를 선택하는 것임

2-3. 프로그래밍 언어의 분류와 특징
-  프로그래밍 언어는 저급언어(머신 랭귀지), 중급언어(어셈블링), 고급언어(함수, 객체 지향)로 분류됨
-  저급언어는 번역이 필요 없으며, 중급언어는 번역이 필요, 고급언어는 번역 필요
-  프로그래밍 언어를 선택할 때는 업무에 맞는 언어를 선택해야 함
-  각 언어마다 특징이 있어, 프로그래밍 언어의 특징을 익혀야 함

3. 소프트웨어 개발과 검사 방법

3-1. 소프트웨어 개발과 객체 지향 언어
-  기계어를 짜는 사람 대신 객체 지향 언어를 사용함
- (중요) 객체 지향 언어는 고급 언어로 프로그램을 코딩함
-  웹 언어를 배워서 인터넷에서 프로그램을 짤 수 있음
-  프로그램은 소스 코드를 바탕으로 실행 가능한 형태로 만들어짐
-  소스 프로그램은 어셈블리나 컴파일러로 만들어짐

3-2. 소프트웨어 개발의 테스트 및 검사
-  소프트웨어 개발 후, 검사를 통해 오류를 찾아내야 함
-  검사는 화이트박스 검사와 블랙박스 검사로 나뉨
- (중요) 화이트박스 검사는 모듈 내부의 논리적 오류를 검사함
-  블랙박스 검사는 소프트웨어 외부의 기능 검사를 함
-  검사 방법에 따라 단위 검사, 통합 검사, 정당성 검사, 인수 검사, 시스템 검사로 나뉨

3-3. 검사 방법에 따른 분류
-  단위 검사는 모듈 검사를 포함함
-  통합 검사는 모듈들을 통합해서 전체 모듈을 검사함
-  정당성 검사는 사용자 요구와 소프트웨어의 일치 여부를 검사함
-  인수 검사는 사용자의 요구에 따라 소프트웨어를 검사함
-  시스템 검사는 소프트웨어가 전체적으로 작동하는지 검사함

4. 소프트웨어 개발과 유지보수

4-1. 소프트웨어 개발 과정
-  분석, 설계, 프로그래밍, 검사 등 소프트웨어 개발 과정을 거침
- (중요) 개발 과정에서 오류 수정, 기능 추가 등 개선 사항이 발생함
-  소프트웨어의 변환과 개선이 이루어지는 것이 중요함
-  시스템을 분석하고 설계하여 개발 구축 계약을 맺음
-  계약 후 유지보수 계약을 통해 실제 운영 환경에서 시스템을 적용함

4-2. 유지보수의 중요성
-  유지보수는 소프트웨어 개발 후 폐기 전까지 오류 수정과 기능 추가를 포함함
-  전체 소프트웨어 개발 과정에서 가장 많은 비용이 유지보수에 듬
-  유지보수는 수정 유지보수, 완전 유지보수, 예방 유지보수로 나뉨
-  수정 유지보수는 오류 수정, 완전 유지보수는 완성도를 높임
-  예방 유지보수는 미리 예측하여 오류를 줄이는 방법임

4-3. 객체 지향적 방법론
-  전통적 소프트웨어 개발 방법론은 구조적 측면에서 분석, 설계, 구현, 유지보수를 다룸
-  객체 지향적 방법론은 분석, 설계, 구현, 유지보수의 측면에서 객체 지향적 접근법을 취함
-  유지보수 측면에서 객체 지향적 방법론은 수정, 예방, 완전 유지보수를 다룸
- (중요) 유지보수는 부작용을 줄이고, 프로그램의 변환과 개선을 위한 중요한 과정임

화자 1
00:12
한국에 계시는 우리 MTM 생방송 안방 가족 여러분 오늘 또 뜨거운 가슴으로 환상적인 수업을 함께 하겠습니다. 아 좋아요. 병재 손자 좋아요. 어때 드디어 좋습니다. 자 현재 우리가 소프트웨어 공학 드디어 정보처리 기사에 마지막 감옥 마지막 쪽으로 달려가고 있죠. 그죠 여러분 열심히 하고요. 계속해서 마지막까지 화이팅 합시다. 그죠 해서 자 현재 우리가 소프트웨어 공학 이 소프트웨어 공학은 우리 기사 학생들은 소프트웨어 공학이고 산업기사는 시스템 분석과 설계제 특히 우리 기사 학생들은 이 과목 듣고 시스템 무슨 설계만 싹 들으면은 산업기사까지 응시하라 했겠죠. 그죠 이왕이면 자격증 2개 알겠나 또 뭐 가산점도 똑같고요.

화자 1
01:04
어 자격증 2개 또 자격 수당도 두 개 나온다 해서 시험장에 가보면은 보통 어 오전에 기사 치고 오후에 산을 기사 친다 그죠 그러니까 바로 연속해서 시험을 응시할 수가 있습니다. 그죠 그래서 소프트웨어 공학 듣고 CDA 분석에 참 잠깐만 강의 듣고 우리 기사 학생들 반드시 산업기사와 동시에 응시해라 병대소인지 알겠죠. 자 그래서 우리가 현재 소프트웨어공학 특히 공부는 어떻게 한다. 소프트웨어 공학은 추상적인 과목이다. 그죠 아주 원론적인 과목이다. 보니까 중요한 단어들만 탁 엑기스 잡아가지고, 가슴에 와닿는 게 답이다. 암기 길게 암기할 필요 없다. 중요한 핵심 단어들만 딱딱 알고 제목 정도만 현재 우리가 교재가 잘 되어 있습니다. 제목 정도만 다 알아도 만점 모일 수 있는 강의 특히 제이제이치가 수천 번 전쟁을 쳤죠 실무 프로젝트를 했는 살아있는 강의를 듣고 있다라는 거 좋습니다. 자 좋아요.

화자 1
02:01
자 오늘 들어가기 전에 이제까지 했는 걸 좀 정리를 할까 그렇죠. 오늘날 소프트웨어 라이프 사이 소프트웨어는 어떤 생명주기를 가지고 있나 우리 인간하고 똑같죠 탄생해부터 죽을 때까지 소프트웨어가 움직이는 걸 소프트웨어의 나이폴 사이클인데 그게 이 소프트웨어 탄생을 위해서 뭐 한다. 제일 먼저 우리 업무를 전산화 해야 할 소프트웨어 해야 할 업무를 분석을 낮에 정리함 하고 넘어가자 분석 애널리시스 그죠 분석가를 엘라리스트 어낼리시스터라고 이야기합니다. 자 그래서 분석하는 과정에 그냥 말로 분석하나 분석 도구가 있죠. 분석 도구가 있더라 분석도구 어떤 게 있었나 그죠 DFD 데이타 플로우 다이어 그럼 출제가 많이 되죠.

화자 1
02:54
DD 데이타 사전 그다음에 소단위 명세서 미니스펙 소단위명세서 또 여러분들 잠깐 실제 언급은 안 했습니다만 우리가 DBS 했기 때문에 ERD NTT 릴레이션 다이어그램 개체 관계도 그다음에 상태 STD 도 있어요. 상태 전이도 상태의 전이도 그죠 상태 전이도 요거는 우리가 DBS 다 했기 때문에 안 했다. 개체 관계도 그죠 그 개체와 개체의 속성과 개체와의 관계를 도표현해 나는 거 소단위 명세서 그죠 소단위 명세서 자료 사전 뭐 안 써도 아니죠. 자료사전 자료 사제사 그다음에 자료 흐름도 자료 흐름도 흐름도 요 5가지가 분석 과정 분석 단계에서 어 요런 5가지 도구를 가지고 업무를 분석한다. 그죠 아 그래서 분석 단계의 산출물이제 그래서 그렇죠.

화자 1
03:52
이 분석도구를 다른 말로 또 뭐야? 요구 우리가 현재 개발할 시스템 소프트웨어의 요구를 명세화했는가 요구명세서 또는 분석명세서라고 하잖아. 자 이런 도구를 가지고 우리가 또 뭐 했노 그 다음 단계 설계를 했죠. 설계를 예 설계를 합니다. 자 이 설계에는 여러분 또 뭐 있더노 길게 할까 현재 어디까지 봤나 분석까지 봤고 오늘 설계까지 다 했죠. 우리가 설계 자 이 설계 도구는 뭐가 있습니까? 설계도구 종합 정리함 해준다. 이 설계도구는 크게 설계 기법에는 상향식 도구가 있고 상향식 설계를 어떻게 한다.

화자 1
04:35
밑에서부터 소 단위 모조리 소 단위부터 설계를 해서 위로 통합설계하는 걸 상향식 설계를 하지 이 상향식 설계 다른 말로 추상화죠 추상화 설계라 하고 또는 개념화 다 같은 말이다. 개념화 일반화 전체화 다 같은 말이죠. 이런 게 있고 그다음에 하향식 설계도구가 있죠. 하향식 하향식은 뭐고 큰 데스 이래 큰 데서 큰 놈을 세분화시키죠 세분화 디바이덴 꽝커 그렇죠. 이렇게 하향식이죠. 그래서 이거는 세분화 구체화 다 같은 말이다. 이런 말에 현혹되지 마라는 겁니다. 구체화 상세화 중요한 건 뭐다 모듈화죠 모듈화 실은 이 모듈화는 하향식인데 아주 중요하기 때문에 따로 빼서 공부를 했잖아요. 그래서 지난 시간에 이 모듈에 대해서 아주 정리를 했죠.

화자 1
05:32
모듈 모듈의 응집도가 강하고 모듈 간의 결합도가 강한 모듈이 단위 프로그램이 우수하다 그래서 어 이 응집도와 결합도 또 공유도 제어도까지 정리를 다 했습니다. 그리고 이거 외에 또 설계 도구가 뭘 썼습니까? 히포 히포 그죠 계층군 하향식 설계도구 히프 와이죠. 하향식 설계도구 입출력 어 입력 프로세스 출력을 도표화하는 입력 기능 출력 기능 처리 기능을 도표화해내는 거 하향식이었죠. 하향식 도구고 역시 그리고 여기에는 또 종류가 뭐 있었습니까? 총괄도표 독식 목자 이런 게 있었죠. 또 그래서 하향식 설계 도구였고 그다음에 NS 차트가 있었죠. NS 차트 NS 차트가 있었습니다. NS 차트는요 바로 구조적 프로그램의 제어 구조가 순차 구조 반복 구조 선택 구조였잖아요.

화자 1
06:29
그죠 저 일반 일반적 프로그래밍에서는 보트문을 많이 썼는데 이 무조건 분기문 무조건 어 어 분기를 대신 뭐하나 순차 반복 선택을 하는 거잖아요. 그죠 그래서 이걸 도표해 놨는 게 NAS 차트란 말이야. 여기에 넣으면 순차 구조 그리고 선택 구조 반복 구조는 또 2가지가 있었죠. 2활 반복이 있었고, 리핏 언틸이 있었대요 그죠 2활 반복 2활 반복과 리핏 언틸 2와이 같은 경우는 문장 수행을 N번 한다면, 니피드 언틸은 M 플러스 1번 하겠죠. 그죠 요놈 구조가 있었고, 그다음에 요놈을 영어로 표현하는 PDL이 있었죠. PDL 요런 것들이 설계 도구였습니다. PDL은 뭐고 이 제어 구조 3개를 영어로 표현해 놨잖아요. 그죠 어 요런 거 지난 시간에 이렇게 했나 분석설계 이렇게 했습니다. 그리고 우리가 소프트웨어 이 개발 방법론은 크게 인제 뭐가 있더노 전통적 전통적으로 우리는 다른 말로 구조적이죠.

화자 1
07:27
구조적 구조적 소프트웨어 방법이 있고 뒤에 배울 객체적 객체 지향적 소프트웨어 방법이 있잖아요. 그죠 그래서 현재 전통적 구조적 소프트웨어 방법 1 2로 배우고 객체지향적 소프트웨어 개발방법도 1과 2로 배우고 그죠 고 앞전에 뭐다 프로젝트 관리 프로젝트 관리를 1과 2로 배웠고 맞나요? 현재 이런 식으로 우리가 진행을 하고 있습니다. 어디까지 왔노 바로 지난 시간 여기까지 했죠. 어디까지 분석 도구 공부를 다 했고 그리고 설계도구를 공부를 됐습니다. 만나 병태순자 그리고 오늘 뭐 분석 설계 끝났으니까 구현 구현이 쉽죠 코딩하고 그 다음에 검사하고 어디까지 유지보수 메인터넌스 요 3단계를 오늘 배우는 거 아냐 됐나 그래서 강의 다 듣고 난 뒤에 1편의 드라마처럼 분석해서 설계 구형 검사 유지보수를 쫙 이 그림 그리면 이게 바로 문제 아니야.

화자 1
08:26
되겠나 좋습니다. 예예 경제수전자 잘 되나 좋아요. 자 그러면은 지난 시간까지 분석과 분석과 설계를 했고 오늘은 이제 전통적 소프트웨어 개발 방법론에 이제 뭐 구현해 들어가 보자 구현 예 자 소프트웨어 개발 방법 하는 거는 고전 전통적 구조적 방법이 있고 객체 지향적 있죠. 현재 우리는 구조적 방법을 배우고 있다. 구조적 에 구조적 프로그래밍 구현 자 이 구현은 뭐 여러분 말 그대로 임플리먼트 구현 다른 말로 프로그램 적당한 컴퓨터 언어를 선정해서 프로그램으로 옮기는 과정 프로그래밍 또는 코드화 만드는 과정 코딩 같은 말이죠. 자 임플리트 구현 프로그래밍 코딩 다 같은 말입니다. 또 너무 작게는 개발이라 해야죠 개발 개발 같은 말이죠.

화자 1
09:20
자 설계 단계에서 설계된 설계명세서가 아마 그런 거였죠 설계명세서 설계도구들 뭐 있었습니까? 상향식 하향식 그렇죠. 그리고 모듈 두 모듈설계를 주로 많이 하고 히포 에너지 차트 PDL 이런 게 맞게 코딩하는 단계 설계를 보고 코딩하는 단계고 모듈 단위 코딩과 디버깅이 독립적으로 이루어지고 단위 테스트가 이루어지는 단계입니다. 구현단계에서도 만들면서도 요 테스트는 테스트 과정이 하는 게 아니고 만드는 과정에서 하는 거죠. 그런 과정에서 하는 그러니까 단위 테스트까지가 이루어지는 단계가 구현단계다 수정 또 만들면서 수정하죠. 주로 코딩 디버깅 단위 테스팅 그죠 이 구현단계는 실제 코딩 코딩하면서 잘못된 거는 또 뭐 해야 되나 수정 작업을 벌레를 죽이는 작업 해 가지고 디버깅이라 하고 그죠 그리고 또는 약간의 테스트를 해야 되죠. 맞나 안 맞나 이걸 테스팅 그죠 단위 테스팅 단위 테스팅까지가 실험 구현 단계다 이 말입니다. 그렇죠.

화자 1
10:19
자 코딩의 기본 원칙은 너무나 쉽다 설계를 원칙으로 해야죠 설계도를 원칙으로 해라 아 될 수 있으면 간단명료하게 해라 그리고 디버깅이나 수정이나 또 테스팅이나 같은 말이죠. 없어야 되는 테스팅이 용이하도록 하라 무조건 심플하게 하라 이런 뜻입니다. 당연한 거고요. 이제 우리는 구조적 프로그래밍을 한번 보자 스트럭치도 프로그래밍한 거죠. 자 말 그대로 복잡성을 줄이고 일반적으로 일반적으로 하는 복잡성을 줄이고 분기 없이 분기 없다. 카는 게 뭡니까? 고투문 없애라 이 말입니다. 고 분기 없이 코딩하여 읽기 쉽게 작성하라 그리고 모듈 단위로 작성하는 게 좋다. 그래서 이 모듈 단위를 작성하는 걸 모듈러 프로그램 모듈화 하라 이 말이야. 모듈화 모듈화 하라 될 수 있으면은 독립적 단위 프로그램을 많이 만들어라 단위 프레임을 만들어 가면서 하라 이 단위 프레임을 나중에 통합하는 형태로 하라 이런 뜻이다. 이 말입니다.

화자 1
11:13
그리고 하향식 프로그래밍을 하라 그죠 상향식보다는 하향식 프레임 하는 게 구조적 프레임의 기법이 하향식이 좋다. 전체를 쪼개라 이 말입니다. 전체를 쪼개면서 하라 이걸 뭐 디바이드 앤 쿼크라죠 분할과 정복을 하라 이게 분할과 정보 이론에 입각해서 개발하라 이 말입니다. 분할과 정보이론 디바이드 앤 쿼커 하향식 그 다음에 무조건 분기 배제 즉 고트문 쓰지 말고 될 수 있으면 뭐다 바로 순차 반복 선택 구조 이 3가지 제어구조를 이용하라 이 말입니다. 이런 3가지 제어구조를 이용하는 게 구조적 프로그램이다. 이 말이고요. 또 반드시 단일 입구와 단일 출구 구조로 만들어라 이 말입니다. 중요한 이야기들이 다 구조적 프레이밍의 특징이죠. 복잡성을 줄이고 붕괴 없이 코딩하고 모듈 단위로 하고 하향식 프로그램을 하고 어 고투문보다는 순차 반복 선택 구조로 문장을 제어하라 이 말이고요. 단일 입구와 단일 출구를 갖는 구조로 하라 이 말입니다.

화자 1
12:08
프레임 짜는데 어 입력 단일 입구로 들어와서 처리돼 가지고 단일 출구로 갖는 형태로 작성하라 이 말입니다. 서론 볼용 결론으로 작성하라 이 말이지 가정 심플하게 하라 이 말입니다. 그래서 여러 개의 들어오는 입구가 있으면 안 되죠. 단일 입구와 단일 출구 구조 자 요 단어들 중요한 약이다. 부조리 프레임의 특징들 구조적 프레임은 이런 특징을 가지고 있어야 된다는 말씀이죠. 구조적 프로그램의 특징이 좋겠습니다. 특징 되나 자 요런 게 문제가 나오제 아 좋아요. 자 구조적 프레이밍은 요렇게 하라 이 말입니다. 구현은 그리고 뭐 요거는 이미 앞부분에서 이야기 다 했죠. 자 이런 거 구현 단계에선 여러분 보고 분석하고 설계하고 난 뒤에 프로그램 언어를 선택해야 되잖아. 이 구현은 말로 하나 컴퓨터가 알아듣는 언어를 시켜야 될까 아 앵감해 허폐 디끼요 그래서 프로그래밍 언어를 여러분들 선택을 해야 되겠죠.

화자 1
13:08
왜 프로그램 언어에 대해서 즉 프로그램 넘기지 않아야 되는 거예요. 그래서 운영체제에서 이야기를 다 했는 걸 다시 한번 부각시켰다 강의를 다 했기 때문에 살짝 넘어가자 오늘날 프로그래밍 언어 컴퓨터 언어라 하죠. 컴퓨터 랭귀지라고 그렇죠. 프로그래밍 랭귀지 컴퓨터 랭귀지 같은 말입니다. 어 프로그램에 작성하는 이용되는 언어 컴퓨터가 알아듣는 언어 그죠 자 이거는 크게 어떻게 나눈다 저급언어 로우 레벨 랭귀지 중급언어 미들 고급 언어로 나눴죠 저급언은 컴퓨터 머신랭귀지제 컴퓨터가 바로 알아들을 수 있는 1과 영어로만 만들어진 언어 기계어라고 합니다. 기계어 번역이 필요 없죠 지가 직접 알아들으니까 얘는 1과 0으로 1과 0으로 어 모든 프로그램 짤 때 1 110010 이런 식으로 프로그램 짜는 게 저급 언어죠 저급 언어 그러니까 뭐 1일 때는 5볼트 0일 때는 뭐 1볼트 우확 우와 불거지 운전하듯이 이 프로그램을 보고 초창기 컴퓨터는 움직였습니다.

화자 1
14:07
그래 버튼 식으로 하고 그래서 이걸 번역이 필요 없죠 직접 알아들어서 이런 언어 자 이게 어렵기 때문에 대가리 다 빠지기 때문에 중급 언어 나와 중급어는 어셈블링 된 거지 이놈을 모아모아서 특정 기호로 표현했다. 해 가지고 어셈블리 심블링이라 하고 이놈은 번역을 해야 되는데 뭐 알아 듣기 때문에 컴퓨터가 뭐 알아 듣기 때문에 번역기 번역 프로그램이 어셈블러가 있고 마크로 어셈블러가 있다고 이야기 다 했고 환상적으로 투 패스죠 투패서 생각나나 이야기 다 했고요. 고거보다는 이제 우리 인간이 자연에서 사용하는 은어라 해가지고 일명 내추럴 랭귀지라고도 하제 그런데 이거는 번역하는 방식에 따라서 통역방식의 임초 프리터 랭귀지가 있고 번역방식의 컴파이오 랭귀지가 있더라 이런 이야기 다 되었습니다. 자 통역 방식은 현재 고급 언어는 몇 종류 120여 종 이상 개발되어 있습니다. 어 컴퓨터 언어가 그중에서 통역 방식은 5가지밖에 없다. 했죠.

화자 1
15:05
그죠 베이직 언어 스노볼 리스프 에이피엘이다. 나머지는 전부 다 뭐 다 번역 방식이었는데. 이 교육 방식은 또 뭐다 절차적 언어와 구조적 언어와 객체 지향적 언어가 있다. 절차 지향적 언어가 있고 구조 지향적 언어가 있고 객체지향적 언어가 있더라 강의를 다 했기 때문에 가볍게 복습하는 마음으로 빨리 씨부르고 있다. 알겠나 어 그래서 절차지향적 언어를 이제 말 그대로 프레임 짤 때 아주 순차 절차적으로 탁 요놈 서학원한테요 요렇게 하는 거고요. 구조적 언어는 이런 식으로 하는 거고, 객체지향 언어를 또 오늘 배우겠죠. 객체 중심으로 하는 겁니다. 그죠 대표적인 게 포추란 고블이 있고 구조적 언어에서 파스칼시 객체 지향하는 비주얼 자바 뭐 스몰토 스몰토 뭐 이런 언어 그다음에 씨 뿔뿔 뭐 이런 언어들이 쭉 있습니다. 그래서 뭐 이런 어 이런 언어 중의 하나를 선택해 가지고 여러분들은 구현을 하되 코딩을 한다는 겁니다. 적당한 언어 업무 분석 설계에 맞는 그 업무에 맞는 언어를 선택해야 되죠.

화자 1
16:04
언어마다 또 특징이 다 있죠. 옛날에 포츠랑 같은 경우는 과학기술용입니다. 주로 수계산 숫자 처리를 전문으로 하는 언어고요. COVOL은 업무처리 사무처리용 언어거든. 그래서 이런 언어마다 조금 특징이 조금 있습니다. 예 그래서 그 언어의 특징을 익혀가지고 이제 프로그램을 개발하라 이 말이죠. 그럼 어느 언어 공부를 여러분이 해야 된다는 거죠. 요즘은 기계 기계어로 짜는 사람 없지 제일 규칙밖에는 없고 셈블리도 거의 안 짭니다. 거의 다가 고급 언어를 짠데 고급 언어 중에서도 요즘은 전부 다 뭐를 짠다 객체 지향 언어를 가지고 프로그램을 코딩합니다. 지금 여러분들이 뭐 베이직 배우고 포처럼 안배우고 코볼 배운 사람 없제 보통 컴퓨터를 배운다면 객체 지향 언어를 배우지 비주얼 언어나 요즘은 자바 이런 언어들 그런 언어들 웹 웹용 언어 인터넷에서 프로그램 잡을 수 있는 인터넷 언어를 많이 배운다 이거죠.

화자 1
16:56
그래서 당연한 이야기고 그 다음에 여러분들 뭐 INTERFLITER 랭귀지와 컴파일러 랭귀지는 이미 운영체제에서 해지 인터브리트 통역 방식이기 때문에 실행 속도는 늦고요. 번역 속도는 빠르고 요거는 되죠. 그 오브젝트 목적 코드가 인터프리트는 없죠 요 목적 코드가 생긴다. 문서가 없다는 겁니다. 바로바로 통역해 주기 때문에 이미 정리가 됐고 이 다 아는 거죠. 어셈블리 랭귀지나 내추럴 랭귀지로 만든 프로그램이 뭐다 소스 프로그램 다른 말로 소스 파일 소스 코드 소스 모듈 같은 말이죠. 이걸 어셈블레나 마크를 어셈블려나 인터프리트나 컴파일러가 번역을 해주죠 번역기가 이걸 합해서 뭐라 한다. 트랜스레이터 번역기라고 하잖아. 4가지 번역기 공부를 다 했다. 번역을 해주면은 이게 기계어로 일관형으로 된 언어로 나타나죠. 일관형으로 구성된 프로그램을 오버젝트 코드 오버젝트 프로그램 오버젝트 파일 오버젝트 뭐 같은 말을 쓰는 거죠.

화자 1
17:50
이걸 이제 뭐다 노드와 링크가 올로케이션 할당 연결 재배치 로딩 작업을 해서 실행 가능한 프로그램으로 만들어 준다는 거 맞지 그래서 이야기 너무나 잘합니다. 그래서 여러분들 성적 처리를 승점 씨로 했다. 그죠 소수 프로그램이고 이걸 컴파일러가 번역해 줬습니다. 폴란드 시나 터보시 번역해 주면 뭐가 생긴다. 승점 OBJ라는 목적 프로그램 목적 코드가 생기고 이게 노드와 링크에서 4가지 작업이 마치면 뭐가 생긴다. 실행 가능한 승점 XA가 생기죠 소스 프로그램 목적 프로그램 실행 프로그램 이 실행 프로그램을 클릭하든지 실행을 하면은 여러분 시킨 대로 컴퓨터는 움직여 주겠죠. 되겠나 이런 이야기들 이렇게 구현을 하고 이런 과정을 통해서 실행 프로그램을 만듭니다. 잘 만들면 판매를 하죠. 잘 만들면 패키지화 해서 팝니다. 아래 한글처럼 MS 오피스처럼 윈도우처럼 막 판매를 하는 거죠.

화자 1
18:45
알게나 저도 이런 프로그램을 만들어서 많이 파란 사람이고 지금은 프로젝트를 많이 개발하고 있는 여러분 야전사령관 육군본부에 앉아가지고, 그리고 말만 씨부리는 사람이 아니고 방금 전쟁터에서 전쟁 치고 있는 사람의 강의를 살아있는 강의를 듣고 있습니다. 할렐루야 알겠나 전쟁터에서 지금 방금 돌아와 있죠. 또 이 강의하고 또 전쟁 치러 가는 실전 어 사령관의 강의를 듣고 있는 거야. 어 육군본부에 앉아가 아무것도 모르고 씨 부리는 어 아무것도 모른 교수들 강의 듣는 게 아니고 알겠나 스승 잘 만났제 예 그런 이야기입니다. 자 IT 강국 좋은 이야기 자 그다음에 인제 구현 구현은 업무마다 다르게 지기 때문에 여기서 어떻게 이야기할 수가 없고요. 자 그다음에요. 검사 이제 구현을 코딩했단 말이에요. 코딩할 때 머리카락 다 빠지제 프로그래머여 점을 조심하라 그런 이야기를 했제 님이 남이 되고 예 그래서 구현을 하고 난 뒤에 이제 뭡니까?

화자 1
19:45
내가 개발을 프로그램 언어로 제대로 했는지 뭐 한다. 검사를 하는 거죠. 검사 테스트죠 테스트 테스트 테스팅 검사 단계 중요합니다. 검사는 말 그대로 소프트웨어 개발된 소프트웨어의 오류를 찾아내서 내기 위한 단계 그죠 예 그래서 이 검사 기법 검사하는 방법은 크게 검사 기법 방법에 따른 분류가 있고요. 검사단계에 따른 분류 검사 단계에 따른 분류 다른 분류를 좀 써줘야 좋겠습니다. 검사 방법에 따라서는 크게 요 제목만 알면 된다. 화이트박스 검사와 블랙박스 검사가 있다. 화이트박스 검사 일명 프로그램 검사다 프로그램 검사 즉 화이트박스 검사는 내가 짜는 프로그램 내부에 오류가 있나 없나를 검사하는 겁니다. 즉 소프트웨어 즉 프로그램의 내부 작업을 검사하는 것으로서 모듈 안에 작동을 검사한다.

화자 1
20:37
그러죠 모듈란에 단위 프로그램 안에 프로그램 안에 그죠 논리적 오류가 있나 논리적 경로냐 타이핀 잘못 쳤느냐 콧마를 점을 찍었느냐 뭐 이런 거죠. 이런 거 프로그램 검사를 하는 거죠. 프로그램 내부검사 이걸 화이트박스 검사고 블랙박스 검사는 동그라미 기능검사입니다. 기능 5리는 없는데 기능이 제대로 되나 안되나 어 1 플러스 이래 했으면 2가 나오나 1 플러스 1했는데 3 나오면 기능이 잘못됐네 그제 이렇게 기능 검사가 뭐다 블랙박스 검사 즉 소프트웨어 외적인 면을 검사하는 것은 각 기능이 완전히 작동되는가 검사하는 검사로서 일명 기능검사를 하는 거다 블랙박스 검사다 요것만 기능검사는 뭐 블랙박스 검사다 요것만 알면 되는 겁니다. 그래서 성능 오류다 또는 부정확한 기능 부정확한 기능 뭐요 부정확한 기능 인터페이스 오류 등의 검사하는 거다 그래서 자 블랙박스는 어 기능검사고 하여튼 그것만 알면 된다는 거죠.

화자 1
21:34
자 요거는 검사 방법에 따른 분류고요. 또 검사 단계에 따른 분류는 요렇게 요렇게 했습니다. 단위검사 단위검사 끝나고 통합검사 정당성 검사 시스템 검사다 그죠 자 요거 중요하다 자 단위 검사는 모듈 검사죠 단위검사는 일명 모듈 검사를 한다. 모듈 검사 여기 있을까? 모듈 검사라고도 합니다. 이제 단위 작업 독립적인 단위 모듈 야외재 모듈 소단위부터 검사하는 거요 소프트웨어 설계에서 최소단위 모듈을 모듈을 검사하는 거 모듈검사다 그래서 단위 검사고요. 통합검사는 뭐다 이런 모듈들을 통합해서 검사하는 거죠. 말 그대로 단위 검사를 끝이고 난 단위 검사 후 모듈을 결합시켜서 전체 모듈에 대한 검사하는 겁니다.

화자 1
22:21
그죠 그래서 통합검사에는 또 상향식 통합 검사가 있고 하향식 통합 검사가 있는데, 상향식 통합 검사는 여러분 드라이브를 이용한다는 것 드라이브하는 단어 몰라도 좋다. 하향식에는 스토브 스토브 스토브 스토브 스토브를 이용한다는 거 요 단어 말목이에요. 검사는 이제 단위 검사를 마치고 난 뒤에 그 모듈들을 통합해서 하는 검사다 이렇게 하면 되는 거고, 정당성 검사는 인수검사 다른 말로 적합검사라고도 합니다. 정당성 검사는 적합 또는 인수검사야 요놈은 뭐 사용자 동그래미 자 나는 자 검사 이상이 없는 거예요. 사용자한테 가서 의뢰자한테 개발자가 자 봐라 자 이거 다 만들었는데 니 봐라 하는데 사용자가 딱 보고 야 이거 마음에 안 든다. 내가 이래 만들어 달라 했지 왜 이래 만들었노 즉 사용자 허가를 받는 거예요. 사용자 검사라고 하는 거죠. 그게 정당성검사 인수검사 자 사용자 요구사항과 소프트웨어가 일치하는가를 검사하는 거죠.

화자 1
23:18
어 사용자 요구를 이렇게 했는데 니 요구대로 제대로 됐는가 이제 내한테 돈 준 사람 개발을 의뢰한 사람한테 검사받는 게 정당성 검사 인수검사 되겠나 그래서 에러가 없으면 인수해 가라 이 말입니다. 적합검사 또는 사용자 검사라고 하지 그죠 그리고 또 시스템 검사가 있는 거예요. 시스템 검사는 뭐다 종합검사제 그죠 모든 전체를 다 개발된 소프트웨어가 해당 컴퓨터에 완전히 수행되는지 전체적으로 검사하는 걸 종합검사 다른 말로 시스템 검사를 합니다. 되겠나 자 검사 단계에 따른 분류 단위검사 오케이 물률검사 통합검사 오케이 정당성 검사 인수검사 저 시스템 검사 이 단계를 거치면서 검사 검사가 완료되더라 이 말입니다. 검사 방법은 각 단계마다 화이트박스 검사가 있고 블랙박스 검사가 있다. 기능검사와 프레임 검사를 각 단계마다 적용시키는 거죠. 적용시키는 거죠. 적용시키는 겁니다. 적용시키는 겁니다. 되겠죠.

화자 1
24:13
단위검사 통합검사 정당성 검사 시스템 검사 단계별로 검사 단계별에 따라서 단계별로 한다는 겁니다. 됐나 쉽죠 핵심적인 이야기들 아 그렇구나 그래서 검사 과정에서 이런 걸 거쳐서 검사를 하는구나 이런 이야기예요. 그죠 좋습니다. 자 그 다음에 마지막으로, 이제 검사를 해 가지고 이상이 없으면은 이제 시스템 운영되제 이제 막 운영됩니다. 오프레이팅 되면서 이제 업무가 바뀔 때마다 다시 그 프레임 약간 약간 수정이 되고 그죠 운영 수정되는 걸 유지보수라 하죠. 그죠 운영 오퍼레이팅 되고 그 수정이 되는 걸 우리 메인터넌스 유지보수라고 하죠. 에 자 유지보수요 유지보수 자 유지보수는 소프트웨어 개발된 후 시작부터 폐기될 때까지 오류를 수정하거나 새로운 기능을 추구하고 운영되기 위한 소프트웨어를 변경하는 과정을 유지보수 과정이 하고 전체 소프트웨어 개발 과정에서 가장 많은 비용 동그라미 비용이 가장 많이 듭니다.

화자 1
25:13
자 이거 아주 중요한 이야기다 여러분 실제 컴퓨터는 우리 회사도 그래요. 크게 보면 우리는 전체 다 개발 과정 개발하고 개발 구축이라 하죠. 개발구축 그리고 운영이 있거든. 운영 에 그러면 이제 개발 구축과 운영이 운영 메인트넌스죠 유지보수에 있어요. 그니까 보통 계약을 이렇게 2번 합니다. 자 어떻게 국가에서 또는 어떤 기업체에서 우리 회사한테 우리 회사의 경영관리 시스템을 전산화해도 해서 의뢰를 하제 그럼 우리가 가서 분석하고 설계하고 프로그램 짜서 이제 납품을 했지 그러면 고때까지 계약을 그 개발 구축계약합니다. 하고 난 뒤에는 그 다음 계약이 뭐냐 하면은 운영계약 유지보수 계약을 합니다. 왜 당신의 회사의 업무가 늘 바뀔 때마다 우리 직원들이 늘 수정을 해줘야 되잖아요. 그럴 때 보면은 여러분 개발 구축 비용보다는 운영 운영이 우리 회사에 훨씬 좋은 겁니다. 왜 운영 비용이 훨씬 메리트가 있는 거거든. 그래서 우리 같은 경우 개발은 막 적자 보호해줍니다.

화자 1
26:11
해줘도 운영 비용에서 빼먹는 거예요. 1달에 얼마씩 달라 어 이게 좋은 거거든. 그래서 보통 우리 SI 업체 이런 프레임 소프트웨어를 전문으로 개발하는 업체를 SI 업체라 카거든. 시스템 통합업체라고 합니다. 에스아이 시스템 인터그레션 업체인데 이 에스아이 업체에서 그걸 잘해야 되는 거죠. 개발은 조금 안 남더라도 운영을 보고 유지보수 비용을 많이 책정을 하면 생산성이 있는 거죠. 그래서 나중에 여러분들 또 전산실 저처럼 IT 전문가가 됐을 때는 유지보수 쪽에 계약을 잘해야 되는 겁니다. 그리고 두 사람 모르고 개발비 많이 받고요. 유지보수 돈 적게 받아 가지고 완전히 적자 회사가 망합니다. 그래서 SI 업체가 망하는 게 이런 아주 간단한 원리를 모르기 때문에 말이 망해요. 우선 목돈 받을라고 개발비 많이 받고 나왔는데 유지보수 공짜로 해줄게 했다가 쫄딱 망하는 업체가 했다. 그죠 왜 비용은 여기서 많이 들어가거든.

화자 1
27:05
이해되나 그래서 유지보수가 굉장히 비용이 많이 들어간다는 거 이거 중요한 이야기고 또 유지보수는 크게 수정유지 보수 수정 유지 보수가 있고요. 실제 수정 종류만 하면 됩니다. 적응 유지보수 완전 유지보수 예방유지 보수가 있다는 거죠. 알겠죠. 유지보수는 수정 오케이 적응 오케이 완전 오케이 예방 좋습니다. 그죠 자 유지보수를 할 때 생기는 에러 이거 부작용이라 하죠. 부작용은 코딩 부작용 자료 부작용 문서와 부작용이 있다는 거 요것도 제목 정도 말 못했다. 코딩 잘못해서 유지보수 안 되는 거 있고요. 그럼 데이터가 잘못돼 가지고 안 되는 경우가 있고 문서화가 잘못돼 가지고 개판되는 경우가 있고 문서화 굉장히 중요합니다. 어 문서화 자 외계인 코드는 뭐냐면 에어라인 코드는 이게 뭐냐 하면 문서화를 잘못해서 발생시킨 게 문서화 이 뭐냐 아주 오래되어 유지보수 작업이 어려운 프로그램 코드를 외계인 코드 즉 요거 이 외계인 코드의 방지책은 뭡니까?

화자 1
28:02
프로그램 내에 문서화를 철저히 해두면 된다는 거죠. 자 외계인 코드는 뭐냐 하면 아주 옛날에 개발돼 가지고 개발돼 가지고 이거는 손도 못 대는 거 유지보수를 할 수 없는 이런 코드 소속 프로그램을 외계인 코드를 하거든. 그러면 이런 외계인 코드는 문서화가 안 돼 있는 거예요. 그럼 외계인 코드를 없앨려카면 뭐냐 10년 전에 프로그램에도 문서가 잘 돼 있으면은 그 문서를 보고 충분히 유지보수를 할 수 있다는 거거든. 그래서 문서화의 중요성을 강조하는 겁니다. 문서화 알겠나 항상 매뉴얼 여러분 그렇잖아요. 이 문서화가 굉장히 중요하거든. 매뉴얼이 있으면 설명이 필요 없잖아. 모든 하드웨어 노트북 같은 거 사도 매뉴얼 다 있죠. 우리 소프트웨어도 개발하고 난 뒤에 문서를 딱 만들어주거든. 매뉴얼을 다 줍니다. 그럼 매뉴얼 주면요 수정 유지보수도 좋고 사용하기도 좋고 그런 말이죠. 이 매뉴얼이 없으면 손도 못 대는 코드 이걸 외계인 코드라 한다는 겁니다.

화자 1
28:53
이해되나 아 자 여러분들 자 인제 서서히 그림이 만들어지죠 우리가 이제 아무것도 몰랐는데 소프트웨어 개발한 단계 분석 과정 이야기하고 했고 설계하는 과정 이야기했고 구현하는 과정 이야기했고 검사하는 거 이야기했고 유지보수 하는 이야기 소프트웨어인 라이프 사이클에 입각해서 공부를 딱딱 했습니다. 시험 뭐 나오는지 말아죠 분석도구 설계도구 구현 검사 방법 유지보수 이게 문제가 나오는 거예요. 자 그런데 방금 봤는 것들은 전부 다 뭐다 전통적 구조적 방법이죠. 구조적 구조적 이제 남아있는 게 뭡니까? 이런 것들을 이제 신개념 미래적인 개념 객체적 객체 지향 지향적으로는 객체 지향적 방법론은 어떻게 분석하고 설계하고 구현하고 검사하고 유지보수 보는지 요 측면에서 보는 거 이제까지 봤는 거는 뭐다 구조적 측면에서 봤고 즉 전통적 측면에서 봤다. 이 말이야. 전통적 소프트웨어 개발 측면에서 봤고 지금부터는 물어보죠.

화자 1
29:52
자 객체 지향적 측면에서 한번 시부려 보자 이런 이야기다는 말씀입니다. 자 유지보수 다음 과정 있습니까? 예 함 보죠. 없죠 좋습니다. 자 요렇게 해서 전통적 소프트웨어 개발 방법론 구조적 소프트웨어 개발 방법론 분석에서 구현까지 유지보수까지 환상적으로 정의를 했습니다. 자 오늘 또 생중계 생방송 고생하셨고요.

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