Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

개발개론

No description
by

Alchan Kim

on 16 April 2013

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of 개발개론

개발 개론 by Algy 개발이란? 시장 목표나 사용자의 요구를 SW로 만드는 과정. by wikipedia 요구된 문제 분석 유지 보수 테스트 프로그램 코딩 계획 및 디자인 수립 개발 들어가기 앞서서 모든 것을 이해하려고 안간힘을 쓰지 말 것! 개발 지식을 가져가겠다. 개발 키워드를 가져가겠다. cuz' we have 복사하고 수정하라

효율성이라는 명목으로 잘라내기/붙이기/복사하기/수정하기를 남발하자. 특히 이 방식은 우리가 작성하는 코드 라인 수를 업무 진행 척도로 여기는 곳에서 일할 때 유용하다.

- 유지보수가 어렵게 코딩하는 법 中 기술로써의 개발 개론 팀 프로젝트로써의 개발 개론 프로그래밍 세계에 많은 언어가 있듯... SW 세계에도 많은 언어가 있다! C++
JAVA
C# Python
Rua
Ruby scheme
F#
OCaml 스크립트 언어 geek OOP geek 함수형 언어 geek 실행 환경(플랫폼) 속도 or 생산성 언어 점유율 개발 분야 언어 선택 언어 선택은 프로젝트의 특성에 맞게 이루어짐 사용하고자 하는
라이브러리&프레임워크 언어 결정 PC? Android? iOS? most of all JAVA, C++ Objective C 실행 속도 vs. 생산성? 참고만! Web? Javascript PHP, Ruby,Python 게임? 웹 서비스? 거인의 어깨 위에 서서 세상을 보라
-아이작 뉴턴 1인 개발을 넘어서... 개발 요소 흔한 1인 개발 작품.jpg 자료구조 동적 배열(dynamic array) 연결 리스트(Linked List) 사용 빈도 C++ : vector
C# : List / ArrayList
Java : ArrayList 사용 빈도 C++ : list
C# /Java : LinkedList C++ : set
C# : HashSet
Java : HashSet 집합(Set) 사용 빈도 C++ : map
C# : Dictionary
Java : HashMap 사용 빈도 맵(Map) 기획 디자인(아티스트) 프로그래밍 길이가 늘었다 줄었다하는 배열! max사이즈를 생각할 필요가 없음. examle: 배열을 사용하고 싶은데, 원소 개수의 최대치를 모를때 특징 : 배열과 같음 특징 : 중간 삽입, 삭제가 매우 빠름. 특징 : 집합에 특정 요소의 유무 여부 찾기(search)가 매우 빠름. 중복 안됨. example : MT비를 낸 사람을 집합에 저장한다. 이미 냈는데
중복으로 또 낼 순 없다. 특징 : key에 해당하는 value을 구하는 것이 매우 빠름. 키들간의 중복 불가. 팀원들 간의 의사 소통 그림 그려서 이미지를 전달하는 것은
매우 좋은 소통 방법. 화이트 보드 프로그램에 쓰이는 많은 리소스를 디자인 음악 UI 그림 텍스쳐 효과음 3D 모델 3D 애니메이션 파티클 UPnL에 절실히 필요한 인재(..) 여기 있는 미대생을 구하거나 넬장을 갈아 넣습니다. But, 많은 경우에 개발은 한명이 아닌
여러 명이서 하게 된다. 프로그래밍 그래픽 디자인 시나리오 기획 3D 디자인 Work alone? 맵 디자이닝 3d 애니메이션 3d 모델링 3d 애니메이션 텍스쳐 물리 엔진 UI 코딩 파티클 UI 맵 상 요소 기획 밸런싱 시나리오 플롯 맵 만들기 ETC... 개발팀 내의 개발자들간의 원활한 교류와 상호작용을
위하여 여러가지 방법론과 툴이 개발됨. 공동 작업을 위하여 팀 프로젝트 작업 요소 개발 방법론 역할 분배 회의 버전 관리 이슈 트래킹 프로그래밍에 필요한 설계 담당. 기획을 실제로 프로그램으로 구현 우리가 할 수 있는 것! 최종 기획안은 프로그래머가 보고 바로 구현단계에 들어갈 수 있을정도로 모호성이 없이 구체적일 것! 시스템 코딩 대화 스크립트 테스터 사용 할 라이브러리&프레임워크를 선택한 뒤 언어를 선택하는 일은 자주 있는 일! 분야별 쓸만한 프레임 워크 네트워크? 윈도우 유틸리티? 게임 PC Mobile Web Unity 사용 언어: C# Xna Flash C# ActionScript libgdx java 사용 언어: Objective-C
(x 버전)C++ 플랫폼: iOS,
iOS,Android,PC(-x버전) cocos2d(-x) libgdx unity Java PC,
Android C# iOS,Android,PC unity C# Flash ActionScript 사용 언어: libgdx Java 크로스 플랫폼 게임 엔진 여러 플랫폼에서 동작하는 엔진 언어 종류 C++ 장점: 빠르다. C언어의 객체 지향적 확장판. 단점: 여전히 메모리를 직접 관리해야 한다.
C++의 객체지향 기능을 숙달하기가 어렵고 디자인이 좋지 못하다. Java 장점: 강력한 라이브러리,
지원하는 많은 플랫폼 단점: 속도가 비교적 느리다.
개발 툴이 무겁다. C# 장점: 언어적 완성도가 높고
개발 환경이 편리하다. 이름은 C++과 비슷하지만 언어적으로는 오히려 Java와 닮았다. 단점: Java와 마찬가지로 속도가 비교적 느리다.
지원하는 플랫폼이 아직 적다.(.NET 한정) Python 윈도우즈 유틸리티 C# Windows Form MFC Java Swing and AWT MS가 제공했던 C++ 윈도우 라이브러리. 윈도우 프로그래밍 공부용이 아닌
실제 일반적인 개발용으로는 비추천 윈도우에서 할 수 있는 모든것을 할 수 있긴 하나, 코딩량이 매우 많고 복잡함. java 기반이기 때문에 다른 플랫폼(리눅스, 맥)에서도 동작. 약간 느림. 코딩이 매우 편리함. C# 기반 Qt 많은 플랫폼을 지원하는 매우 강력한 GUI 프레임워크 다양한 언어 지원.
다양한 개발툴. 웹 DB Server-side Web Application Flatform Web Server Apache2
nginx
IIS
Tomcat 데이터 요청 데이터 가져옴 Server-side Client-side Http request Html document
with Javascript 웹페이지 요청을 받음

