본문 바로가기

BackEnd

(48)
[SW공학] 통신 응집도와 해결방안 Communicational cohesion occurs when parts of a module are grouped together because they use the same set of inputs and outputs. If a module has different elements that have been grouped together because they access and modify the same data structure, it would demonstrate communicational cohesion. For example, a data structure that represents the contents of a customer’s shopping basket might be..
[SW공학] 절차적 응집도와 해결방안 모듈의 정의(by chatGPT) 소프트웨어에서 모듈은 프로그램을 구성하는 각각의 요소를 모듈로 구축하는 것을 말합니다. 모듈은 재사용 가능한 프로그램을 말하며, 내부 변수, 함수, 클래스 등의 코드 블록을 정의하고 다른 파일에서 import 문으로 가져올 수 있습니다 [ 모듈화에 대해서 ] 모듈화(Modularization) 시키는 방법 모듈이란 “분리되고, 독립적이며, 교체&n... blog.naver.com 모듈을 사용하면 프로그램을 더욱 모듈화하여 유지보수성을 높일 수 있습니다. 결합도와 응집도 응집도는 각 소프트웨어 모듈의 완성도를 측정하는 기준이다. 응집도가 높으면 유지보수성과 완성도가 높은 모듈이다. 유사한 개념으로 결합도가 있는데, 이는 모듈 간의 의존성을 나타낸다. 모듈 간 의존성이 높을..
[Java] eclipse(이클립스) marketplace(마켓플레이스) 다운로드 SSL 우회하는 법 eclipse 디렉토리의 eclipse.ini 파일의 -vmargs 아래에 두 줄을 추가한다. -vmargs -Djavax.net.ssl.trustStore=NUL -Djavax.net.ssl.trustStoreType=Windows-ROOT
[Java, Spring] 리플렉션을 활용한 프록시 동적 생성 해당 게시물은 김영한 강사님의 스프링 핵심원리 고급편 을 학습 후 정리한 내용이다. 스프링 핵심 원리 - 고급편 - 인프런 | 강의 스프링의 핵심 원리와 고급 기술들을 깊이있게 학습하고, 스프링을 자신있게 사용할 수 있습니다., - 강의 소개 | 인프런 www.inflearn.com 탬플릿 메서드 패턴, 프록시 패턴을 통해 다음의 효과를 거두었다. 변하지 않는 부분의 추상화 변하는 부분에서 변하는 부분의 분리 프록시 패턴의 문제점은 100개의 클래스 > 100개의 프록시라는 개발 공수의 증가였다. 사실 프록시 로직은 거의 유사한데, 변하는 부분만 동적으로 생성하면 프록시가 하나만 있으면 되지 않을까? 호출하는 메서드인 target.callA() , target.callB() 이 부분만 동적으로 처리할 수..
[Java, Spring] 프록시, 프록시 패턴, 데코레이터 패턴 해당 게시물은 김영한 강사님의 스프링 핵심원리 고급편 을 학습 후 정리한 내용이다. 스프링 핵심 원리 - 고급편 - 인프런 | 강의 스프링의 핵심 원리와 고급 기술들을 깊이있게 학습하고, 스프링을 자신있게 사용할 수 있습니다., - 강의 소개 | 인프런 www.inflearn.com 탬플릿 메서드 패턴 : 변하지 않는 로직(부가 기능)과 변하는 로직(핵심 기능)의 분리 템플릿 메서드 디자인 패턴의 목적은 다음과 같습니다. "작업에서 알고리즘의 골격을 정의하고 일부 단계를 하위 클래스로 연기합니다. 템플릿 메서드를 사용하면 하위 클래스가 알고리즘의 구조를 변경하지 않고도 알고리즘의 특정 단계를 재정의할 수 있습니다. [GOF] 프로그래밍에서 콜백(callback) 또는 콜애프터 함수(call-after f..
[Java, Spring] 쓰레드 로컬과 전략 패턴, 탬플릿 메서드 패턴 해당 게시물은 김영한 강사님의 스프링 핵심원리 고급편 을 학습 후 정리한 내용이다. 스프링 핵심 원리 - 고급편 - 인프런 | 강의 스프링의 핵심 원리와 고급 기술들을 깊이있게 학습하고, 스프링을 자신있게 사용할 수 있습니다., - 강의 소개 | 인프런 www.inflearn.com 부가 기능 적용하기 보통 디버깅(에러 혹은 비즈니스 흐름 분석)을 위해 로깅을 적용하는 것은 당연하다. 아래와 같은 요구 사항을 구현한다고 가정해보자. 모든 PUBLIC 메서드의 호출과 응답 정보를 로그로 출력 애플리케이션의 비즈니스 흐름을 변경하면 안됨 로그를 남긴다고 해서 비즈니스 로직의 동작에 영향을 주면 안됨 메서드 호출에 걸린 시간을 기록함 정상 흐름과 예외 흐름을 구분함 예외 발생시 예외 정보가 남아야 함 메서드 ..
설계를 깔끔하게 발전시키기 https://pragprog.com/titles/swdddf/domain-modeling-made-functional/ Domain Modeling Made Functional Use domain-driven design to effectively model your business domain, and implement that model with F#. pragprog.com 해당 책의 마지막 장입니다(13) TLDR : 초이스 타입을 이용해 관심사가 유사한 필드를 하나의 차원으로 통합하라! 도메인 모델의 구현이 끝이 아닙니다. 요구 사항이 변경되면 모델이 지저분해지고 다양한 하위 시스템이 얽혀 테스트하기 어려워집니다. 이제 마지막 과제가 있습니다. 시스템에 영양을 최소화하면서 설계가 발전할 수 있..
Persistence 우리는 도메인 모델을 "persistence ignorance"로 설계했습니다. 즉, 데이터 저장 또는 다른 서비스와의 상호 작용과 관련된 구현 문제로 인해 설계가 왜곡되지 않도록 했습니다. 그러나 대부분의 애플리케이션에는 프로세스 또는 워크플로의 수명보다 더 오래 지속되어야 하는 상태가 필요한 시점이 있습니다. 이 시점에서 우리는 파일 시스템이나 데이터베이스와 같은 일종의 지속성 메커니즘으로 전환해야 합니다. 슬프게도 우리의 완벽한 도메인에서에서 인프라의 지저분한 세계로 이동할 때 거의 항상 불일치가 있습니다. 명령 쿼리 분리(CQRS)와 같은 몇 가지 높은 수준의 원칙에 대해 논의한 다음 낮은 수준의 구현으로 전환합니다. NoSQL 문서 데이터베이스와 기존 SQL 데이터베이스의 두 가지 방식으로 도메..