소프트웨어 중심 시대를 준비하자

33
2014. 7. 15 소소소소소 소소 소소소 소소소소 김김김 김김김김김

Upload: deogtae-kim

Post on 14-Nov-2014

2.092 views

Category:

Software


2 download

DESCRIPTION

며칠전 중학생 대상 진로교육 특강을 위해 만든 특강 교재인데 약간 손을 보고 설명을 추가하여 올립니다. 중학생 뿐만 아니라 일반인들 모두에게도 유용한 내용이 되도록 작성하였으며 소프트웨어 및 소프트웨어 개발의 핵심적인 부분들을 정리하였습니다.

TRANSCRIPT

Page 1: 소프트웨어 중심 시대를 준비하자

2014. 7. 15

소프트웨어 중심 시대를 준비하자

김덕태

㈜디티웨어

Page 2: 소프트웨어 중심 시대를 준비하자

2㈜디티웨어

나는 누구인가 ?

" 나는 생각한다 . 고로 존재한다 ." - 데카르트 – " 나 " = " 스스로를 자각하고 느끼고 생각하는 존재“ 나는 사회와 구별된 독립된 자아이면서도 사회에 의해 만들어진 존재 ( 내

생각과 지식의 거의 전부가 과거 및 현재의 타인으로부터 받은 것이므로 )

삶이란 무엇인가 ?

" 느끼고 ( 감정 ) 생각 ( 이성 ) 하는 활동“ 감정과 이성 모두 중요

나는 왜 사는가 ?

삶에 대한 욕구

나는 어떻게 살 것인가 ?

( 나에게 맞는 ) 행복한 삶

나는 어떻게 살 것인가 ?

Page 3: 소프트웨어 중심 시대를 준비하자

3㈜디티웨어

행복한 삶이란 ? (1)

미래 이익 성취주의자 행복한 사람

미래 손해 허무주의자 쾌락주의자

현재 손해 현재 이익

Page 4: 소프트웨어 중심 시대를 준비하자

4㈜디티웨어

행복한 사람 (" 하버드대 행복학 강의 - 해피어 ")

요약 : 현재도 즐겁고 미래도 즐겁고 나도 좋고 다른 사람도 좋은 일에 힘쓰자 .

조화로운 삶 : 행복은 현재와 미래의 이익 , 나의 이익과 타인의 이익을 동시에 추구하는 것 ( 어느 하나를 일방적으로 희생하지 않는 것 )

흥미 , 적성 , 능력에 맞는 과제 수행 : 너무 어렵지도 너무 쉽지도 않은 적절한 수준의 도전이어야 한다 .

학습 : 학습은 책을 읽고 생각하는 것을 즐기는 현재의 이익뿐 아니라 우리의 전반적인 성장에 기여하는 미래의 이익을 가져다 준다 .

긍정적이고 낙관적인 시각 : 모든 사람이나 사물은 좋은 점과 함께 좋지 않은 점을 함께 갖는다 . 좋지 않은 점에만 지나치게 신경쓰기보다는 좋은 면을 높이 평가하고 활용할 수 있어야 한다 .

지속적인 행복을 가져다 주는 좋은 인간 관계 유지 : 사람을 좋아하거나 사랑할 때는 핵심 자아 , 즉 우리의 가장 깊은 곳에 뿌리 박혀 있는 가장 안정적인 특성인 인격을 중시한다 . 부 , 권력 , 명예 , 외모는 핵심자아가 아니며 가변적이고 영속적이지 못하므로 이에 기반한 인간 관계는 불안정한 관계이다

행복한 삶이란 ? (2)

Page 5: 소프트웨어 중심 시대를 준비하자

5㈜디티웨어

학습 = 일 = 놀이 게임 ( 놀이 , 사냥 , 퍼즐 )

육체 훈련 ( 운동 )

두뇌 훈련 ( 문제 풀이 )

육식 동물과 과거 우리 선조들은 사냥이 곧 학습이자 일이자 놀이였다 .