웹 페이지 스크립트 해석
요청한 웹 페이지와 그것이 포함하는 그림파일 등을 전송 Python Django
Flask
CherryPy Ruby Ruby on Rails PHP Codeigniter
Yii
CakePHP C# ASP.NET
MVC JSP
Spring
Play Java 다양한 언어(대부분 스크립트 언어) 프레임워크로 웹페이지를 만들 수 있다! 하는 일 SQL식 DB SQLite (For test)
MySQL
MSSQL
Postgresql NoSQL MongoDB SELECT score FROM SCORE_TABLE WHERE name= "임동재" 넬장님의 시험점수를 알고싶을때 DB서버로 보내는 요청문 넬장님의 시험점수를 알고싶을때 DB서버로 보내는 요청문 자세한 요청 명세 가능 간단함. f db.SCORE_TABLE.find({name:"임동재"}, {score:1}) 프로그램 하나를 개발하는 데에는... server-side script(PHP)가 포함된 web page 받은 HTML 파일 server-side 스크립트 해석 server-side
script 우리가 코딩하는 부분!
웹페이지에 스크립트 코드를 코딩한다. C 절차형 언어 절차형 언어 도주가 빵을 먹는다.
도주가 우유를 먹는다. A C 도주가 양치를 한다. 도주가 테트리스를 한다. B main()
{
doju_eat("bread");
doju_eat("milk");
doju_brush("tooth");
doju_play("tetris");
} 절차적인 실행! 객체 지향 언어 doju_eat(something)
{
먹을수 있다면?
"someting 맛있어"를 출력
없다면?
"something 맛없어"를 출력
} 도주는 한가지만 먹을 수 있는 건 아니므로 여러 대상에 대해 여러번 쓸 수 있는 기능(function,함수)을 만듬 C언어 프로그래머 어셈블리&기계어 ... 허허 애들아
지옥에 온걸 환영한다. 프로젝트 덩치가 커지고 복잡해질수록
절차적으로 코드 짜기가
어려워지네... 프로그램이란? 절차적 프로그래머에게 명령어 및 기능들의 집합! 프로그램이란? 객체 지향적 프로그래머에게 멤버(속성)와 메소드(행동)을 가진 객체(object)들의 집합&상호작용! 장점 : 매우 빠르다! 그림 상황을 보면 뭐가 떠오르나요? Airplanes Kingkong Tower "털 많은 킹콩이 타워에 매달려 복엽 비행기들과 싸우고 있군" 킹콩 발상의 전환 속성 - 털 상태: 털 많음 - 무게 : 500kg 행동 - 매달린다. - 싸운다. -먹는다 비행기 속성 - 날개 타입: 복엽 행동 -총을 쏜다
-난다.
-착륙한다. 객체- 타워 속성 -높이 : 500m 사람은 현실을 객체로 구분하고 판단한다. 객체는 어떤 속성을 가지고 있으며, 행동을 할 수 있다.

