336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

"소프트웨어 개발 생명주기를 검토한 후, 공학 설계의 기준을 실제로 만족시킬 유일한 소프트웨어 문서는 소스 코드 목록뿐임을 알 수 있었다" - 잭 리브스 (Jack Reeves)

일련의 UML 다이어그램이 설계의 일부를 나타낼 수는 있지만 설계 자체는 아니다. 소프트웨어 프로젝트의 설계는 추상적인 개념으로, 구체적인 각 모듈, 클래스, 메소드의 형태와 구조뿐만 아니라 프로그램의 전체 형태와 구조와도 관련되어 있다. 이것은 다양한 매체로 표현될 수 있지만, 최종적인 구현은 소스 코드가 되고 이것이 결국 바로 설계다


대부분의 소프트웨어 프로젝트에서 가장 변덕스러운 요소는 바로 요구사항이다. 요구사항은 끊임없이 변화한다. 우리는 변하는 요구사항의 세계에 살고 있고, 우리가 만든 소프트웨어가 이런 변화 속에서 살아남을 수 있게 만드는 것이 바로 우리가 해야 하는 일이다.

애자일 팀은 개방 폐쇄 원칙(OCP : Open-Closed Principle)을 따른다. 이 원칙은 프로그래머가 모듈을 수정하지 않고도 설계를 확장하도록 이끈다.

애자일 개발자는 설계는 가능한 한 적절하고 명료한 상태로 유지하기 위해 애쓴다. 몇 주마다 한 번씩 설계를 Clean up 하지 않는다. 매일, 매시간, 심지어 분마다 소프트웨어를 가능한 명료하고, 간단하고, 표현적인 상태로 유지한다. 절대 부패가 시작되도록 놔두지 않는다.


▒ 애자일 설계의 패턴 (SOLID)


1) 단일 책임의 원칙 (SRP : Single-Responsibility Principle)

한 클래스는 단 한 가지의 변경 이유만을 가져야 한다.

한 클래스가 하나 이상의 책임을 맡는다면, 그 클래스를 변경할 하나 이상의 이유가 있을 것이다. 만약 한 클래스가 하나 이상의 책임을 맡는다면, 그 책임들은 경합이 되고, 한 책임에 대한 변경은 다른 책임을 충족시키는 클래스의 능력을 떨어뜨리거나 저하시킬 수도 있다. 이런 종류의 결합은 변경을 했을 대 예상치 못한 방식으로 잘못 동작하는 취약한 설계를 유발한다.

<SRP 위반>

위 그림에서 Rectangle Class는 직사각형 모양의 수학적 모델 제공과 그래픽 사용자 인터페이스에 직사각형을 그리는 2가지의 책임을 맡고 있음으로 SRP를 위반한다.

그러면 '책임' 이란 무엇인가?

책임을 '변경을 위한 이유'로 정의한다. 만약 한 클래스를 변경하기 위한 한 가지 이상의 이유를 생각할 수 있다면, 그 클래스는 한가지 이상의 책임을 맡고 있는 것이다.


2) 개방 폐쇄 원칙 (OCP : Open-Closed Principle)

소프트웨어 개체 (클래스, 모듈, 함수등)는 확장에 열려 있어야 하고, 수정에 대해서는 닫혀 있어야 한다.

프로그램 한 군데를 변경한 것이 의존적인 모듈에서 단계적인 변경을 불러일으킬 때, 이 설계는 경직성의 악취를 풍긴다. OCP에서는 시스템을 리팩토링하여 나중에 일어날 그와 같은 종류의 변경이 더 이상 수정을 유발하지 않도록 하라고 충고한다. OCP가 잘 적용된다면, 이미 제대로 동작하고 있던 원래 코드를 변경하는 것이 아니라 새로운 코드를 덧붙임으로써 나중에 그런 변경을 할 수 있게 된다.

OCP 원칙의 해결책은 추상화다.

그렇다고 애플리케이션의 모든 부분에 마구 추상화를 적용하는 것도 좋은 생각이 아니다. 프로그램에서 자주 변경되는 부분에만 추상화를 적용하기 위한 개발자의 헌신이 필요하다. 어설픈 추상화를 피하는 일은 추상화 자체만큼이나 중요하다.



3) 리스코프 치환 원칙 (LSP : Liskov Substitution Principle)

서브타입(subtype)은 그것의 기반 타입(base type)으로 치환 가능해야 한다.

OCP는 OOD를 위해 논의된 수많은 의견 중에서도 핵심이다. 이 원칙이 효력을 가질 때, 애플리케이션은 좀 더 유지보수 가능하고, 재사용 가능하고, 견고해진다. LSP는 OCP를 가능하게 하는 주요 요인 중 하나다. 이것은 기반 타입으로 표현된 모듈을 수정 없이도 확장 가능하게 만드는, 서브 타입의 치환 가능성을 말한다.

4) 단일 책임의 원칙 (SRP : Single-Responsibility Principle)

한 클래


5) 단일 책임의 원칙 (SRP : Single-Responsibility Principle)

한 클래


블로그 이미지

뚱땡이 우주인

,