솔리드

SOLID

소프트웨어 엔지니어링에서 SOLD는 소프트웨어 설계를 보다 이해하기 쉽고, 유연하며, 유지 관리할 수 있도록 하기 위한 5가지 설계 원리의 니모닉 약자다.그 원칙들은 미국의 소프트웨어 엔지니어 겸 강사 로버트 C에 의해 추진된 많은 원칙들의 하위 집합이다. 마틴은 2000년 논문 디자인 원리와 디자인 패턴을 처음 소개하였다.[1][2][3][2][4]

SOLD 아이디어는

  • " 학급이 변화해야 할 이유가 한 가지 이상이어서는 안 된다"[5]는 단일 책임 원칙.즉, 모든 계급은 오직 하나의 책임만을 가져야 한다.[6]
  • 개방-폐쇄 원칙: "소프트웨어 엔터티...연장은 개방하되 수정은 폐쇄해야 한다."[7]
  • 리스크코프 대체 원칙: "기본 클래스에 대한 포인터나 참조를 사용하는 기능은 그것을 알지 못한 채 파생 클래스의 객체를 사용할 수 있어야 한다."[8]계약별 설계를 참조하십시오.[8]
  • 인터페이스 분리 원칙: "많은 클라이언트별 인터페이스가 하나의 범용 인터페이스보다 낫다."[9][4]
  • 의존성 뒤집기 원칙: "추상성에 의존함, [아니오] 구체화에 의존함."[10][4]

SOLD 약자는 2004년경 마이클 플레즈에 의해 소개되었다.[11]

SOLD 원칙은 어떤 객체 지향 설계에도 적용되지만, 민첩한 개발이나 적응형 소프트웨어 개발 등의 방법론에 대한 핵심 철학을 형성할 수도 있다.[3]

참고 항목

참조

  1. ^ Robert C. Martin. "Principles Of OOD". butunclebob.com. Retrieved 2014-07-17.. (이 글에서는 약어가 사용되지 않지만, "최초 5원칙"을 참고하십시오.)적어도 2003년으로 거슬러 올라간다.
  2. ^ a b Robert C. Martin. "Getting a SOLID start". objectmentor.com. Retrieved 2013-08-19.
  3. ^ a b Sandi Metz (May 2009). "SOLID Object-Oriented Design". YouTube. Archived from the original on 2021-12-21. Retrieved 2019-08-13. 2009년 고담 루비 컨퍼런스에서 강연하십시오.
  4. ^ a b c Martin, Robert C. (2000). "Design Principles and Design Patterns" (PDF). Archived from the original (PDF) on 2015-09-06.
  5. ^ "Single Responsibility Principle" (PDF). objectmentor.com. Archived from the original (PDF) on 2 February 2015.
  6. ^ Martin, Robert C. (2003). Agile Software Development, Principles, Patterns, and Practices. Prentice Hall. p. 95. ISBN 978-0135974445.
  7. ^ "Open/Closed Principle" (PDF). objectmentor.com. Archived from the original (PDF) on 5 September 2015.
  8. ^ a b "Liskov Substitution Principle" (PDF). objectmentor.com. Archived from the original (PDF) on 5 September 2015.
  9. ^ "Interface Segregation Principle" (PDF). objectmentor.com. 1996. Archived from the original (PDF) on 5 September 2015.
  10. ^ "Dependency Inversion Principle" (PDF). objectmentor.com. Archived from the original (PDF) on 5 September 2015.
  11. ^ Martin, Robert (2018). Clean Architecture: A Craftsman's Guide to Software Structure and Design. p. 58. ISBN 9780134494166.