이런 방법을 프로그래밍에도 적용할 수 있을까? 도주를 객체로 모델링 해봅시다. 도주 -속성 -행동 - 정기모임을 연다.
- 먹는다.
- 양치를 한다.
- 게임을 한다.
- 옷을 자랑한다. 닉네임 : Doju 학번 : 2012 입은 옷 : ? 다양한 옷을 입은
여러 개의 도주 객체 객체 생성 견적서 견적서 = 클래스(Class) 테두리만 파란 티
를 입었어 완전 파란티를 입었어 완전 흰 티를 입었어 <옷을 자랑한다>라는 행동중 객체 = 객체(Object, 오브젝트) 속성 = 멤버(member) 행동 = 메소드(method) 프로그래밍 언어로는 클래스(견적서)는 객체를 생성하고, 객체는 멤버와
메소드를 갖고 있다. 메소드는 자신의 멤버(속성)을 활용하여 어떤 행동을 할 수 있다. class Doju
{
학번 = 2012(초기값)
닉네임 = Doju(초기값)
입은옷

먹기(something)
{
something이 먹을 수 있으면
"(something) 맛있어!" 출력
아니면
"(something) 맛없어!" 출력
}
정기모임()
{
"저는 (학번) 학번 (닉네임) 입니다. 정기모임을 시작할게요." 출력
}
옷자랑()
{
"나는 (입은옷)을 입고있엉ㅋ. 부럽지ㅋ" 출력
}
} main()
{
Doju shirtsDoju = new Doju();
shirtsDoju.입은옷 = "셔츠";
shirtsDoju.옷자랑();

Doju paddingDoju = new Doju();
paddingDoju.입은옷 = "패딩";
paddingDoju.닉네임 = "xDoju";
paddingDoju.옷자랑();
paddingDoju.먹기(코렁탕);
paddingDoju.정기모임();

} 나는 셔츠를 입고 있엉ㅋ 부럽지? 나는 패딩을 입고 있엉ㅋ 부럽지? 코렁탕 맛없어! 저는 2012학번 xDoju입니다. 정기모임을 시작할게요 psuedo-code 다른 방법 없을까? 상속 넬장 도주 NoNaMe Yoshi -정기모임 하기
-게임하기 -정기모임 하기
- 포덕질 하기 -정기모임 하기
-소닉 버그 플레이 -몇대 넬장? - 정기모임하기 -몇대 넬장 : -몇대 넬장 : -몇대 넬장 : 부모 클래스로부터
속성과 행동을 물려받는다 넬장의 특성을 가진 새로운 클래스를 만든다면
부모 상속만 받고 특징적인 부분만 코딩하면 되니 편하다! 요약 -기능들을 절차적으로 보는 시각에서 벗어난
객체 하나하나가 속성과 행동을 갖는 시각.
-객체를 만드는 견적서를 클래스라고 함.
붕어빵틀 : 붕어빵 = 클래스 : 객체

