1장: 소프트웨어 구현으로의 초대

1장: 소프트웨어 구현으로의 초대

1.1 소프트웨어 구현이란 무엇인가?

  • 소프트웨어 개발은 여러 활동으로 이루어짐
    • 문제 정의
    • 요구사항 개발
    • 구현 계획
    • 아키텍처
    • 상세 설계
    • 코딩과 디버깅
    • 단위 테스트
    • 통합 테스트
    • 통합
    • 시스템 테스트
    • 유지보수
  • 비형식적 프로젝트에서는 이 활동들이 모두 “프로그래밍”으로 뭉뚱그려지기 쉬움
  • 여기서 말하는 구현(construction)은 그중 코딩과 디버깅을 중심으로 한 실제 제작 활동을 뜻함

이 책은 구현 기법에 관한 책. 구현에 관해서만 집중적으로 다룸.

  • 구현은 코딩과 디버깅만이 아님
  • 상세 설계, 구현 계획, 단위 테스트, 통합, 통합 테스트 같은 활동도 함께 포함됨
  • 구현은 “coding” 또는 “programming”이라고도 불림
  • 다만 “coding”은 이미 정해진 설계를 기계적으로 옮기는 느낌이 강해서 구현의 실제 성격을 다 담지 못함
  • 구현에는 창의성과 판단이 많이 들어감
  • 구현의 구체 활동도 넓음
    • 구현 전에 기반이 제대로 갖춰졌는지 확인
    • 코드를 어떻게 테스트할지 결정
    • 클래스와 루틴 설계 및 작성
    • 변수와 상수 이름 결정
    • 제어 구조 선택과 명령문 조직
    • 자기 코드의 단위 테스트, 통합 테스트, 디버깅
    • 다른 팀원의 저수준 설계와 코드 리뷰
    • 포맷과 주석 정리
    • 따로 만든 소프트웨어 구성 요소 통합
    • 성능과 자원 사용 조정
  • 구현 바깥의 활동도 분명히 존재함
    • 관리, 요구사항, 소프트웨어 아키텍처, 사용자 인터페이스 설계, 시스템 테스트, 유지보수가 해당

1.2 소프트웨어 구현이 중요한 이유는 무엇인가?

  • 구현은 소프트웨어 개발에서 큰 비중을 차지함
    • 프로젝트 규모에 따라 전체 시간의 30%에서 80%까지 차지할 수 있음
  • 구현은 개발 과정의 중심 활동임
    • 요구사항과 아키텍처는 구현을 잘하기 위해 먼저 수행됨
    • 시스템 테스트는 구현이 제대로 되었는지 확인하기 위해 뒤에서 수행됨
  • 구현에 집중하면 개인 생산성 향상 폭이 큼
    • 고전적 연구에서는 프로그래머 개인 생산성이 10배에서 20배까지 차이 날 수 있다고 봄
  • 구현 산출물인 소스 코드는 종종 소프트웨어에 대한 유일하게 정확한 설명이 됨
    • 요구사항 문서와 설계 문서는 낡을 수 있지만, 소스 코드는 항상 현재 상태를 반영함
    • 그래서 구현 품질은 곧 소프트웨어 품질로 이어짐
  • 구현은 유일하게 반드시 수행되는 활동임
    • 현실 프로젝트에서는 요구사항, 설계, 테스트가 축소되거나 생략될 수 있음
    • 하지만 프로그램이 존재하려면 구현 자체는 빠질 수 없음
    • 그래서 구현을 개선하는 일은 어떤 프로젝트든 개선하는 길이 됨

1.3 이 책을 읽는 방법

요점 정리

  • 소프트웨어 구현은 소프트웨어 개발의 중심 활동이며, 모든 프로젝트에서 반드시 일어나는 유일한 활동이기도 하다.
  • 구현의 주요 활동은 상세 설계, 코딩, 디버깅, 통합, 개발자 테스트(단위 테스트와 통합 테스트)이다.
  • 구현을 가리키는 다른 흔한 용어는 coding, programming이다.
  • 구현 품질은 소프트웨어 품질에 큰 영향을 준다.
  • 결국 구현을 얼마나 잘 이해하느냐가 프로그래머의 수준을 좌우한다.

results matching ""

    No results matching ""