특정 프레임 워크와 함께 사용할 시스템 또는 응용 프로그램을 개발할 때 프레임 워크를 염두에 두지 않고 시스템을 디자인하는 것이 가장 좋은 방법입니까, 아니면 "프레임 워크가 더 쉬울 것입니다"라는 사고 방식으로 시스템을 디자인하는 것이 좋습니다 이것으로 "
특정 프레임 워크와 함께 사용할 시스템 또는 응용 프로그램을 개발할 때 프레임 워크를 염두에 두지 않고 시스템을 디자인하는 것이 가장 좋은 방법입니까, 아니면 "프레임 워크가 더 쉬울 것입니다"라는 사고 방식으로 시스템을 디자인하는 것이 좋습니다 이것으로 "
답변:
고객의 디자인 은 고객의 요구를 최대한 밀접하게 충족시켜야합니다. 디자인에는 다음과 같은 작은 것들이 포함되어 있습니다.
이러한 것들 중 어느 것도 프레임 워크에 의해 지시되어서는 안됩니다. 이러한 목표를 달성하기 위해 프레임 워크와 싸우는 것이 확실하다면 코드 작성을 시작하기 전에 해당 목표를 달성하는 데 도움이되는 새로운 프레임 워크를 선택해야합니다.
적절한 툴셋 (프레임 워크는 툴)을 선택한 후에는 툴을 사용하도록 설계된 방식으로 사용하는 것이 좋습니다. 프레임 워크 디자인에서 멀어 질수록 팀의 학습 곡선이 커지고 무언가 잘못 될 가능성이 커집니다.
한마디로
추가 생각 :
20 년 이상의 소프트웨어 엔지니어링과 여러 프레임 워크를 사용한 후 몇 가지 교훈을 얻었습니다. 모든 프레임 워크는 양면 칼입니다. 위에서 언급 한 큰 3을보기 전에 프레임 워크를 결정하는 문제는 평범한 (최상의) 사용자에게 좋은 사용자 경험을 손상시킬 수 있다는 것입니다. 또는 특정 기능을 수행하기 위해 프레임 워크 디자인에서 벗어나야 할 수도 있습니다.
프레임 워크는 당연히 특정 모듈 과 하위 시스템 (예 : GUI 프론트 엔드) 의 디자인에 영향을줍니다 . 다른 답변에서 언급했듯이 선택한 프레임 워크와 싸우고 있다면 어려움을 겪을 것입니다.
그러나보다 광범위하게는 단일 프레임 워크 나 기술이 전체 시스템 아키텍처의 "큰 그림"을 지시하거나 추진하지 않도록해야합니다. 대부분의 범용 응용 프로그램 프레임 워크는이를 장려하지 않으므로 한 시스템 주위에 전체 시스템을 작성하는 경우 해당 프레임 워크 작성자가 의도하지 않은 작업을 수행하고있을 것입니다.
다른 문제를 해결하기 위해 많은 다른 프레임 워크를 사용할 것입니다. 시스템이 더욱 복잡 해짐에 따라 Big Ball Of Mud 를 만들지 않도록주의해야합니다 . 가능하면 시스템을 모듈 식으로 느슨하게 연결하십시오. 일부 프레임 워크는 프레임 워크 별 워크 플로우를 다른 구성 요소에서 '숨기는'래퍼 및 어댑터를 작성하여 추상화 뒤에 더 잘 유지 될 수 있습니다. GUI 툴킷은 프론트 엔드 GUI 기능 만 제공하는 경향이 있으므로 이러한 GUI 모듈은 시스템의 나머지 부분과 떨어져 있어야합니다.
범용 프레임 워크 (UI 프레임 워크, 데이터 계층 프레임 워크 등)는 시스템의 전체 아키텍처를 규정하기 위해 존재하지 않으며, 대부분 컴포넌트 또는 모듈의 설계를 규정 할 수 있습니다. 예를 들어, 일부 GUI 기술은 특정 MV * 패턴에 맞춰져 있습니다.
시스템의 전체 아키텍처는 주로 비즈니스 요구 사항에 따라 결정되어야합니다 . 모든 것을 하나로 묶기 위해 특정 도구 (예 : 메시징 미들웨어 도구 또는 ORM 프레임 워크)에 크게 의존하고 있지만 '서비스'클래스와 같은 추상화로 프레임 워크를 캡슐화 한 경우 '제한이있을 때 해당 프레임 워크의 제약을받을 가능성이 줄어 듭니다.
큰 그림 디자인을 위해 다음 사항을 명심하십시오.
그렇습니다 . 프레임 워크가 "알고있는 것"에 최대한 가깝게 붙어 있어야합니다 .
그 이유는 단순히 "생각"하는 방식으로 프레임 워크를 고수할수록 해당 프레임 워크를 사용하는 문제 / 아이디어에 대해 다른 개발자와 더 쉽게 대화 할 수 있기 때문입니다.
나중에 사용하는 다른 사람들의 상호 운용성과 사용 편의성을 높이고, 사용하는 모든 개념의 기본 철학을 고수하면 자습서 또는 일반적인 솔루션을 더 잘 이해하고 통합 할 수 있습니다.
프레임 워크를 "파괴"하는 이유를 생각할 수있는 유일한 이유는 "기본"구성 / 원칙 적용을 통해 제공 할 수없는 것이 절대적으로 필요하기 때문입니다. 그러나 시작하기에 올바른 틀이 아닐 수도 있습니다.
기본적으로 이것은 다른 결정에도 적용될 수 있습니다. 다른 사람과 같은 언어를 사용하면 더 쉽게 사용할 수 있기 때문에 사용하려는 언어를 사용하려는 언어와 비슷하게 사용해야합니다 .