티스토리 뷰


1. The Open-Closed Principe(OCP)
"A module[Component] should be open for extension but closed for modification"

모듈(컴포넌트)는 확장을 지향하도록 설계되어야 하지만 수정하는 것에는 배타적이 되어야한다. 
모듈을 확장하려고 할때, 내부의 설계의 변함없이 모듈의 확장이 이루어 져야 한다고 이해할 수 있다. 

2. The Liskov Substitution Principle(LSP)
"SubClasses should be substituable for their base classes".

서브클래스는 부모클래스를 대체가능해야 한다. 즉, 서브클래스는 부모클래스의 모든 정보, 기능, 행동을 가져야 한다는 것이다.

3. Dependency Inversion Principle(DIP)
"Depend on abstractions. Do not depend on concretions".

추상 클래스에 의존하고, 반대로 특정 구현 클래스에 의존하지 마라.

4. The Interface Segregation Principle(ISP)
"Many client-specific interfaces are better than one general purpose interface"


클라이언트 전용 인터페이스가 하나의 범용 인터페이스 보다 좋다. 

클라이언트는 서로 다른 관심사와 목적을 가지고 있으므로, 자신의 사용하는 기능에 초점을 맞출 수 있는 인터페이스를 가지는 것이 하나의 범용인터페이스를 제공하는 것이 효율적이다. 이 원칙은 클라이언트가 필요한 인터페이스만을 제공하므로 자신이 필요한 기능만을 쉽게 사용할 수 있게한다는 장점이 있다. 

5. The Release Reuse Equivalency Principle(REP)
"The granule of reuse is the granule of release"

재사용의 단위는 배포되는 단위가 같다.

6. The Common Closure Principle(CCP)
"Classes that change together belong together"

서로 같이 수정해야 하는 클래스는 서로 같은 곳에 속해야 한다. 

7. The common Reuse Principle(CRP)
"Classes that aren't reused together should not be grouped together"

같이 재사용되지 않는 클래스들은 서로 같은 그룹에 속해서는 안된다. 

---------------------------------------------------------------------------
Reference
Roger S. Pressman, "SOFTWARE ENGINEERING : A Practitioner's Approach", sixth edition, McGraw-Hill Education, 2005, 331-334.
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31