- 상속 개념을 통하여 부모 클래스의 속성과 행동을 물려받을 수 있다. 클래스의 계층 구조를 만듦으로써 코딩량을 단축할 수 있다. 벨(Bell) 연구소에서 만든 B언어가 모태가 되어 이후 C언어로 개량된다. 프로그래머가 메모리를 관리해야하는 불편함이 있음. 개발 분야에서 라이브러리 지원 많지 않음.
(시스템쪽은 예외) 단점 : 덩치가 큰 프로젝트는
코딩과 유지보수가 힘들고 고달프다...
메모리 누수가 생길 수 있다.

자바:자바스크립트 = 인도 : 인도네시아

전혀 다른 언어이니 주의할 것 C와 함께 교육용으로 배우는 언어 양대 산맥 중 하나 순수하게 객체지향 언어로 디자인 됨 Sun Microsystems (현 Oracle)사에서 개발 C++에 비해 언어적 완성도가 높음 여러 언어들의 장점을 섞어놓은 듯한 느낌 MS가 주도적인 위치에서 개발 거의 대부분의 현대 언어들은 객체지향 개념을 장착하고 있다. 스크립트 언어 Ruby Javascript HTML웹페이지를 꾸밀 때 사용하는 스크립트.
PHP와 반대로 클라이언트에서 동작하는 client-side script.
웬만한 웹페이지 소스를 까보면 다 있다.
Java와 전혀 관련이 없다. PHP server-side 웹 스크립트 언어.
C언어와 문법이 비슷해서 C경험자가 익히기 쉬움.
소규모 개발에 적합.
허나 언어 자체가 지저분한 감이 있음. (Python과 Ruby에도 좋은 대안 웹 스크립트 프레임워크가 있음) 일반적으로 같은 작업을 C나 JAVA의 반절도 안되는 코딩량으로 수행할 수 있음.

컴파일 과정 없이 소스를 바로 실행할 수 있음.

속도를 희생해서 생산성을 극대화함

웹코딩에 많이 사용됨

