본문 바로가기

개발

(133)
SOLID - 개방 폐쇄 원칙 (Open-Closed Principle) 개방 폐쇄 원칙 기존의 코드를 변경하지 않으면서 기능을 추가할 수 있도록 설계가 되어야 한다. 주문내역이나 주문정보에 제품의 정보를 출력하는 기능을 생각해보자. 다음 그림은 New Feature 클래스에서 이 기능을 사용하는 경우를 모델링한 것이다. 만약 주문내역이나 주문정보가 아닌 다른 곳에 제품의 정보를 출력하는 기능의 개발이 필요한 경우 New Feature 클래스가 해당 매체의 기능을 이용하도록 구성할 수 있으나 이 방식은 OCP를 위반한다. OCP를 위반하지 않은 설계를 하기 위해서는 변해야 할 것은 쉽게 변할 수 있게 하고, 변하지 말아야 할 것은 변하는 것에 영향을 받지 않도록 해야 한다. OCP를 만족하기 위해서는 New Feature 클래스가 개별 기능을 처리하도록 하지 않고 인터페이스를..
ORM(Object Relational Mapping) ORM(Object Relational Mapping) 에 대해 작성한다. ORM이란 객체와 관계형 데이터베이스의 데이터를 자동으로 연결해주는 것을 말한다. 오브젝트Relational Database 객체지향 프로그래밍은 클래스를 사용하고 관계형 데이터베이스는 테이블을 사용하기 때문에 객체 모델과 관계형 모델 간에 불일치와 이질성이 존재한다. ORM을 이용하여 객체의 형태로 데이터베이스에 SQL을 자동으로 생성하여 객체를 삽입하고 수정 등이 가능하다. ORM에서 말하는 객체의 의미는 OOP의 객체를 의미한다. 관계는 관계형 데이터베이스를 의미한다. 객체를 통해 간접적으로 데이터베이스 데이터를 다룬다. Persistant API라고도 할 수 있다.(JPA, Hibernate) ORM을 사용하면 객체 지향적..
세마포어(Semaphore), 뮤텍스(Mutex) 세마포어와 뮤텍스에 대해 작성한다. 여러 쓰레드들은 자원을 공유하고 프로세스간 메시지를 전송하면서 간혹 문제가 발생하기도 한다. 공유된 자원에 여러 프로세스, 쓰레드가 동시에 접근하면서 문제가 발생한다. 공유된 자원 속 하나의 데이터는 한번에 하나의 프로세스만 접근할 수 있도록 제한해두어야 할 필요가 있다. (접근제어) 이를 위해 고안된 것이 세마포어(Semaphore) 이다. 세마포어(Semaphore) 공유된 자원의 데이터를 여러 프로세스가 접근하는 것을 막는 것을 의미한다. 세마포어는 리소스의 상태를 나타내는 간단한 카운터이며 일반적으로 비교적 긴 사용시간을 확보하고자 하는 리소스에 대해 이용하게 된다. 유닉스 시스템의 프로그래밍에서 세마포어는 운영체제의 리소스를 경쟁적으로 사용하는 다중 프로세스의..
Deployment Generation Traditional Deployment (전통적인 배포 시대) : 초기 조직은 애플리케이션을 물리 서버에서 실행했었는데 한 물리서버에서 여러 애플리케이션의 리소스 한계를 정의할 방법이 없었기에 리소스 할당의 문제가 발생했다. 예를 들어 물리 서버 하나에서 여러 애플리케이션을 실행한다면 리소스 전부를 차지하는 애플리케이션 인스턴스가 있을 수 있고 결과적으로 다른 애플리케이션의 성능이 저하될 수 있었다. 이에 대한 해결책으로 서로 다른 여러 물리 서버에서 각 애플리케이션을 실행하는 방법이 있으나 이는 리소스가 충분히 활용되지 않는다는 점에서 확장 가능하지 않기에 물리 서버를 유지하기 위한 많은 비용이 들었다. Virtualized Deployment (가상화된 배포 시대) : 전통적인 배포 시대의 문제점에..
Laravel 6 Custom Exception 1. Exception 클래스 생성
Laravel 6 Gmail 연결 및 메일 전송 설정 라라벨6 Gmail 연결 및 메일 전송 설정한다. 1. 메일 전송 컨트롤러 생성 php artisan make:controller MailController
기능 테스트, 비기능 테스트, 구조적 테스트 기능 테스트와 비기능 테스트에 대해 작성한다. 1. 기능 테스트 (Functional Test) 기능 테스트는 고객의 기능적 요구사항을 중점적으로 테스트 하는것이다. 요구사항에 따른 기능의 구현 여부 및 동작 여부에 대해 테스트를 진행한다. 테스트 기준은 명세에 따르며 명세를 기반으로 테스트 조건과 테스트 케이스를 도출한다. [기능 테스트 분류] 단위 테스트 통합 테스트 인수 테스트 회귀 테스트 등 2. 비기능 테스트 (Non-Functional Test) 비기능 테스트는 고객의 성능적 요구사항을 중점적으로 테스트하는 것이다. 비기능적인 측면인 성능, 신뢰성, 안정성, 유요성, 적합성 등을 확인한다. 비기능 테스트는 확인하고자 하는 특성에 따라 환경 구성과 관련 도구가 필요할 수 있다. [비기능 테스트 ..
인수 테스트 (ACCEPTANCE TEST) # 참고자료 : 개발자도 알아야할 소프트웨어 테스팅 실무 인수테스트란, 실제 사용자 환경에서 사용자의 입장으로 테스트를 수행하는 것을 말한다. 시스템의 인수를 위해 기능적/비기능적 요구사항을 사용자가 직접 테스트하여 개발이 완료되었음을 증명하는 테스트이다. 개발된 시스템이 고객의 요구사항과 일치하는지 확인하기 위해 고객의 입장에서 수행하는 테스트이다. 제품에 결함을 찾기 보다는 제품에 기능을 테스트하며 완성도를 확인하여 확신을 얻을 수 있는 단계이다. 인수테스트의 목적 - 확신(Confidence) : 시스템이나 시스템의 일부 또는 특정한 비기능적인 특성에 대해 확신을 얻는 것이다. - 배포가능성 평가 : 결함(Defect)을 찾는 것이 아니라 시스템을 배포하거나 사용할 준비가 되었는지 평가한다. - 준..

반응형