SlideShare a Scribd company logo
1 of 11
개발 방식을 바꾸는 15가지 기술 
2014. 11 
Version 0.1
개발 방식을 바꾸는 15가지 기술 sunnykwak@hanmail.net, http://sunnykwak.tistory.com 
1 
목차 
0. 컴퓨터 시스템 
1. API (Application Programming Interface) 
2. 라이브러리 (Library) 
3. API vs. Library 
4. 프레임워크 (Frameworks) 
5. 통합개발환경(IDE : Integred Development Environment) 
6. 지속적인 통합 (continuous integration) 
7. 소셜 코드 공유 
.... and more
개발 방식을 바꾸는 15가지 기술 sunnykwak@hanmail.net, http://sunnykwak.tistory.com 
2 
0. 컴퓨터 시스템 
컴퓨터 시스템은 하드웨어, 운영체제, 어플리케이션으로 구성되어 있다고 요약할 수 있다. 
• 하드웨어 (Hardware) : 항공모함 자체라고 표현할 수 있으며, 그 자체로서는 효용성이 없음. 
• 운영체제 (OS, Kernel) : 항공모함의 함교(bridget) 비유할 수 있다. 하드웨어를 통제하고, 어플리케이션의 각종 요청을 처리한다. 
• 어플리케이션 : 항공모함에 탑재된 전투기 같은 존재, 하드웨어와 운영체제 없이 동작할 수 없다.
개발 방식을 바꾸는 15가지 기술 sunnykwak@hanmail.net, http://sunnykwak.tistory.com 
3 
1. API (Application Programming Interface) 
API(Application Programming Interface, 응용 프로그램 프로그래밍 인터페이스)는 응용 프로그램에서 사용할 수 있도록, 
운영 체제 혹은 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다. 
(파일 제어, 창 제어, 화상 처리, 문자 제어 등) 
[ MS Windows API Stack ] [ Traditional UNIX API ] 
[ Operation System APIs ] [ and More ...] 
• 최초의 API는 운영체제가 어플리케이션을 위해 제공하는 기능들을 말했지만, 의미가 확대되면서 하부 시스템 (운영체제, 가상 머신, 컨테이너 등)에서 
상위에 존재하는 어플리케이션이나 앱, 위젯에 제공하는 각종 기능(함수)들의 집합(set)을 API라고 부른다. 
• 그러나 최근에서 온라인 서비스 등에서 클라이언트에 제공하는 기능들도 폭넓게 API 라고 부른다.
개발 방식을 바꾸는 15가지 기술 sunnykwak@hanmail.net, http://sunnykwak.tistory.com 
4 
2. 라이브러리 (Library) 
라이브러리(영어: library)는 소프트웨어를 만들 때 쓰이는 클래스나 서브루틴들의 모임을 가리킨다. 
[ 소스 코드와 라이브러리를 결합하는 컴파일 과정 ] [ 정적 라이브러리와 동적 라이브러리의 차이점 ] 
• 정적 라이브러리는 컴파일러가 소스 파일을 컴파일할 때 참조되는 프로그램 모듈이다. 즉, 정적 라이브러리(statically-linked library)는 루틴(routine) 외부 
함수와 변수들의 집합으로, 컴파일러, 링커, 바인더 등에 의해 목표된 애플리케이션으로 복사되어 오브젝트 파일과 독립적으로 실행할 수 있는 실행 파일을 
생성하는데에 사용된다. 주로 LIB (Windows), a (Unix, Linux) 확장자를 가진다. 
• 동적 라이브러리는 프로그램 수행 도중 해당 모듈이 필요할 때 불러쓰는 프로그램 모듈이다. 주로 dll (Windows), so (Unix, Linux) 확장자를 가진다.
API 는 운영체제(혹은 커널)의 기능을 호출하고, 라이브러리는 개발자들의 만들어 공유하는 기능을 의미한다. 
Users 
User 
inteface 
Standard utility & Applications 
(shell, editors, compiler, Offce, Games) 
Standard library 
(open, close, read, write, fork, etc) 
Operating system 
Library 
inteface 
System call 
inteface 
(process management, memory management, the file system, I/O, etc) 
Hardware 
(CPU, memory, disks, I/O devices, etc) 
User 
mode 
Kernel 
mode 
[ Unix, Liunx 운영체제의 시스템 계층 구조 ] 
개발 방식을 바꾸는 15가지 기술 sunnykwak@hanmail.net, http://sunnykwak.tistory.com 
5 
3. API vs. Library 
• API는 독자적으로 구동되는 프로그램나 서비스 되고 있는 특정 플랫폼에서 하위 기능을 제어하거나, 제공하는 기능을 호출할 수 있는 함수들의 집합이다. 
반면에, 라이브러리는 특정 알고리즘이나 작업을 처리할 수 있는 기능들을 수행할 수 있는 함수의 집합이다. 
• API는 제품(운영체제 같은 경우)을 구매하거나, 사용(구글 같은 경우)해야 쓸 수 있는 것이고 개발자가 제작하는 어플리케이션에 포함되지 않는다. 
즉, 부품이 아니라 어플리케이션 외부의 기능을 호출하는 것이다 
• 반면에 라이브러리는 프로그래머가 제작하는 어플리케이션의 부품 형태로 사용할 수 있게 만들어져 배포되는 기능 모듈이다. 
• 그런데... 라이브러리와 API는 정확하게 구분하기 어려운 경우가 많으며, 점차 구분이 모호해지고 있다.
[ Spring MVC 프레임워크의 라이프사이클 ] [ iBatis 프레임워크 기반 어플리케이션의 계층 구조 ] 
개발 방식을 바꾸는 15가지 기술 sunnykwak@hanmail.net, http://sunnykwak.tistory.com 
6 
4. 프레임워크 (Frameworks) 
프레임워크는 도메인 기반의 지식으로 구성된 객체 구조와 기능을 가지고 있는 반쯤 완성된 어플리케이션이다. 
- '소프트웨어 아키텍쳐 이론과 실제(Pattern-Oriented Software Architecture)'의 저자 더글라스 슈미츠. 
• 프레임워크는 특정 목적의 서비스 혹은 어플리리션을 제작하기 쉽게끔 일련의 작업 흐름을 미리 만들어 둔 소프트웨어 반제품이다. 
• 라이브러리는 개별 부품들의 단순 집합 - 레고 블럭들을 넣어둔 상자라고 표현 - 이라고 설명할 수 있다. 
동작하는 무언가를 만들고자 하면 직접 필요한 부품들을 조립(혹은 코딩)을 해야 한다. 반면에 프레임워크는 일련의 과정을 수행하는 부품들이 조립되어 있어 
간단한 설정만으로 어플리케이션을 제작할 수 있다. 
• 요약하자면, 라이브러리는 그냥 '부품 상자'이고 프레임워크는 부품들을 연결하고 조립해둔 '모듈 형태의 반제품’이다.
5. 통합개발환경(IDE : Integred Development Environment) 
통합 개발 환경(Integrated Development Environment, IDE)은 코딩, 디버그, 컴파일, 배포 등 프로그램 개발에 관련된 모든 작업을 하나의 
프로그램 안에서 처리하는 환경을 제공하는 소프트웨어이다. – 위키피디아 인용 
[ IDE 이전 시대의 개발 절차 ] [ 이클립스 4.x 구성 요소 ] 
• 프로그래머는 자신이 구상한 프로그램을 텍스트 편집기를 이용해 '프로그래밍 언어'로 작성하고, 컴파일러를 이용해 실행 파일 형태로 만든다. 오동작 할 
경우에는 원인을 찾기 위해 디버거(debugger)를 이용해 버그를 찾아낸다. 과거에는 이러한 작업들을 처리하는 개별적인 프로그램을 따로 따로 사용해야 했다. 
• 프로그램 개발 과정에 포함되는 일련의 작업을 수행하기 위해서는 프로그램 소스 편집기(program source editor), 컴파일러(compiler), 디버거(debugger) 
등의 개발 도구(development tool)들이 필요한데, 이것들을 하나의 종합 셋트로 모은 것이 통합개발환경(통칭 IDE)이다. 
• 가장 널리 쓰이는 통합개발환경으로는 MS Visual Studio, Eclipse, IntelliJ 등이 있다. 더불어 델파이(Delphi), 파워빌더(Power Builder) 등도 사용된다. 
개발 방식을 바꾸는 15가지 기술 sunnykwak@hanmail.net, http://sunnykwak.tistory.com 
7
개발 방식을 바꾸는 15가지 기술 sunnykwak@hanmail.net, http://sunnykwak.tistory.com 
8 
6. 지속적인 통합 (continuous integration) 
소프트웨어 공학에서, 지속적인 통합(continuous integration, CI)은 지속적으로 품질 제어(quality control)를 적용하는 
프로세스를 실행하는 것이다. 
• 앞서 언급한 통합개발환경이 도입된 이후로 단 하나의 개발도구만 가지고, 소프트웨어 개발에 필요한 모든 과정을 편하게 수행할 수 있다. 
그러나, 소프트웨어의 규모가 커지면서 더 이상 소프트웨어를 단 한 명의 개발자가 만들어 낼 수가 없게 되었다. 
• 대다수의 상용 소프트웨어는 수 명에서 수백명의 개발자가 하나의 제품을 만들기 위해 협력한다. 동시에 여러 사람이 개발을 진행하다 보면, 각자가 작업한 
소스 코드를 합치고(merge)하고, 컴파일한 후, 정상적으로 동작하는지 여부를 테스트하는 과정을 도저히 사람이 수행할 수 없게 된다. 따라서, 주기적으로 
변경된 소스를 찾아서 자동으로 컴파일하고 기능을 테스트하며, 그 결과를 기록해주는 제품이 만들어진 것이다.
개발 방식을 바꾸는 15가지 기술 sunnykwak@hanmail.net, http://sunnykwak.tistory.com 
9 
7. 소셜 코드 공유 
깃허브(GitHub), 소스포지(SourceForge), 구글 코드 (Google Code)... 
• 90년대에는 소수의 개발자들이 작은 사무실에 모여서 개발하는 형태를 '소프트웨어 하우스'라고 부르는 유행이 있었습니다. 닷컴 열풍이 불기 전, 인터넷이 
광범위하게 퍼지기 전에는 소프트웨어 개발은 자동차 창고 같은 허름한 공간에 열정적인 개발자들이 모여서 함께 작업하는 것이 당연했습니다. 
•하지만, 인터넷이 발전하고, 세상의 모든 개발자들 연결되면서 전세계의 모든 개발자들이 가상의 인터넷 공간에서 함께 작업할 수 있게 되었습니다. 서로 다른 
시간과 공간에서 작업을 하면서도 서로의 작업을 확인하고, 의견을 나누고 소스를 취합할 수 있는 공간이 소셜 소스 공유 사이트입니다.
개발 방식을 바꾸는 15가지 기술 sunnykwak@hanmail.net, http://sunnykwak.tistory.com 
10 
참고 : 소프트웨어 개발 라이프사이클

