SlideShare a Scribd company logo
Shit If

             Shit 요구사항




2012-11-05      Shit If   1
순서
•   If문
•   요구사항
•   리팩토링
•   결론




2012-11-05   Shit If   2
If문 이란_01
• 1개 이상의 조건을 논리 연산자와 결합하여
  그 조건의 참과 거짓을 판별한 후 프로그램
  의 실행 순서를 지시하는 명령문이다.




2012-11-05      Shit If   3
If문 이란_02
Var 전태경;
 If(전태경==“쿨가이”){
     return true;
 }else{
     return false;
 }



2012-11-05      Shit If   4
If문 이란_03
Var 전태경;
   If(전태경==“쿨가이”){
        return true;
   }else if(전태경==“대인배”){
        return true;
   }else if(전태경==“농구짱”){
        return true;
   }else if(전태경==“탁구짱”){
        return true;
   }else if(전태경==“쩐다”){
        return true;
   }else if(전태경==“볼품없다”){
        return false;
   }


2012-11-05                  Shit If   5
If문 이란_04
•   If문이 많아지면 코드의 복잡성이 증가한다.
•   가독성이 떨어진다.
•   요구사항 변경에 매우 취약하다.
•   모듈화된 소스코드의 흐름을 방해한다.
•   논리의 흐름을 제어하는 꼭 필요한
    Statement



2012-11-05      Shit If    6
요구사항수정_01_변경_01




2012-11-05      Shit If    7
요구사항수정_01_변경_02
• 상황 : 기존의 요구사항을 분석하여 개발을
  진행 혹은 완료하였는데 갑자기 요구사항
  에 변경된 경우

• 절차 : 영향분석  소스코드 변경  안정
  화  테스트  재배포

• 결과 : 몇 시간 혹은 몇 일 혹은 몇 주전으로
  시간이동
2012-11-05      Shit If      8
요구사항수정_02_증발_01




2012-11-05      Shit If    9
요구사항수정_02_증발_02
• 상황 : 기존의 요구사항을 분석하여 개발을
  진행 혹은 완료하였는데 갑자기 요구사항
  에 증발된 경우

