분류 전체보기
-
소프트웨어 크기 결정 및 경계에 대한 고찰Thinking 2023. 8. 14. 22:28
문제 제기 우리는 매년 새로운 시스템을 구축하고, 동시에 수많은 레거시 시스템을 운영할 책임을 갖는다. 시스템의 개수는 매년 지속적으로 늘어나고, 시스템의 통합과 분리 작업이 반복적으로 진행되는 경향이 있는데, 시간이 갈수록 여러 시스템들이 중복 기능을 포함하는 경우가 많아지고, 각 시스템들은 메시지 또는 데이터를 기반으로 강하게 결합되면서 하나의 변경 작업이 알수 없는 곳까지 영향을 끼쳐, 유지보수가 상당히 어려워지기도 한다. 오래된 조직일수록 이런 문제에 직면할 가능성이 높아 시스템 구조(+조직 구조)에 대한 고민을 많이 하게된다. 즉, 어떻게 시스템을 설계하고 운영하는 것이 비용적으로 가장 효율적인지 결정해야하는데, 중복 개발은 피하면서 시스템 간의 의존성은 줄여 개발 및 유지보수를 쉽게 하고, 상..
-
Design Pattern - Creational PatternIT Fundamental Concept/Design Pattern 2022. 3. 14. 20:17
Object 생성에 관련된 패턴 입니다. 무엇을 만드는지 알지 못해도 객체를 생성하는 방법을 제공합니다. Concreate Class 보다도 Interface 기반으로 프로그래밍 하는 것이 필수적 입니다. By subclassing Factory Method By Object Composition Abstract Factory Builder Prototype 1. Factory Method 단점 한번에 하나의 전략만 장착이 가능하다. 2. Abstract Factory 단점 새로운 종류의 제품을 제공하기 어렵다. 새롭게 생성되는 제품은 추상 팩토리가 생성할 수 있는 제품 집합에만 고정되어 있기 때문이다. 만약 새로운 종류의 제품이 등장하면 팩토리의 구현을 변경해야 한다. 이는 추상 팩토리와 모든 서브클래..
-
Design Pattern - Structural PatternIT Fundamental Concept/Design Pattern 2022. 3. 2. 20:24
프로그램의 Organization에 관심을 갖습니다. 확실한 구조적 목적을 달성할 수 있도록 클래스를 Organize 합니다. 동적 모델을 변경하지 않고도 프로그램을 변경할 수 있습니다. 다른 객체에 대한 우회(Indirection)를 제공합니다. Adapter Bridge Proxy 다른 클래스의 인터페이스를 Wrapping 합니다. Facade Adapter 재귀를 구성합니다. Decorator Composite 1. Adaptor 호환되지 않는 인터페이스를 어뎁터를 통해 변환하여 함께 동작될 수 있도록 합니다. Client와 구현된 Adaptor가 Decouple되어 Adaptor가 변경되거나 추가되어도 Client는 수정할 필요가 없습니다. 2. Bridge 가운데 Bridge가 있고 좌측에는 A..
-
Design Pattern - Behavioral PatternIT Fundamental Concept/Design Pattern 2022. 3. 2. 20:20
프로그램의 Runtime Behaivor에 관심을 갖습니다. 객체가 수행하는 역할이나 이러한 객체들 간의 Interact하는 방법을 정의합니다. 1. 변하는 것을 Encapsulation 한다. Strategy State Mediator Iterator 2. 객체가 Argument로 사용된다. Visitor Command 3. Sender와 Receiver를 Decoupling 시킨다. Command Observer Mediator Chain of Responsibility 4. 그 외 Template Method Interpreter Memento 1. Strategy 제공 될 수 있는 각 Behaivor를 Encapsulation하고 Behaivor 별 확장이 용이하여 유지보수 성이 높으며, Comp..
-
KNNAI/Machine Learning 2020. 8. 9. 14:29
K-최근접이웃(K-Nearest Neighbor, KNN) 알고리즘 출저: 블로그 https://ratsgo.github.io/ 내 다음 글 기반으로 요약 정리 하였습니다. https://ratsgo.github.io/machine%20learning/2017/04/17/KNN/ K-Nearest Neighbor Algorithm · ratsgo's blog 이번 글에서는 K-최근접이웃(K-Nearest Neighbor, KNN) 알고리즘을 살펴보도록 하겠습니다. 이번 글은 고려대 강필성 교수님, 김성범 교수님 강의를 참고했습니다. 그럼 시작하겠습니다. 모델 개요 KNN�� ratsgo.github.io KNN 이란 새로운 데이터가 주어졌을 때 기존 데이터 가운데 가장 가까운 k개 이웃의 정보로 새로운 ..
-
스프링부트 + Oracle 메이븐 프로젝트 만들기Backend/Java and Trouble Shooting 2020. 3. 17. 22:47
+ Type : Maven - 프로젝트 빌드 및 의존성 관리에 Maven 을 사용합니다. Gradle을 선택할 수도 있습니다. + Packaging: Jar - 패키징을 Jar로 하도록 설정합니다. War로도 설정할 수 있습니다. + Java Version: 8 - 자바는 1.8을 사용합니다. + Language: Javav - 언어는 Java를 사용합니다. Kotlin을 선택할 수도 있습니다. + Group com.tistory.offbyone - 자신에게 맞는 값을 넣으면 됩니다. 보통 도메인을 사용합니다. + Artifact: spring-boot-test - Mave 아티팩트명인데, 이것이 프로젝트명이 됩니다. + Version: 0.0.1-SNAPSHOT - 프로젝트의 버전입니다. + Descr..
-
OO Analysis & DesignIT Fundamental Concept/OOAD 2020. 3. 1. 00:09
Use Case Diagram 사용자의 요구를 기능적인 측면에서 명시하며, 시스템이 제공해야하는 서비스의 목록을 얻기 위해 사용 합니다. 또한 특정 기능이 동작 후에 어떤 기능이 추가로 실행되는지, 또는 어떤 조건 하에 후속 기능이 수행되는지를 검토해보면서 공통 기능을 추출해 볼 수 있고, 유사 기능 분류를 통해 기능 단위로 Encapsulation을 수행해 볼 수 있습니다. 시스템이 제공하고 있는 기능 및 그와 관련된 외부요소를 사용자의 관점에서 표현하는 다이어그램. 시스템 외의 요소와 기능적 요구사항을 Actor와 Use case, Relationship으로 표현 Relationships 연관(Association): Use Case와 Actor의 관계를 표현(실선) 확장(Extend): 기본 Use..
-
OOP ConceptIT Fundamental Concept/OOAD 2020. 2. 29. 23:48
Procedural Programing vs Object Oriented Programming Procedural Programing 프로시저 호출의 개념을 바탕으로 하고 있는 프로그래밍 패러다임으로 프로그램이 프로시저를 이용해서 위에서 아래로 순서대로 수행되는 개발 방법입니다. 대표적으로 C언어가 있습니다. 이는 컴퓨터 작업 처리 방식과 유사하기 때문에 객체지향 언어를 사용하는 것에 비해 실행속도가 빠릅니다. Object Oriented Programing 객체지향이란 실제 세계를 모델링하여 소프트웨어를 개발하는 방법입니다. 객체지향 프로그래밍에서는 데이터와 절차를 하나의 덩어리로 묶어서 생각하게 됩니다. 객체지향의 3대 특성으로는 Encapsulation, Inheritance, Polymorphis..