현대는 학습 , 일 , 놀이가 분리되어 비효율적이고 재미가 없어졌다 .

결론 : “ 재미있게 공부하면서 일하자 .”

행복한 삶이란 ? (3)

Page 6: 소프트웨어 중심 시대를 준비하자

6㈜디티웨어

프로그램 (Program)

컴퓨터가 문제를 해결하기 위해 수행할 명령들 (instructions) 을 명시한 것

프로그래밍 언어 (Programming Language)

프로그램의 문법 (syntax) 와 의미 (semnantics) 를 정의

프로그램 코드 (program code)

프로그램의 임의의 일부

소스 코드 (Source Code)

사람이 이해할 수 있는 프로그래밍 언어 ( 일반적으로 텍스트 형태 ) 를 사용하여 작성된 프로그램 코드 . 소스 파일 (Source File) 은 소스 코드로 이루어진 파일

소프트웨어 (Software)

컴퓨터 프로그램과 그와 관련된 문서들을 총칭

소프트웨어란 무엇인가 ?

Page 7: 소프트웨어 중심 시대를 준비하자

7㈜디티웨어

레고 블록을 쌓듯이 프로그래밍을 쉽고 재미있게 할 수 있다 .

http://scratch.mit.edu

재미있고 쉬운 프로그래밍 - 스크래치

Page 8: 소프트웨어 중심 시대를 준비하자

8㈜디티웨어

레고블록을 쌓듯이 스마트폰 프로그래밍을 쉽고 재미있게 할 수 있다 http://appinventor.mit.edu/explore/

재미있고 쉬운 프로그래밍 - 앱인벤터

Page 9: 소프트웨어 중심 시대를 준비하자

9㈜디티웨어

레고블록을 쌓듯이 기계 ( 로봇 등 ) 를 쉽게 프로그래밍할 수 있다 .

http://mindstorms.lego.com/

재미있고 쉬운 프로그래밍 교육 - 마인드스톰

Page 10: 소프트웨어 중심 시대를 준비하자

10㈜디티웨어

알고리듬 (Algorithm)

단계적 계산 절차

사람이 보고 한 단계씩 따라서 수행할 수 있는 명료한 계산 절차이며 보통 자연어나 그림으로 표현한다 .

알고리듬을 머릿속에 떠올리거나 작성한 후에 이를 특정 프로그래밍 언어로 프로그래밍한다 .

알고리듬의 예1. 함수 f(x) = 3 * x + 1 라고 하자 .

2. 입력 값 n 이 0 보다 작거나 같으면 프로그램의 실행을 끝낸다 .

3. 입력 값 n 에 대하여 , x 는 1 부터 n 까지 반복하여 f(x) 값을 계산하여 화면에 표시한다 .

자바 프로그램 소스 코드와 실행 결과

일반적인 프로그래밍의 기본 원리와 예 (1)

public class MyProg { public static int f(int x) { return 3 * x + 1; } public static void main(String[] args) { int n = Integer.parseInt(args[0]); if (n <= 0) return; int x = 1; while(x <= n) { System.out.println(f(x)); x = x + 1; } }}

w:\>java MyProg 247

w:\>java MyProg 4471013

Page 11: 소프트웨어 중심 시대를 준비하자

11㈜디티웨어

일반 프로그래밍의 기본 요소 알고리듬과 프로그램은 다음과 같은 단순한 요소들을 조합한 것이다 .

수식 : 수식의 결과값을 계산한다 .

함수 : 계산 절차를 하나의 단위로 묶어서 재사용할 수 있게 해준다 .

순차 실행 : 여러 명령들을 하나씩 순차적으로 실행한다 .

조건 실행 : 명시된 조건이 만족될 때만 지정된 명령을 실행한다 .

반복 실행 : 명시된 조건이 완료될 때까지 지정된 명령을 반복 실행한다 .

고급 프로그램과 도메인 지식 아무리 복잡한 알고리듬과 프로그램도 이상의 단순한 기본 요소들의 조합에 불과하다 .

