본문 바로가기

Development Note

(69)
Open Closed Principle : OCP Open Closed Principle 훌륭한 어플리케이션 디자인과 코드 작성 부분은 개발이 진행이 되는 도중과 어플리케이션의 단계에서 자주 변경되는 것을 염두에 둬야 합니다. 보통은 많은 변경들은 다양한 기능들이 어플리케이션에 추가 될 때와 관련되어 집니다. 현재 코드가 이미 단위 테스트되고 현재 코드에서 불필요한 방식으로 현존하는 기능들에 영향을 미칠 수 있는 것을 수정할 때 까지 이러한 변화들은 최소화 되어야만 합니다. Open Close Principle 코드의 디자인과 작성은 현존하는 코드에서 최소한의 변화로 새로운 기능이 추가 되어져야하는 방법이 되어야한다고 말합니다. 디자인은 현존하는 코드를 수정하지 않는 것과 같이 새 클래스들이나, 새로운 기능을 허가하는 방법으로 되어져야 합니다. Inte..
Dynamix Proxy : RMI(Remote Method Invocation)의 기초 Agile Java Lesson 12에서는 동적 프록시에 대해서 아래와 같은 클래스 다이어그램으로 설명을 하고 있습니다. 상황 설정을 하자면 Client 클래스와 ServiceImplementation 클래스는 서로 다른 프로세스의 공간에 있는 다른 컴퓨터입니다. Client가 ServiceImplementation과 통신을 하려면, 저수준의 통신이 일어나야 한다고 쓰여져 있는데 이것은 통신의 수준이 낮다는것의 의미가 많이 퇴색이 되었다는 생각이 듭니다. 저수준의 통신이라는 것은 원서에도 이렇게 나와있습니다. low-level communications 이라고 나와 있습니다. '품질이 낮은 통신' 이라고 오역할 수도 있기 때문에 다른 해석을 했으면 하는 바램입니다. 다시 말하면 저수준의 통신이라는것은 C..
An Overview of RMI Applications An Overview of RMI Applications RMI applications often comprise two separate programs, a server and a client. A typical server program creates some remote objects, makes references to these objects accessible, and waits for clients to invoke methods on these objects. A typical client program obtains a remote reference to one or more remote objects on a server and then invokes methods on them. RM..
Proxy Pattern : Virtual Proxy Pattern 프록시 패턴이라는 개념을 알게 되고 Virtual Proxy Pattern에 대해서 간단한 예제를 만든 소스코드가 있어서 직접 코딩을 해보고 분석을 해보았습니다. ^^ 어려운 코드가 아니니 함께 보시면 좋겠습니다 +_+ 일단 전체적인 소스코드의 UML은 아래와 같습니다. 이하는 각 클래스(인터페이스) 소스코드 입니다. public interface Image { public void displayImage(); } 먼저 Image 라는 인터페이스에서는 이를 구현하는 클래스라면 반드시 displayImage()라는 메소드를 구현하도록 되어있습니다. UML에서와 같이 클라이언트측에 있는 ProxyImage 클래스와 서버측에 있는 RealImage 클래스가 위의 인터페이스를 구현하는것을 볼 수 있습니다. pu..
Design Pattern : Proxy Pattern 위키피디아에 Proxy Pattern에 관련한 글이 있어서 발췌 & 해석해 보았습니다. (출처 : Wikipedia "Proxy Pattern") In computer programming, the proxy pattern is a software design pattern. A proxy, in its most general form, is a class functioning as an interface to another thing. The other thing could be anything: a network connection, a large object in memory, a file, or some other resource that is expensive or impossible to du..
Concept of Proxy Proxy 라는 단어, 들어본 경험은 있지만 좀처럼 개념을 잡기 힘들다. 무엇이듯 생소한 단어가(특히 영어) 나오면 사전부터 뒤져보는것이 맞다. Proxy라는 단어의 사전적인 의미를 살펴보면 아래와 같다. proxy [prɑ́ksi / prɔ́ksi] n. U 대리(권); C 대리인(agent); 대용물; 대리 투표; 위임장. Proxy라는 것의 의미를 먼저 살펴보고 책을 보면 '무언가를 대신해 준다' 라는 의미가 굉장히 강하다는걸 알 수 있다. Proxy를 가장 먼저 접하게 되는 경우는 아마 Proxy Server에서부터가 아닐까 싶다. 먼저 Proxy Server는 어떤 의미인가 하면, wikipedia 에서는 다음과 같이 정의하고 있다. A proxy server is a computer that ..
AOP (Aspect Oriented Programming) 소프트웨어 개발 방법론들을 살펴보면 여러가지 방법론들이 있는것을 살펴볼 수가 있는데, 먼저 자바를 시작 했기때문에 가장 먼저 듣게 된 방법론은 OOP(Object Oriented Programming) 였다. 이후에 OOP라는 개념 이외에 이전에 나왔던 여러 방법론들에 대한 것을 접했다. 최근에 알게된 AOP(Aspect Oriented Programming)는 너무 생소했고, 특히나 Aspect 라는 단어에 대해서 아는바가 없었기 때문에 먼저 사전적인 의미부터 알아보았다. ‡aspect [ǽspekt] n. ① C,U 양상, 모습, 외관, (사람의) 얼굴 생김새(appearance). ② 국면, 정세(phase). [SYN.] ⇨ PHASE. ③ 견지, 견해. ④ (집의) 방향, 전망. ⑤ 〖천문학〗..
What Is Agile Software Development? What Is Agile Software Development? In the late 1990’s several methodologies began to get increasing public attention. Each had a different combination of old ideas, new ideas, and transmuted old ideas. But they all emphasized close collaboration between the programmer team and business experts; face-to-face communication (as more efficient than written documentation); frequent delivery of new d..