플랫폼 별로 해석기(인터프리터)만 달리 만들면 되므로 대부분 멀티 플랫폼 언어 스크립트 언어란? 스크립트 언어의 특징? 장점 이럴 때 써보세요! 평소에 수작업으로
하는 일을 자동화 하고 싶다! 프로그램 프로토타입 제작 개발 기간 단축 잡스럽고 사소한 코딩에 시간을 쏟고 싶지 않을 때 어떤 웹사이트의 그림 파일
100개 다운로드를 자동화 간단한 파일 조작 소스를 기계어로 바꾸는 방법 기존의 방법과는 반대로 소스를 해석기가 그대로 읽어서 프로그램을 수행함. - 속도가 필요한 코어 부분은 C/C++로 짜고 속도가 필요없는 부분은 스크립트로 대체하여 빠르게 개발. example http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html 창시자는 귀도 반 로섬.
2013년 TIOBE 에 의하면 가장 인기있는 스크립트 언어.
문법이 간결하고 강력한 라이브러리를 가지고 있다. 창시자는 마츠모토 유키히로.
일본에서는 Python보다도 인기가 많다.
웹 개발 프레임워크 Ruby on Rails가
폭발적인 인기를 끈 뒤 많은 사용자 확보했다. 서버측에서 실행(server-side script)되기 때문에
PC로 올 때는 php 소스가 없으니 괜히 찾지 말것 A B 네트워크 라이브러리 C D 지도(map)가 아닙니다. 사전이라고 생각하면 쉽다. apple을 사과로, carrat을 당근으로 대응시켜서 저장하는 것. 이때 영어 단어가 key가 되고, 한글 단어가 value가 된다.
key에 따른 value를 대응할 수도 있고, key에 해당하는 value를 찾을 수 있으며, 없앨 수도 있다.
학번(key)-이름(value) 사전이 하나의 예.
이처럼 key와 value를 Mapping을 시켜주는 자료구조. 개발 방법론 폭포수 방식 Agile 방법론 직관적이지만 "실제 실행에 있어 현실적으로 불가능한 모델" 시스템의 세부 사항 중 많은 부분은 우리가 시스템의 구현을 진행할 때라야 비로소 우리 눈에 보이기 시작한다. 그리고 그렇게 알게 된 것 중 일부는 우리의 기존 설계를 무효로 만들고, 다시 전 단계로 돌아갈 수밖에 없게 만든다. ”
- David Parnas 기존의 전통적 시퀸스를 따르지만 제대로 동작하지 않는 조직 목표 달성을 위한 하나의 프로세스를 가지지 않고

임기응변적인 개발로 혼란에 빠져있는 조직 Agile을 적용하기 좋은 두 대상 현 동아리 개발 팀에 적합한 방식! 최후엔....... 그럼에도 불구하고
납기일 지연 혹은
낮은 완성률 일이 계획대로 진행되지 않음 보통 일이 정해진 계획되로 되는 일은 거의 없음 납품된 솔루션은 고객을 만족시키지 못함 Agile : "신속한", "빠른" 반복적 개발 기법 keyword: 하나의 계획이 아닌 여러 번의 반복 주기(2주 정도)로 개발 각각의 주기는 짧은 하나의 프로젝트들 reference : http://www.slideshare.net/AstinChoi/agile-7663749(박제원 교수), 한글/영문 위키피디아about Agile, Scrum(development). 시험하고 적용하기(inspect and adopt) 를 반복 재작업과 철야를 줄이기 위하여
게임의 재미를 빨리 발견하기 위하여 전통적 방식 vs Agile 전통적 방식 Agile 계획 기반 개발 정형적 프로세스 문서화 방식 반 계획 기반 개발 경험적 프로세스 작동하는 소프트웨어 Agile 헌장 절차와 도구 보다 의사소통 기획 문서 보다 돌아가는 게임 계약과 협상 보다 고객과의 협업 계획 맹종 보다 변화에 대한 대응 여러가지 Agile 방법론 Major method: Scrum 미래를 예측하여 한번에 만들어내기 보다는 일정한 주기를 가지고 끝없이 프로토타입을 만들어 냄 Agile은 어느 특정한 방법론 하나를 가리키는게 아니고 반복적이고 기민한(=Agile) 개발을 가능하게 해주는 모든 방법론을 일컫는다.
이들 중에 하나 혹은 여러개를 조합하여 실전에 적용한다. 폭포수가 흘러가듯 아래로 순차적으로 내려간다고 해서
"폭포수(waterfall) 모델" 말을 통해 이미지를 전달할 때는 '스토리 텔링'으로 전달하면 효과적이다. Scrum 매일 정해진 시간에 정해진 장소에서 짧은시간의 개발을 하는 팀을 위한, 프로젝트 관리 중심의 방법론 14~30일마다 동작가능한 제품을 제공하는 "스프린트(단거리 달리기)"의 반복이 중심. Scrum의 동작 기반 Scrum의 기반 조직의 의도 자율성 역동적이고 창조적인 카오스 잉여성 최소 유효 다양성 -"지식창조기업(知識創造企業)"이라는 이름으로 소개된 일본의 조직론 지식 창조의 목표
팀을 지탱하는 축 팀의 멤버에게 자유로운 행동을 인정하는 열린 시스템 조직 내외부 간의
역동적인 상호작용을 통한
지식창조 환경 의도적으로 조직에
넘쳐나는 여분의 정보 복잡하고 다양한 환경에
기민하게 대응하기 위해서
조직 구성원이 가져야 하는 다양성 Ken Schwab는 지식 창조기업에서 말하는
지식 창조 프로세스의 5가지 요소를 충족시켜
성공에 이끌게 한다고 주장 Scrum이 추구하는 가치 1. 확약-약속한 것을 확실히 실현하는 것

