Quiz - Atomic Design Pattern, 결합도/응집도, Agile
1. Atomic Design Pattern에 대해 알고 계신가요?
- 아토믹 디자인 패턴은 화학적 관점에서 영감을 얻은 디자인 시스템입니다. 모든 것은 atom으로 구성되어 있고 atom들이 서로 결합하여 molecule이 되고, molecule은 더 복잡한 organism으로 결합하여 궁극적으로 모든 물질을 생성합니다. 아토믹 디자인 패턴에서는 이 개념을 차용해서 컴포넌트를 Atom, Molecule, Organism, Template, Page의 5단계로 나눕니다.
1.1 사용한 경험이 있다면 얘기해주세요.
- 반찬 주문 서비스 웹서비스 팀프로젝트에서 아토믹 디자인 패턴을 적용했습니다. 버튼, 라벨 등 자주 쓰이는 기본적인 컴포넌트를 atom 컴포넌트로 만들었고, atom 컴포넌트을 결합하여 고유한 특성을 가진 form과 같은 molecule 컴포넌트를 만들었습니다. atom, molecule 컴포넌트를 결합하여 명확한 영역을 나타내는 header, section과 같은 organism 컴포넌트를 만들었습니다. orgaism을 결합하여 page 컴포넌트를 만들어 사용했습니다.
1.2 본인이 생각하는 장단점에 대해 설명해주세요.
- 제가 생각하는 장점은 컴포넌트를 단위별로 만들기 때문에 재사용하기 쉽다는 점입니다.
- 제가 생각하는 단점은 컴포넌트를 조합하기 전에 단위별로 나눠서 구현해야하기 때문에 초기 개발에 시간이 많이 듭니다. 또한 molecule과 oragnism을 구분하는 기준이 애매해서 팀원과 구체적인 기준을 정하지 않으면 혼란스러울 수 있습니다.
2. 결합도와 응집도에 대해 설명해주세요.
- 결합도는 소프트웨어 모듈들 간의 상호의존도로 두 모듈이 얼마나 가깝게 연결되어 있는지를 나타냅니다.
- 응집도는 모듈 내 요소들이 함께 속해있는 정도를 나타냅니다.
- 낮은 결합도와 높은 응집도를 가진 컴퓨터 시스템은 높은 가독성과 유지보수성을 가집니다.
2.1 낮은 결합도와 높은 응집도를 가지기 위해 어떻게 해야 하나요?
- 낮은 결합도를 가지기 위해서 부모 컴포넌트에서 자식 컴포넌트에 내려주는 props를 가능한 적게 사용하고, 여러 자식 컴포넌트에서 부모 컴포넌트의 상태를 사용하는 경우 자식 컴포넌트를 합성하였습니다.
- 높은 응집도를 가지기 위해서 한 컴포넌트에서 한 책임을 가지도록 구현했고, 공통 로직들을 훅으로 만들어서 사용했습니다.
3. Agile 개발 방법론에 대해 설명해주세요.
- 애자일 개발 방법론은 프로젝트의 생명 주기 동안 반복적인 개발을 촉진합니다. 일정한 주기를 가지고 끊임없이 프로토타입을 만들어내며 그때 그때 필요한 요구를 더하고 수정하여 하나의 커다란 소프트웨어를 개발해나가는 적응형 스타일이라고 할 수 있습니다.
3.1 Agile 개발 방법론을 사용해본 경험이 있을까요?
- 애자일 개발 방법론 중 스크럼을 사용하여 팀 프로젝트를 한 경험이 있습니다. 매일 프론트엔드 팀원과 진행상황 공유하고, 매주 전체 팀원들과 진행 상황을 공유한 후 회고했습니다.
- 스크럼의 장점은 진행 상황을 바로 공유할 수 있고, 진행 상황에 따라 프로젝트의 주기를 유동적으로 변경할 수 있다는 것입니다.
3.2 본인이 생각하는 장단점에 대해 설명해주세요.
- 제가 생각하는 애자일 방법론의 장점은 변화하는 요구사항에 수용하기 쉽다는 것입니다. 그러므로 사용자의 의견을 수용하기 쉽습니다.
- 제가 생각하는 애자일 방법론의 단점은 애자일이 매우 유연하기 때문에 고객의 피드백을 반영하여 반복 작업을 하다보면 초기 예상과 다른 최종 결과물을 제공할 수 있다는 것입니다.
참고