Software Engineering 5

Code Review (코드 리뷰)

코드리뷰(Code Review) Code Review is systematic examination (often known as peer review) of computer source code without running code 목적 오류 가능성을 찾아서 해결 SW품질과 개발자 스킬 향상 장점 개발 초기의 실수를 발견하고 수정가능 (결함 잠재 발견율이 테스팅보다 두배 큼) 전체적인 품질 향상 상호 신뢰, 동기부여, 전문성 확보 팀의 경험과 지식 공유 개발자의 스킬 향상 개선된 디자인 발견 가독성 높은 코드 단점 시간/리소스 소요 사전작업 코드품질의 중요성 인식 체계적인 요구사항, 설계활동 전개 코딩스타일 준수 사후작업 자동화 테스트 전개를 통한 코드리뷰 보완 리뷰 내용을 바탕으로 테스트 보강 저자를 ..

DevOps (데브옵스)

DevOps에 대해 알아보자. 최근 DevOps라는 용어가 많이 언급되고 있고, 내가 하고 있는 업무도 굳이 분류하자면 DevOps에 가까운 것 같아서 정리해본다. 용어는 개발의 Dev와 운영의 Ops가 합쳐져서 파생된 용어이다. 개발(Dev)은 고객에게 변경내역을 빠르게 적용하기를 원하고, 운영(Ops)는 안정적인 서비스를 위해 이를 꺼려한다. 따라서 개발과 운영의 중간에서 이를 극복하기 위해 등장한것이 DevOps이다. 소통, 융합을 강조한 SW개발방법론이며, 빠르고 효율적으로 배포하는 것을 목적으로 한다. 아래는 DevOps를 검색하면 많이 볼 수 있는 그림들 클라우드 환경이 등장하면서 이 역할은 더 중요해졌다. DevOps 엔지니어로 성장하기 위해서는 애자일, 형상관리, CI/CD, 자동화, 테스..

정적분석 툴 선별시 고려할 사항

정적분석 툴 선별시 고려사항 False Positive : 실제로 오류가 존재하지 않지만 오류라고 보고하는 경우 True Negative : 실제 오류가 존재하지 않고 보고도 안하는 경우 False Negative : 실제로 오류가 존재하지만 오류가 없다고 보고하는 경우 True Positive : 실제 오류가 존재해서 보고하는 경우 p'(Predicted) n'(Predicted) p(Actual) True Positive False Negative n(Actual) False Positive True Negative 대부분의 정적분석 도구는 False positive와 True negative를 모두 가지고 있음 좋은 정적분석 도구는 오탐(false positive) 과 미탐(false negativ..

SW 개발환경 (dev, staging, production)

SW 개발환경 웹 개발을 진행하면서 서비스 품질을 위해 배포 환경이 중요하다는 것을 깨닫게 되었다. 각 환경을 분리해서 개발과 테스트를 진행해야 효율적이고 빠르게 릴리즈가 가능하고 팀원간 혼선도 줄어들게 된다. 분류를 어떻게 나누냐는 각 팀마다 다르겠지만 일반적으로는 아래와 같이 4단계로 나뉜다. 더 복잡하게는 Integration과 Testing(QC) 등으로도 분류할 수 있는 것 같다. Environment Description Local 각 개발자가 작업하는 개발환경 Development 각 개발자들의 커밋을 합쳐서 테스트해볼 수 있는 환경 Staging Production 서버와 동일한 환경을 만들어서 비기능적인 부분에 집중하는 환경 Production 실제 고객에게 서비스되는 환경 기존에 회사에..

스크럼 (Scrum)

스크럼(Scrum) 스크럼(Scrum)은 프로젝트 관리를 위한 상호, 점진적 개발방법론이며, 애자일 소프트웨어 개발 중의 하나이다. 스크럼은 소프트웨어 개발 프로젝트를 위하여 고안되었지만, 소프트웨어 유지보수팀이나 일반적인 프로젝트/프로그램 관리에서도 적용될 수 있다. Scrum Process Product Backlog로부터 Sprint 미팅을 통해 Sprint Goal과 Sprint Backlog를 도출하고 1~4주 단위의 Sprint를 진행한다. Sprint Backlog에는 Task, Owner, 작업예상시간이 명세되어야 하며, 멤버들의 작업시간과 능력을 고려하여 배분한다. 그리고 번다운 차트, 태스크 보드등을 이용해 Sprint를 추적할 수 있도록 하며, Daily 미팅을 가지는 것을 권장한다...