프로그래밍 언어가 아무리 기능이 많아도 효율성 , 편리성 등의 차이일 뿐 근본적인 표현력은 동일하므로 프로그래밍의 기본 요소들을 갖춘 언어이기만 하면 어떠한 알고리듬도 구현할 수 있다 .

운영체제 , 스마트폰 , 비행기 등에 수천만 라인의 코드에도 단순한 기본 요소들의 조합에 불과하나 수천만 라인의 코드가 모여 매우 정교한 일을 처리해낸다 .

고급 프로그램에는 매우 복잡한 기존 수학 , 공학 , 의학 , 금융 , 법률 , 오락 , 업무 처리 절차 등의 지식을 표현할 수 있다 . 이와 같은 프로그래밍 외적인 전문 지식을 도메인 지식이라고 한다 .

일반적인 프로그래밍의 기본 원리와 예 (2)

Page 12: 소프트웨어 중심 시대를 준비하자

12㈜디티웨어

프로그래밍 라이브러리 반복적으로 사용되는 함수들을 배포하고 사용하기 쉽게 묶어 놓은 것 개발자는 기존 라이브러리에 존재하는 함수는 별도로 프로그래밍하지 않고 사용하기만 하면 된다 .

라이브러리가 매우 방대해져서 이를 익히는 데 많은 시간과 노력이 필요해졌다 .

라이브러리를 사용하기 위해서는 그 라이브러리가 지원하는 프로그래밍 언어를 사용해야 한다 .

그래픽 라이브러리 : 프로그램이 문자를 입력하고 출력하는 대신 마우스로부터 입력값을 받고 그래픽 화면에 출력하면 그래픽 프로그램이 된다 . 이를 간편하게 프로그래밍할 수 있게 해주는 라이브러리

시스템 라이브러리 : 운영체제의 기능을 불러 쓸수 있도록 해주는 라이브러리 응용 라이브러리 : 통신 , 저장 등 기타 다양한 용도의 라이브러리

소프트웨어 서비스 다른 기기에서 동작하는 소프트웨어 기능을 통신을 통하여 요청하고 결과를 받아서 이용하도록

프로그래밍할 수 있다 .

웹 서비스 : 인터넷 상의 다른 기기에게 소프트웨어 기능을 제공하는 서비스 현대는 라이브러리뿐만 아니라 점점 더 늘어나는 서비스들을 익히고 프로그래밍에 활용한다 .

일반적인 프로그래밍의 기본 원리와 예 (3)

Page 13: 소프트웨어 중심 시대를 준비하자

13㈜디티웨어

절차형 언어 (Procedural Language)

C, C++, 자바 , C#, Objective-C, Swift, JavaScript, Python, PHP, BASIC, ...

FORTRAN, COBOL, ALGOL, PL/1, ...

객체 지향 프로그래밍 언어 (Object-Oriented Programming)

C++, 자바 , C#, Objective-C, ...

Simula, Smalltalk, Eiffel, ...

함수형 언어 (Functional Language)

Scala, F#, Oz, Lisp, Scheme, Standard ML, Haskell, ...

다범주형 언어 (Multi-paradigm Language)

C++, 자바 , C#, Objective-C, …

프로그래밍 언어의 종류

Page 14: 소프트웨어 중심 시대를 준비하자

14㈜디티웨어

현재 프로그래밍 언어 순위

Page 15: 소프트웨어 중심 시대를 준비하자

15㈜디티웨어

소프트웨어로 성공한 사람들의 증언

Page 16: 소프트웨어 중심 시대를 준비하자

16㈜디티웨어

소프트웨어란 컴퓨터가 특정 영역의 문제를 해결하도록 지능을 구현한 것 지능 : 지식을 사용한 문제 해결 능력 인류가 발전하여 지구를 지배한 주 원인 : 뛰어난 지능 , 지식의 교류와

축적 소프트웨어가 가전 기기 , 의료 기기 , 자동차 , 항공기 , 선박 , 우주선

등에 내장되어 휠씬 더 가치를 높게 만듦 인간은 인간의 지식과 기능을 소프트웨어에 지속적으로 축적시키고 ,

