SlideShare a Scribd company logo
엔지니어의 꿈
       FMT
 PA 개발 2팀 정영범
  2012년 12월 17일
148m



       99.85m
705m
수천년 축적된 기술
  바람의 영향을 고려한 디자인
   나선형을 그리며 하중 분산
    30층 단위 대피처 설치
    GPS를 통한 수직 측정
     콘크리트 쏘아올리기
  척추 역할을 하는 엘리베이터
54만톤을 견디는 고강도 콘크리트
65cm 줄어드니 층별 2~4mm 높임
          ...


  건축가들이 건물을 만든다.
 완벽한 설계 -> 빈틈 없는 구현
빈틈없는 설계와 완벽한 구현
   엔지니어의 꿈!
소프트웨어
    엔지니어의 꿈

•빈틈없이 설계하고
•완벽하게 구현해서
•문제없이 돌아가는 프로그램을 만들어
•는 것 사용자가 행복하게 쓰도록 만드
 프로그램
완벽한 소프트웨어가
  어려운 이유

•프로그램은 실체가 보이지 않는다.
•요구사항을 명확히하기 어렵다.
•프로그래밍은 창의적인 활동이다.
•렵다.
 소프트웨어가 잘 구현되었는지 확인하기 어
요구 사항과 설계

•요구사항은 작성하는 사람도 다 알 수가 없다.
•구현하면서 구체화되는 요구 사항이 많다.
•소프트웨어 구현은 일을 쪼개기 어렵다.
•설계가 미치지 않는 범위가 많다.
요구사항


1부터 100까지의 합을 구하는
  프로그램을 만드세요
그냥 냅다 쓰자

    1+2+3+4+5+
       ....
+95+96+97+98+99+100
반복문 사용

s = 0;
for(i=1;i<=100;i++){
  s = s + i;
}
실행속도 고려
 n
 X        n · (n + 1)
       k=
               2
 k=1



n = 100;
s = n*(n+1)/2;
나는 이미 답을 알고 있다



     5050
재사용성을 고려하자
int sum(int n){
  int s = n*(n+1)/2;
  return s;
}

sum(100);
sum(1000);
에러상황도 대비 해야지
int sum(int n){
  if (n < 0) error();
  int s = n*(n+1)/2;
  return s;
}
요구사항


1부터 100까지의 합을 구하는
  프로그램을 만드세요
최종 요구사항


 1부터 100까지의 합을 구하는
   프로그램을 만드세요

    근데 빨랐으면 좋겠고,
나중에 다른 수까지의 합도 구할 수
      있었으면 좋겠어.
  또, 에러상황 처리도 해야지.
프로그래밍의 특징

•소프트웨어표현된 문법이지만 무한한 종류의
 유한하게

•개발자마다 다른 창의적인 활동
•완벽한 검증이 불가능
완벽한 소프트웨어는 만들기 어렵다!
소프트웨어 개발 프로세스




코딩 단계에서의
  테스팅
PA 사업부에서 하는 일은 어려워!



   DRM이 더 어려워요.
Spa (Static Program Analysis) + Arrow
Static Program Analysis?
       정적 프로그램 분석


•프로그램을 실행시키지 않고
•프로그램이 할 수 있는 일을 어림잡아
•프로그램의 성질을 예측하는 기술
정적 분석 기술
정적 분석 기술
정적 분석 기술
프로그램 정적 분석
컴파일러가 하는 일

•문법에 맞지 않는 프로그램을 알려준다.
     if (x > 0) {y = 1;} for { y = 2;}

•타입에 맞지 않는 프로그램을 알려준다.
if (x > 0) { y = “string”;} else { y = 100;}



             소스만 보고 판단
Sparrow가 하는 일

•나 비정상 종료하는 오류를 찾아준다. 하거
 실행 중 프로그램이 의도치 않은 동작을

 if (x != 0) {y = x*y;} else { y = y/x;}

•프로그램의 보안 취약성을 찾아준다.
 data = UserInput();
 SQL_execute(“insert into table”+ data);