More Related Content

What's hot

커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님NAVER D2
 
[D2 CAMPUS] tech meet up(Back-end) - 교내 웹서비스 개발 일지 (박은찬님)
[D2 CAMPUS] tech meet up(Back-end) - 교내 웹서비스 개발 일지 (박은찬님)[D2 CAMPUS] tech meet up(Back-end) - 교내 웹서비스 개발 일지 (박은찬님)
[D2 CAMPUS] tech meet up(Back-end) - 교내 웹서비스 개발 일지 (박은찬님)NAVER D2
 
깨끗한 코드 (클린 코드, Clean Code)
깨끗한 코드 (클린 코드, Clean Code)깨끗한 코드 (클린 코드, Clean Code)
깨끗한 코드 (클린 코드, Clean Code)Jay Park
 
Spring IoC
Spring IoCSpring IoC
Spring IoCSuan Lee
 
처음 시작하는 라라벨
처음 시작하는 라라벨처음 시작하는 라라벨
처음 시작하는 라라벨KwangSeob Jeong
 
테스터도 알아야 할 웹 개발(테스트 교육 3장 1절 부분발췌)
테스터도 알아야 할 웹 개발(테스트 교육 3장 1절 부분발췌)테스터도 알아야 할 웹 개발(테스트 교육 3장 1절 부분발췌)
테스터도 알아야 할 웹 개발(테스트 교육 3장 1절 부분발췌)SangIn Choung
 
Atlassian 및 오픈소스를 이용한 DevOps 구축 - 한국정보컨설팅
Atlassian 및 오픈소스를 이용한 DevOps 구축 - 한국정보컨설팅Atlassian 및 오픈소스를 이용한 DevOps 구축 - 한국정보컨설팅
Atlassian 및 오픈소스를 이용한 DevOps 구축 - 한국정보컨설팅Atlassian 대한민국
 
진보한 개발 환경에서 품질 좋은 코드 생산 (WebStorm)
진보한 개발 환경에서 품질 좋은 코드 생산 (WebStorm)진보한 개발 환경에서 품질 좋은 코드 생산 (WebStorm)
진보한 개발 환경에서 품질 좋은 코드 생산 (WebStorm)우영 주
 
D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기
D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기
D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기Soojin Ro
 
