프로그래밍 공부
작성일
2024. 1. 19. 09:11
작성자
WDmil
728x90

코드를 한줄이라도 작성하기 전에 프로그램이 어떠해야 하는지 먼저 디자인해보는 것이 좋다.

 

어떤 데이터 구조를 사용할 것인가?

무슨 클래스를 작성할 것 인가?

 

여러 개발자가 참여한다면 사전에 계획을 짜는 것이 더더욱 중요해진다.

프로그램을 작성하는 데 같이 작업하는 동료가 무슨 생각을 하는지 전혀 알지 못하면서 프로그램이 제대로 완성되길 기대하는 것은 무모하다.

 

사전에 계획된 디자인이 있어야 이런 문제를 해결할 수 있다.

 

4.1 프로그램 디자인이란?

프로그램 디자인 또는 소프트웨어 디자인은 주어진 기능정, 성능적 요건을 구현하기 위한 아키텍처의 설명서다.

좀더 쉽게 말하면 프로그램을 작성하기 위한 계획이다.

 

디자인은 문서로 작성되고 남겨져야 하는데 소프트웨어 디자인 문서는 일반적으로 통용되는 형태가 있다.

 

보통 다음 두부분을 포함한다.

 

  1. 전체 프로그램을 구성하고 있는 서브 시스템 
    각 서브시스템 간의 종속성 및 인터페이스, 각 서브시스템 간의 데이터 흐름과 입 출력, 전체적인 스레듷 ㅗ라용 모델을 설명하는부분.
  2. 서브시스템별 상세 사항
    클래스 구성, 계층도, 데이터구조, 아록리즘, 개별 스레드 활용 모델, 에러처리 방법을 설명하는 부분

디자인 문서는 서브시스템의 연동과 클래스 계층도를 설명하기 위한 다이어그램과 테이블을 포함하는 경우가 일반적이다.

UML은 다이어그램을 그리기 위한 산업 표준이다.

 

디자인 문서의 형식 자체는 사실 그렇게 중요하지 않다. 실제 디자인 작업이 중요하다.

(디자인의 가장 중요한 의미는 코드를 한 줄이라도 작성하기 전에, 만들어질 프로그램에 대해 생각해보라는 기회라는 점 이다.)

 

코딩을 하기 전에 가능한 좋은 디자인을 만들어두는 것이 바람직하다.

디자인은 어느정도 역량을 갖춘 프로그래머라면 능히 이해하여 구현할 수 있도록 프로그램의 구성을 잘 설명하고 있어야 한다.

 

당연하지만, 코딩에 들어간 이후에 생각지 못한 문제를 만나게 되면 디자인을 수정해야 할 수도 있다.

소프트웨어 엔지니어링 절차는 이럴때 대응할 수 있도록 유연하게 짜여있다.

 

점진적/ 반복적 방법론의 예로 베리 보엠이 제안한 나선형 개발모델(Spiral Model)을 들 수 있다. 나선형 개발 모델은 요구분석, 디자인, 구현단계를 반복적으로 순회하면서 점진적으로 애플리케이션을 완성해 나간다.

728x90