Sparrow 오류 검출 사례
   int buffer[MAX];

   void buffer_access(int len){
     if (len < 0) return;
     if (len > 98){
       len = MAX - 4;
     }
     buffer[len] = 0;
     buffer[len + 1] = 1;
     buffer[len + 2] = 2;
     buffer[len + 3] = 3;
   }
Sparrow 오류 검출 사례
   int buffer[MAX];

   void buffer_access(int len){
     if (len < 0) return;
     if (len > 98){
       len = MAX - 4;        근데 len 값이
     }                          98이라면
     buffer[len] = 0;
     buffer[len + 1] = 1;
     buffer[len + 2] = 2;    buffer-overrun!
     buffer[len + 3] = 3;
   }
잠깐 보시죠!
#


          "

      !




!$             %&
"$&                 %&'()*+,-)&.-/0,)12&3,13/,13+&   2&
#$&       %&                 2&                      2
!
"




    !#        $%
    "#   $%              &%'()%!*%
    +#             $%
    ,#                  $%-./0-/1'02.34506743%
!




"




!#   $%
"#   $%   &   &   &
!                                      #




 "


                                                 ,




!$            %&
"$       %&              '&()*&!+&
#$                 %&
,$                      %&-./0-/1(02.34506743&
결론

•엔지니어의 꿈: 빈틈없는 설계와 완벽한 구현
•완벽한 소프트웨어는 만들기 어렵다.
•하는 일 실현하도록 돕는 일이 PA 사업부가
 그 꿈을



         좀 더 알고 싶으신 분은
      Vital Day에 참석해주세요!

More Related Content

Viewers also liked

스타트업을 위한 지분투자형 크라우드펀딩
스타트업을 위한 지분투자형 크라우드펀딩스타트업을 위한 지분투자형 크라우드펀딩
스타트업을 위한 지분투자형 크라우드펀딩
Yonggi Ko
 
Chapter 3 Digital Gaming and the Media Playground
Chapter 3 Digital Gaming and the Media PlaygroundChapter 3 Digital Gaming and the Media Playground
Chapter 3 Digital Gaming and the Media Playground
Lindsey Conlin Maxwell
 
Chapter 4 Sound Recording and Popular Music
Chapter 4  Sound Recording and Popular MusicChapter 4  Sound Recording and Popular Music
Chapter 4 Sound Recording and Popular Music
Lindsey Conlin Maxwell
 
Radio and sound recording
Radio and sound recordingRadio and sound recording
Radio and sound recording
Ma. abbygale ombao
 
Waves, Light, Sound, Heat
Waves, Light, Sound, HeatWaves, Light, Sound, Heat
Waves, Light, Sound, Heat
Ripley Elementary
 
Heat, Light and Sound
Heat, Light and SoundHeat, Light and Sound
Heat, Light and Sound
Sarah Jones
 
Importance of antenatal care
Importance of antenatal careImportance of antenatal care
Importance of antenatal care
Abir Chowdhury
 

Viewers also liked (7)

스타트업을 위한 지분투자형 크라우드펀딩
스타트업을 위한 지분투자형 크라우드펀딩스타트업을 위한 지분투자형 크라우드펀딩
스타트업을 위한 지분투자형 크라우드펀딩
 
Chapter 3 Digital Gaming and the Media Playground
Chapter 3 Digital Gaming and the Media PlaygroundChapter 3 Digital Gaming and the Media Playground
Chapter 3 Digital Gaming and the Media Playground
 
Chapter 4 Sound Recording and Popular Music
Chapter 4  Sound Recording and Popular MusicChapter 4  Sound Recording and Popular Music
Chapter 4 Sound Recording and Popular Music
 
Radio and sound recording
Radio and sound recordingRadio and sound recording
Radio and sound recording
 
Waves, Light, Sound, Heat
Waves, Light, Sound, HeatWaves, Light, Sound, Heat
Waves, Light, Sound, Heat
 
Heat, Light and Sound
Heat, Light and SoundHeat, Light and Sound
Heat, Light and Sound
 
Importance of antenatal care
Importance of antenatal careImportance of antenatal care
Importance of antenatal care
 

Similar to 엔지니어의 꿈 Fmt 최종본

파이썬으로 익히는 딥러닝
파이썬으로 익히는 딥러닝파이썬으로 익히는 딥러닝
파이썬으로 익히는 딥러닝
SK(주) C&C - 강병호
 
Meteor IoT
Meteor IoTMeteor IoT
Meteor IoT
Jaeho Lee
 
[A1]루비는 패셔니스타
[A1]루비는 패셔니스타[A1]루비는 패셔니스타
[A1]루비는 패셔니스타NAVER D2
 
[NDC08] 최적화와 프로파일링 - 송창규
[NDC08] 최적화와 프로파일링 - 송창규[NDC08] 최적화와 프로파일링 - 송창규
[NDC08] 최적화와 프로파일링 - 송창규ChangKyu Song
 
NDC11_김성익_슈퍼클래스
NDC11_김성익_슈퍼클래스NDC11_김성익_슈퍼클래스
NDC11_김성익_슈퍼클래스
Sungik Kim
 
H3 2011 파이썬으로 클라우드 하고 싶어요
H3 2011 파이썬으로 클라우드 하고 싶어요H3 2011 파이썬으로 클라우드 하고 싶어요
H3 2011 파이썬으로 클라우드 하고 싶어요KTH
 
H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호
H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호
H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호KTH, 케이티하이텔
 
2011 H3 컨퍼런스-파이썬으로 클라우드 하고 싶어요
2011 H3 컨퍼런스-파이썬으로 클라우드 하고 싶어요2011 H3 컨퍼런스-파이썬으로 클라우드 하고 싶어요
2011 H3 컨퍼런스-파이썬으로 클라우드 하고 싶어요
Yongho Ha
 
NODE.JS 글로벌 기업 적용 사례 그리고, real-time 어플리케이션 개발하기
NODE.JS 글로벌 기업 적용 사례  그리고, real-time 어플리케이션 개발하기NODE.JS 글로벌 기업 적용 사례  그리고, real-time 어플리케이션 개발하기
NODE.JS 글로벌 기업 적용 사례 그리고, real-time 어플리케이션 개발하기
John Kim
 
이산수학 C1 프로젝트 6
이산수학 C1 프로젝트 6이산수학 C1 프로젝트 6
이산수학 C1 프로젝트 6pkok15
 
온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기Seungjae Lee
 
자료구조02
자료구조02자료구조02
자료구조02
herojoon1378
 
(2013 DEVIEW) 멀티쓰레드 프로그래밍이 왜이리 힘드나요?
(2013 DEVIEW) 멀티쓰레드 프로그래밍이  왜이리 힘드나요? (2013 DEVIEW) 멀티쓰레드 프로그래밍이  왜이리 힘드나요?
(2013 DEVIEW) 멀티쓰레드 프로그래밍이 왜이리 힘드나요?
내훈 정
 
R project_pt1
R project_pt1R project_pt1
R project_pt1
Joonho Lee
 
[1B6]Realm a database for android & ios
[1B6]Realm a database for android & ios[1B6]Realm a database for android & ios
[1B6]Realm a database for android & ios
NAVER D2
 
코딩클럽 왕초보 아두이노따라잡기 1탄
코딩클럽 왕초보 아두이노따라잡기 1탄코딩클럽 왕초보 아두이노따라잡기 1탄
코딩클럽 왕초보 아두이노따라잡기 1탄
Eunhee Ha
 
코드리뷰 짝 매칭 프로그램 구현기
코드리뷰 짝 매칭 프로그램 구현기코드리뷰 짝 매칭 프로그램 구현기
코드리뷰 짝 매칭 프로그램 구현기
Yong Hoon Kim
 
디자이너를 위한 Sw원리 워크샵
디자이너를 위한 Sw원리 워크샵디자이너를 위한 Sw원리 워크샵
디자이너를 위한 Sw원리 워크샵
Sangsu Song
 
옛날 웹 개발자가 잠깐 맛본 Vue.js 소개
옛날 웹 개발자가 잠깐 맛본 Vue.js 소개옛날 웹 개발자가 잠깐 맛본 Vue.js 소개
옛날 웹 개발자가 잠깐 맛본 Vue.js 소개
beom kyun choi
 

Similar to 엔지니어의 꿈 Fmt 최종본 (20)

파이썬으로 익히는 딥러닝
파이썬으로 익히는 딥러닝파이썬으로 익히는 딥러닝
파이썬으로 익히는 딥러닝
 
Meteor IoT
Meteor IoTMeteor IoT
Meteor IoT
 
[A1]루비는 패셔니스타
[A1]루비는 패셔니스타[A1]루비는 패셔니스타
[A1]루비는 패셔니스타
 
[NDC08] 최적화와 프로파일링 - 송창규
[NDC08] 최적화와 프로파일링 - 송창규[NDC08] 최적화와 프로파일링 - 송창규
[NDC08] 최적화와 프로파일링 - 송창규
 
NDC11_김성익_슈퍼클래스
NDC11_김성익_슈퍼클래스NDC11_김성익_슈퍼클래스
NDC11_김성익_슈퍼클래스
 
H3 2011 파이썬으로 클라우드 하고 싶어요
H3 2011 파이썬으로 클라우드 하고 싶어요H3 2011 파이썬으로 클라우드 하고 싶어요
H3 2011 파이썬으로 클라우드 하고 싶어요
 
H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호
H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호
H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호
 
2011 H3 컨퍼런스-파이썬으로 클라우드 하고 싶어요
2011 H3 컨퍼런스-파이썬으로 클라우드 하고 싶어요2011 H3 컨퍼런스-파이썬으로 클라우드 하고 싶어요
2011 H3 컨퍼런스-파이썬으로 클라우드 하고 싶어요
 
NODE.JS 글로벌 기업 적용 사례 그리고, real-time 어플리케이션 개발하기
NODE.JS 글로벌 기업 적용 사례  그리고, real-time 어플리케이션 개발하기NODE.JS 글로벌 기업 적용 사례  그리고, real-time 어플리케이션 개발하기
NODE.JS 글로벌 기업 적용 사례 그리고, real-time 어플리케이션 개발하기
 
이산수학06
이산수학06이산수학06
이산수학06
 
이산수학 C1 프로젝트 6
이산수학 C1 프로젝트 6이산수학 C1 프로젝트 6
이산수학 C1 프로젝트 6
 
온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기
 
자료구조02
자료구조02자료구조02
자료구조02
 
(2013 DEVIEW) 멀티쓰레드 프로그래밍이 왜이리 힘드나요?
(2013 DEVIEW) 멀티쓰레드 프로그래밍이  왜이리 힘드나요? (2013 DEVIEW) 멀티쓰레드 프로그래밍이  왜이리 힘드나요?
(2013 DEVIEW) 멀티쓰레드 프로그래밍이 왜이리 힘드나요?
 
R project_pt1
R project_pt1R project_pt1
R project_pt1
 
[1B6]Realm a database for android & ios
[1B6]Realm a database for android & ios[1B6]Realm a database for android & ios
[1B6]Realm a database for android & ios
 
코딩클럽 왕초보 아두이노따라잡기 1탄
코딩클럽 왕초보 아두이노따라잡기 1탄코딩클럽 왕초보 아두이노따라잡기 1탄
코딩클럽 왕초보 아두이노따라잡기 1탄
 
코드리뷰 짝 매칭 프로그램 구현기
코드리뷰 짝 매칭 프로그램 구현기코드리뷰 짝 매칭 프로그램 구현기
코드리뷰 짝 매칭 프로그램 구현기
 
디자이너를 위한 Sw원리 워크샵
디자이너를 위한 Sw원리 워크샵디자이너를 위한 Sw원리 워크샵
디자이너를 위한 Sw원리 워크샵
 
옛날 웹 개발자가 잠깐 맛본 Vue.js 소개
옛날 웹 개발자가 잠깐 맛본 Vue.js 소개옛날 웹 개발자가 잠깐 맛본 Vue.js 소개
옛날 웹 개발자가 잠깐 맛본 Vue.js 소개
 

엔지니어의 꿈 Fmt 최종본