메이븐파헤치기(김우용)
메이븐파헤치기(김우용)메이븐파헤치기(김우용)
메이븐파헤치기(김우용)우용 김
 
[Tech meet up] 2018 프론트엔드 트렌드&인사이트
[Tech meet up] 2018 프론트엔드 트렌드&인사이트[Tech meet up] 2018 프론트엔드 트렌드&인사이트
[Tech meet up] 2018 프론트엔드 트렌드&인사이트NAVER D2
 
Spring Framework 튜토리얼 - 네이버 최영목님
Spring Framework 튜토리얼 - 네이버 최영목님Spring Framework 튜토리얼 - 네이버 최영목님
Spring Framework 튜토리얼 - 네이버 최영목님NAVER D2
 
[D2]pinpoint 개발기
[D2]pinpoint 개발기[D2]pinpoint 개발기
[D2]pinpoint 개발기NAVER D2
 
제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기
제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기
제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기NAVER D2
 
XECon2015 :: [3-1] 용영환 - HHVM 서비스 적용기
XECon2015 :: [3-1] 용영환 - HHVM 서비스 적용기XECon2015 :: [3-1] 용영환 - HHVM 서비스 적용기
XECon2015 :: [3-1] 용영환 - HHVM 서비스 적용기XpressEngine
 
개발자를 위한 웹표준 & 웹접근성이야기
개발자를 위한 웹표준 & 웹접근성이야기개발자를 위한 웹표준 & 웹접근성이야기
개발자를 위한 웹표준 & 웹접근성이야기NAVER D2
 

What's hot (20)

Maven의 이해
Maven의 이해Maven의 이해
Maven의 이해
 
커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님
 
Maven
MavenMaven
Maven
 
[D2 CAMPUS] tech meet up(Back-end) - 교내 웹서비스 개발 일지 (박은찬님)
[D2 CAMPUS] tech meet up(Back-end) - 교내 웹서비스 개발 일지 (박은찬님)[D2 CAMPUS] tech meet up(Back-end) - 교내 웹서비스 개발 일지 (박은찬님)
[D2 CAMPUS] tech meet up(Back-end) - 교내 웹서비스 개발 일지 (박은찬님)
 
깨끗한 코드 (클린 코드, Clean Code)
깨끗한 코드 (클린 코드, Clean Code)깨끗한 코드 (클린 코드, Clean Code)
깨끗한 코드 (클린 코드, Clean Code)
 
Spring IoC
Spring IoCSpring IoC
Spring IoC
 
처음 시작하는 라라벨
처음 시작하는 라라벨처음 시작하는 라라벨
처음 시작하는 라라벨
 
테스터도 알아야 할 웹 개발(테스트 교육 3장 1절 부분발췌)
테스터도 알아야 할 웹 개발(테스트 교육 3장 1절 부분발췌)테스터도 알아야 할 웹 개발(테스트 교육 3장 1절 부분발췌)
테스터도 알아야 할 웹 개발(테스트 교육 3장 1절 부분발췌)
 
Learning Laravel
Learning LaravelLearning Laravel
Learning Laravel
 
Atlassian 및 오픈소스를 이용한 DevOps 구축 - 한국정보컨설팅
Atlassian 및 오픈소스를 이용한 DevOps 구축 - 한국정보컨설팅Atlassian 및 오픈소스를 이용한 DevOps 구축 - 한국정보컨설팅
Atlassian 및 오픈소스를 이용한 DevOps 구축 - 한국정보컨설팅
 
sdet수행 사례
sdet수행 사례sdet수행 사례
sdet수행 사례
 
진보한 개발 환경에서 품질 좋은 코드 생산 (WebStorm)
진보한 개발 환경에서 품질 좋은 코드 생산 (WebStorm)진보한 개발 환경에서 품질 좋은 코드 생산 (WebStorm)
진보한 개발 환경에서 품질 좋은 코드 생산 (WebStorm)
 
D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기
D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기
D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기
 
메이븐파헤치기(김우용)
메이븐파헤치기(김우용)메이븐파헤치기(김우용)
메이븐파헤치기(김우용)
 
[Tech meet up] 2018 프론트엔드 트렌드&인사이트
[Tech meet up] 2018 프론트엔드 트렌드&인사이트[Tech meet up] 2018 프론트엔드 트렌드&인사이트
[Tech meet up] 2018 프론트엔드 트렌드&인사이트
 
Spring Framework 튜토리얼 - 네이버 최영목님
Spring Framework 튜토리얼 - 네이버 최영목님Spring Framework 튜토리얼 - 네이버 최영목님
Spring Framework 튜토리얼 - 네이버 최영목님
 
[D2]pinpoint 개발기
[D2]pinpoint 개발기[D2]pinpoint 개발기
[D2]pinpoint 개발기
 
제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기
제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기
제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기
 
XECon2015 :: [3-1] 용영환 - HHVM 서비스 적용기
XECon2015 :: [3-1] 용영환 - HHVM 서비스 적용기XECon2015 :: [3-1] 용영환 - HHVM 서비스 적용기
XECon2015 :: [3-1] 용영환 - HHVM 서비스 적용기
 
개발자를 위한 웹표준 & 웹접근성이야기
개발자를 위한 웹표준 & 웹접근성이야기개발자를 위한 웹표준 & 웹접근성이야기
개발자를 위한 웹표준 & 웹접근성이야기
 

Viewers also liked

소프트웨어 개발자 로드맵
소프트웨어 개발자 로드맵소프트웨어 개발자 로드맵
소프트웨어 개발자 로드맵중선 곽
 
기업 통합 패턴(Enterprise Integration Patterns) 강의
기업 통합 패턴(Enterprise Integration Patterns) 강의기업 통합 패턴(Enterprise Integration Patterns) 강의
기업 통합 패턴(Enterprise Integration Patterns) 강의정호 차
 
[0119 박민근] 기술 면접시 자주 나오는 문제들(ver 2013)
[0119 박민근] 기술 면접시 자주 나오는 문제들(ver 2013)[0119 박민근] 기술 면접시 자주 나오는 문제들(ver 2013)
[0119 박민근] 기술 면접시 자주 나오는 문제들(ver 2013)MinGeun Park
 
손코딩뇌컴파일눈디버깅을 소개합니다.
손코딩뇌컴파일눈디버깅을 소개합니다.손코딩뇌컴파일눈디버깅을 소개합니다.
손코딩뇌컴파일눈디버깅을 소개합니다.Kwangsung Ha
 
Apache 핵심 프로젝트 camel 엿보기
Apache 핵심 프로젝트 camel 엿보기Apache 핵심 프로젝트 camel 엿보기
Apache 핵심 프로젝트 camel 엿보기Hwang Sun Oh Kelly
 
