41
더 나은 sw 프로젝트를 위해 NEXT | 윤지수

더 나은 SW프로젝트를 위해

  • Upload
    -

  • View
    1.560

  • Download
    2

Embed Size (px)

Citation preview

Page 1: 더 나은 SW프로젝트를 위해

더����������� ������������������  나은����������� ������������������  sw����������� ������������������  프로젝트를����������� ������������������  위해

NEXT����������� ������������������  ����������� ������������������  |����������� ������������������  ����������� ������������������  윤지수

Page 2: 더 나은 SW프로젝트를 위해

오늘����������� ������������������  드릴����������� ������������������  좀����������� ������������������  잼없는����������� ������������������  이야기

품질검증����������� ������������������  

협업����������� ������������������  ����������� ������������������  

프로젝트����������� ������������������  중����������� ������������������  조심해야����������� ������������������  할����������� ������������������  것

Page 3: 더 나은 SW프로젝트를 위해

품 질 검 증

Page 4: 더 나은 SW프로젝트를 위해

소프트웨어����������� ������������������  품질은����������� ������������������  크게����������� ������������������  두����������� ������������������  가지.����������� ������������������  

����������� ������������������  ����������� ������������������  SW����������� ������������������  동작����������� ������������������  테스트와����������� ������������������  코드검사����������� ������������������  

Page 5: 더 나은 SW프로젝트를 위해

소프트웨어����������� ������������������  품질은����������� ������������������  크게����������� ������������������  두����������� ������������������  가지.����������� ������������������  

����������� ������������������  ����������� ������������������  SW����������� ������������������  동작����������� ������������������  테스트와����������� ������������������  코드검사����������� ������������������  

Page 6: 더 나은 SW프로젝트를 위해

SW����������� ������������������  동작����������� ������������������  테스트

SW����������� ������������������  동작����������� ������������������  테스트����������� ������������������  ?����������� ������������������  ����������� ������������������  (Quality����������� ������������������  Assurance)����������� ������������������  !관련해서����������� ������������������  말씀드릴����������� ������������������  3꼭지.

테스트����������� ������������������  케이스

단계별����������� ������������������  테스트

테스트����������� ������������������  자동화

Page 7: 더 나은 SW프로젝트를 위해

테스트케이스(TC)는����������� ������������������  ����������� ������������������  

기획단계에서����������� ������������������  나온����������� ������������������  제품(서비스)의����������� ������������������  요구사항을����������� ������������������  기반으로����������� ������������������  작성����������� ������������������  개발완료����������� ������������������  단계에서����������� ������������������  제품����������� ������������������  사용����������� ������������������  환경별로����������� ������������������  테스트(os,browser����������� ������������������  등)����������� ������������������  !상세설계에서의����������� ������������������  요구사항,����������� ������������������  테스트케이스간의����������� ������������������  sync����������� ������������������  유지가����������� ������������������  꽤����������� ������������������  중요.

SW����������� ������������������  동작����������� ������������������  테스트

Page 8: 더 나은 SW프로젝트를 위해

테스트는����������� ������������������  여러가지����������� ������������������  단계별����������� ������������������  테스트가����������� ������������������  필요.����������� ������������������  

개발자����������� ������������������  테스트

����������� ������������������  test����������� ������������������  code기반의����������� ������������������  테스트

Test����������� ������������������  engineer의����������� ������������������  전문테스트

정상����������� ������������������  상황����������� ������������������  비정상����������� ������������������  상황����������� ������������������  …⋯

기본����������� ������������������  TC����������� ������������������  자가검진 unit����������� ������������������  test����������� ������������������  code����������� ������������������  

SW����������� ������������������  동작����������� ������������������  테스트

Page 9: 더 나은 SW프로젝트를 위해

테스트자동화����������� ������������������  ����������� ������������������  ����������� ������������������  

개발자는����������� ������������������  unit����������� ������������������  test����������� ������������������  code를����������� ������������������  작성,����������� ������������������  자동화된����������� ������������������  도구를����������� ������������������  활용해서����������� ������������������  pass/fail로����������� ������������������  확인.

import unittest #Include the pyUnit unittest framework import src2 !class destUm(unittest.TestCase): @classmethod def setUpClass(self): self.ddd = "eeee" print "classmethod" ! def setUp(self): print "start" ! def tearDown(self): print "tearDown" ! def test_number_1st(self): self.assertEqual(int(src2.get_circle_area(3)),28) self.assertEqual(int(src2.get_circle_area(3)),28) print self.ddd ! def test_number_2st(self): self.assertEqual(int(src2.get_circle_area('3')),28) ! def test_number_3st(self): self.assertEqual(int(src2.get_circle_area(3.0)),28) !

