메가테라 21주차 주간회고 (프로젝트 5주차 회고)

21주 차 회고 (프로젝트 5주 차 회고)


메가 테라 21주 차를 진행하면서 있었던 일을 종합해서 회고하였습니다.

 

5주 차 작업 목표

프로젝트 5주 차의 구체적인 작업 목표를 나열해봤다.
1. 사용자 스토리를 As - I - So 구조로 수정하고 수정된 사용자 스토리를 바탕으로 인수 테스트 작성하기
2. 자신이 작성한 게시글, 댓글, 대댓글만 수정 또는 삭제할 수 있도록 로그인 기능 구현하기
3. 자신이 확인하고 싶은 리그의 경기 일정(오늘 경기, 선택한 날짜의 경기 일정)을 확인할 수 있게 한다.
4. 경기 시작 1시간 전 경기의 양 팀의 이전 기록과 전력을 비교할 수 있게 한다.
5. 사용자 정보 페이지를 구현해 해당 사용자가 작성한 글, 댓글을 확인할 수 있게 한다.
5주 차 작업 목표를 위와 같이 세웠지만 4, 5번 작업은 하지 못했다. 5주 차 스토리 포인트는 아래와 같다.

 

회고

작업 목표를 다 하지 못한 것에 대해서 회고를 하자면 첫 번째 이유로 처음에는 계획에 없었던 작업인 객체를 재설계하고 리팩터링 하는 작업이 중간에 추가가 되었기 때문이다. 기존에 설계한 객체 구조가 잘못되었다는 것을 알게 되었기 때문에 재설계를 했었다. 이번에 재설계할 때는 기존에 설계했던 방식이 아닌 객사오를 참조해 좋은 객체를 설계하기 위해서는 협력을 설계해야 한다는 것을 배웠다. 그래서 협력을 설계하는 방법을 배우면서 아래와 같이 게시판에 적용해 설계해보기도 해 봤다.

 

 

협력 설계

처음에는 실제 사물이 아닌 것들을 의인화하는 것과 협력 메시지로 객체들을 설계한다는 게 어려웠었다. 협력 메시지를 어떤 객체가 수신해서 처리하는 것이 제일 적절한지 또 전달하는 메시지의 내용은 적절한지에 대한 고민을 엄청 많이 했던 것 같다. 

그렇게 고민해서 알게 된 것은 객체지향 세계에서 객체들은 서로에 대한 정보를 모르기 때문에 서로 자신의 정보를 전달해주면서 공통된 목표를 이루기 위해 협력을 해야 하고 협력을 하기 위해서는 메시지가 필요하다는 것이다.

그리고 객체를 설계할 때는 객체를 먼저 선택해서 어떤 객체와 연관될지 생각하는 게 우선이 아니라 협력 메시지를 먼저 선택하고 이 메시지는 어떤 객체가 수신해서 처리하는 게 적절한지 찾아서 연관시켜주다 보면 객체 설계는 뒤따라 온다는 것이다.

즉, 객체 설계를 제대로 하기 위해서는 협력을 제대로 설계해야 한다는 것을 배웠다.

 

리팩터링

두 번째 이유는 객체를 재설계함에 따라 기존에 생성했던 객체 중 불필요하다고 판단되는 객체(Category)가 생겼고 해당 객체를 다른 객체(Board)로 변경해주는데 생각보다 많은 시간을 사용했었다. 
우선 기존에 존재하던 카테고리 객체와 협력을 설계하면서 새롭게 추가된 게시판 객체가 동일한 역할을 한다고 생각을 해서 카테고리 객체를 지우고 게시판 객체로 바꾸는데 카테고리 객체가 다른 객체와 많은 연관 관계를 맺고 있어서 상당히 많은 리팩터링이 필요했었다.

이 과정에서 또 한 번 느낀 것은 객체를 설계하는 것이 처음부터 완벽할 수는 없겠지만 대충 하지 말고 최대한 제대로 설계해야 한다는 것이다. 설계하는 작업을 귀찮다고 대충 하게 된다면 결국에는 나중에 잘못된 설계로 인해 리팩터링 하는 시간이 더 늘어날 수밖에 없다.

 

스프린트 시작하고 첫 번째 스프린트를 제외하고는 처음에 계획했던 작업들을 100% 달성하지 못했는데 이번 주는 지금까지 회고를 바탕으로 내가 한 스프린트 간 해낼 수 있는 작업량을 파악하고 중간중간 발생할 수 있는 추가 작업의 시간까지 고려해서 계획을 세워서 다음 주 스프린트 회고 시간에는 100% 달성한 모습을 볼 수 있도록 해보자. (2주 밖에 남지 않아서 목표를 무리해서라도 타이트하게 잡아야 할 필요는 있을 것 같다.)