초급 개발자 탈출
초급 개발자 탈출초급 개발자 탈출
초급 개발자 탈출JeongHun Byeon
 
소프트웨어 학습 및 자바 웹 개발자 학습 로드맵
소프트웨어 학습 및 자바 웹 개발자 학습 로드맵소프트웨어 학습 및 자바 웹 개발자 학습 로드맵
소프트웨어 학습 및 자바 웹 개발자 학습 로드맵Javajigi Jaesung
 
객체지향 철학 그리고 5대 개념
객체지향 철학 그리고 5대 개념객체지향 철학 그리고 5대 개념
객체지향 철학 그리고 5대 개념중선 곽
 
이제 막 웹개발자 되고싶은 분들께
이제 막 웹개발자 되고싶은 분들께이제 막 웹개발자 되고싶은 분들께
이제 막 웹개발자 되고싶은 분들께지수 윤
 
게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법Chris Ohk
 
[H3 2012] 오픈소스로 개발 실력 쌓기
[H3 2012] 오픈소스로 개발 실력 쌓기[H3 2012] 오픈소스로 개발 실력 쌓기
[H3 2012] 오픈소스로 개발 실력 쌓기KTH, 케이티하이텔
 
서버 성능에 대한 정의와 이해
서버 성능에 대한 정의와 이해서버 성능에 대한 정의와 이해
서버 성능에 대한 정의와 이해중선 곽
 
라즈베리파이 Iptime 150u a
라즈베리파이 Iptime 150u a라즈베리파이 Iptime 150u a
라즈베리파이 Iptime 150u aJuHyeon Yeom
 
김동우 - 학부 이후의 진로, 스타트업 개발자 이야기 in 130323 KAIST CS 아주 소소한 진로 설명회
김동우 - 학부 이후의 진로, 스타트업 개발자 이야기 in 130323 KAIST CS 아주 소소한 진로 설명회김동우 - 학부 이후의 진로, 스타트업 개발자 이야기 in 130323 KAIST CS 아주 소소한 진로 설명회
김동우 - 학부 이후의 진로, 스타트업 개발자 이야기 in 130323 KAIST CS 아주 소소한 진로 설명회Yunseok Jang
 
김준기 - 박사과정 이야기 in 130323 KAIST CS 아주 소소한 진로 설명회
김준기 - 박사과정 이야기 in 130323 KAIST CS 아주 소소한 진로 설명회김준기 - 박사과정 이야기 in 130323 KAIST CS 아주 소소한 진로 설명회
김준기 - 박사과정 이야기 in 130323 KAIST CS 아주 소소한 진로 설명회Yunseok Jang
 
[GDG DevFest Seoul 2016] 오픈 소스를 통해 개발 근육 강화하기
[GDG DevFest Seoul 2016] 오픈 소스를 통해 개발 근육 강화하기[GDG DevFest Seoul 2016] 오픈 소스를 통해 개발 근육 강화하기
[GDG DevFest Seoul 2016] 오픈 소스를 통해 개발 근육 강화하기Daniel Juyung Seo
 
배휘동 - 연구실에서 살기 시작한다는 것 in 130323 KAIST CS 아주 소소한 진로 설명회
배휘동 - 연구실에서 살기 시작한다는 것 in 130323 KAIST CS 아주 소소한 진로 설명회배휘동 - 연구실에서 살기 시작한다는 것 in 130323 KAIST CS 아주 소소한 진로 설명회
배휘동 - 연구실에서 살기 시작한다는 것 in 130323 KAIST CS 아주 소소한 진로 설명회Yunseok Jang
 
임신부의 치과 치료 괜찮나요?
임신부의 치과 치료 괜찮나요?임신부의 치과 치료 괜찮나요?
임신부의 치과 치료 괜찮나요?mothersafe
 
공간의 향기를 듣다 @안애진 퍼퓸디자이너
공간의 향기를 듣다 @안애진 퍼퓸디자이너공간의 향기를 듣다 @안애진 퍼퓸디자이너
공간의 향기를 듣다 @안애진 퍼퓸디자이너cbs15min
 
본질을 좇다 :마누라와 자식빼고 다 빼라 @이의현 로우로우 대표
본질을 좇다 :마누라와 자식빼고 다 빼라 @이의현 로우로우 대표본질을 좇다 :마누라와 자식빼고 다 빼라 @이의현 로우로우 대표
본질을 좇다 :마누라와 자식빼고 다 빼라 @이의현 로우로우 대표cbs15min
 

Viewers also liked (20)

소프트웨어 개발자 로드맵
소프트웨어 개발자 로드맵소프트웨어 개발자 로드맵
소프트웨어 개발자 로드맵
 
기업 통합 패턴(Enterprise Integration Patterns) 강의
기업 통합 패턴(Enterprise Integration Patterns) 강의기업 통합 패턴(Enterprise Integration Patterns) 강의
기업 통합 패턴(Enterprise Integration Patterns) 강의
 
[0119 박민근] 기술 면접시 자주 나오는 문제들(ver 2013)
[0119 박민근] 기술 면접시 자주 나오는 문제들(ver 2013)[0119 박민근] 기술 면접시 자주 나오는 문제들(ver 2013)
[0119 박민근] 기술 면접시 자주 나오는 문제들(ver 2013)
 
손코딩뇌컴파일눈디버깅을 소개합니다.
손코딩뇌컴파일눈디버깅을 소개합니다.손코딩뇌컴파일눈디버깅을 소개합니다.
손코딩뇌컴파일눈디버깅을 소개합니다.
 
Apache 핵심 프로젝트 camel 엿보기
Apache 핵심 프로젝트 camel 엿보기Apache 핵심 프로젝트 camel 엿보기
Apache 핵심 프로젝트 camel 엿보기
 
초급 개발자 탈출
초급 개발자 탈출초급 개발자 탈출
초급 개발자 탈출
 
소프트웨어 학습 및 자바 웹 개발자 학습 로드맵
소프트웨어 학습 및 자바 웹 개발자 학습 로드맵소프트웨어 학습 및 자바 웹 개발자 학습 로드맵
소프트웨어 학습 및 자바 웹 개발자 학습 로드맵
 
객체지향 철학 그리고 5대 개념
객체지향 철학 그리고 5대 개념객체지향 철학 그리고 5대 개념
객체지향 철학 그리고 5대 개념
 
이제 막 웹개발자 되고싶은 분들께
이제 막 웹개발자 되고싶은 분들께이제 막 웹개발자 되고싶은 분들께
이제 막 웹개발자 되고싶은 분들께
 
게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법
 