SW����������� ������������������  동작����������� ������������������  테스트

Page 10: 더 나은 SW프로젝트를 위해

소프트웨어����������� ������������������  품질은����������� ������������������  크게����������� ������������������  두����������� ������������������  가지.����������� ������������������  

����������� ������������������  ����������� ������������������  SW����������� ������������������  동작����������� ������������������  테스트와����������� ������������������  코드검사����������� ������������������  

Page 11: 더 나은 SW프로젝트를 위해

코드����������� ������������������  품질검사

코드����������� ������������������  품질����������� ������������������  검사.����������� ������������������  

Code����������� ������������������  Inspection

코드����������� ������������������  작성����������� ������������������  규칙 코드����������� ������������������  정적����������� ������������������  검사

코드����������� ������������������  리뷰복잡도����������� ������������������  검사테스트코드����������� ������������������  ����������� ������������������  커버리지

Page 12: 더 나은 SW프로젝트를 위해

코드����������� ������������������  품질검사

코딩����������� ������������������  컨벤션은,����������� ������������������  

!프로젝트����������� ������������������  구성원간의����������� ������������������  약속으로����������� ������������������  프로그램의����������� ������������������  동작과는����������� ������������������  상관����������� ������������������  없음.����������� ������������������  유지보수,����������� ������������������  가독성����������� ������������������  측면에서����������� ������������������  매우����������� ������������������  중요하게����������� ������������������  생각함.����������� ������������������  !관련����������� ������������������  검사����������� ������������������  도구가����������� ������������������  있으나,����������� ������������������  의미적인(semantic)부분은����������� ������������������  결국����������� ������������������  사람이����������� ������������������  검사해야����������� ������������������  함����������� ������������������  (비싼����������� ������������������  비용..����������� ������������������  꾸준히����������� ������������������  하기����������� ������������������  어려움)

Page 13: 더 나은 SW프로젝트를 위해

코드����������� ������������������  품질검사

코드����������� ������������������  정적검사는,����������� ������������������  

!프로그램이����������� ������������������  잠재적인����������� ������������������  어떤����������� ������������������  오류를����������� ������������������  포함하는지를����������� ������������������  판단.����������� ������������������  ����������� ������������������  (memory,����������� ������������������  logic����������� ������������������  ,����������� ������������������  null값����������� ������������������  참조����������� ������������������  오류,����������� ������������������  security����������� ������������������  오류����������� ������������������  등)����������� ������������������  !언어별로����������� ������������������  대부분����������� ������������������  적당한����������� ������������������  도구가����������� ������������������  존재.����������� ������������������  ����������� ������������������  

image : http://blog.codepen.io/2013/06/11/inline-error-messaging-for-js-hint/

Page 14: 더 나은 SW프로젝트를 위해

코드����������� ������������������  품질검사

복잡도����������� ������������������  검사는,����������� ������������������  

함수나����������� ������������������  클래스����������� ������������������  단위로����������� ������������������  LOC뿐����������� ������������������  아니라����������� ������������������  조건문등이����������� ������������������  얼마나����������� ������������������  중첩되어����������� ������������������  있는지를����������� ������������������  판단����������� ������������������  

중복코드����������� ������������������  검사는,����������� ������������������  

함수나����������� ������������������  클래스����������� ������������������  단위로����������� ������������������  얼마나����������� ������������������  비슷한����������� ������������������  코드가����������� ������������������  존재하는지를����������� ������������������  비교해서����������� ������������������  보여줌.����������� ������������������  

‘코드리뷰’를����������� ������������������  하는����������� ������������������  것이����������� ������������������  가장����������� ������������������  좋지만,����������� ������������������  

비교적����������� ������������������  비싼����������� ������������������  비용이����������� ������������������  들어가는����������� ������������������  ‘코드리뷰’를����������� ������������������  ����������� ������������������  

자동화하여����������� ������������������  대신할����������� ������������������  수����������� ������������������  있는����������� ������������������  좋은����������� ������������������  방법.

Page 15: 더 나은 SW프로젝트를 위해

코드����������� ������������������  품질검사

커버리지����������� ������������������  검사는,����������� ������������������  

실제����������� ������������������  소스코드����������� ������������������  대비����������� ������������������  얼마나����������� ������������������  많은����������� ������������������  테스트코드가����������� ������������������  존재하는지����������� ������������������  판단.����������� ������������������  ����������� ������������������  

Page 16: 더 나은 SW프로젝트를 위해

코드����������� ������������������  품질검사

