생산성 및 SLOC 정보
SLOC의 문제
SLOC 메트릭 의 문제점은 다음 을 고려하지 않고 작성된 코드 수량의 근사값을 측정한다는 것입니다.
- 코드의 품질 (즉, 100 SLOC마다 버그로 인해 90 개의 SLOC를 추가해야하지만 코드가 제공되는 시점을 모르는 경우 어떻게해야합니까?)
- 코드를 통해 달성 된 목표 (예 : 10K SLOC는 모든 예상 사용 사례 또는 사용자 사례를 처리합니까?
- 코드의 유지 관리 성 (예 : 예상되는 발전 요구 사항에 맞게 코드를 조정하려면 1 % 또는 50 % 더 많은 코드를 추가해야합니까?)
그렇지 않으면, 복사하여 붙여 넣은 부품이 많은 오류가 발생하기 어려운 스파게티 코드를 생성하면 신중하게 설계된 재사용 가능한 코드보다 생산적인 것으로 간주됩니다.
따라서 SLOC는 생산성을 측정하는 가장 좋은 방법은 아닙니다.
우리는 어떤 생산성을 고려하고 있습니까?
공정의 생산성을 측정합니다. 따라서 SLOC는 코딩 프로세스만으로도 완벽한 지표가 될 수 있습니다.
예를 들어, 열악한 요구 사항을 오해하고 소프트웨어를 제작하는 데 5 개월을 소비하고, 사용자에게 소프트웨어를 보여주고, 잘못되었다는 것을 발견하고, 처음부터 다시 작성하기 위해 다시 5 개월을 소비하는 경우 SLOC의 생산성은 동일합니다. / month, 예를 들어, 팀은 빈번한 피드백을 통해 오해를 줄이는 민첩한 프로세스를 사용했기 때문에 코드를 처음으로 바로 작성했습니다. 이 명백한 동등한 생산성은 큰 문제를 숨 깁니다.
따라서 소프트웨어 개발 생산성을 측정하려면 요구 사항 분석, 코딩 대상 설계, 코딩, 테스트, 디버깅 및 사용자 기대치 충족 여부 확인 등 전체 프로세스를 고려해야합니다. 이러한 모든 활동이 매우 다르기 때문에 가장 좋은 것은 작동하는 소프트웨어, 즉 소프트웨어가 생성 한 소프트웨어가 사용자에게 무엇을 의미하는지에 대한 유일한 생각을 측정하는 것입니다 .
소프트웨어 결과물을 측정하는 방법?
몇 가지 접근 방식이 있습니다.
- 고전적인 소프트웨어 엔지니어링의 일반적인 접근 방식은 기능 포인트 (FP)입니다. 기능 포인트는 충족 해야 할 요구 사항 (예 : 양식 수, 각 양식의 필드 수 등)을 기준으로 측정됩니다. 그런 다음 생산성을 단위 및 시간당 FP로 측정합니다. 일부 회사에는 개발자가 주어진 도메인에 대해 주어진 언어로 단위 시간당 몇 개의 기능 포인트를 생성 할 수 있는지를 알려주는 데이터가 있습니다. FP의 문제점은 매우 상세한 요구 사항이 필요하고 시간이 많이 걸린다는 것입니다.
- 보다 현대적이고 실용적인 접근 방식은 스토리 포인트 (SP)입니다. 이것들은 생성되는 코드의 복잡성을 평가하는 데 사용되며 개발 팀의 속도를 평가하는 데 일상적으로 사용됩니다. 그러나 SP는 모든 세부 사항이 알려지기 전에 수행 된 작업에 대한 추정 측정 값입니다. 실제로 일어난 일의 최종 척도가 아닙니다. 따라서 추정 과정에서 역효과를 일으킬 수 있으므로 생산성 측정으로 사용할 때는주의를 기울여야합니다 .
정적 및 동적 타이핑의 생산성 정보
나는 개인적으로 정적으로 유형이 지정된 언어를 좋아한다고 고백해야한다. 왜냐하면 내면의 자아에서는 그것이 더 신뢰할 수 있다는 것을 알고 있기 때문이다.
따라서 정식 유형 언어는 정적 유형이 아닌 언어보다 컴파일 타임에 오류 / 버그 (예 : 오타, 예상 유형의 불일치 등)를 훨씬 많이 방지 할 수 있습니다. 그러나 모든 객관성에서 나는 이것을 더 높은 생산성으로 학대 적으로 일반화하지는 않을 것입니다.
당신의 건축가가 맞습니까?
그럴 수도 있고 아닐 수도있다.
그러나 그의 주장은 타당하지 않은 것으로 보인다. 정적으로 형식화 된 언어의 생산성 향상은 컴파일러가 미리 잡은 많은 수의 오류에서 비롯된다.
따라서 동적으로 유형이 지정된 언어에 필요한 재 작업을 보지 않고 SLOC 만 살펴보면 이러한 "높은"생산성 이점을 찾을 수 없습니다. 그래서 그의 비교는 공평 할 수 없습니다.
비교할만한 상황에 대한 주장도 마찬가지입니다. 동적으로 유형이 지정된 일부 언어는 고전적인 정적으로 유형이 지정된 언어 중 하나에서 코드를 작성하는 것보다 코드가 덜 필요한 일부 상위 레벨 구성을 허용합니다. 따라서 더 적은 시간과 코드를 작성할 수 있지만 동일한 분석, 테스트 및 검증 오버 헤드를 추가 할 수 있습니다. 따라서 SLOC로 생산성을 측정하면 잠재적 인 생산성 향상 효과가 줄어들어 동적으로 입력되는 언어에 대한 편견이 생깁니다.
그 주장을 뒷받침하는 어떤 연구?
이 주제에 관한 몇 가지 최근의 학문 연구가 있습니다. 정적 타이핑의 이점이 있지만 일부는 일반적으로 특정 목적 (문서화, 문서화되지 않은 코드 또는 API 재사용 등)으로 제한됩니다. 최신 IDE가 동적 타이핑과 관련된 위험을 크게 줄 였기 때문에 신중한 문구도 사용됩니다.