4.1 프로그램 설계의 정의

  • 이해 당사자
  • 기능 요구사항
  • 비기능 요구사항
  • 프로그램 설계

4.2 프로그램 설계의 중요성

4.3 C++에 적합한 설계 방법

  • c++의 특성을 명심

4.4 C++ 설계에 관련된 두 가지 원칙

4.4.1 추상화

4.4.2 재사용

재사용 가능한 코드 만들기

c++에서는 코드를 범용으로 만들 수 있도록 템플릿이라는 기능을 제공

설계 재사용

4.5 코드 재사용

코드 재사용이란 단순히 기존 코드를 복사해서 붙이는 것이 아니다. 일일이 복제하지 않고도 코드를 재사용할 수 있어야 한다.

4.5.1 용어 정리

  • 예전에 자신이 작성한 코드
  • 동료가 작성한 코드
  • 현재 소속 회사나 조직 외의 서드파티에서 작성한 코드

4.5.3 코드 재사용 전략

1 기능과 제약사항 파악하기

  • 멀티스레드 프로그램에서도 안전한지 파악
  • 라이브러리를 사용하는 코드에 대해 특별히 컴파일러에 설정해야 할 사항이 있는지, 프로젝트 전체에 적용해도 되는지'
  • 사용할 라이브러리나 프레임워크에서 의존하는 라이브러리가 있는지 확인
  • 초기화나 종료 시 반드시 수행할 작업이 있는지 확인한다
  • 클래스를 상속할 때 어떤 생성자를 호출해야하고, 어떤 가상 메서드를 오버라이드 해야 하는지 파악
  • 함수가 메모리 포인터를 리턴할 때 그 메모리를 해제하는 작업을 호출한 코드와 라이브러리 중에서 어느 쪽이 책임져야하는지 파악한다. 라이브러리에서 처리해준다면 메모리가 해제되는 시점을 파악

2 학습비용 파악하기

  • 학습시간 : 라이브러리를 익히는데 걸리는 시간

3 성능파악하기

빅오 표기법
  • 알고리즘의 복잡도

    입력에 따라 속도가 변하는 알고리즘에만 적용된다. 입력을 받지 않거나 실행 시간이 무작위인 알고리즘에는 적용할 수 없다. 실전에서 주로 사용하는 알고리즘은 거의 다 입력에 따라 실행시간이 달라진다. 따라서 여기에 해당하는 경우가 아닌지 크게 신경쓸 필요가 없다.

성능 분석과 관련된 팁
  • 빅오 표기법만으로는 충분히 설명할 수 없거나 자칫 오해하는 경우가 있다.

  • 입력데이터가 2배가 되면 알고리즘의 실행시간도 두배가 된다는 말은 알고리즘의 실제 실행시간을 나타내는 표현이 아니다. 예를 들어 필요이상으로 디스크에 많이 접근하도록 알고리즘을 구현하면 -> 실제 성능 bad

  • 이와 비슷한 맥락으로 빅오 표기법으로 실행 시간이 똑같은 알고리즘끼리 비교하는 것은 힘들다

    • 입력 크기가 작으면 빅오표기법으로 정확히 표현할 수 없다.*

4 플랫폼 제약사항 파악하기

5 라이선스와 기술지원 파악하기

6 기술 지원 및 도움을 받을 수 있는 곳 파악하기

7 프로토타입

8 오픈소스 라이브러리

오픈소스 라이브러리 찾기
  • boost.org
  • gnu.org

9 C++ 표준 라이브러리

BELATED ARTICLES

more