[H3 2012] 오픈소스로 개발 실력 쌓기
[H3 2012] 오픈소스로 개발 실력 쌓기[H3 2012] 오픈소스로 개발 실력 쌓기
[H3 2012] 오픈소스로 개발 실력 쌓기
 
서버 성능에 대한 정의와 이해
서버 성능에 대한 정의와 이해서버 성능에 대한 정의와 이해
서버 성능에 대한 정의와 이해
 
라즈베리파이 Iptime 150u a
라즈베리파이 Iptime 150u a라즈베리파이 Iptime 150u a
라즈베리파이 Iptime 150u a
 
김동우 - 학부 이후의 진로, 스타트업 개발자 이야기 in 130323 KAIST CS 아주 소소한 진로 설명회
김동우 - 학부 이후의 진로, 스타트업 개발자 이야기 in 130323 KAIST CS 아주 소소한 진로 설명회김동우 - 학부 이후의 진로, 스타트업 개발자 이야기 in 130323 KAIST CS 아주 소소한 진로 설명회
김동우 - 학부 이후의 진로, 스타트업 개발자 이야기 in 130323 KAIST CS 아주 소소한 진로 설명회
 
김준기 - 박사과정 이야기 in 130323 KAIST CS 아주 소소한 진로 설명회
김준기 - 박사과정 이야기 in 130323 KAIST CS 아주 소소한 진로 설명회김준기 - 박사과정 이야기 in 130323 KAIST CS 아주 소소한 진로 설명회
김준기 - 박사과정 이야기 in 130323 KAIST CS 아주 소소한 진로 설명회
 
[GDG DevFest Seoul 2016] 오픈 소스를 통해 개발 근육 강화하기
[GDG DevFest Seoul 2016] 오픈 소스를 통해 개발 근육 강화하기[GDG DevFest Seoul 2016] 오픈 소스를 통해 개발 근육 강화하기
[GDG DevFest Seoul 2016] 오픈 소스를 통해 개발 근육 강화하기
 
배휘동 - 연구실에서 살기 시작한다는 것 in 130323 KAIST CS 아주 소소한 진로 설명회
배휘동 - 연구실에서 살기 시작한다는 것 in 130323 KAIST CS 아주 소소한 진로 설명회배휘동 - 연구실에서 살기 시작한다는 것 in 130323 KAIST CS 아주 소소한 진로 설명회
배휘동 - 연구실에서 살기 시작한다는 것 in 130323 KAIST CS 아주 소소한 진로 설명회
 
임신부의 치과 치료 괜찮나요?
임신부의 치과 치료 괜찮나요?임신부의 치과 치료 괜찮나요?
임신부의 치과 치료 괜찮나요?
 
공간의 향기를 듣다 @안애진 퍼퓸디자이너
공간의 향기를 듣다 @안애진 퍼퓸디자이너공간의 향기를 듣다 @안애진 퍼퓸디자이너
공간의 향기를 듣다 @안애진 퍼퓸디자이너
 
본질을 좇다 :마누라와 자식빼고 다 빼라 @이의현 로우로우 대표
본질을 좇다 :마누라와 자식빼고 다 빼라 @이의현 로우로우 대표본질을 좇다 :마누라와 자식빼고 다 빼라 @이의현 로우로우 대표
본질을 좇다 :마누라와 자식빼고 다 빼라 @이의현 로우로우 대표
 

Similar to 개발 방식을 바꾸는 15가지 기술

React native development
React native developmentReact native development
React native developmentSangSun Park
 
야, 너두 짤수있어 - IaC Basic(210131 김성익)
야, 너두 짤수있어 - IaC Basic(210131 김성익)야, 너두 짤수있어 - IaC Basic(210131 김성익)
야, 너두 짤수있어 - IaC Basic(210131 김성익)SeongIkKim2
 
Intro to hpe helion stackato_paa_s
Intro to hpe helion stackato_paa_sIntro to hpe helion stackato_paa_s
Intro to hpe helion stackato_paa_sSeong-Bok Lee
 
01.개발환경 교육교재
01.개발환경 교육교재01.개발환경 교육교재
01.개발환경 교육교재Hankyo
 
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해Terry Cho
 
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetesNAVER D2
 
강좌 04 펌웨어 구조 설계
강좌 04 펌웨어 구조 설계강좌 04 펌웨어 구조 설계
강좌 04 펌웨어 구조 설계chcbaram
 
Spring3 발표자료 - 김연수
Spring3 발표자료 - 김연수Spring3 발표자료 - 김연수
Spring3 발표자료 - 김연수Yeon Soo Kim
 
6. nexcore alopex runtime
6. nexcore alopex runtime6. nexcore alopex runtime
6. nexcore alopex runtimeJinKyoungHeo
 
[Uws] enterprise application architecture, msa, java9, spring 소개
[Uws] enterprise application architecture, msa, java9, spring 소개[Uws] enterprise application architecture, msa, java9, spring 소개
[Uws] enterprise application architecture, msa, java9, spring 소개HYUN-JOO LEE
 
develop android app using intellij
develop android app using intellijdevelop android app using intellij
develop android app using intellijSewon Ann
 
Big Data platform을 위한 Sencha Ext JS 사례.
Big Data platform을 위한 Sencha Ext JS 사례.Big Data platform을 위한 Sencha Ext JS 사례.
Big Data platform을 위한 Sencha Ext JS 사례.효근 박
 
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravelXECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravelXpressEngine
 
오라클 클라우드와 함께 떠나는 마이크로서비스 아키텍처로의 여행 V3
오라클 클라우드와 함께 떠나는 마이크로서비스 아키텍처로의 여행 V3오라클 클라우드와 함께 떠나는 마이크로서비스 아키텍처로의 여행 V3
오라클 클라우드와 함께 떠나는 마이크로서비스 아키텍처로의 여행 V3Heejong Lee
 
DevOps - CI/CD 알아보기
DevOps - CI/CD 알아보기DevOps - CI/CD 알아보기
DevOps - CI/CD 알아보기SeungYong Baek
 
SOSCON 2017 - Backend.AI
SOSCON 2017 - Backend.AISOSCON 2017 - Backend.AI
SOSCON 2017 - Backend.AIJoongi Kim
 

Similar to 개발 방식을 바꾸는 15가지 기술 (20)

2015.07.01
2015.07.012015.07.01
2015.07.01
 
React native development
React native developmentReact native development
React native development
 
야, 너두 짤수있어 - IaC Basic(210131 김성익)
야, 너두 짤수있어 - IaC Basic(210131 김성익)야, 너두 짤수있어 - IaC Basic(210131 김성익)
야, 너두 짤수있어 - IaC Basic(210131 김성익)
 