품질검사..����������� ������������������  좋은����������� ������������������  도구,����������� ������������������  좋은����������� ������������������  방법����������� ������������������  ..����������� ������������������  음����������� ������������������  좋군����������� ������������������  !����������� ������������������  !!

자����������� ������������������  이제����������� ������������������  중요합니다.����������� ������������������  

Page 17: 더 나은 SW프로젝트를 위해

코드����������� ������������������  품질검사

코드����������� ������������������  검사의����������� ������������������  문제점����������� ������������������  중����������� ������������������  하나는����������� ������������������  ,����������� ������������������  ����������� ������������������  정량적인����������� ������������������  데이터����������� ������������������  결과를����������� ������������������  어떻게����������� ������������������  활용하는가?����������� ������������������  이다.

!Q)����������� ������������������  

평가의����������� ������������������  대상����������� ������������������  ?����������� ������������������  KPI와����������� ������������������  같은����������� ������������������  목표의����������� ������������������  대상����������� ������������������  ?����������� ������������������  

!

A)목표에����������� ������������������  포함하는����������� ������������������  것도����������� ������������������  가능하겠지만,����������� ������������������  ����������� ������������������  

본질을����������� ������������������  잊지말기.����������� ������������������  

중요한����������� ������������������  건����������� ������������������  코드����������� ������������������  품질을����������� ������������������  꾸준히����������� ������������������  유지하려는����������� ������������������  의지임.

Page 18: 더 나은 SW프로젝트를 위해

����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  

����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  좋은����������� ������������������  코드의����������� ������������������  품질이����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  제품과����������� ������������������  서비스의����������� ������������������  성공일까?����������� ������������������  

����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  

!

����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  제품과����������� ������������������  서비스의����������� ������������������  기본적인����������� ������������������  품질을����������� ������������������  보장����������� ������������������  

좀����������� ������������������  느긋하게����������� ������������������  장기적인����������� ������������������  안목필요

Page 19: 더 나은 SW프로젝트를 위해

아무튼..����������� ������������������  개발자들은����������� ������������������  품질관리..이런����������� ������������������  거����������� ������������������  싫어한다느거..����������� ������������������  !

그래서,,����������� ������������������  !

자발적이거나,����������� ������������������  공감대가����������� ������������������  충분해야����������� ������������������  함.����������� ������������������  구성원간의����������� ������������������  충분한����������� ������������������  학습이����������� ������������������  필요.����������� ������������������  점진적인����������� ������������������  확대����������� ������������������  :����������� ������������������  쉽고����������� ������������������  가능한����������� ������������������  것부터����������� ������������������  시작하기.����������� ������������������  

Page 20: 더 나은 SW프로젝트를 위해

!

!

우아하게����������� ������������������  품질관리����������� ������������������  할����������� ������������������  수는����������� ������������������  없겠지?����������� ������������������  

Page 21: 더 나은 SW프로젝트를 위해

아무튼����������� ������������������  이런����������� ������������������  품질관리가����������� ������������������  매우����������� ������������������  번거롭고����������� ������������������  귀찮은����������� ������������������  일.����������� ������������������  ����������� ������������������  빌드����������� ������������������  단계에서����������� ������������������  자동화는����������� ������������������  필수!����������� ������������������  CI����������� ������������������  (Continuous����������� ������������������  Itegration)����������� ������������������  도구를����������� ������������������  활용����������� ������������������  

이미지출처:http://www.ranorex.com/

Page 22: 더 나은 SW프로젝트를 위해

CI도구는����������� ������������������  Jenkins와����������� ������������������  ����������� ������������������  Hudson����������� ������������������  등이����������� ������������������  있으며,����������� ������������������  ����������� ������������������  간단한����������� ������������������  설정과정을����������� ������������������  거치면����������� ������������������  되고,����������� ������������������  ����������� ������������������  다양한����������� ������������������  시각적인����������� ������������������  정보를����������� ������������������  제공해����������� ������������������  줌.����������� ������������������  

Page 23: 더 나은 SW프로젝트를 위해
Page 24: 더 나은 SW프로젝트를 위해

CI����������� ������������������  로����������� ������������������  좀더����������� ������������������  우아하게����������� ������������������  할����������� ������������������  수는����������� ������������������  있음.����������� ������������������  !하지만����������� ������������������  구축한다고����������� ������������������  다����������� ������������������  되는게����������� ������������������  아니니까����������� ������������������  ����������� ������������������  그럼에도����������� ������������������  중요한건,����������� ������������������  !그����������� ������������������  의미를����������� ������������������  계속����������� ������������������  공유하고����������� ������������������  공감해야����������� ������������������  

