1. 프로젝트 소개


Restaurants Management System

현재 많은 식당에서 POS(Point of Sales) 기기를 사용하고 있다. 하지만 POS기는 메뉴ㆍ단순 주문ㆍ결제 기능밖에 없어 제한적인 요소가 많다. 더군다나 각각의 서비스를 가진 배달앱과 같이 서비스 플랫폼이 분리되어, 태블릿 PC를 따로 설치하여 사용하는 식당도 있다. 식당에서 이용되는 개별적인 서비스를 하나로 통합하여 관리할 수 있는 플랫폼의 필요성을 생각하게 되었고, 이것을 통해 이번 프로젝트의 주제로 선정하였다. 또한 주문관리뿐만 아니라 직원 관리, 월급 관리, 재고 관리 등 식당을 관리하는 데 필요한 전반적인 관리 기능을 추가하였고, 개발 과정에서 디자인패턴을 적용하여 프로그램의 확장성과 유지보수가 용이한 서비스를 만들고자 하였다.

2. 프로젝트 목적


🧩 Design Pattern

절차 지향적 코드 개발은 큰 어려움 없이 프로그램을 개발할 수 있지만, 개발 이후 새로운 기능을 추가하거나, 알고리즘을 수정하기가 매우 까다로워 오히려 비효율적이다. 따라서 메서드와 클래스 사이에서 서로 작용하는 결합을 분리하여 기존 코드의 수정 없이 새 기능을 추가하거나 수정할 수 있는 객체 지향적 코드를 사용하였다. 특히 이번 프로젝트에는 각 상황에 적합한 디자인 패턴의 모델링을 적용하여 의존성을 낮추고 유연성을 높인 프로그램을 개발하였다.

Untitled

🗓️ 개발 전 계획

협업으로 진행하는 소프트웨어 개발에는 코드 구현뿐만 아니라 비용, 시간, 인력과 같은 자원이 추가로 필요하다. 계획을 세우지 않으면 일정이 지연되면서 소프트웨어 품질이 낮아질 가능성이 크기 때문에 계획을 얼마나 잘 세우느냐에 따라 소프트웨어 개발 성패가 바뀌게 된다. 그래서 코드를 작성하기 전에 WBS 차트, COCOMO II 등을 통해 일정 계획을 세우고, 기능요구사항과 다이어그램을 통해 기능적으로 분석하여 계획과 구조를 정한 뒤에 프로그램 구현을 진행하였다.

Untitled

3. 기술 스택


프로그래밍 언어

개발 환경

자원 및 일정 예측

설계

4. 잘한 점


  1. 개발 프로세스의 문서화

    코드 구현은 예전에도 해 왔고 앞으로도 계속할 부분이기 때문에 나의 시야를 넓히기 위해서는 새로운 역할을 하는 것이 성장하는 데에 더욱 도움이 될 것으로 생각하였다. 그래서 이번 프로젝트에서는 일정과 설계 부분을 자진하여 담당하였고 여러 개발론과 설계의 원리, UML등을 공부해가면서 주제의 상황에 맞게 적용하였다. 프로젝트 진행에서 문서화를 진행하다 보니, 회사에서 만들어지는 프로그램이 많은 사람의 계획과 관리를 통해 하나의 서비스가 만들어진다는 것을 알게 되었다. 이 부분은 직접 해 보지 않는 이상 단순히 프로그래밍을 통해서는 배울 수 없는 점이라고 생각하였고, 이번 기회를 통해 공학적인 논리적 사고방식을 증진 시킬 수 있었다고 생각한다.

5. 아쉬운 점


  1. 소홀히 한 코드 구현

    이번 프로젝트에서는 구현 전에 수행하는 계획과 소프트웨어 구축에 많은 중점을 두어서 최적화와 프로그래밍 로직에 대해서는 아쉬운 결과가 나오게 되었다. 프로젝트의 목적은 결국 개발한 프로그램을 만드는 것인데 가장 중요한 결과를 간과하였다고 생각한다. 프로젝트를 진행하면서 자신이 담당하고 있는 부분만 잘하면 되는 것이 아니라, 계획을 담당하는 팀과 개발자 팀 사이에서의 소통이 중요하고 다른 팀원의 진행상황도 어느 정도 알고 있어야 좋은 결과물이 나온다는 것을 알게 되었다.