용어 정리 - RSA

IT/ibm 2012. 12. 11. 10:12
  • cyclic dependency

JDepend같은 툴은 그런면에서 많은 도움이 될 수 있는 분석도구이다.  그 사용법에 관한 좋은 아티클(Managing Your Dependencies with JDepend)도 여럿 찾아볼 수 있다.

의존관계 분석에서 중요한 것 중의 하나는 순환의존관계(Cyclic Dependency)이다. Cyclic Dependency는 많은 문제를 일으키는 안좋은 설계의 대표적인 예이다. Cyclic Dependency가 일으킬 수 있는 문제점은 매우 다양하다. 위에서 얘기한 OnJava의 아티클이나 Krkk의 블로그에 그 이유들이 잘 설명되어있다. 상식적으로도 컴포넌트나 패키지, 모듈이 순환적인 의존관계를 가지면 안된다는 것은 쉽게 이해할 수 있다.

Layered Architecture를 설계할 때에 주의 할 것이 바로 한 방향으만 의존관계를 가져야한다는 점이다. Isolation이니 Decoupling이니 하는 것들은 귀가 따갑도록 들어왔다. Service layer가 UI(MVC) layer에 의존적이거나 DAO layer가 Service Layer와 상호의존적이라는 것은 잘못된 Layered Architecture의 대표적인 사례이다. Spring이나 Ioc/DI를 지지하는 많은 사람들이 추구했던 것이 결국 잘못된 의존관계로 인해서 매우 지저분하게 coupling된 시스템을 피하자는 것이었다.

출처 :http://toby.epril.com/?p=263

  • antipattern

"소프트웨어 공학에서, 안티-패턴이란 흔히 사용되기도 하는 패턴이지만 실무적으로는 비효율적인 그리고/또는 생산적이지 못한 패턴을 말한다."
(원문 URL: http://en.wikipedia.org/wiki/Anti-pattern)

잘 알려진 anti-pattern중 흥미가 가는 것 몇 개를 소개합니다.

1. God object: 하나의 클래스에 너무 많은 필드와 함수를 넣어서 너무 많은 것을 알고 너무 많은 것을 할 줄 아는 객체. 전지 전능한 object라고 비꼬는 의미에서 그러한 이름이 붙은 것으로 보임.

2. Spaghetti code: 이해하기 힘든 구조를 가진 프로그램. 예를 들어서, goto 가 남발한 code. code가 스파게티 면발같이 비비 꼬였다고 해서 붙여진 경멸적인 용어.

3. Hard code: 프로그램 소스 코드에 직접 설정 값이나 입력 값이 삽입된 code. 값들이 마치 hardware circuit처럼 고정되어 변경되지 않는다는 것에 유래된 용어.

4. Software bloat: 프로그램 새 버전이 나올 때마다 사용자에게 필요 없는 기능이 추가되거나 점점 더 많은 시스템 자원을 사용하는 경향을 이르는 용어. bloat는 부풀다는 뜻.

5. Database-as-IPC: database를 IPC(Inter-Process Communication)을 위한 message queue로 사용하는 것. 더 적절한 mechanism이 있음에도 불구하고


System Pattern

Design Pattern

Structural Pattern

Object-Oriented Pattern


  • Architectural Discovery

Anarchitectural discovery identifies patterns and antipatterns in application code and studies how components are connected to provide application design information.

When you create an analysis configuration for architectural discovery, you can choose which patterns to look for in your Java™ source code.

  • Design patterns, which include some of the classic Gang of Four patterns
  • Object-oriented patterns, which include abstraction and inheritance trees
  • Structural patterns, which include patterns based on irregular structural connectivity between components, including antipatterns such as cyclic dependencies
  • System patterns, which detect all packages in the workspace


  • ViewPoint(관점)

window - Preference - Modeling - viewpoint(관점)


  • OCL(Object Contraint Language)


  • «modelLibrary»

To indicate a Standard Stereotype (see Annex C, “Standard Stereotypes”). For example, the «modelLibrary»
keyword attached to a package identifies that the package contains a set of model elements intended to be shared by
multiple models.






Posted by 즐건세상
l