Learn
-
[OOP/UML] UP - Elaboration 단계 / OOALearn/OOP&UML 2022. 9. 18. 23:12
# 개요 중요하고 리스크있는 아키텍쳐를 구현하고 테스트하는 단계 요구사항이 수정될 수는 있지만 이 단계가 끝날때는 확정되어야 한다. 아키텍쳐/클라이언트 관점에서 리스크를 줄여나간다. # Artifacts Iteration마다 리스크 관점에서 중요한 Use-case를 선택하여 아래와 같은 작업들을 한다. OOA에서는 Domain Model을 작성하는데, 그 전에 Use-case Model 작성이 필요하다. Inception 단계에서는 Brieft 레벨이였다면 Elaboration에서는 Casual, Fully dressed up 레벨로 작성한다. OOD에서는 Design Model을 작성한다. Sequence Diagram을 그리고 그것을 바탕으로 Class Diagram을 그린다. # Domain Mod..
-
[OOP/UML] UP - Inception 단계Learn/OOP&UML 2022. 9. 18. 00:23
# 개요 보통 1주간 진행되는 짧은 단계로 아래의 질문들에 대해 생각해본다. What is the vision and business case for this project? Feasible? Buy and/or build? Rough unreliable range of cost: Is it $10K-100K or in the millions? Should we proceed or stop? 대부분 Brief format (3줄 정도) 수준으로 작성한다. # Artifacts 그렇게 많은 UML을 그리지 않는다. 필요한 만큼만 그린다. # Requirements 시스템을 만족하기 위한 Capabilities와 Conditions를 뜻한다. Requirement를 찾는 것을 Requirement analy..
-
[OOP/UML] OOAD, UP 기본 개념Learn/OOP&UML 2022. 9. 17. 22:55
# OOAD Object-Oriented Analysis (OOA)와 Object-Oriented Design(OOD)으로 구성 OOA: 요구사항을 도메인 모델(오브젝트)로 만드는 것 (usecase diagram) OOD: 소프트웨어 오브젝트를 정의하고(class diagram) 어떻게 커뮤니케이션을 할지 정의하는 것(sequence diagram) 모든 usecase에 대해서 sequence diagram을 그리고 그 후 class diagram을 그리는 것을 반복 # UML 3가지 레벨로 사용될 수 있음 Sketch: 13가지 uml을 아무거나 쓸 수 있고 조금 틀려도 커뮤니케이션만 잘 되면 오케이 (OOA) Blueprint: syntax, sementic이 정확해야 함. 틀리면 안됨. 디자인 단..
-
[Design Pattern] Adapter PatternLearn/Architecture 2022. 9. 4. 00:00
# 개요 서로 다른 인터페이스를 가진 클래스들이 같이 일할 수 있게 하기 위한 패턴 클라이언트는 자신의 요청이 어떤 adaptee로 가는지 알 필요가 없음 예시 adapter는 클라이언트의 요청이 들어오면 adaptee를 변환하여 처리해준다. public class TurkeyAdapter implements Duck { // adaptee Turkey turkey; public TurkeyAdapter (Turkey turkey) { this.turkey = turkey; } public void quack () { turkey.gobble (); } public void fly () { for (int i= 0; i < 5; i++) turkey.fly (); } } 아래와 같이 Adapter를 통해..
-
정규화 모델 (Ridge, LASSO, Elastic Net)Learn/머신러닝 2022. 9. 3. 23:21
# 무엇이 좋은 모델인가 - 현재 데이터(training data)를 잘 설명하는 모델 (Explanatory modeling) - 미래 데이터(testing data)에 대한 예측 성능이 좋은 모델 (Predictive modeling) 결국 MSE를 줄이는게 중요하다. > Bias와 Variance를 줄여야 한다. 1번이 가장 좋고 4번이 가장 나쁜건 당연한데, 2/3번은 상황에 따라 다르다. 그러면 어떻게 Variance를 줄일 것인가? > subset selection method는 설명변수 일부만 사용하여 회귀 계수를 추정하는 방법 > 이를 통해 bias는 증가할 지라도 variance를 줄일 수 있다. # Regularization 다시 돌아가서 좋은 모델에 대해서 생각해보자. 아래 중 어떤 ..
-
[Design Pattern] Singleton PatternLearn/Architecture 2022. 8. 31. 00:38
# 개요 인스턴스가 단 하나만 만들어지게 하고싶을 때 사용하는 패턴 (예시) Thread Pool Manager은 여러개면 그들간의 조율이 필요하므로 하나만 있는게 좋다. 싱글톤은 new로 인스턴스를 생성하는게 아니라 getInstance 함수로 얻는다. # 기본 구조 일반적인 생성자와는 달리 접근하지 못하도록 private로 생성자를 만든다. 생성자를 만들지 않으면 자바가 알아서 public으로 생성하므로 꼭 만들어줘야한다. 외부에서는 getInstance를 통해서만 인스턴스를 얻을 수 있다. 외부에서 이 함수에 바로 접근할 수 있게 static으로 선언해야 한다. 생성자를 대신하므로 public으로 열어줘야 한다. uniqueInstance는 클래스에 단 하나만 있어야 하므로 static으로 만든다...
-
[Design Pattern] Builder PatternLearn/Architecture 2022. 8. 30. 21:18
# 개요 쉽게 알고리즘을 교체할 수 있는 객체를 생성하기 위한 패턴 director와 (concrete)builder가 중요 director: 최종 제품이 되기 위해 어떤 파트가 필요한지를 알고 있음 (concrete) builder: 각 파트들을 어떻게 만들어야 할지를 알고 있음 아래 그림처럼 builder 인터페이스를 통해 builder를 쉽게 바꿀 수 있음 전략패턴의 구조와 유사 아래 그림처럼 director가 builder에게 각 파트 생성을 요청한다. 중요한건 클라이언트는 각 파트가 어떻게 구성되었는지 관심이 없다는 점이다. 다 조립된 제품에만 관심있다. # Participants Client director와 concrete builder를 선택 director에게 어떤 concrete bui..
-
[Design Pattern] Factory Method & Abstract Factory PatternsLearn/Architecture 2022. 8. 29. 23:35
# 개요 아래와 같이 conditional statement에 따라 다른 Concrete Class를 불러야 하는 상황을 피할 때 이 패턴을 쓴다. Duck duck; if (picnic) duck = new MallardDuck(); else if (hunting) duck = new DecoyDuck(); else if (inBathTub) duck = new RubberDuck(); 새로운 object를 new를 쓰지 않고 만드는 것을 Factory Pattern이라고 한다. Factory Method: 상속(inheritance)를 통해서 인스턴스를 생성하는 방식 Abstract Factory: 위임(Delegation)을 통해서 인스턴스를 생성하는 방식 SOLID 원칙의 Dependency In..