Intro to hpe helion stackato_paa_s
Intro to hpe helion stackato_paa_sIntro to hpe helion stackato_paa_s
Intro to hpe helion stackato_paa_s
 
01.개발환경 교육교재
01.개발환경 교육교재01.개발환경 교육교재
01.개발환경 교육교재
 
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
 
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetes
 
강좌 04 펌웨어 구조 설계
강좌 04 펌웨어 구조 설계강좌 04 펌웨어 구조 설계
강좌 04 펌웨어 구조 설계
 
Sencha ExtJS를 활용한 Big Data Platform 개발 사례
Sencha ExtJS를 활용한 Big Data Platform 개발 사례 Sencha ExtJS를 활용한 Big Data Platform 개발 사례
Sencha ExtJS를 활용한 Big Data Platform 개발 사례
 
Spring3 발표자료 - 김연수
Spring3 발표자료 - 김연수Spring3 발표자료 - 김연수
Spring3 발표자료 - 김연수
 
6. nexcore alopex runtime
6. nexcore alopex runtime6. nexcore alopex runtime
6. nexcore alopex runtime
 
[Uws] enterprise application architecture, msa, java9, spring 소개
[Uws] enterprise application architecture, msa, java9, spring 소개[Uws] enterprise application architecture, msa, java9, spring 소개
[Uws] enterprise application architecture, msa, java9, spring 소개
 
develop android app using intellij
develop android app using intellijdevelop android app using intellij
develop android app using intellij
 
Big Data platform을 위한 Sencha Ext JS 사례.
Big Data platform을 위한 Sencha Ext JS 사례.Big Data platform을 위한 Sencha Ext JS 사례.
Big Data platform을 위한 Sencha Ext JS 사례.
 
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravelXECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
 
오라클 클라우드와 함께 떠나는 마이크로서비스 아키텍처로의 여행 V3
오라클 클라우드와 함께 떠나는 마이크로서비스 아키텍처로의 여행 V3오라클 클라우드와 함께 떠나는 마이크로서비스 아키텍처로의 여행 V3
오라클 클라우드와 함께 떠나는 마이크로서비스 아키텍처로의 여행 V3
 
DevOps - CI/CD 알아보기
DevOps - CI/CD 알아보기DevOps - CI/CD 알아보기
DevOps - CI/CD 알아보기
 
SOSCON 2017 - Backend.AI
SOSCON 2017 - Backend.AISOSCON 2017 - Backend.AI
SOSCON 2017 - Backend.AI
 
-
--
-
 
-
--
-
 

More from 중선 곽

자바로 배우는 자료구조
자바로 배우는 자료구조자바로 배우는 자료구조
자바로 배우는 자료구조중선 곽
 
프로그래밍 방식의 변천 과정
프로그래밍 방식의 변천 과정프로그래밍 방식의 변천 과정
프로그래밍 방식의 변천 과정중선 곽
 
젠킨스 설치 및 설정
젠킨스 설치 및 설정젠킨스 설치 및 설정
젠킨스 설치 및 설정중선 곽
 
Test driven development short lesson
Test driven development   short lessonTest driven development   short lesson
Test driven development short lesson중선 곽
 
Tomcat monitoring using_javamelody
Tomcat monitoring using_javamelodyTomcat monitoring using_javamelody
Tomcat monitoring using_javamelody중선 곽
 
Web service performance_test_using_jmeter_ver1.2
Web service performance_test_using_jmeter_ver1.2Web service performance_test_using_jmeter_ver1.2
Web service performance_test_using_jmeter_ver1.2중선 곽
 
Online service 계층별 성능 모니터링 방안
Online service 계층별 성능 모니터링 방안Online service 계층별 성능 모니터링 방안
Online service 계층별 성능 모니터링 방안중선 곽
 
Intranet query tuning (example)
Intranet query tuning (example)Intranet query tuning (example)
Intranet query tuning (example)중선 곽
 
Db 진단 및 튜닝 보고 (example)
Db 진단 및 튜닝 보고 (example)Db 진단 및 튜닝 보고 (example)
Db 진단 및 튜닝 보고 (example)중선 곽
 
Scale up and scale out
Scale up and scale outScale up and scale out
Scale up and scale out중선 곽
 
Java rmi 개발 가이드
Java rmi 개발 가이드Java rmi 개발 가이드
Java rmi 개발 가이드중선 곽
 
Java rmi 개발 가이드
Java rmi 개발 가이드Java rmi 개발 가이드
Java rmi 개발 가이드중선 곽
 
컴퓨터 네트워크와 인터넷
컴퓨터 네트워크와 인터넷컴퓨터 네트워크와 인터넷
컴퓨터 네트워크와 인터넷중선 곽
 
자바 직렬화 (Java serialization)
자바 직렬화 (Java serialization)자바 직렬화 (Java serialization)
자바 직렬화 (Java serialization)중선 곽
 
숫자 구분자 처리 (Digit group separators)
숫자 구분자 처리 (Digit group separators)숫자 구분자 처리 (Digit group separators)
숫자 구분자 처리 (Digit group separators)중선 곽
 
서버 아키텍쳐 입문
서버 아키텍쳐 입문서버 아키텍쳐 입문
서버 아키텍쳐 입문중선 곽
 
서버 아키텍쳐 입문
서버 아키텍쳐 입문서버 아키텍쳐 입문
서버 아키텍쳐 입문중선 곽
 
Apache ZooKeeper 소개
Apache ZooKeeper 소개Apache ZooKeeper 소개
Apache ZooKeeper 소개중선 곽
 
프로그래머가 알아야 하는 메모리 관리 기법
프로그래머가 알아야 하는 메모리 관리 기법프로그래머가 알아야 하는 메모리 관리 기법
프로그래머가 알아야 하는 메모리 관리 기법중선 곽
 
사칙연산 프로그램
사칙연산 프로그램사칙연산 프로그램
사칙연산 프로그램중선 곽
 

More from 중선 곽 (20)

자바로 배우는 자료구조
자바로 배우는 자료구조자바로 배우는 자료구조
자바로 배우는 자료구조
 
프로그래밍 방식의 변천 과정
프로그래밍 방식의 변천 과정프로그래밍 방식의 변천 과정
프로그래밍 방식의 변천 과정
 
젠킨스 설치 및 설정
젠킨스 설치 및 설정젠킨스 설치 및 설정
젠킨스 설치 및 설정
 
Test driven development short lesson
Test driven development   short lessonTest driven development   short lesson
Test driven development short lesson
 
Tomcat monitoring using_javamelody
Tomcat monitoring using_javamelodyTomcat monitoring using_javamelody
Tomcat monitoring using_javamelody
 
