CS(Computer Science)/Software Engineering 5

써드 파티(3rd party)

하드웨어 생산자와 소프트웨어 개발자의 관계를 나타날 때 사용한다. 써드 파티는 프로그래밍을 도와주는 라이브러리를 만드는 외부 생산자를 뜻한다. 컴퓨터 제조업체 측면 자사의 컴퓨터를 위한 부가 장치나 소프트웨어가 많은 기업에서 발매되면 결과적으로 자사의 하드웨어 매상이 증가하기 때문에 특허료나 저작권료를 제 3자에게 청구하는 예는 드물고, 오히려 부가 장치나 소프트웨어의 개발을 서드파티에게 맡김으로써 서드파티를 육성하게 된다. 개발자 측면 하드웨어 생산자가 직접 소프트웨어를 개발하는 경우 : 퍼스트 파티 개발자 하드웨어 생산자인 기업과 자사간의 관계에 속한 소프트웨어 개발자 : 세컨드 파티 개발자 아무 관련없는 제 3자 소프트웨어 개발자 : 서드 파티 개발자 주로 편한 개발을 위해 플러그인이나 라이브러리 ..

데브옵스(DevOps)

Development + Operations의 합성어 소프트웨어 개발자와 정보기술 전문가 간의 소통, 협업 및 통합을 강조하는 개발 환경이나 문화를 말한다. 목적 소프트웨어 제품과 서비스를 빠른 시간에 개발 및 배포하는 것 제품 출시까지 걸리는 기간 단축 새로운 판의 더 낮은 실패율 복구 시 더 빠른 평균시간 장점 작업 속도가 빨라 시장 변화에 더 잘 적응하고 효율적으로 비즈니스 성과를 낼 수 있다. 새로운 기능의 릴리스와 버그 수정 속도가 빨라질수록 경쟁 우위를 차지할 수 있다. 애플리케이션 업데이트와 인프라 변경의 품질 보장을 통해 변경 사항이 제대로 안전하게 작동하는지 확인 가능하다. 개발자와 운영 부서 간의 협력을 통해 효과적인 팀을 구축 가능하다. 자동화된 규정 준수 정책, 세분화된 제어 및 구..

애자일(Agile)

좋은 것을 빠르게 취하고, 낭비 없게 만드는 다양한 방법론을 통칭해 일컫는 말이다. 일정한 주기를 가지고 계속 검토해 나가며 필요할 때마다 요구사항을 더하고 수정하여 살을 붙이면서 개발해 나가는 프로세스 모델 방식이다. 폭포수 모델과는 반대되는 개념이다. 애자일의 핵심은 협력과 피드백이다. 진행과정 계획 -> 설계(디자인) -> 개발(발전) -> 테스트 -> 검토(피드백) 계획을 세운 후 다음 단계까지 기다려서 절차대로 진행하는 폭포수 모델과는 다르게 먼저 진행 후 분석, 시험, 피드백을 통하여 개선해 나가는 진행 모델이다. 소프트웨어 측면에서 팀이라는 단어가 주는 의미를 적용시키고, 효율적인 성과를 얻기 위한 것이다. 장점 프로젝트 계획에 걸리는 시간을 최소화할 수 있다. 점진적으로 테스트할 수 있어서..

테스트 주도 개발 : TDD(Test Driven Development)

보통의 개발 방식은 요구사항 분석 -> 설계 -> 개발 -> 테스트 -> 배포 형태의 개발 주기를 갖는데 이러한 방식은 소프트웨어 개발을 느리게 하는 잠재적 위험이 존재한다. 소비자의 요구사항이 명확하지 않을 수도 있고 소스코드의 품질이 저하될 수 있기 때문이다. 추가로 테스트 비용의 증가라는 위험성도 가지고 있다. 이러한 점 때문에 부분적으로 기능 수정을 하게 되는데 기능 수정을 함으로써 모든 부분을 테스트해야 하므로 전체적인 버그를 검출하기 어려워지는 문제가 발생한다. TDD(Test Driven Development) 기존 설계 방법과는 다르게, 테스트케이스를 먼저 작성한 후 실제 코드를 개발하는 리팩토링 절차를 밟아 실행하는 것 반복 테스트를 이용한 소프트웨어 방법론, 작은 단위의 테스트 케이스를..

클린 코드, 리팩토링

클린코드(Clean Code) 가독성이 높은 코드 얼마나 잘 읽히고 코드가 지저분하지 않고 정리된 코드인지를 보여줘야 한다. 가독성을 높이기 위해서는 다음과 같이 구현해야 한다. 네이밍이 잘 되어있어야 한다 오류 X 중복 X 의존성을 최대한 줄여야 한다. 클래스 혹은 메소드가 한 가지 일만 처리해야 한다. // 덧셈 기능 함수 public int ABC(int a, int b){ return a + b; } // 뺼셈 기능 함수 public int BAA(int a, int b){ return a - b; } // 수정 후 // 덧셈 기능 함수 public int sum(int a, int b){ return a + b; } // 뺼셈 기능 함수 public int sub(int a, int b){ re..