본문 바로가기

Software Architecture8

[Dev] 애자일(Agile) 방법론 Agile 출처 애자일(Agile)은 소프트웨어 개발 및 프로젝트 관리를 위한 반복적이고 유연한 방법론 및 철학을 지칭하는 용어입니다. 애자일 방법론은 초기 계획보다는 변화에 민첩하게 대처하고 고객의 피드백을 적극 수용하며 작은 단위의 작업을 반복적으로 수행하여 제품을 개선하는데 중점을 두는 개발 방법론입니다. 미리 정해진 몇 개의 단계에 따라 엄격한 순서대로 이루어지는 워터폴(Waterfall) 프로세스와 비교가 많이 되는 반대 개념입니다. 워터폴은 작은 단위의 작업을 신속하게 완료하는데 주력하는 애자일과 달리 몇 달 또는 몇 년이 걸리는 전체 프로젝트에 집중합니다. 애자일은 지속적으로 테스트하는 반면 워터폴은 프로젝트가 끝난 후에야 QA를 실행합니다. 마지막에 테스트를 진행하므로 개발자는 개발 중에 .. 2023. 11. 6.
[Design] 결합도(Coupling) 결합도(Coupling) 커플링은 서로 다른 모듈이나 클래스가 얼마나 강하게 연결되어 있는지를 나타내는 개념입니다. 즉 서로 상호 작용하는 시스템들간의 의존성을 나타내며 모듈 간의 독립성 정도를 나타내는 지표입니다. Tight Coupling 두 요소가 강하게 결합되어 있다는 것은 한 요소가 다른 요소의 내부 동작에 의존하거나 직접 접근하는 상태를 말합니다. 이런 상태에서는 한 요소의 변경은 다른 요소에 직접적인 영향을 미치고 다른 요소에 대한 많은 변경을 요구하게 됩니다. Tight Coupling은 다른 오브젝트에 대한 상당히 많은 정보를 필요로 하고 보통 두 객체간의 인터페이스들에게 서로 높은 의존성을 가지고 있습니다. Loose Coupling 두 요소가 느슨하게 결합되어 있다는 것은 한 요소가 .. 2023. 8. 18.
[GoF] 파사드 패턴(Facade Pattern) Facade Pattern 파사드 패턴(Facade Pattern)은 Gang of Four(GoF) 디자인 패턴 중 하나로 Design Patterns: Elements of Reusable Object-Oriented Software 책에서 소개 된 23가지 디자인 패턴 중 하나입니다. 파사드 패턴은 구조 패턴으로써 하위 시스템을 보다 쉽게 사용할 수 있게 해주는 고급 인터페이스로 표현됩니다. 먼저 파사드(Facade)는 프랑스어 Façade 에서 유래된 단어로 건물의 '외관'이라는 뜻입니다. 하위 시스템(내부 구조)에 있는 인터페이스들에 대한 통합된 고급 인터페이스(외벽)를 제공하는 패턴입니다. 이로써 내부 시스템의 복잡도를 감추기 위해 복잡한 기능을 감싸고 상호 작용할 더 단순한 메소드를 제공하는.. 2023. 8. 17.
[GoF] 어댑터 패턴(Adapter Pattern) Adapter Pattern 어댑터 패턴(Adapter Pattern)은 Gang of Four(GoF) 디자인 패턴 중 하나로 Design Patterns: Elements of Reusable Object-Oriented Software 책에서 소개 된 23가지 디자인 패턴 중 하나입니다. 어댑터 패턴은 구조 패턴으로써 인터페이스를 사용자가 기대하는 다른 인터페이스로 변환하는 패턴으로 호환되지 않는 인터페이스 때문에 함께 동작할 수 없는 인터페이스들이 함께 작동할 수 있도록 변환해주는 디자인 패턴입니다. 이는 인터페이스가 현재의 시스템과 호환되지 않는다고해서 현재의 시스템을 변경을 해야하는 것이 아닌 새로운 소스 코드 수정 없이 함께 작동하도록 만들어주는 것에 의미가 있습니다. 어댑터 패턴은 주로 다.. 2023. 8. 10.
[Dev] BDD(Behavior-Driven Development) BDD BDD란 개발자와 비개발자간의 협업을 강조하는 Agile 소프트웨어 방법론으로 애플리케이션의 예상 동작을 사람이 읽을 수 있는 시나리오를 기반으로 다른 팀들 간의 커뮤니케이션 격차를 해소하고 소프트웨어 요구 사항에 대한 이해를 공유합니다. BDD는 TDD(Test-Driven Development)와 DDD(Domain-Drvien Design)에서 파생된 개발 방법론으로 주로 동작보다는 테스트 구현에 중점을 둡니다. 소프트웨어의 예상 동작에 초첨을 맞춰 행위를 작성하고 결과를 검증함으로써 행위 중심의 도메인 기반 설계 방법입니다. BDD는 특히 해결해야 할 비즈니스 문제가 복잡할 때 효과적인 개발 방법론으로 간주됩니다. Agile과의 관계 BDD를 사용하면 응용 프로그램 수준에서 포괄적인 문서보.. 2023. 8. 8.
[GoF] 템플릿 메소드 패턴(Template Method Pattern) Template Method Pattern 템플릿 메소드 패턴(Template Method Pattern)은 Gang of Four(GoF) 디자인 패턴 중 하나로 Design Patterns: Elements of Reusable Object-Oriented Software 책에서 소개 된 23가지 디자인 패턴 중 하나입니다. 템플릿 메소드 패턴은 행동 패턴으로써 특정 알고리즘을 사용하는 유사한 클래스들의 알고리즘의 구조를 정의하고, 하위 클래스에서는 구조를 변경하지 않고 특정 단계 메소드들을 구체화하여 해당 구조를 표현하기 위해서 사용됩니다. 이를 통해 클라이언트는 특정 알고리즘 구조(템플릿)를 변경하지 않고 구체 메소드를 확장하거나 재정의할 수 있는 유연성을 제공합니다. 또한 정의된 구조를 제외하고.. 2023. 8. 2.
[GoF] 컴포지트 패턴(Composite Pattern) Composite Pattern 컴포지트 패턴(Composite Pattern)은 Gang of Four(GoF) 디자인 패턴 중 하나로 Design Patterns: Elements of Reusable Object-Oriented Software 책에서 소개 된 23가지 디자인 패턴 중 하나입니다. 컴포지트 패턴은 구조 패턴으로써 객체들을 트리 구조로 구성하는 방법을 제공하며 개별 객체와 복합 객체를 일관된 방식으로 다룰 수 있게 해주고, 객체 간의 전체-부분 계층을 표현할 수 있도록 합니다. 컴포지트 패턴의 주요 아이디어는 단일 객체와 복합 객체를 동일한 인터페이스로 다루기입니다. 이를 통해 클라이언트는 개별 객체와 복합 객체를 구별하지 않고 일관된 방식으로 즉, 클라이언트는 개별 객체든 복합 객체.. 2023. 7. 31.
[Term] State vs Status State와 Status는 둘다 프로그램이나 시스템이 현재 어떤 상태에 있는지를 나타내는 용어입니다. 그러나 이 둘은 서로 다른 의미를 가지고 있습니다. 프로그래밍 관점에서 어떻게 다르며, 사용될 수 있는 예는 어떻게 되는지 알아보도록 하겠습니다. State State는 객체의 내부 데이터나 현재 상태를 의미합니다. 객체의 상태는 해당 객체의 속성 값들의 조합으로 정의합니다. 예를 들어 프로그램에서 자동차 객체를 모델링하고있다면, 자동차 객체의 내부 데이터는 아래와 같은 상태로 나타낼 수 있습니다. 현재 속도 기름의 양 주행거리 또 서버 프로그래밍에서 사용자가 로그인한 경우에 대한 상태(State)는 아래와 같이 가질 수 있습니다. 사용자 이름 로그인 시간 사용자가 수행한 작업 위의 예와 같이 State.. 2023. 7. 25.