2. 전념-확약한 것의 실현에 전념하는 것

3. 숨기지 않음-자신에게 불리한 일이라도 숨기지 않을 것

4. 존중 - 자신을 포함한 다른사람을 존중할 것

5. 용기 - 위의 가치들을 언제나 지킬 수 있는 용기 진행 방법 Scrum의 구성 프로그래머 아티스트 기획자 팀 원 ScrumMaster ScrumMaster 누구나 될 수 있음 개요 회의 See Also) Scrum 방식의 회의 문서화하기 길지 않게 분명한 목적을 갖고 뜬구름 잡거나,
막연하거나,
추상적이지 않게 정기적으로 날짜 기준으로 결론이 명확하게 적혀 있어야 함! 팀원의 역할 팀원 마감일 지킬 것. 책임감을 갖고 프로젝트에 전념 팀장 역할 배분 중간 듀 정해주기 회의가 너무 길어지면 팀원들이
게을러지고 프로젝트 자체가
흐지부지되기 쉽다 청사진(blueprint) 제시 팀원을 모으기 전에 전체적으로 틀은 잡아놓기 팀원들에게 프로젝트가 "팀장"의 목표가 아니라 "팀원" 모두의 목표임을 인식시켜줄 필요가 있음. 버전 관리 project management tools 이슈 트래킹 개발 초보자들을 위한 조언 Sprint (one cycle) 14~30일의 반복적인 개발 주기. Product Backlog 제품주에 의해서 우선순위가 매겨진 Product Backlog 제품주가 요구하는 개발할 제품에 대한 요구사항
목록 a Sprint(14~30 days) 스프린트 계획 회의(Sprint Planning Meeting) 일일 스크럼(Daily Scrum) 돌아보기(Retrorespective) 스프린트 백로그(sprint backlog)란? 각각의 스프린트 목표에 도달하기 위한 필요한 작업 목록 스프린트 백로그 작업을 정하고 할당하는 것은 팀원의 자율로 진행된다. 스프린트 목표와 스프린트 백로그를 계획하는 회의 제품 책임자가 독단적으로 목표를 정하지 않고 고객과 제품 관리자, 팀원이 모여서 스프린트 목표를 정한다. 이와 같은 자율적인 행위를 통해서 팀원들은 의사를 활발하게 주고 받게 되고, 끈끈한 협업체계를 가지게 된다. 애자일 프로세스는 외부로부터의 질서보다는 팀원 스스로가 만들어나가는 자기 조직화를 중요시 1Day 15분 정도 중간 중요도! 높은 중요도 Product Backlog의 빙산 높음 우선순위 추후 출시 낮음 출시 Sprint ! 우선순위가 낮은 기능은 제외될 수 있음! 낮은 중요도... 높은 중요도 제품 책임자 제품 책임자 '고객의 소리'를 팀원들에게 전달.

customer-centric item(=유저 스토리)을 작성. 우선순위 매김.

