본문 바로가기
728x90

CS note9

MVC pattern (Model View Controller) Model View Controller 애플리케이션의 구성 요소를 세 가지 역할로 구분해 개발 프로세스에서 각각의 구성 요소에만 집중해서 개발할 수 있도록 한 패턴 생기게 된 배경 길어지는 코드의 가독성, 유지보수가 불편해짐 각 코드가 반복되며 코드의 기능별로 패턴을 나누게 됨 장점 단순, 직관적 재사용성과 확장성 용이 각 계층의 변화가 다른 계층에 변화를 일으키지 않아 변동에 유리함. 단점 애플리케이션의 규모가 커지고 복잡해질수록 모델과 뷰의 관계가 복잡 Controller와 View의 강결합 대상 플랫폼에 따라 적용이 불가능할 수 있음 (안드로이드) 안드로이드의 경우 Activity에서 view를 관리하고, 도메인 로직을 사용해야 하므로 controller와 view가 함께 있을 수밖에 없다. MVC.. 2023. 4. 30.
트랜잭션과 무결성 트랜잭션 데이터베이스에서 이뤄지는 여러 작업들을 논리적으로 구분한 단위 여러 쿼리를 하나로 묶는 단위 특징 (ACID) 무결성 보장을 위한 트랜잭션이 가져야 할 특성 Atomicity(원자성) 트랜잭션 관련 일의 수행 여부를 보장한다. 트랜잭션 수행을 정상적으로 완료시 DB에 모두 반영되도록 커밋한다. 트랜잭션에 하나라도 오류가 발생해 문제가 생길 경우 롤백을 통해 세이브포인트까지 전부 취소한다. Consistency(일관성) 시스템의 고정 요소는 트랜잭션 수행 전/후가 같아야 한다. Isolation(독립성, 격리성, 순차성) 복수의 트랜잭션 병행 실행시 각각 격리되어 하나만 실행되고 다른건 대기한다(참조 불가 상태). 순차적으로 실행시 성능이 좋지 않으므로 격라 수준을 나누어 격리성을 보장한다. D.. 2023. 2. 17.
Normalization (정규화) 정규화 잘못 설계된 관계형 스키마를 더 작은 속성의 묶음으로 쪼개어 바람직한 스키마로 만들어가는 과정 삽입 이상, 삭제 이상, 갱신 이상 등과 같은 이상 현상을 해결하기 위해, 저장공간 최소화와 같이 성능을 향상시키기 위한 과정 정규형 (NF, Normal Form) 제1정규형 모든 도메인이 원자 값으로만 되어 있는 정규형 모든 속성 값이 원자 값으로만 되어 있는 정규형 릴레이션의 모든 속성이 단순 영역에서 정의 ex. 취미를 나타낼 때 {”이름”: ”수달”, 취미: “게임, 코딩, 골프”} 가 아닌 {”이름”: “수달”, “취미”=”게임”}, {”이름”: “수달”, “취미”=”코딩”}, {”이름”: “수달”, “취미”=”골프”} 제2정규형 1NF를 만족 부분 함수적 종속성 제거 (→ 완전 함수 종속으로.. 2023. 2. 17.
ERD (Entity Relationship Diagram) ERD 개체, 속성, 관계, 관계 타입을 그림으로 표현하는 설계 방법 요구사항을 기반으로 작성되며 시스템(OS 등)에 영향을 받지 않는다. 관계형 구조로 표현할 수 있는 데이터를 구성하는 데에는 유용하지만 비구조화된 데이터를 표현하는 것은 어렵다. 예제와 표현법 2023. 2. 17.
데이터베이스 기본 용어 DataBase 공동으로 사용될 데이터를 저장장치에 저장해 항상 사용할 수 있도록 운영하는 데이터 구조화어 저장되는 데이터의 모음 테이블의 모음 DBMS(DataBase Management System): 데이터베이스 통합 관리 시스템 (쿼리문을 사용해 데이터 삽입, 삭제, 수정, 조회 등을 수행할 수 있음) 데이터베이스 구조 용어 Entity (엔터티) 독립적으로 존재하는 여러 속성을 지닌 명사 이름(식별자)가 같지 않아야 한다. 약한 엔터티와 강한 엔터티 : 다른 엔터티에 의존해야만 존재할 수 있는 엔터티 (= 약한 엔터티) ex. 방과 건물 (방은 건물 안에만 존재할 수 있기 때문에 약한 엔터티, 건물은 강한 엔터티) Relation (릴레이션) 정보를 구분해 저장하는 기본 단위 관계형 데이터베이스.. 2023. 2. 17.
strategy pattern (전략 패턴) strategy pattern (전략 패턴) (= policy pattern, 정책 패턴) 객체의 행위를 바꾸고 싶은 경우 '직접' 수정하지 않고, 전략이라고 부르는 '캡슐화한 알고리즘'을 컨텍스트 안에서 바꿔주면서 상호 교체가 가능하게 만드는 패턴 객체들이 할 수 있는 행위에 대해 전략 클래스를 생성하는 패턴 인터페이스를 사용해 기본 행위를 정의한 후 객체의 행위를 변경하고싶을 때 직접적으로 행위를 수정하는 것이 아닌, 객체에서만 행위를 변경해 유연하게 확장하는 패턴 결론: 변경시 대응에 용이하도록 변경이 잦은 행위를 추상화하는 것 * 컨텍스트 : 상황, 맥락, 문맥. 어떠한 작업을 완료하는데 필요한 모든 관련 정보. 예제 코드 1 (Kotlin) 장바구니에 물건을 담은 후 각 카드(전략)로 결제했을 .. 2023. 1. 27.
factory pattern (팩토리 패턴) factory pattern (팩토리 패턴) 객체를 사용하는 코드에서 생성 부분을 떼어내 추상화한 패턴. 상속 관계에 있는 두 클래스에서 상위 클래스가 중요한 뼈대를 결정하고, 하위 클래스에서 객체 생성에 관한 구체적인 내용을 결정하는 패턴. 장점 낮은 결합도 상위 클래스와 하위 클래스가 분리되므로 낮은 결합도를 가진다. 확장성 및 유지보수성 증가 객체 생성 로직이 분리되어 수정 시 한 곳만 수정할 수 있다. 예제 코드 (Kotlin) * String의 equals 옵션 ignoreCase : true로 설정할 시 문자열의 대소문자를 구분하지 않고 비교한다. * abstract class (추상 클래스) : 미완성 클래스, 이 자체로 인스턴스화될 수 없는 클래스. * abstract : 상속을 받는 곳에.. 2023. 1. 25.
singleton pattern (싱글톤 패턴) singleton pattern (싱글톤 패턴) 하나의 클래스가 하나의 인스턴스만 가지는 패턴. 하나의 클래스를 이용해 여러번 인스턴스화를 시켜 여러 인스턴스를 가질 수 있지만, 그렇게 하지 않고 하나의 클래스를 기반으로 단 하나의 인스턴스만 만드는 것입니다. 장점 인스턴스 생성 비용 감소 한 번 생성하여 여러 모듈이 공유해 사용하기 때문에 생성 비용이 줄어드는 장점이 있다. 단점 의존성 상승 여러 모듈이 같은 데이터를 공유해 사용하기 때문에 의존성이 상승하는 단점이 있다. DI(Dependency Injection, 의존성 주입)을 통해 결합도를 낮출 수 있다. 메인 모듈이 직접 하위 모듈에 의존성을 주지 않고, 중간에 의존성 주입자를 두어 메인 모듈이 간접적으로 의존성을 주입하는 방식 (Factory.. 2023. 1. 20.
디자인 패턴 및 프로그래밍 패러다임 디자인 패턴이 생겨난 이유와 장점 개발을 하다보면 이전에 사용했던 이전의 코드를 들여다보는 경험을 종종 하게 됩니다. 그러다 전에 사용했던 코드(해결책)을 그대로 복붙하기도 하고, 변형해서 쓰기도 하고, 혹은 상황에 맞지 않다고 판단하여 다른 방향의 구현을 고민하기도 합니다. 디자인 패턴은 재사용이 가능한 설계를 하도록 돕습니다. 따라서 클래스의 명세, 객체 간의 상호작용, 유지보수, 문서화 등을 개선할 수 있습니다. 디자인 패턴 프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상호 관계 등을 이용하여 해결할 수 있도록 '규약' 형태로 만들어둔 것 즉, 일종의 솔루션 아키텍처 패턴 MVC : Model / View / Controller의 기능을 수행하는 계층으로 나누어 관리하는 방법. MVP MVV.. 2023. 1. 20.
728x90