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

Post on 14-Nov-2014

2.092 Views

Category:

Software

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

2014. 7. 15

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

김덕태

㈜디티웨어

2㈜디티웨어

나는 누구인가 ?

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

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

삶이란 무엇인가 ?

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

나는 왜 사는가 ?

삶에 대한 욕구

나는 어떻게 살 것인가 ?

( 나에게 맞는 ) 행복한 삶

나는 어떻게 살 것인가 ?

3㈜디티웨어

행복한 삶이란 ? (1)

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

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

현재 손해 현재 이익

4㈜디티웨어

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

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

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

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

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

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

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

행복한 삶이란 ? (2)

5㈜디티웨어

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

육체 훈련 ( 운동 )

두뇌 훈련 ( 문제 풀이 )

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

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

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

행복한 삶이란 ? (3)

6㈜디티웨어

프로그램 (Program)

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

프로그래밍 언어 (Programming Language)

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

프로그램 코드 (program code)

프로그램의 임의의 일부

소스 코드 (Source Code)

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

소프트웨어 (Software)

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

소프트웨어란 무엇인가 ?

7㈜디티웨어

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

http://scratch.mit.edu

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

8㈜디티웨어

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

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

9㈜디티웨어

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

http://mindstorms.lego.com/

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

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

11㈜디티웨어

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

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

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

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

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

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

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

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

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

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

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

12㈜디티웨어

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

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

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

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

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

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

프로그래밍할 수 있다 .

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

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

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, …

프로그래밍 언어의 종류

14㈜디티웨어

현재 프로그래밍 언어 순위

15㈜디티웨어

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

16㈜디티웨어

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

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

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

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

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

17㈜디티웨어

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

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

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

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

소프트웨어 중심 사회

18㈜디티웨어

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

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

정보가전 : 53.7%

통신장비 : 52.7%

의료장비 : 45.5%

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

2000: 22%

2010: 35%

2020: 50%

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

19㈜디티웨어

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

20㈜디티웨어

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

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

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

22㈜디티웨어

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

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

영화 Avata 제작에 이용

23㈜디티웨어

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

24㈜디티웨어

Massive Open Online Courses (MOOC) 열풍

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

25㈜디티웨어

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

운영체계

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

분산 / 병렬처리

그래픽스 / 시각화 기술

HCI 기술

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

데이터베이스 기술

고급 프로그램 언어

26㈜디티웨어

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

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

27㈜디티웨어

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

소프트웨어 개발자의 연봉

28㈜디티웨어

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

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

소프트웨어 직업의 종류

29㈜디티웨어

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

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

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

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

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

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

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

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

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

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

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

30㈜디티웨어

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

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

31㈜디티웨어

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

32㈜디티웨어

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

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

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

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

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

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

33㈜디티웨어

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

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

참고

top related