Web service performance_test_using_jmeter_ver1.2
Web service performance_test_using_jmeter_ver1.2Web service performance_test_using_jmeter_ver1.2
Web service performance_test_using_jmeter_ver1.2
 
Online service 계층별 성능 모니터링 방안
Online service 계층별 성능 모니터링 방안Online service 계층별 성능 모니터링 방안
Online service 계층별 성능 모니터링 방안
 
Intranet query tuning (example)
Intranet query tuning (example)Intranet query tuning (example)
Intranet query tuning (example)
 
Db 진단 및 튜닝 보고 (example)
Db 진단 및 튜닝 보고 (example)Db 진단 및 튜닝 보고 (example)
Db 진단 및 튜닝 보고 (example)
 
Scale up and scale out
Scale up and scale outScale up and scale out
Scale up and scale out
 
Java rmi 개발 가이드
Java rmi 개발 가이드Java rmi 개발 가이드
Java rmi 개발 가이드
 
Java rmi 개발 가이드
Java rmi 개발 가이드Java rmi 개발 가이드
Java rmi 개발 가이드
 
컴퓨터 네트워크와 인터넷
컴퓨터 네트워크와 인터넷컴퓨터 네트워크와 인터넷
컴퓨터 네트워크와 인터넷
 
자바 직렬화 (Java serialization)
자바 직렬화 (Java serialization)자바 직렬화 (Java serialization)
자바 직렬화 (Java serialization)
 
숫자 구분자 처리 (Digit group separators)
숫자 구분자 처리 (Digit group separators)숫자 구분자 처리 (Digit group separators)
숫자 구분자 처리 (Digit group separators)
 
서버 아키텍쳐 입문
서버 아키텍쳐 입문서버 아키텍쳐 입문
서버 아키텍쳐 입문
 
서버 아키텍쳐 입문
서버 아키텍쳐 입문서버 아키텍쳐 입문
서버 아키텍쳐 입문
 
Apache ZooKeeper 소개
Apache ZooKeeper 소개Apache ZooKeeper 소개
Apache ZooKeeper 소개
 
프로그래머가 알아야 하는 메모리 관리 기법
프로그래머가 알아야 하는 메모리 관리 기법프로그래머가 알아야 하는 메모리 관리 기법
프로그래머가 알아야 하는 메모리 관리 기법
 
사칙연산 프로그램
사칙연산 프로그램사칙연산 프로그램
사칙연산 프로그램
 