소프트웨어는 산업의 중추적 역할을 한다 .

소프트웨어가 왜 중요한가 ?

Page 17: 소프트웨어 중심 시대를 준비하자

17㈜디티웨어

소프트웨어 혁명 : 소프트웨어 능력으로 경쟁의 법칙을 바꾸고 기존 시장 질서를 파괴하며 시장을 석권

“Software is eating the world” 소프트웨어가 세상을 먹어 치우고 있다 . By Marc Andressen, Wall Street Journal, Essay, 2011.8.20

소프트웨어 혁명 : 이메일 , 게시판 , 업무시스템 , 온라인 마켓 , 금융 , 문화 , 교육 , 의료기기 , ( 무인 ) 차 , 비행기 , 선박 , 우주선 등등

소프트웨어는 사회 각 분야에서 점점 더 중요한 위치를 차지

소프트웨어 중심 사회

Page 18: 소프트웨어 중심 시대를 준비하자

18㈜디티웨어

SW 중심의 산업 패러다임 도래 제품개발 원가 중 SW 가 차지하는 비중이 지속적으로 확대 임베디드 SW 의 신뢰성 문제 부각 ( 자동차 , 항공 , 의료 등 )

개발원가 중 SW 비중 ('07)

정보가전 : 53.7%

통신장비 : 52.7%

의료장비 : 45.5%

자동차의 전장화 비율 전망 (NIPA, '11)

2000: 22%

2010: 35%

2020: 50%

소프트웨어 중심 사회 – 개발 원가 비중

Page 19: 소프트웨어 중심 시대를 준비하자

19㈜디티웨어

소프트웨어 중심 사회 – 구글 무인카

Page 20: 소프트웨어 중심 시대를 준비하자

20㈜디티웨어

소프트웨어 중심 사회 – 자동차는 소프트웨어

자동차는 이제 가솔린이 아니라 SW 로 달린다

Page 21: 소프트웨어 중심 시대를 준비하자

21㈜디티웨어

소프트웨어 중심 사회 - 항공산업

1960 1964 1970 1975 1982 1990 2000 20070

10

20

30

40

50

60

70

80

90

100

F-4

F-22

F-35

Year of introduction

F-16

F-15

B-2

F-111

A-7

Fun

ctio

nalit

y im

ple

mente

d b

y S

W (

%)

자료 : The Method Framework for Engineering System Architectures, D.G. Firesmith 2008

2400 만 Line of Code

Page 22: 소프트웨어 중심 시대를 준비하자

22㈜디티웨어

소프트웨어 중심 사회 - 영화산업

컴퓨터 그래픽의 일상적 사용 36000 대의 Linux 컴퓨터가

영화 Avata 제작에 이용

Page 23: 소프트웨어 중심 시대를 준비하자

23㈜디티웨어

소프트웨어 중심 사회 - 금융업

Page 24: 소프트웨어 중심 시대를 준비하자

24㈜디티웨어

Massive Open Online Courses (MOOC) 열풍

소프트웨어 중심 사회 – 온라인 교육

Page 25: 소프트웨어 중심 시대를 준비하자

25㈜디티웨어

소프트웨어 중심 사회 - SW 기술의 발달

운영체계

모듈화 / 객체지향 / 재사용

분산 / 병렬처리

그래픽스 / 시각화 기술

HCI 기술

인공지능 / 기계학습 / 패턴인식

데이터베이스 기술

고급 프로그램 언어

Page 26: 소프트웨어 중심 시대를 준비하자

26㈜디티웨어

자동화의 물결로 단순 일자리 감소 , 구조적 실업 심화 단순 노동은 물론 지식처리 업무도 자동화 추세 소프트웨어 개발업은 최후까지 남아 있을 일자리

소프트웨어 중심 사회 - 일자리 감소

Page 27: 소프트웨어 중심 시대를 준비하자

27㈜디티웨어

미국 대졸 초봉 : 1억 6천만원 한국 대졸 초봉 : 3천만원

소프트웨어 개발자의 연봉

Page 28: 소프트웨어 중심 시대를 준비하자

28㈜디티웨어

소프트웨어 개발자 웹 개발자 모바일 개발자 서버 개발자 데이터 엔지니어 SW 아키텍트

기획자 UI 디자이너 테스트 엔지니어

소프트웨어 직업의 종류

Page 29: 소프트웨어 중심 시대를 준비하자

29㈜디티웨어

일반 개발자 내향적 : 50 ~ 60% ( 인구의 25% 만이 내향적 . 내향적인 사람이 더 고등 교육을 추구 )

사고형 : 80 ~ 90% ( 인구의 50% 가 사고형 )

ISTJ( 내향성 , 감각형 , 사고형 , 판단형 ) 이 가장 많으며 25 ~ 40% 차지 .

도구를 잘 다루며 프로그래밍의 세부적인 구현들을 잘 다룬다 .

프로그래밍 관련 이론과 기반 지식은 잘 바뀌지 않으나 프로그래밍 도구와 각종 실무 기술들은 매우 빠르게 바뀌므로 끊임없이 공부하며 일해야 한다 .

결론 : 논리적 사고 , 공부 , 도구 다루기를 좋아하는 사람이 소프트웨어 개발 업무에 잘 맞는다 .

기획자 , 디자이너 직관형 , 인식형 (NP 형 )

SW 아키텍트 , 위대한 설계자 추상화할 수 있는 능력과 창의성을 갖춘 직관형 인재 창조적인 문제 해결사 감각형 /직관형 , 사고형 / 감정형 , 인식형 /판단형의 경계를 쉽게 이동 그들은 다양한 관점으로 문제를 볼 수 있다 .

예 : 레오나르도 다빈치 , 알버트 아인슈타인

결론 : SW 아키텍트는 전체를 파악하고 설계할 수 있으면서도 핵심 부분을 직접 구현하고 검증할 수 있는 개발 능력을 갖추어야 한다 .

소프트웨어 개발자와 MBTi 성격

Page 30: 소프트웨어 중심 시대를 준비하자

30㈜디티웨어

컴퓨터 구조 운영체제 프로그래밍 언어론 자료구조 / 알고리듬 컴파일러 소프트웨어 공학 컴퓨터 그래픽스 컴퓨터 네트워크 데이터베이스 컴퓨터 보안 인공지능

컴퓨터공학과에서 배우는 주요 전공 과목

Page 31: 소프트웨어 중심 시대를 준비하자

31㈜디티웨어

미국 오바마 대통령의 코딩 교육 중요성 강조

Page 32: 소프트웨어 중심 시대를 준비하자

32㈜디티웨어

재미있고 다재다능한 교육 도구 논리적 , 수학적 , 분석적 , 창의적 사고 능력 함양 기획 , 디자인 , 협업 능력 함양

어떤 일을 하든지 SW 를 잘 이해함으로써 잘 구매하고 잘 활용하는 능력이 필수

어떤 일을 하든지 SW 개발에 직간접적으로 관여될 가능성이 점점 더 높아짐

소프트웨어 전공자도 어렸을 때부터 코딩하지 않으면 학업 부담으로 코딩을 능숙하게 배울 시간이 많지 않음

소규모 창업 용이 최근 , 미국 , 영국 , 일본 , 프랑스 , 중국 등이 잇달아 SW 교육을 독립 정규 과목으로 채택함

프로그래밍 교육은 어릴때부터

Page 33: 소프트웨어 중심 시대를 준비하자

33㈜디티웨어

본 자료의 내용중 소프트웨어 산업 현황과 관련된 부분인 16, 17, 18, 19, 20, 21, 21, 22, 23, 24, 25 페이지는 소프트웨어정책연구소 김진형 소장님의 발표 자료 " 우리는 소프트웨어 중심사회를 준비하고 있는가 ?" 에서 발췌한 것임을 밝힌다 .

http://www.slideshare.net/primebae/ss-36412546

참고