• 절차 : 영향분석  소스코드 삭제  안정
  화  테스트  재배포`

• 결과 : 몇 시간 혹은 몇 일 혹은 몇 주전으로
  시간이동
2012-11-05      Shit If      10
IF문과 요구사항의 상관관계_01
• 요구사항 변경  특별한 조건 분기발생 
  if문 or else if문 증가

• if문 or else if문 증가  코드의 모듈화 방해
   예외발생  시간이동




2012-11-05     Shit If          11
IF문과 요구사항의 상관관계_02
• In case of Wise TV
     – 서형님 : “지사가 접근할 경우 이 메뉴를 다르
       게 출력해주세요.”

             관리자                 지사




2012-11-05             Shit If        12
IF문과 요구사항의 상관관계_03
• In case of Wise TV
                            요구사항 전                                                                                      요구사항 후
 <div class="com_menu"><img src="/assets/img/communication/img_upload01.png"> <a             <div class="com_menu"><img src="/assets/img/communication/img_upload01.png"> <a
 href="/communication/upload/notice_upload.jsp"><img                                         href="/communication/upload/notice_upload.jsp"><img
 src="/assets/img/communication/btn_upload.png"></a></div>                                   src="/assets/img/communication/btn_upload.png"></a></div>
 <div><img src="/assets/img/communication/line_800x1.png"></div>                             <div><img src="/assets/img/communication/line_800x1.png"></div>

 <div class="com_menu"><img src="/assets/img/communication/img_upload03.png"> <a
 href="/communication/upload/training_upload.jsp"><img
 src="/assets/img/communication/btn_upload.png"></a></div>
                                                                                             <%
 <div><img src="/assets/img/communication/line_800x1.png"></div>
                                                                                             if(!permission.equals("2")){
                                                                                             %>
                                                                                             <div class="com_menu"><img src="/assets/img/communication/img_upload02.png"> <a
                                                                                             href="/communication/upload/assembly_upload.jsp"><img
                                                                                             src="/assets/img/communication/btn_upload.png"></a></div>
                                                                                             <div><img src="/assets/img/communication/line_800x1.png"></div>
       가독성, 복잡함,
                                                                                             <%}%>
       관리성 어려움 발생
                                                                                             <div class="com_menu"><img src="/assets/img/communication/img_upload03.png"> <a
                                                                                             href="/communication/upload/training_upload.jsp"><img
                                                                                             src="/assets/img/communication/btn_upload.png"></a></div>
                                                                                             <div><img src="/assets/img/communication/line_800x1.png"></div>




2012-11-05                                                                         Shit If                                                                                     13
코드 리팩토링_01
• 화면의 변화 없이 관리 가능한 코드로 구조
  를 변경하는 것




2012-11-05       Shit If   14
코드 리팩토링_02
• 대상
     – If, switch
     – 같은 기능의 method
     – 대충 naming
     – 전역변수
     – 극단적인 주석
     – Hard Coding



2012-11-05         Shit If   15
코드 리팩토링_03
• 왜?
     – 디자인 패턴 계선
     – 버그를 찾도록 도와준다.
     – 프로젝트 기간이 단축된다.

• 언제?
     – 기능을 추가할 때
     – 버그 수정할 때
     – 어떤 무언가를 할 때

• 한계
     – 잘못하면 시간이동
     – 기획자와 PL, PM 에겐 어필이 되질 않는다.


2012-11-05              Shit If     16
결론_01
• 개발팀에게
     – 환상을 버리자
             • 환상 1 : 프로젝트 시작 전 요구사항 수집을 끝낼 수
               있다.
             • 환상 2 : 개발전 기획 또는 영업단에서 요구사항이
               확정되어 전달 될 것이다.
             • 환상 3 : 개발 초기에 정해지면 절대 변경되면 안된
               다.
     – 리팩토링을 틈틈히 하여 어떠한 요구사항 변경
       에도 대응할 준비를 하자.
2012-11-05                Shit If           17
결론_02
• 타팀에게
     – 개발자의 환상을 최대한 지켜달라
     – 요구사항은 리펙토링이 가능한 범위 안에서 검
       증되어야 한다.
     – 요구사항은 관리 되어야 한다.




2012-11-05      Shit If       18

More Related Content

PDF
Web component
PDF
How to evaluate accessibility with automatic
PPTX
XE 오픈 세미나(2014-06-28) - (1/3) 레이아웃 제작 기본
PPTX
XE 레이아웃 제작 실무 노하우 1 - XECon2014 by 고진화
PPTX
XE 오픈 세미나(2014-06-28) - (2/3) 레이아웃 제작 노하우
PDF
Dreamweaver CS5.5 를 이용한 jQueryMobile 개발
PDF
Vuejs 시작하기
PDF
응답하라 반응형웹 - 3. bootstrap
Web component
How to evaluate accessibility with automatic
XE 오픈 세미나(2014-06-28) - (1/3) 레이아웃 제작 기본
XE 레이아웃 제작 실무 노하우 1 - XECon2014 by 고진화
XE 오픈 세미나(2014-06-28) - (2/3) 레이아웃 제작 노하우
Dreamweaver CS5.5 를 이용한 jQueryMobile 개발
Vuejs 시작하기
응답하라 반응형웹 - 3. bootstrap

What's hot (7)

PDF
Actionbar and fragment
PPTX
Jqm+appspresso
PDF
다시보는 Angular js
PDF
Ionic으로 모바일앱 만들기 #2
PDF
캠프앱 개발 사례를 통해 본 하이브리드앱 어디까지 | Devon 2012
PDF
Clean Front-End Development
PDF
모바일 무한 스크롤 개발
Actionbar and fragment
Jqm+appspresso
다시보는 Angular js
Ionic으로 모바일앱 만들기 #2
캠프앱 개발 사례를 통해 본 하이브리드앱 어디까지 | Devon 2012
Clean Front-End Development
모바일 무한 스크롤 개발
Ad

Similar to Shit if (20)

PPTX
Jira manual
PDF
okspring3x
PPTX
3.Spring IoC&DI(spring ioc실습, XML기반)
PPTX
Spring mvc
PDF
Performance and rail
PDF
Meteor React Tutorial 따라하기
PDF
[Atlassian meets dev ops and itsm] kakao meets jira
PDF
Kakao meets jira
PPTX
[SPONGE] E.BLOCK+ [10] final portfolio(181012)
PDF
Polymer, lego같이 만드는 웹어플리케이션
PDF
[D2 오픈세미나]3.web view hybridapp
PDF
MVVM Pattern for Android
PDF
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?
PDF
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?
PPTX
Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스 /구로오라클학원/ 구로자바학원/ 구로디지털단지역
PDF
Fabric Server 제품소개
PDF
[강연] 학생에서 현업 개발자로의 성공적인 변신을 위하여
PPTX
모바일 코딩의 종류
PDF
자바 웹 개발 시작하기 (5주차 : 스프링 프래임워크)
PDF
Jpa 쿼리 포함 자료
Jira manual
okspring3x
3.Spring IoC&DI(spring ioc실습, XML기반)
Spring mvc
Performance and rail
Meteor React Tutorial 따라하기
[Atlassian meets dev ops and itsm] kakao meets jira
Kakao meets jira
[SPONGE] E.BLOCK+ [10] final portfolio(181012)
Polymer, lego같이 만드는 웹어플리케이션
[D2 오픈세미나]3.web view hybridapp
MVVM Pattern for Android
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?
Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스 /구로오라클학원/ 구로자바학원/ 구로디지털단지역
Fabric Server 제품소개
[강연] 학생에서 현업 개발자로의 성공적인 변신을 위하여
모바일 코딩의 종류
자바 웹 개발 시작하기 (5주차 : 스프링 프래임워크)
Jpa 쿼리 포함 자료
Ad

Shit if

  • 1. Shit If Shit 요구사항 2012-11-05 Shit If 1
  • 2. 순서 • If문 • 요구사항 • 리팩토링 • 결론 2012-11-05 Shit If 2
  • 3. If문 이란_01 • 1개 이상의 조건을 논리 연산자와 결합하여 그 조건의 참과 거짓을 판별한 후 프로그램 의 실행 순서를 지시하는 명령문이다. 2012-11-05 Shit If 3
  • 4. If문 이란_02 Var 전태경; If(전태경==“쿨가이”){ return true; }else{ return false; } 2012-11-05 Shit If 4
  • 5. If문 이란_03 Var 전태경; If(전태경==“쿨가이”){ return true; }else if(전태경==“대인배”){ return true; }else if(전태경==“농구짱”){ return true; }else if(전태경==“탁구짱”){ return true; }else if(전태경==“쩐다”){ return true; }else if(전태경==“볼품없다”){ return false; } 2012-11-05 Shit If 5
  • 6. If문 이란_04 • If문이 많아지면 코드의 복잡성이 증가한다. • 가독성이 떨어진다. • 요구사항 변경에 매우 취약하다. • 모듈화된 소스코드의 흐름을 방해한다. • 논리의 흐름을 제어하는 꼭 필요한 Statement 2012-11-05 Shit If 6
  • 8. 요구사항수정_01_변경_02 • 상황 : 기존의 요구사항을 분석하여 개발을 진행 혹은 완료하였는데 갑자기 요구사항 에 변경된 경우 • 절차 : 영향분석  소스코드 변경  안정 화  테스트  재배포 • 결과 : 몇 시간 혹은 몇 일 혹은 몇 주전으로 시간이동 2012-11-05 Shit If 8
  • 10. 요구사항수정_02_증발_02 • 상황 : 기존의 요구사항을 분석하여 개발을 진행 혹은 완료하였는데 갑자기 요구사항 에 증발된 경우 • 절차 : 영향분석  소스코드 삭제  안정 화  테스트  재배포` • 결과 : 몇 시간 혹은 몇 일 혹은 몇 주전으로 시간이동 2012-11-05 Shit If 10
  • 11. IF문과 요구사항의 상관관계_01 • 요구사항 변경  특별한 조건 분기발생  if문 or else if문 증가 • if문 or else if문 증가  코드의 모듈화 방해  예외발생  시간이동 2012-11-05 Shit If 11
  • 12. IF문과 요구사항의 상관관계_02 • In case of Wise TV – 서형님 : “지사가 접근할 경우 이 메뉴를 다르 게 출력해주세요.” 관리자 지사 2012-11-05 Shit If 12
  • 13. IF문과 요구사항의 상관관계_03 • In case of Wise TV 요구사항 전 요구사항 후 <div class="com_menu"><img src="/assets/img/communication/img_upload01.png"> <a <div class="com_menu"><img src="/assets/img/communication/img_upload01.png"> <a href="/communication/upload/notice_upload.jsp"><img href="/communication/upload/notice_upload.jsp"><img src="/assets/img/communication/btn_upload.png"></a></div> src="/assets/img/communication/btn_upload.png"></a></div> <div><img src="/assets/img/communication/line_800x1.png"></div> <div><img src="/assets/img/communication/line_800x1.png"></div> <div class="com_menu"><img src="/assets/img/communication/img_upload03.png"> <a href="/communication/upload/training_upload.jsp"><img src="/assets/img/communication/btn_upload.png"></a></div> <% <div><img src="/assets/img/communication/line_800x1.png"></div> if(!permission.equals("2")){ %> <div class="com_menu"><img src="/assets/img/communication/img_upload02.png"> <a href="/communication/upload/assembly_upload.jsp"><img src="/assets/img/communication/btn_upload.png"></a></div> <div><img src="/assets/img/communication/line_800x1.png"></div> 가독성, 복잡함, <%}%> 관리성 어려움 발생 <div class="com_menu"><img src="/assets/img/communication/img_upload03.png"> <a href="/communication/upload/training_upload.jsp"><img src="/assets/img/communication/btn_upload.png"></a></div> <div><img src="/assets/img/communication/line_800x1.png"></div> 2012-11-05 Shit If 13
  • 14. 코드 리팩토링_01 • 화면의 변화 없이 관리 가능한 코드로 구조 를 변경하는 것 2012-11-05 Shit If 14
  • 15. 코드 리팩토링_02 • 대상 – If, switch – 같은 기능의 method – 대충 naming – 전역변수 – 극단적인 주석 – Hard Coding 2012-11-05 Shit If 15
  • 16. 코드 리팩토링_03 • 왜? – 디자인 패턴 계선 – 버그를 찾도록 도와준다. – 프로젝트 기간이 단축된다. • 언제? – 기능을 추가할 때 – 버그 수정할 때 – 어떤 무언가를 할 때 • 한계 – 잘못하면 시간이동 – 기획자와 PL, PM 에겐 어필이 되질 않는다. 2012-11-05 Shit If 16
  • 17. 결론_01 • 개발팀에게 – 환상을 버리자 • 환상 1 : 프로젝트 시작 전 요구사항 수집을 끝낼 수 있다. • 환상 2 : 개발전 기획 또는 영업단에서 요구사항이 확정되어 전달 될 것이다. • 환상 3 : 개발 초기에 정해지면 절대 변경되면 안된 다. – 리팩토링을 틈틈히 하여 어떠한 요구사항 변경 에도 대응할 준비를 하자. 2012-11-05 Shit If 17
  • 18. 결론_02 • 타팀에게 – 개발자의 환상을 최대한 지켜달라 – 요구사항은 리펙토링이 가능한 범위 안에서 검 증되어야 한다. – 요구사항은 관리 되어야 한다. 2012-11-05 Shit If 18