개발 방식을 바꾸는 15가지 기술

  • 1. 개발 방식을 바꾸는 15가지 기술 2014. 11 Version 0.1
  • 2. 개발 방식을 바꾸는 15가지 기술 sunnykwak@hanmail.net, http://sunnykwak.tistory.com 1 목차 0. 컴퓨터 시스템 1. API (Application Programming Interface) 2. 라이브러리 (Library) 3. API vs. Library 4. 프레임워크 (Frameworks) 5. 통합개발환경(IDE : Integred Development Environment) 6. 지속적인 통합 (continuous integration) 7. 소셜 코드 공유 .... and more
  • 3. 개발 방식을 바꾸는 15가지 기술 sunnykwak@hanmail.net, http://sunnykwak.tistory.com 2 0. 컴퓨터 시스템 컴퓨터 시스템은 하드웨어, 운영체제, 어플리케이션으로 구성되어 있다고 요약할 수 있다. • 하드웨어 (Hardware) : 항공모함 자체라고 표현할 수 있으며, 그 자체로서는 효용성이 없음. • 운영체제 (OS, Kernel) : 항공모함의 함교(bridget) 비유할 수 있다. 하드웨어를 통제하고, 어플리케이션의 각종 요청을 처리한다. • 어플리케이션 : 항공모함에 탑재된 전투기 같은 존재, 하드웨어와 운영체제 없이 동작할 수 없다.
  • 4. 개발 방식을 바꾸는 15가지 기술 sunnykwak@hanmail.net, http://sunnykwak.tistory.com 3 1. API (Application Programming Interface) API(Application Programming Interface, 응용 프로그램 프로그래밍 인터페이스)는 응용 프로그램에서 사용할 수 있도록, 운영 체제 혹은 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다. (파일 제어, 창 제어, 화상 처리, 문자 제어 등) [ MS Windows API Stack ] [ Traditional UNIX API ] [ Operation System APIs ] [ and More ...] • 최초의 API는 운영체제가 어플리케이션을 위해 제공하는 기능들을 말했지만, 의미가 확대되면서 하부 시스템 (운영체제, 가상 머신, 컨테이너 등)에서 상위에 존재하는 어플리케이션이나 앱, 위젯에 제공하는 각종 기능(함수)들의 집합(set)을 API라고 부른다. • 그러나 최근에서 온라인 서비스 등에서 클라이언트에 제공하는 기능들도 폭넓게 API 라고 부른다.
  • 5. 개발 방식을 바꾸는 15가지 기술 sunnykwak@hanmail.net, http://sunnykwak.tistory.com 4 2. 라이브러리 (Library) 라이브러리(영어: library)는 소프트웨어를 만들 때 쓰이는 클래스나 서브루틴들의 모임을 가리킨다. [ 소스 코드와 라이브러리를 결합하는 컴파일 과정 ] [ 정적 라이브러리와 동적 라이브러리의 차이점 ] • 정적 라이브러리는 컴파일러가 소스 파일을 컴파일할 때 참조되는 프로그램 모듈이다. 즉, 정적 라이브러리(statically-linked library)는 루틴(routine) 외부 함수와 변수들의 집합으로, 컴파일러, 링커, 바인더 등에 의해 목표된 애플리케이션으로 복사되어 오브젝트 파일과 독립적으로 실행할 수 있는 실행 파일을 생성하는데에 사용된다. 주로 LIB (Windows), a (Unix, Linux) 확장자를 가진다. • 동적 라이브러리는 프로그램 수행 도중 해당 모듈이 필요할 때 불러쓰는 프로그램 모듈이다. 주로 dll (Windows), so (Unix, Linux) 확장자를 가진다.
  • 6. API 는 운영체제(혹은 커널)의 기능을 호출하고, 라이브러리는 개발자들의 만들어 공유하는 기능을 의미한다. Users User inteface Standard utility & Applications (shell, editors, compiler, Offce, Games) Standard library (open, close, read, write, fork, etc) Operating system Library inteface System call inteface (process management, memory management, the file system, I/O, etc) Hardware (CPU, memory, disks, I/O devices, etc) User mode Kernel mode [ Unix, Liunx 운영체제의 시스템 계층 구조 ] 개발 방식을 바꾸는 15가지 기술 sunnykwak@hanmail.net, http://sunnykwak.tistory.com 5 3. API vs. Library • API는 독자적으로 구동되는 프로그램나 서비스 되고 있는 특정 플랫폼에서 하위 기능을 제어하거나, 제공하는 기능을 호출할 수 있는 함수들의 집합이다. 반면에, 라이브러리는 특정 알고리즘이나 작업을 처리할 수 있는 기능들을 수행할 수 있는 함수의 집합이다. • API는 제품(운영체제 같은 경우)을 구매하거나, 사용(구글 같은 경우)해야 쓸 수 있는 것이고 개발자가 제작하는 어플리케이션에 포함되지 않는다. 즉, 부품이 아니라 어플리케이션 외부의 기능을 호출하는 것이다 • 반면에 라이브러리는 프로그래머가 제작하는 어플리케이션의 부품 형태로 사용할 수 있게 만들어져 배포되는 기능 모듈이다. • 그런데... 라이브러리와 API는 정확하게 구분하기 어려운 경우가 많으며, 점차 구분이 모호해지고 있다.
  • 7. [ Spring MVC 프레임워크의 라이프사이클 ] [ iBatis 프레임워크 기반 어플리케이션의 계층 구조 ] 개발 방식을 바꾸는 15가지 기술 sunnykwak@hanmail.net, http://sunnykwak.tistory.com 6 4. 프레임워크 (Frameworks) 프레임워크는 도메인 기반의 지식으로 구성된 객체 구조와 기능을 가지고 있는 반쯤 완성된 어플리케이션이다. - '소프트웨어 아키텍쳐 이론과 실제(Pattern-Oriented Software Architecture)'의 저자 더글라스 슈미츠. • 프레임워크는 특정 목적의 서비스 혹은 어플리리션을 제작하기 쉽게끔 일련의 작업 흐름을 미리 만들어 둔 소프트웨어 반제품이다. • 라이브러리는 개별 부품들의 단순 집합 - 레고 블럭들을 넣어둔 상자라고 표현 - 이라고 설명할 수 있다. 동작하는 무언가를 만들고자 하면 직접 필요한 부품들을 조립(혹은 코딩)을 해야 한다. 반면에 프레임워크는 일련의 과정을 수행하는 부품들이 조립되어 있어 간단한 설정만으로 어플리케이션을 제작할 수 있다. • 요약하자면, 라이브러리는 그냥 '부품 상자'이고 프레임워크는 부품들을 연결하고 조립해둔 '모듈 형태의 반제품’이다.
  • 8. 5. 통합개발환경(IDE : Integred Development Environment) 통합 개발 환경(Integrated Development Environment, IDE)은 코딩, 디버그, 컴파일, 배포 등 프로그램 개발에 관련된 모든 작업을 하나의 프로그램 안에서 처리하는 환경을 제공하는 소프트웨어이다. – 위키피디아 인용 [ IDE 이전 시대의 개발 절차 ] [ 이클립스 4.x 구성 요소 ] • 프로그래머는 자신이 구상한 프로그램을 텍스트 편집기를 이용해 '프로그래밍 언어'로 작성하고, 컴파일러를 이용해 실행 파일 형태로 만든다. 오동작 할 경우에는 원인을 찾기 위해 디버거(debugger)를 이용해 버그를 찾아낸다. 과거에는 이러한 작업들을 처리하는 개별적인 프로그램을 따로 따로 사용해야 했다. • 프로그램 개발 과정에 포함되는 일련의 작업을 수행하기 위해서는 프로그램 소스 편집기(program source editor), 컴파일러(compiler), 디버거(debugger) 등의 개발 도구(development tool)들이 필요한데, 이것들을 하나의 종합 셋트로 모은 것이 통합개발환경(통칭 IDE)이다. • 가장 널리 쓰이는 통합개발환경으로는 MS Visual Studio, Eclipse, IntelliJ 등이 있다. 더불어 델파이(Delphi), 파워빌더(Power Builder) 등도 사용된다. 개발 방식을 바꾸는 15가지 기술 sunnykwak@hanmail.net, http://sunnykwak.tistory.com 7
  • 9. 개발 방식을 바꾸는 15가지 기술 sunnykwak@hanmail.net, http://sunnykwak.tistory.com 8 6. 지속적인 통합 (continuous integration) 소프트웨어 공학에서, 지속적인 통합(continuous integration, CI)은 지속적으로 품질 제어(quality control)를 적용하는 프로세스를 실행하는 것이다. • 앞서 언급한 통합개발환경이 도입된 이후로 단 하나의 개발도구만 가지고, 소프트웨어 개발에 필요한 모든 과정을 편하게 수행할 수 있다. 그러나, 소프트웨어의 규모가 커지면서 더 이상 소프트웨어를 단 한 명의 개발자가 만들어 낼 수가 없게 되었다. • 대다수의 상용 소프트웨어는 수 명에서 수백명의 개발자가 하나의 제품을 만들기 위해 협력한다. 동시에 여러 사람이 개발을 진행하다 보면, 각자가 작업한 소스 코드를 합치고(merge)하고, 컴파일한 후, 정상적으로 동작하는지 여부를 테스트하는 과정을 도저히 사람이 수행할 수 없게 된다. 따라서, 주기적으로 변경된 소스를 찾아서 자동으로 컴파일하고 기능을 테스트하며, 그 결과를 기록해주는 제품이 만들어진 것이다.
  • 10. 개발 방식을 바꾸는 15가지 기술 sunnykwak@hanmail.net, http://sunnykwak.tistory.com 9 7. 소셜 코드 공유 깃허브(GitHub), 소스포지(SourceForge), 구글 코드 (Google Code)... • 90년대에는 소수의 개발자들이 작은 사무실에 모여서 개발하는 형태를 '소프트웨어 하우스'라고 부르는 유행이 있었습니다. 닷컴 열풍이 불기 전, 인터넷이 광범위하게 퍼지기 전에는 소프트웨어 개발은 자동차 창고 같은 허름한 공간에 열정적인 개발자들이 모여서 함께 작업하는 것이 당연했습니다. •하지만, 인터넷이 발전하고, 세상의 모든 개발자들 연결되면서 전세계의 모든 개발자들이 가상의 인터넷 공간에서 함께 작업할 수 있게 되었습니다. 서로 다른 시간과 공간에서 작업을 하면서도 서로의 작업을 확인하고, 의견을 나누고 소스를 취합할 수 있는 공간이 소셜 소스 공유 사이트입니다.
  • 11. 개발 방식을 바꾸는 15가지 기술 sunnykwak@hanmail.net, http://sunnykwak.tistory.com 10 참고 : 소프트웨어 개발 라이프사이클