MVP, ORM, OOP

DOYOUNG KIM·2023년 11월 9일
0

MVP


MVP는 Minimum Viable Product 줄임말
최소기능 제품이라는 의미를 가진다. 최소한의 노력과 개발로 완성할 수 있는 제품이라는 의미다.
최소한의 기능을 통해서 고객의 빠른 피드백, 시장 반응 조사를 통해서 실제 서비스를 개발에 적용하는 제품

아래 그림 처럼 자동차를 만들기 위해서 바퀴부터 만드는게 아니라 스케이트 보는 만들어 출시하고 어떤게 부족한지 사용자 피드백을 수용해 점점 더 완성된 서비스로 개발한다.
결국 위에서 사용자 피드백을 수용해 스포츠카와 비슷한 형태가 탄생한 것처럼 MVP를 활용한다.

MVP에 핵심은 주 기능이 탑재되야 한다는 것이다. 유틸리티성 기능은 없더라도 핵심 기능은 존재해야 한다.
MVP를 통해서 원하는 타겟 고객의 최적의 솔루션을 제공해야 하는지 어떤 기능, 어떤 문제를 해결하고 구현해야하는지 알아야한다.

예를 들어서 쇼핑몰 웹 사이트를 만든다면
상품 검색, 구매, 결제, 배송 현황과 같은 기능이 핵심 기능이고 이를 잘 구현하는게 MVP의 초기 형태이다.
여기서 사용자 비슷한 구매 목록 추천, 레시피 추천과 같은 추가 기능을 MVP를 통해서 확인하고 구현하는 것이다.

OOP


웹 공부를 시작하면서 많이 나온 용어가 OOP, ORM 이다
해당 용어가 무슨 뜻인지는 알지만 명확하게 알지 못해서 개념 정리를 다시 해보려 한다.
OOP는 Object Oriented Programming 의 줄임말
객체 지향 프로그래밍으로 현실의 사물의 객체라고 보다 객체들로 개발하고자 하는 서비스에 필요한 특징들을 추출해서 프로그래밍하는 것이다.
이것을 추상화라고 한다. 추상화 및 주요 개념은 다시 정리한다.

OOP(객체지향프로그래밍)은 개발에 필요한 데이터를 추상화 시켜서 상태와 메서드를 가진 객체로 만들고 객체간의 상호작용을 통해서 기능을 구현하는 것이다.

✔장점

  • 다른 클래스를 가져와 사용하고 상속 가능 -> 코드 재사용성 증가
  • 사용 빈도수가 높은 로직을 라이브러리로 만들어 재사용 가능 -> 신뢰성 확보
  • 클래스 단위로 모듈화 가능 -> 대형 프로젝트 적합
  • 객체 단위로 코드가 나누어져 작성 -> 디버깅 쉽고, 유지보수 좋음

✔단점

  • 처리 속도가 상대적으로 느림
  • 객체가 많으면 용량 커짐
  • 설계 시 많은 노력과 시간 필요

객체 지향 특성

☑ 캡슐화
코드를 수정 없이 재활용 하는 것을 목적
클래스를 캡슐이라고 생각하고 기능과 특성을 담는다.

☑ 상속
클래스로부터 속성과 메서드를 물려받음
다른 클래스에서 하나의 메서드만 변경해야 하면 상속받아 오버라이딩으로 수정 가능

☑ 추상화
객체 지향 관점에서 클래스를 정의
필요한 중요 정보만 표현하여 공통의 속성과 기능을 묶어 이름 설정

☑ 캡슐화
하나의 변수명이나 함수명이 상황에 따라 다르게 해셕
대표적인 다형성이 오버라이딩, 오버 로딩

OOP 설계 원칙

우테코 프리코스를 진행하면서 가장 어려웠던 부분이 어느 수준의 단위로 클래스나 메소드를 분리해야 하는 것이었다. 아래 5가지 원칙을 통해서 코드 리팩토링이 필요하다.

1. SRP(Single Responsibility Principle) : 단일 책임 원칙
클래스는 단 하나의 목적을 가지고, 그에 대한 책임을 져야함

2. OCP(Open Close Principle) : 개방-폐쇠 원칙
확장에는 열려있어야 하고 변경에는 닫혀있어야함
클래스를수정해야 하면 그 클래스를 상속하여 수정해야한다.

3. LSP(Liskov Substitution Principle) : 리스코프 치환 원칙
상위 타입 객체를 하위 타입의 객체로 치환해도 상위 타입을 사용하는 시스템은 정상 동작
자식 클래스를 사용할때 부모 클래스로 치환해도 문제가 없어여한다.
✔ 추후 예제 축

4. ISP(Interface Segregation Principle) : 인터페이스 분리 원칙
각 행위에 대한 인터페이스는 서로 분리
핸드폰으로 전화하는데 카메라나 다른 어플로 문제가 생기면 안됨

5. DIP(Dependency Inversion Principle) : 의존 역전 원칙
상위 클래스가 하위 클래스에 의존하면 안된다는 법칙
기본적인 공통되는 속성을 하위 클래스에 의존하면 안된다.

ORM


웹 공부를 시작하면서 많이 나온 용어가 ORM이다.
학부에서 데이터 베이스를 수강하고 실습하고 현업에서 데이터베이스를 사용하지만 정확하게 이 의미를 모르고 있었다.

ORM이란 Object-Relational Mapping 의 줄임말이다.
객체와 관계형 DB 매핑의 줄임말이다.
OOP에서 쓰는 객체 개념을 구현한 클래스 RDB에서 쓰이는 데이터인 테이블을 매핑하는 것

ORM을 이용하면 SQL 쿼리가 아닌 메소드로 데이터 조작
ex) 멤버 테이블의 데이터를 출력하려면 원래는 select * from MEMBER라는 쿼리를 사용 해야 한다. ORM을 활용하면 member.findAll()이라는 메소드 호출로 조회 가능 (JPA를 사용하는게 이거 인듯)

추가 예정

profile
매일 1%씩 성장하는 개발 공부 블로그 입니다.

0개의 댓글