팀 프로젝트를 진행하며 느낀 점과 앞으로의 개발 방향

이번 프로젝트에서는 각자 만든 프로그램을 하나의 통합 프로그램으로 연결하는 작업을 진행했다. 처음에는 기능을 구현하는 것이 가장 중요하다고 생각했지만, 실제로 합치는 과정에서는 폴더 구조와 파일 역할을 먼저 정하는 것이 훨씬 중요하다는 것을 느꼈다.

프로젝트 통합 과정

처음에는 각자 프로그램을 따로 개발했다. 그래서 각 프로젝트마다 파일 구조, 함수명, DB 연결 방식, import 경로가 조금씩 달랐다.

개별 프로그램으로 실행할 때는 문제가 없었지만, 하나의 프로젝트로 합치려고 하니 경로 오류나 DB 연결 문제처럼 예상하지 못한 오류가 발생했다.

그래서 통합할 때는 먼저 전체 폴더 구조를 정하고, 각 파일을 역할에 맞게 다시 배치하는 과정이 필요했다.

project/
│
├─ main.py
│
├─ views/
│   ├─ main_view.py
│   ├─ pos_views/
│   ├─ hotel_views/
│   └─ salon_views/
│
├─ models/
│   ├─ pos_models/
│   ├─ hotel_models/
│   └─ salon_models/
│
└─ controllers/
    ├─ main_controller.py
    ├─ pos_controllers/
    ├─ hotel_controllers/
    └─ salon_controllers/

Views, Models, Controllers로 나누기

이번 프로젝트에서는 MVC 구조를 기준으로 파일을 나누었다. MVC는 화면, 데이터, 기능 연결을 나누어 관리하는 방식이다.

1. Views

Views 폴더에는 화면과 관련된 파일을 넣었다. 버튼, 입력창, 테이블, 메뉴처럼 사용자가 직접 보는 화면을 구성하는 파일들이 여기에 들어간다.

views/
├─ main_view.py
├─ pos_views/
├─ hotel_views/
└─ salon_views/

예를 들어 호텔 프로그램의 로그인 화면이나 메인 화면은 hotel_views 안에 넣고, POS 화면은 pos_views 안에 넣는 식으로 정리했다.

2. Models

Models 폴더에는 데이터와 관련된 파일을 넣었다. DB 연결, 고객 정보 조회, 예약 정보 저장, 상품 목록 조회처럼 데이터를 처리하는 파일들이 여기에 들어간다.

models/
├─ pos_models/
├─ hotel_models/
└─ salon_models/

Model은 화면을 직접 다루지 않고, 데이터를 가져오거나 저장하는 역할만 담당하도록 나누었다.

3. Controllers

Controllers 폴더에는 화면과 데이터를 연결하는 파일을 넣었다. 버튼을 눌렀을 때 어떤 Model을 실행할지, 조회한 데이터를 어떤 View에 보여줄지를 연결하는 역할이다.

controllers/
├─ main_controller.py
├─ pos_controllers/
├─ hotel_controllers/
└─ salon_controllers/

예를 들어 사용자가 호텔 메뉴를 클릭하면 MainController가 HotelController를 불러오고, HotelController는 호텔 로그인 화면이나 호텔 메인 화면을 실행하는 방식으로 연결했다.

통합 과정에서 중요했던 부분

프로젝트를 합치는 과정에서 가장 많이 수정한 부분은 import 경로였다. 기존에는 각자 프로젝트 안에서만 실행되도록 되어 있었기 때문에 아래와 같은 경로를 사용했다.

from view.main_view import ui_main
from model.room_model import RoomModel
from window.addroom_window import AddRoomWindow

하지만 통합 프로젝트에서는 폴더 구조가 바뀌었기 때문에 아래처럼 수정해야 했다.

from views.hotel_views.main_view import ui_main
from models.hotel_models.room_model import RoomModel
from controllers.hotel_controllers.addroom_window import AddRoomWindow

이 과정을 통해 파일을 단순히 옮기는 것보다, 옮긴 위치에 맞게 import 경로를 수정하는 것이 중요하다는 것을 알게 되었다.

 

업무 분장에 대한 생각

앞으로 팀 프로젝트를 진행할 때는 단순히 기능만 나누는 것보다, 처음에 전체 구조를 먼저 정하고 역할을 나누는 것이 좋다고 생각한다.

  • 전체 구조 담당
  • View 화면 담당
  • Model / DB 담당
  • Controller 연결 담당
  • 테스트 및 오류 수정 담당

특히 한 명은 main.py, main_view.py, main_controller.py처럼 전체 프로그램의 중심이 되는 파일을 관리하고, 나머지 팀원들은 정해진 구조 안에서 각자 맡은 기능을 개발하는 방식이 더 안정적이라고 느꼈다.

앞으로의 방향

앞으로 팀 프로젝트를 진행할 때는 개발을 시작하기 전에 아래 내용을 먼저 정리하고 시작하는 것이 필요하다고 생각한다.

  • 폴더 구조
  • 파일명 규칙
  • 클래스명 규칙
  • 함수명 규칙
  • DB 사용 방식
  • 공통 UI 연결 방식
  • 업무 분장 기준

이번 프로젝트를 통해 기능 구현도 중요하지만, 여러 사람이 함께 개발할 때는 구조 설계와 협업 규칙이 더 중요하다는 것을 느꼈다. 앞으로는 코드를 작성하기 전에 먼저 구조를 정하고, 그 구조 안에서 역할을 나누어 개발하는 방식으로 진행해보고 싶다.