Rapid Development

4,484 views

Published on

Published in: Technology

Rapid Development

  1. 1. Rapid Development<br />남기룡(birdkr@gmail.com)<br />마이에트 엔터테인먼트<br />
  2. 2. 방법론?<br />
  3. 3. 여기서는..<br />
  4. 4. 쾌속 개발을 하기 위해서는?<br />낭비를 제거하는 것이 핵심<br />7대 낭비(Lean Software Development)<br />미완성 작업<br />가외 기능<br />재학습<br />이관<br />작업 전환<br />지연<br />결함<br />회고를 통해 팀원들과 지속적으로 낭비를 찾아서 제거하자.<br />
  5. 5. 빌드 자동화<br />
  6. 6. 러시아 페인트공 알고리즘<br />
  7. 7. 예제 (로그인)<br />
  8. 8. 예제 (로그인)<br />서버를 실행하며 개발하는 것이 아니라 유닛 테스트를 만들면서 개발<br />
  9. 9. 리플레이<br />버그의 재현에 편하다<br />패킷 분석에 편하다<br />벤치마크 테스트 등의 여러 테스트 자동화에서 사용<br />사용성 테스트<br />
  10. 10. 리플레이 구현<br />Send<br />Packet<br />Recv<br />Packet<br />Replay<br />Queue<br />Command Queue<br />Local<br />복사<br />Replay<br />Queue<br />게임 루프<br />커맨드 구조 <br />ID<br />Data<br />
  11. 11. 리플레이를 이용한 패킷 분석<br />
  12. 12. 동영상 캡처<br />반디 캡처 라이브러리 사용<br />버그 재현에 편하다. <br />버그 리포트 때 동영상도 함께 올리도록 함<br />한 프레임씩 화면을 관찰하고 싶을 때에도 편리<br />
  13. 13. 지속적인 테스트<br />CruiseControl.Net사용<br />유닛 테스트<br />DB 테스트<br />네트워크 스트레스 테스트<br />AI 전투 테스트<br />성능 테스트<br />
  14. 14. CruiseControl.NET에 원하는 내용 출력하기<br />
  15. 15. 테스트 결과 XML 로그<br />&lt;?xml version=&quot;1.0&quot;?&gt;<br />&lt;maiettest-results tests=“2&quot; failedtests=“1&quot; failures=&quot;1&quot; time=&quot;0.137&quot;&gt;<br /> &lt;report text=&quot;time : 680 sec&quot; /&gt;<br /> &lt;report text=“총 클라이언트 개수 : 4650&quot; /&gt;<br /> &lt;test name=“로그인 반복&quot; time=&quot;0.062&quot; &gt;<br /> &lt;success message=&quot;success&quot; /&gt;<br /> &lt;/test&gt;<br /> &lt;test name=“캐릭터 생성 반복&quot; time=&quot;0.062&quot; &gt;<br /> &lt;failure message=&quot;Crash!&quot; /&gt;<br /> &lt;/test&gt;<br />&lt;/maiettest-results&gt;<br />
  16. 16. Dashboard의 xsl파일 설정<br />&lt;xsl:stylesheet version=&quot;1.0&quot; xmlns:xsl=http://www.w3.org/1999/XSL/Transform &gt;<br /> &lt;xsl:output method=&quot;html&quot;/&gt;<br /> &lt;xsl:template match=&quot;/&quot;&gt;<br /> &lt;xsl:variable name=&quot;maiettest.result.list&quot; select=&quot;/cruisecontrol/build/maiettest-results&quot;/&gt;<br /> &lt;xsl:variable name=&quot;maiettest.report.list&quot; select=&quot;$maiettest.result.list/report&quot;/&gt;<br /> &lt;xsl:variable name=&quot;maiettest.case.list&quot; select=&quot;$maiettest.result.list/test&quot;/&gt;<br /> &lt;table class=&quot;section-table&quot; cellpadding=&quot;2&quot; cellspacing=&quot;0&quot; border=&quot;0&quot; width=&quot;98%&quot;&gt;<br /> &lt;tr&gt;<br /> &lt;td class=&quot;sectionheader&quot;&gt;<br />Maiet Test report:<br /> &lt;/td&gt;<br /> &lt;/tr&gt;<br /> &lt;xsl:call-template name=&quot;maiettest__reportdetail&quot;&gt;<br /> &lt;xsl:with-param name=&quot;detailnodes&quot; select=&quot;//report&quot;/&gt;<br /> &lt;/xsl:call-template&gt;<br /> &lt;/table&gt;<br /> &lt;table class=&quot;section-table&quot; cellpadding=&quot;2&quot; cellspacing=&quot;0&quot; border=&quot;0&quot; width=&quot;98%&quot;&gt;<br /> &lt;tr&gt;<br /> &lt;td class=&quot;sectionheader&quot; colspan=&quot;2&quot;&gt;<br />Maiet Test Case results:<br /> &lt;/td&gt;<br /> &lt;/tr&gt;<br /> &lt;xsl:call-template name=&quot;maiettest__testdetail&quot;&gt;<br /> &lt;xsl:with-param name=&quot;detailnodes&quot; select=&quot;//test&quot;/&gt;<br /> &lt;/xsl:call-template&gt;<br /> &lt;/table&gt;<br /> &lt;/xsl:template&gt;<br />&lt;/xsl:stylesheet&gt;<br />
  17. 17. Resource Validator<br />기획자나 아티스트가 입력한 컨텐츠설정값에 논리적으로 잘못된 값이 입력되었는지 검증<br />게임을 실행할 때마다 잘못 입력된 값이 있으면 게임에서 에러 통지<br />CruiseControl.Net에서 에러 통지<br />
  18. 18. Resource Validator<br />
  19. 19. Runtime Validator<br />서버 구동중에 정적 분석으로 체크할 수 없는 에러나 경고를 통지<br />종류<br />DB 쿼리 실패<br />성능 경고<br />AI 스크립트 오류<br />Assertion<br />
  20. 20. Runtime Validator<br />
  21. 21. Crash Dump Analyzer<br />프로그램에 치명적인 오류가 있을 경우 덤프 파일을 서버에 전송<br />수집된 덤프 파일을 에러난 함수 별로 분류<br />정기적으로 새로 올라온 덤프 파일 목록을 개발자들에게 이메일로 보고<br />
  22. 22. Crash Dump Analyzer 구현<br />덤프 리포터<br />심볼 서버 구축<br />WinDbg의 Command-Line을 이용하여 분석<br />C#을 이용하여 최신 덤프 목록을 이메일로 보내는 간단한 프로그램 제작<br />Ccnet을 이용하여 자동화<br />
  23. 23. Crash Dump Analyzer<br />
  24. 24. Crash Dump Analyzer<br />
  25. 25. 감사합니다.<br />

×