ScrumMaster와 왠만하면 겸임하지 말 것. 스프린트 목표를 상세한 부분으로 쪼개서 스프린트 백로그를 작성한다. 스프린트 반성 회의 스프린트 리뷰 회의 4시간 제한 3시간 제한 ScrumMaster에 의해 주최됨.
지난 스프린트 반성
지속적으로 스프린트의 발전을 이루기
두 질문?
스프린트 동안 무엇이 잘 되었는가?
무엇이 개선되어야 하는가? 고객에게 결과&데모 보여주기.
무엇이 완성되었는지&완성되지 못했는지
발표할 수 없는 미완성 기능 Agile이 주는 이점 생산성 게임의 품질 빌드의 신뢰성 팀원 들의 사기 주인 정신
상호 협력
의사 소통 저 비용 고효율의 관리 "우리가 무엇을 해야하는가?"에 대한 끊임없는 대책 갈구 주의점 제작(Production)은 Agile이 아님.
최소한의 콘텐츠는 있어야 함.
대규모 팀은 더 큰 리더십을 필요로 함
자율성이 발휘되기 힘듬
예측되지 못한 '완료되지 않은 작업'(오류 수정, 그래픽 품질 향상, 최적화)이 누적될 수 있음 Q & A 왜 버전관리를 사용해야하는가? 무엇이 버전관리인가? 대표적인 툴 seulgi 코딩량 많음. 행동 -부러짐 JC -정기모임 하기
-출근하기 -몇대 넬장 : 프로그래밍 언어 라이브러리&프레임워크 라이브러리 프레임워크 이런 걸 매번 되풀이 하면 귀찮다 못해 우울증에 빠질 것 같다. 난 99년에 도트(pixel)로 게임 캐릭터를 “찍어” 그릴 당시, 도트 하나 찍을 때마다 “와, 0.3원 벌었다”라고 중얼 거리곤 했다. 실수로 그림을 날려 먹을 때는 “으악! 내 374원! ㅜㅜ”이라 비명 지르기도 했다. 그래야 덜 우울했다.
- 무엇을 코딩하든 언제나 비슷한 일을 하는 코딩하기 귀찮은 부분의 코드가 필요하다. 이렇게 되풀이되는 부분들을 묶어서 다시 짤 필요가 없이 짤때마다 붙이면? 프로그램 하나를 구성하는 코드에는 독창적이고 훌륭한 코드도 있지만 항상 반복되는 지루하고 귀찮은 코드도 있다. 웹에서 반복되는 코드
: 글 쌓기, 편집, 보여주기.
게임에서 반복되는 코드
:오브젝트 그리기, 3D 표현, 물리 세계 Library And Framework! Your Code 네트워크 라이브러리 수학 라이브러리 그래픽 라이브러리 자주 쓰이는 기능을
재사용할 수있게 묶어놓은 코드들! 파일 라이브러리 Game Engine Your Code 그래픽 사운드 3D 물리 파티클 많은 클래스와 라이브러리들을 하나의 목적(게임 만들기, 웹페이지 만들기)하에 동작을 정의 해놓고 내 코드를 가 계층을 제공한다. 내가 "가져다 쓰는" 형식 내 코드가 "불려가는" 형식 '도서관' :
필요한 책을 가져다 씀 '뼈대' or '구조' : 이미 만들어져 있는 구조에 나의 데코레이션을 덧붙임. 그게 뭔가요? 시간과 노력 절감 끝났다! 1부 끝! 해도 되고 안해도 되는 과제 소개한 언어(Java, C#, Python, Ruby)들 중 맘에 드는 언어를 선택하세요.
그 언어로 "Hello UPnL!"이라는 말을 출력해보세요. 팀원A 팀원B 전달 철야 버전별 소스 코드 저장 소스 추적 기능 공유 및 동기화 기능 팀원 한명이 소스코드를 수정하면 전체가 그 수정된 파일을 공유해야 함. 버전관리는 이 과정을 자동화. 소스를 실수로 잘못 코딩했을때 이전 버전으로 복구할 수 있음.

프로젝트 자체를 과거의 어떤 시점으로 되돌리기 가능. 소스 코드의 변경사항 추적.

소스를 누가 수정했는지 추적.

소스가 버전에 따라 변경되는 과정을 보면서 코드의 의미를 추론. 버전별 소스코드 저장 게시판 댓글 기능 추가 1.1 긴급 버그 수정 UI 버그 수정 1.2 1.3 1.0 Linus Torvalds SubVersioN(SVN) http://dev.upnl.org에서도 서버 제공 좋은 윈도우즈용 SVN 툴 리누스 토르발즈가 2005년 경 개발한 분산 버전관리 툴. http://www.github.com이
대표적인 git 호스팅 사이트

dev upnl에서도 지원 예정 소스 코드 공유 편집 기능 수정 ㄴ 당신이 겪는 문제는 당신이 처음 겪은 문제가 아니다! It! 키워드 많은 Q&A가 있는 포럼 site:www.stackoverflow.com
새로운 언어/라이브러리 배울땐, ~ example(tutorial)
에러 메시지만 구글링해도 쓸만한 자료가 나옴. 이슈(issue)란? 프로그램 개선점 버그(bug), 개선&추가해야할 기능(enhancement), ~~코딩노예 찰싹찰싹~~, etc.... 프로그래밍 언어란? Hello, UPnL을 출력해! Hello, UPnL E8 0B 00 00 00 Hello, UPnL 00 58 89 45 F8 8B F4 8B 45 F8 50 FF 15 B0 82 D0 00 83 C4 04 main()
{
printf("Hello,UPnL")
} Hello, UPnL E8 0B 00 00 00 Hello, UPnL 00 58 89 45 F8 8B F4 8B 45 F8 50 FF 15 B0 82 D0 00 83 C4 04 컴파일러
(번역기) HelloUPnL.exe 컴퓨터는 기계어만 해석할 수 있음! programming Language 기계어로 프로그램을 짜기는 매우 어려움 따라서 인간이 이해할 수 있는 언어를 만들고,
컴파일러를 통해 기계어로 번역시킨다. 이 언어가 프로그래밍 언어!
프로그래밍 언어로 쓰여진 코드를 소스 코드라고 한다. def main():
print "Hello, UPnL!" Hello, UPnL 인터프리터
프로그램 Script Language public static void main(string[] args)
{
System.out.println("Hello, UPnL");
} Hello, UPnL 바이트 코드
컴파일러 byte code language 바이트 코드 인터프리터
프로그램 인터프리터 방식 바이트 코드 방식 짜고싶다면
join Guardian 기존 Agile .... 4 1. SW 요구사항 분석
2. SW 디자인(설계)
3. 구현(코딩)
4. 테스팅&디버깅
5. 출시 및 유지보수 case 1 : 개발 중 계획 밖의 일이 발생 case 2 : 팀원의 사기 저하 For 임기응변적으로 표류하는 조직(=동아리) e.g) 게임을 5달동안 주욱~ 만들었는데 정작 게임이 재미있다는 확신이 안든다. 완벽한 계획 지향 정'시'적으로가 아님 =>Servant leader 위에서 끌고가는게 아닌 밑에서 밀어주는 형식 역할 : 팀원들이 각자의 일들에 전념할 수 있도록 방해물을 도맡아서 제거.
Scrum 프로세스가 제대로 동작하도록 도움.(e.g 회의 주최, 규칙 세우기)
그 외에는 팀원과 같은 위치. 세가지 질문 어제 무엇을 했나?
오늘 무엇을 할 것인가?
개발하는데 불편한 점이 있는가?
리스팅 후 ScrumMaster와 함께 처리
(디테일한 미팅 아님! 핵심만 짧게 짧게) 이슈트래커란? 동아리 프로젝트의 문제는 작심삼일
작심삼일? 그럼 계획을 삼일마다 세우면 되지!
주 효과: 변화에 대하여 대응하기 쉬워짐
부 효과 : 피부에 와닿는 명확한 짧고 목표로 팀원 사기 상승.
Full transcript