-
오늘 뭐먹지 - 설계개발로그/오늘뭐먹지 프로젝트 2021. 9. 24. 14:42
설계의 시간
사실 이제까지 몇몇 앱들을 개발해봤지만 프로젝트의 구조 같은 경우는 크게 생각해본 적이 없다.
학교에서 객체지향 프로그래밍 수업을 들었음에도 불구하고 어떻게 설계해야 하나 긴가민가 한 부분이 있었다.
그래서 이번에 '객체 지향의 사실과 오해'라는 책을 읽었는데 많은 부분이 해소되었다.
이 책에서는 초반에 객체지향은 무엇인지 알려주고 설계를 어떻게 해나가면 좋을지 알려준다. 그 중에서 이번 설계에 도움을 받은 내용은 '책임-주도'설계이다.
책임-주도 설계는 말 그대로 객체의 책임을 중심으로 시스템을 구축하는 설계 방법을 말한다. 책임-주도 설계는 시스템의 책임을 책임을 나눠 객체의 책임으로 변환하고 객체가 책임을 수행하는 도중에 필요한 정보나 서비스를 제공해 줄 협력자를 찾아 해당 협력자에게 책임을 할당하는 방식으로 협력 공동체를 구축하는 방법이다.
이 책임-주도 설계를 하기 위해선 객체를 식별하고 각각의 객체가 할 책임과 협력 관계를 찾아낼 필요성이 있었는데, 이 방법도 책안에서 찾아 낼 수 있었다.
책에는 다음과 같은 인용 문구가 나온다.
요구사항을 식별하고 도메인 모델을 생성한 후, 소프트웨어 클래스에 메서드들을 추가하고, 요구사항을 충족시키기 위해 객체들 간의 메시지 전송을 정의하라[Larman 2001].
이 문구대로 설계를 해보기 위해선 요구사항을 도출할 필요성이 있었고 우선 어떻게 프로그램이 돌아갈 것인지 대략적으로 판단해봤다.
프로그램은 대강 위와 같이 동작 할 것으로 예상되었다. 하지만 이것만으로는 객체를 식별하고, 책임과 협력 관계를 찾아내기가 쉽지 않아서 다음과 같은 Use-case 명세서를 작성했다.
이를 바탕으로 Communication diagram을 작성했고
Communication 다이어그램을 그린 끝에야 필요한 객체들과 메시지를 식별해 낼 수 있었다.
객체를 식별하고 클래스 다이어그램을 그리고 나니 어느정도 윤곽이 잡히긴 했지만 아직 긴가민가한 부분도 많고 웹 아키텍쳐는 어떻게 적용해야 할지 잘 모르겠는 부분도 있어서 빠르게 프로토타입을 만들어보고 생각해볼 예정이다.
다음에 프로토타입은 TDD를 활용해서 만들어볼 예정이다.
'개발로그 > 오늘뭐먹지 프로젝트' 카테고리의 다른 글
위도, 경도에서 거리 범위 구하기 (0) 2021.10.08 프로토타입 제작 (0) 2021.10.08 Layered Architecture (0) 2021.09.30 타입스크립트 (0) 2021.09.28 식사 자동 추천 앱 - 발단 (0) 2021.09.24