����������� ������������������  지속성있는����������� ������������������  지속적����������� ������������������  통합이����������� ������������������  가능함.����������� ������������������  

Page 25: 더 나은 SW프로젝트를 위해

협 업

Page 26: 더 나은 SW프로젝트를 위해

이런..죄송합니다����������� ������������������  협업에����������� ������������������  별다른����������� ������������������  해법도����������� ������������������  가지고����������� ������������������  있지����������� ������������������  않습니다(__)����������� ������������������  

!

오늘은����������� ������������������  제����������� ������������������  경험을����������� ������������������  전달..

Page 27: 더 나은 SW프로젝트를 위해

다양한����������� ������������������  직군

전략����������� ������������������  ����������� ������������������  

기획����������� ������������������  

디자이너����������� ������������������  

UX����������� ������������������  

html/css����������� ������������������  개발자����������� ������������������  

javascript����������� ������������������  개발자����������� ������������������  

웹����������� ������������������  서버����������� ������������������  프로그래밍����������� ������������������  (java,����������� ������������������  php..)����������� ������������������  

Tester����������� ������������������  ����������� ������������������  

PM����������� ������������������  

각종����������� ������������������  팀장...실장....본부장

전략회의����������� ������������������  

요구사항����������� ������������������  도출을위한����������� ������������������  브레인스토밍����������� ������������������  

상세설계����������� ������������������  리뷰����������� ������������������  

디자인����������� ������������������  리뷰����������� ������������������  

개발자간����������� ������������������  협의����������� ������������������  (서버-클라이언트)����������� ������������������  

개발진행����������� ������������������  검토����������� ������������������  (정기미팅)����������� ������������������  

최종개발완료����������� ������������������  ����������� ������������������  

테스트����������� ������������������  

출시점검����������� ������������������  ����������� ������������������  

회고

엄청난����������� ������������������  협업����������� ������������������  미팅

Page 28: 더 나은 SW프로젝트를 위해

지나친����������� ������������������  분업화����������� ������������������  및����������� ������������������  전문화로����������� ������������������  바로����������� ������������������  옆����������� ������������������  기술을����������� ������������������  이해하지����������� ������������������  않으려하는����������� ������������������  문제점이����������� ������������������  생김.����������� ������������������  

결국����������� ������������������  각각의����������� ������������������  기능은����������� ������������������  좋지만����������� ������������������  전체의����������� ������������������  모습은����������� ������������������  좋지����������� ������������������  않은����������� ������������������  결과가����������� ������������������  나옴.����������� ������������������  

!그래서����������� ������������������  ����������� ������������������  

서비스별����������� ������������������  조직으로����������� ������������������  팀이����������� ������������������  합쳐지기도����������� ������������������  하고..(A팀,B팀,����������� ������������������  A2팀,����������� ������������������  솔루션팀����������� ������������������  등)����������� ������������������  

Page 29: 더 나은 SW프로젝트를 위해

어떤����������� ������������������  협업����������� ������������������  방법들이����������� ������������������  있을까?����������� ������������������  

Page 30: 더 나은 SW프로젝트를 위해

서로간의����������� ������������������  기술에����������� ������������������  대한����������� ������������������  이해를����������� ������������������  하려는����������� ������������������  노력����������� ������������������  ex.����������� ������������������  개발자가����������� ������������������  바라보는����������� ������������������  디자인의����������� ������������������  이해����������� ������������������  라는����������� ������������������  세미나를����������� ������������������  열기도..

비슷한����������� ������������������  직군간의����������� ������������������  정보����������� ������������������  교류는����������� ������������������  이메일이����������� ������������������  가장����������� ������������������  효율적����������� ������������������  그리고����������� ������������������  정보를����������� ������������������  계속����������� ������������������  아카이빙

소규모의����������� ������������������  정기적인����������� ������������������  세미나를����������� ������������������  통한����������� ������������������  기술공유

무엇보다����������� ������������������  얼굴보며����������� ������������������  잦은����������� ������������������  소통

Page 31: 더 나은 SW프로젝트를 위해

문제점을����������� ������������������  찾아����������� ������������������  추척관리하는����������� ������������������  버그����������� ������������������  트랙킹����������� ������������������  시스템은����������� ������������������  매우����������� ������������������  중요����������� ������������������  !버그를����������� ������������������  등록����������� ������������������  하고,����������� ������������������  

버그를����������� ������������������  확인해서����������� ������������������  우선순위를����������� ������������������  조정하고,����������� ������������������  

담당자를����������� ������������������  할당하고����������� ������������������  

