본문 바로가기

Homo Faber/Concepts

(12)
TDD, CI, CD 올해 Jolt Awards의 The Best Books에서는 6권의 최고의 책을 선정했고, 그 중에서 Jez Humble과 David Farley가 쓴 Continuous Delivery를 가장 최고의 책(Excellent Book)으로 선정했다. [관련 기사] 기사에서도 말했듯이 이책은 기존 Continuous Integration에서 코드로부터 할 수 있는 모든 것을 자동화시키는 개념을 더 확장하여(응용하여) 가상화(virtualization) 개념을 도입해 배포로 인한 무중단 서비스를 가능하게 하는 방식을 이야기하고 있다. CD에서의 테스트는 오로지 단위테스트(unit test)를 말하고 있으며, 그 테스트 수행 속도 역시 빨라야 한다. 즉, 단위테스트를 하는 범위(coverage)를 최대한 독립적..
유스케이스의 상속 UML에서 상속은 classifier간에 사용할 수 있다. classifier에는 클래스, 액터, 유스케이스 등이 포함된다. 따라서, 유스케이스 간 상속(generalization) 역시 가능한 관계이다. 유스케이스 상속은 동일한 유형의 흐름이 존재하지만, 서로 다른 기능을 수행하는 경우에 상속을 통해 표현이 가능하다. 예를 들어, 은행의 계좌이체 기능은 ATM 앞에서 수행하는 기능과 텔레뱅킹, 인터넷 뱅킹 등에서 수행하는 계좌이체 기능으로 다양한 서비스로 수행되며, 이는 모두 계좌이체라는 동일한 작업을 수행한다. 이와 같이 계좌이체와 같은 기능을 상위 유스케이스로 식별하고, ATM 계좌이체, 텔레뱅킹 계좌이체, 인터넷 뱅킹 계좌이체 등으로 하위 유스케이스를 분류하여 모델링을 할 수 있다. 이때, 상위 ..
"Less is More" 독일의 Bauhaus 운동의 아키텍트이자 리더인 Ludwig Mies van der Rohe(1886-1969)가 한 말로, 최소주의 설계(minimalist design)의 모토로 채택된 개념이다. 그 의미는 단순성(simplicity)과 명료성(clarity)이 좋은 설계를 만들게 된다라는 것으로 현대 설계의 아키텍처의 단순한 형태(style)와 관련된 용어이다. SW 아키텍처에서는 견실한(consistent) 아키텍처는 동일한 것에 대해 수행하는 두가지 이상의 방법을 제공하지 않는다는 것을 의미하며, 이는 사용자로 하여금 어떤 것을 사용할지를 선택하도록 강요하는 시간 낭비를 유발시킬 수 있기 때문이다. 따라서, 견실한 SW 아키텍처는 배우기가 더 쉽고 빨라야 하며, 일단 처음에 배운 내용을 거의 알..
유스케이스 드리븐 방식의 한계 - 유스케이스 드리븐 방식은 식별된 유스케이스로부터 공통된 객체를 식별하는 방법으로 가장 널리 사용되는 방법 중의 하나이다. - 그렇지만, Don Firesmith 는 다음과 같이 유스케이스 드리븐 방식에 대해서 반대입장을 표명했다. [Firesmith1996] “유스케이스는 객체지향 방법이 아니다. 각각의 유스케이스는 객체 기술에서 지양해야 하는 기능 분해 관점에서 수많은 문제점을 야기시킬 수 있는 주요한 기능적인 추상화를 담고 있다... 객체와 클래스가 식별되기 이전에 유스케이스가 먼저 식별되었기 때문에 유스케이스는 객체에 대한 속성과 오퍼레이션을 무시하게 된다.” 계속해서 그는 유스케이스 드리븐 방식이 “전형적인 서브시스템 아키텍처 형태를 띠며... 개개의 유스케이스의 로직을 표현하는 단일 기능 컨..
Abstract와 Interface Q : 자바를 공부하는데여... 공부하다가 abstract와 Interface의 차이를 느끼지 못하여 이렇게 질분드립니다... 둘다 기능을 강제할수있고... 뭐 그런데... ... 차이가 있긴 있나여? A : abstract와 interface, 정확하게 말하면, abstract class 와 interface의 차이를 말씀하시는 거겠죠....(abstract modifier는 class 와 method 둘 다 붙일 수 있습니다. method와 interface를 비교할 수는 없으니까요.) 용어에서 알 수 있듯이, 한쪽은 class이고, 다른 한쪽은 interface 입니다. class와 interface의 역할은 분명히 나뉘어져 있죠. 일반적으로, class는 초기화 되어서 생성될 수 있습니다. 그러나..
자바에서 상속 Q : 자바 관련 서적들이 상속에 대해 은근히 편이적인 비유나 표현으로 대강 넘어 가는 것 같아 상속 개념에 대해 상당히 혼란스럽습니다. 부모클래스가 자식클래스에게 상속을 할때, 자신의 맴버를 완전히 물려주는 것인지(참조나 이동) 아니면 그 복사본을 물려주는 것인지가 궁금합니다. 이것이 명백해져야 super나 this을 이해할 때 좀더 정확할 것 같습니다. 이것이 분명치 않아 어떤 책들은 super나 this가 무슨 맴버를 참조할때는 예외라는 등 이상한 소리를 하면서, 이해가 아닌 '외우기'로 몰아가고 있습니다. 고수님들의 속시원한 답변 부탁드리겠습니다. A : 클래스라는 단어부터 정의를 해야될 듯 싶은데요, 왜냐하면 작성하신 분께서 질문하신 부모클래스가 자식클래스에게 자신의 멤버를 복사본을 물려주는 지..
Domain Driven 과 Model Driven 도메인 드리븐 설계와 모델 드리븐 설계 간의 차이는 무엇인가? 이름이 비슷하고 두 개념이 서로 경계를 넘나들기 때문에 이 두 개념은 종종 혼동된다. 하지만 이 두가지 개념은 서로를 강력하게 해주는 소프트웨어 개발을 접근하는 서로 다른 방법이다. 도메인 드리븐 설계는 소프트웨어 개발의 핵심이 다루고자 하는 주제(subject matter)의 지식이라는 전제와 해당 다루고자 하는 주제를 이해하는 유용한 방법을 찾는 것으로부터 시작되었다. 해결해야만 하는 복잡성이 도메인의 복잡성 그 자체이다. - 기술적인 아키텍처도 아니고, 사용자 인터페이스도 아니고, 특정 성질의 것은 더욱 아니다. 이는 업무의 가장 핵심적인 개념에 대한 이해와 개념화(conception)를 둘러싼 모든 것을 설계하고 그러한 핵심을 지원하는..
Domain Driven Design(2) - Entity [Reference Object] 많은 객체들은 이들이 가진 속성이 아니라 일련의 지속성(continuity)과 식별자(identity)를 통해서 기본적으로 정의된다. 어떤 집주인이 자신의 재산에 중대한 손해를 입혔다고 주장하면서 나를 고소했다. 내가 받았던 고소장에는 아파트에 벽에 구멍이 나있으며, 카펫트에는 얼룩이 묻어 있고, 싱크대에 부엌 벽지가 벋겨지게 만든 부식성의 가스를 풍기는 유해한 용액을 있었다고 되어 있다. 법원 서류는 나를 이름과 그 당시의 주소를 근거로 손해를 입힌 세입자로 명기하고 있다. 이 사건은 나로 하여금 혼란으로 주었는데 왜냐하면 그러한 황폐한 장소에 가 본적이 결코 없었기 때문이다. 얼마 후, 나는 잘못된 식별인 경우임에 틀림없다고 생각이 들었다. 나는 고소인에게 전화해서 이러한 사실을 이야기했지만, 나를 ..

반응형