[코드 컴플리트 2] Ch1. Welcome to Software Construction

Park Yeongseo·2025년 1월 6일
0

Code Complete 2

목록 보기
1/2
post-thumbnail

1.1 What Is Software Construction?

소프트웨어 개발에서 일어나는 활동들에는 다음과 같은 것들이 있다.

  • 문제 정의
  • 요구 사항 개발
  • 구현 계획
  • 소프트웨어 아키텍처 및 고수준 설계
  • 세부 설계
  • 코딩과 디버깅
  • 단위 테스트
  • 통합 테스트
  • 통합
  • 시스템 테스트
  • 유지보수

주로 포멀하지 않은 프로젝트들에만 참가했다면, 소프트웨어 제품을 만들면서 위 활동들에 대한 큰 구분 없이, 그냥 "프로그래밍"이라는 말로 퉁쳤을 가능성이 크다.

포멀하지 않은 프로젝트들에서 주로 하는 활동은, 정확히 말하자면 구현(construction)이다. 아래 그림의 회색 영역이 구현에 속하는 부분이다.

위 그림에서 볼 수 있듯, 구현에서 가장 많은 부분을 차지하는 건 코딩과 디버깅이지만, 또한 세부 설계, 구현 계획, 단위 테스트, 통합 테스트 및 통합 등의 여러 활동들도 구현에 포함된다.

1.2. Why Is Software Construction Important?

소프트웨어의 퀄리티와 개발자 생산성을 증진시키는 일은 중요하다. 소프트웨어 구현이 특히 중요한 이유는

  1. 구현이 소프트웨어 개발에서 많은 부분을 차지하기 때문이다.
    • 프로젝트의 규모에 따라, 프로젝트에 소요되는 전체 시간의 30-80 퍼센트가 구현에 소요된다.
  2. 구현은 소프트웨어 개발의 핵심 활동이기 때문이다.
    • 요구사항 정의 및 아키텍처는 구현에 들어가기 전에 완료된다. 구현을 효과적으로 하기 위해서다.
    • 시스템 테스트는 구현 후에 수행된다. 구현이 제대로 됐는지를 확실히 하기 위함이다.
  3. 구현에 집중하면 개별 프로그래머의 생산성을 극대화할 수 있기 때문이다.
  4. 구현의 결과인 소스 코드는 보통 소프트웨어를 가장 정확히 설명할 수 있는 유일한 것이기 때문이다.
    • 요구사항 명세나 설계 문서는 소프트웨어의 최신 상태와 맞지 않는 경우가 많지만, 소스 코드는 그렇지 않다. 때문에 소스 코드는 가능하다면 최상의 질을 유지해야 한다.
  5. 구현은 완료가 보장되는 유일한 활동이기 때문이다.
    • 구현에 들어가기 전에 요구사항 개발이나 아키텍처 설계를 제대로 끝내는 것이 이상적이기는 하다. 하지만 실제 프로젝트에서는 그런 과정을 생략하고 곧바로 구현에 들어가는 경우도 있다. 테스트의 경우도 마찬가지로, 고쳐야할 에러가 너무 많거나 시간이 부족해 생략되는 경우가 많다.
    • 하지만 어떤 프로젝트에서도 구현 활동을 생략하는 경우는 없다.

0개의 댓글