담당자는����������� ������������������  수정하고,����������� ������������������  

때론����������� ������������������  여러사람이����������� ������������������  커뮤니케이션을����������� ������������������  하며(댓글)����������� ������������������  

해결된����������� ������������������  버그를����������� ������������������  종료����������� ������������������  처리하고,����������� ������������������  ����������� ������������������  미해결된����������� ������������������  버그를����������� ������������������  계속����������� ������������������  남겨두고.����������� ������������������  !

Page 32: 더 나은 SW프로젝트를 위해

출처 : http://www.javaworld.com/javaworld/

짜짠…⋯

Page 33: 더 나은 SW프로젝트를 위해

프 로 젝 트 ����������� ������������������   중 ����������� ������������������   조 심 해 야 ����������� ������������������   할 ����������� ������������������   것

Page 34: 더 나은 SW프로젝트를 위해

1년짜리����������� ������������������  프로젝트?����������� ������������������  

목적을����������� ������������������  잃어버리는����������� ������������������  구성원이����������� ������������������  다수..����������� ������������������  지속적으로����������� ������������������  목표를����������� ������������������  공유����������� ������������������  그리고����������� ������������������  점검

Page 35: 더 나은 SW프로젝트를 위해

중간관리자의����������� ������������������  실수..����������� ������������������  !

대부분의����������� ������������������  중간관리자는����������� ������������������  진짜����������� ������������������  문제를����������� ������������������  알고����������� ������������������  있음����������� ������������������  문제를����������� ������������������  살포시����������� ������������������  묻고,,����������� ������������������  

사실을����������� ������������������  보고하지����������� ������������������  않는����������� ������������������  데서����������� ������������������  큰����������� ������������������  문제가����������� ������������������  생기기도����������� ������������������  함..

Page 36: 더 나은 SW프로젝트를 위해

다시����������� ������������������  하지����������� ������������������  않는����������� ������������������  일정����������� ������������������  재추정����������� ������������������  !

일정은����������� ������������������  맞추는게����������� ������������������  아니고����������� ������������������  계속����������� ������������������  맞추어����������� ������������������  나가는����������� ������������������  것����������� ������������������  

따라서����������� ������������������  지속적으로����������� ������������������  일정을����������� ������������������  맞추는����������� ������������������  분위기가����������� ������������������  필요.����������� ������������������  ����������� ������������������  ����������� ������������������  

Page 37: 더 나은 SW프로젝트를 위해

우선순위의����������� ������������������  착각����������� ������������������  ����������� ������������������  ‘새로운����������� ������������������  방법론����������� ������������������  그리고����������� ������������������  API,����������� ������������������  

서둘러����������� ������������������  적용합시다����������� ������������������  !!’����������� ������������������  ����������� ������������������  

최신기술,����������� ������������������  그런것도����������� ������������������  좀����������� ������������������  써야����������� ������������������  재미지지만����������� ������������������  

그게����������� ������������������  우선해야����������� ������������������  하는건지도����������� ������������������  고민필요.

Page 38: 더 나은 SW프로젝트를 위해

애자일,����������� ������������������  스크럼,����������� ������������������  XP..����������� ������������������  의도를����������� ������������������  모른����������� ������������������  채����������� ������������������  진행중인����������� ������������������  방법론과����������� ������������������  프로세스..

Page 39: 더 나은 SW프로젝트를 위해

방법론은,����������� ������������������  !!핵심은����������� ������������������  예측을����������� ������������������  줄이는����������� ������������������  것����������� ������������������  

잦은����������� ������������������  일정����������� ������������������  재추정����������� ������������������  계획,����������� ������������������  데모,����������� ������������������  회고..����������� ������������������  이런거����������� ������������������  중요.����������� ������������������  데모와����������� ������������������  잦은����������� ������������������  커뮤니케이션을����������� ������������������  통해����������� ������������������  요구사항이����������� ������������������  맞는지����������� ������������������  자주����������� ������������������  확인����������� ������������������  

방법론����������� ������������������  그자체를����������� ������������������  익히기����������� ������������������  전에����������� ������������������  방법론이����������� ������������������  왜����������� ������������������  필요한지에����������� ������������������  대한����������� ������������������  공감대����������� ������������������  형성.

Page 40: 더 나은 SW프로젝트를 위해

그리고����������� ������������������  마지막으로����������� ������������������  ����������� ������������������  

개발자들����������� ������������������  쪼지����������� ������������������  않기����������� ������������������  ����������� ������������������  :����������� ������������������  )

Page 41: 더 나은 SW프로젝트를 위해

End ;-D