객체지향 분석(OOA; Object Oriented Analysis)

객체지향 분석은 사용자의 요구사항과 관련된 객체, 속성, 연산, 관계 등을 정의하여 모델링하는 작업이다.

개발을 위한 업무를 객체와 속성, 클래스와 멤버, 전체와 부분 등으로 나누어서 분석한다.
클래스를 식별하는 것이 객체지향 분석의 주요 목적이다.

객체지향 분석 방법론

대표적인 방법론은 다음과 같다.

  • Rumbaugh
    - 분석 활동을 객체 모델, 동적 모델, 기능 모델로 나누어 수행
  • Booch
    - 미시적(Micro) 개발 프로세스와 거시적(Macro) 개발 프로세스를 모두 사용
    - 클래스와 객체들을 분석 및 식별하고 클래스의 속성과 연산을 정의
  • Jacobson
    - 유스 케이스(Use Case)를 강조하여 사용
  • Coad and Yourdon
    - E-R 다이어그램을 사용하여 객체의 행위를 모델링
    - 객체 식별, 구조 식별, 주제 정의, 속성과 인스턴스 연결 정의, 연산과 메시지 연결 정의 등의 과정으로 구성
  • Wirfs-Brock
    - 분석과 설계 간 구분이 없고, 고객 명세서를 평가해서 설계 작업까지 연속적으로 수행

 

럼바우(Rumbaugh)의 분석 기법

럼바우 분석 기법은 모든 소프트웨어 구성 요소를 그래픽 표기법을 이용하여 모델링하는 기법이다.

객체 모델링 기법(OMT, Object-Modeling Technique)이라고도 한다.
분석 활동은 객체 모델링 -> 동적 모델링 -> 기능 모델링 순으로 이루어진다.

 

객체 모델링(Object Modeling) 정보 모델링(Information Modeling)이라고도 하며, 시스템에서 요구되는 객체를 찾아내서 속성과 연산 식별 및 객체들 간의 관계를 규정하여 객체 다이어그램으로 표시하는 것
동적 모델링(Dynamic Modeling) 상태 다이어그램을 이용하여 시간의 흐름에 따른 객체들 간의 제어 흐름, 상호 작용, 동작 순서 등의 동적인 행위를 표현하는 모델링
기능 모델링(Functional Modeling) 자료 흐름도(DFD)를 이용하여 다수의 프로세스들 간의 자료 흐름을 중심으로 처리 과정을 표현한 모델링

 

객체지향 설계 원칙

객체지향 설계 원칙은 변경이나 확장에 유연한 시스템을 설계하기 위해 지켜야 하는 원칙이다.

좋은 객체지향 설계를 위해서 5가지 원칙의 앞글자를 딴 SOLID 원칙을 알아야한다.

SOLID 원칙

 

1. SRP - Single responsiblity principle(단일 책임 원칙)
- 한 클래스는 하나의 책임만 가져야 한다.
- 하나의 책임이라는 것은 모호하다고 볼 수 있으며, 중요한 기준은 변경으로 변경이 있을 때 파급 효과가 적으면
  단일 책임 원칙을 잘 따른 것이라고 볼 수 있다.
2. OCP
- Open/closed principle(개방-폐쇄 원칙)
- 소프트웨어 요소는 확장에는 열려있으나 변경에는 닫혀있어야 한다.

- 다형성을 활용하여 역할과 구현의 분리를 생각해 보면 가능하다.
- 객체를 생성하고, 연관 관계를 맺어주는 별도의 조립, 설정자가 필요하며 그 역할을 스프링이 한다.
예시) 인터페이스를 구현한 새로운 클래스를 하나 만들어서 새로운 기능을 구현
3. LSP
- Liskov substitution principle(리스코프 치환 원칙)
- 프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.

- 다형성에서 하위 클래스는 인터페이스 규약을 다 지켜야 한다는 것. 다형성을 지원하기 위한 원칙으로 인터페이스를 구현한 구현체를 믿고 사용하려면 이 원칙이 필요하다.
예시) 자동차 인터페이스의 엑셀은 앞으로 가라는 기능을 의미한다. 만약 액셀을 밟았는데 뒤로 가게 구현한다면 이는 LSP를 위반한 것이다. 액셀을 밟으면 느리더라도 앞으로 가야 한다.
4. ISP
- Interface segregation principle(인터페이스 분리 원칙)

- 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다.
- 분리하면 인터페이스가 명확해지고, 대체 가능성이 높아진다.
예시) 자동차 인터페이스 -> 운전 인터페이스, 정비 인터페이스로 분리한다. 분리하면 정비 인터페이스가 변해도 운전에는 영향을 주지 않는다.
5. DIP
- Dependency inversion principle(의존관계 역전 원칙)
- 프로그래머는 "추상화에 의존해야지, 구체화에 의존하면 안 된다."
- 의존성 주입은 이 원칙을 따르는 방법 중 하나이다.

- 쉽게 이야기하자면 구현 클래스에 의존하지 않고, 인터페이스에 의존하라는 뜻이다.
- 다형성에서 이야기 한 역할에 의존하게 해야 한다는 것과 같다. 구현체에 의존하게 되면 변경이 어려워진다.

 

SOLID와 객체 지향 설계 원칙에 대해 더 자세히 알고 싶다면 해당 글을 추천한다.

2023.08.20 - [Back-End/Spring] - 스프링 핵심 원리 요약 - 1

 

스프링 핵심 원리 요약 - 1

본 내용은 해당 강의를 듣고 필요에 맞게 요약한 글입니다. https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8 스프링 핵심 원리 - 기본편 - 인프런 |

woojoham.tistory.com

 

'정보처리기사' 카테고리의 다른 글

결합도와 응집도  (0) 2023.10.03
디자인 패턴  (0) 2023.10.03
EAI, ESB, Web Service  (0) 2023.10.02
개발 단계 별 애플리케이션 테스트  (0) 2023.10.02
애플리케이션 테스트  (0) 2023.10.02

모듈은 모듈화를 통해 분리된 시스템의 각 기능으로 서브 루틴, 서브시스템, 소프트웨어 내의 프로그램, 작업 단위 등을 의미한다.

모듈의 기능적 독립성은 소프트웨어를 구성하는 각 모듈이 기능이 서로 독립됨을 의미하는데
이 모듈의 독립성은 결합도(Coupling)과 응집도(Cohesion)에 의해 측정된다.

 

결합도(Coupling)

결합도는 모듈 간에 상호 의존하는 정도 또는 두 모듈 사이의 연관 관계이다.

 

결합도는 약할수록 품질이 높고, 강할수록 품질이 낮다.
결합도가 낮다는 건 의존성이 낮다는 의미이며, 이는 모듈 간에 독립적으로 변경 및 재사용이 가능하고 유지 보수와 확장에 용이하다는 것을 뜻한다.
반대로 결합도가 높다는 건 모듈이 서로 강력하게 의존하고 있다는 의미이다.
이러한 경우 하나의 모듈을 변경하면 다른 모듈에 영향을 끼칠 가능성이 높다는 말이며, 유지 보수가 어렵고 시스템의 유연성이 낮다는 걸 의미한다.

내용 결합도 공통 결합도 외부 결합도 제어 결합도 스탬프 결합도 자료 결합도
결합도 강함 <ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ> 결합도 약함
  • 내용 결합도(Content Coupling)
    - 한 모듈이 다른 모듈의 내부 기능 및 그 내부 자료를 직접 참조하거나 수정할 때의 결합도
  • 공통(공유) 결합도(Common Coupling)
    - 공유되는 공통 데이터 영역을 여러 모듈이 사용할 때의 결합도
    - 파라미터가 아닌 모듈 밖에 선언된 전역 변수를 사용하여 전역 변수를 갱신하는 방식으로
      상호작용 하는 때의 결합도
  • 외부 결합도(External Coupling)
    - 어떤 모듈에서 선언한 데이터(변수)를 외부의 다른 모듈에서 참조할 때의 결합도
  • 제어 결합도(Control Coupling)
    - 어떤 모듈이 다른 모듈 내부의 논리적인 흐름을 제어하기 위해 제어 신호나 제어 요소를 전달하는 결합도
    - 하위 모듈에서 상위 모듈로 제어 신호가 이동하여 하위 모듈이 상위 모듈에게 명령을 내리는 권리 전도 현상 발생
  • 스탬프(검인) 결합도(Stamp Coupling)
    - 모듈 간의 인터페이스로 배열이나 레코드 등의 자료 구조가 전달될 때의 결합도
  • 자료 결합도
    - 모듈 간의 인터페이스가 자료 요소로 구성될 때의 결합도

 

응집도(Cohesion)

응집도는 모듈의 내부 요소들이 서로 관련되어 있는 정도이다.


응집도는 높을수록 품질이 높고, 약할수록 품질이 낮다.
응집도가 높다는 것은 모듈 내의 요소들이 서로 관련이 높아서 한가지 잘 정의된 기능을 수행하고 있다는 것을 뜻한다.
반대로 응집도가 낮다는 것은 해당 구성 요소의 역할이 모호하며 서로 다른 작업을 수행하고 있다는 의미이다.

기능적 응집도 순차적 응집도 교환적 응집도 절차적응집도 시간적응집도 논리적 응집도 우연적 응집도
응집도 강함 <ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ> 응집도 약함
  • 기능적 응집도(Functional Cohesion)
    - 모듈 내부의 모든 기능 요소들이 단일 문제와 연관되어 수행될 경우의 응집도
  • 순차적 응집도(Sequential Cohesion)
    - 모듈 내 하나의 활동으로부터 나온 출력 데이터를 그 다음 활동의 입력 데이터로 사용할 경우의 응집도
  • 교환(통신)적 응집도(Communication Cohesion)
    - 동일한 입력과 출력을 사용하여 서로 다른 기능을 수행하는 구성 요소들이 모였을 경우의 응집도
  • 절차적 응집도(Procedural Cohesion)
    - 모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성 요소들이 그 기능을 순차적으로 수행할 경우의 응집도
  • 시간적 응집도(Temporal Cohesion)
    -  특정 시간에 처리되는 몇 개의 기능을 모아 하나의 모듈로 작성할 경우의 응집도
  • 논리적 응집도(Logical Cohesion)
    - 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들로 하나의 모듈이 형성되는 경우의 응집도
  • 우연적 응집도(Coincidental Cohesion)
    - 모듈 내부의 각 구성 요소들이 서로 관련 없는 요소로만 구성된 경우의 응집도

 

'정보처리기사' 카테고리의 다른 글

객체지향 분석 및 설계  (2) 2023.10.04
디자인 패턴  (0) 2023.10.03
EAI, ESB, Web Service  (0) 2023.10.02
개발 단계 별 애플리케이션 테스트  (0) 2023.10.02
애플리케이션 테스트  (0) 2023.10.02

디자인 패턴(Design Pattern)

디자인 패턴은 모듈 간의 관계 및 인터페이스를 설계할 때 참조할 수 있는 전형적인 해결 방식 또는 예제를 의미한다.

즉 소프트웨어 디자인에서 자주 발생하는 문제를 해결하기 위한 해결책 또는 설계 템플릿이라고 볼 수 있다.

 

디자인 패턴의 장점

  • 재사용성 (Reusability) 
    - 디자인 패턴의 장점은 이미 검증된 설계 원칙과 솔루션을 제공하므로, 개발자는 이를 활용하여 비슷한 문제에 대해
      동일한 코드를 작성하지 않고도 코드의 재사용이 가능하며, 개발 시간을 단축할 수 있다.
  • 유지 보수성 (Maintainability)
    - 디자인 패턴은 코드를 일관되게 유지하고, 읽기 쉽게 만들어준다. 따라서 코도의 가독성과 유지 보수성이 향상된다.
  • 개발자 간의 커뮤니케이션 향상
    - 디자인 패턴은 일반적인 용어와 개념을 제공하기 때문에 팀 내의 구성원들이 잘 이해하고 협력할 수 있다.
      또한 설계에 대한 논의와 결정을 하기에도 도움을 준다.

디자인 패턴의 단점

  • 디자인 패턴의 남용
    - 디자인 패턴을 과도하게 사용하면 코드가 오히려 더 복잡해질 수 있고, 개발자들 간의 일관성을 헤칠 수 있다.
  • 디자인 패턴의 오용
    - 불필요한 추상화나 복잡한 패턴을 사용하면 코드의 의도를 이해하기 더 어려울 수 있고,
      유지보수 측면에도 마이너스가 될 수 있다.
  • 오버 엔지니어링
    - 모든 문제에 대해서 과도하게 디자인 패턴을 적용하려고 노력하는 것이 오히려 해로울 수 있다.
      작은 프로젝트나 간단한 문제에는 단순하게 하는 것이 더 좋을 수 있다는 말

GoF (Gang of Four)

대표적인 디자인 패턴이 바로 GoF(Gang of Four) 디자인 패턴이다.

 

Gang of Four??


이름이 잘 와닿지 않아서 왜 GoF인지부터 찾아보았다.
그전까지 Gang이란 단어가 범죄 조직이나 그룹같은 걸 의미하는 줄 알았는데
범죄 집단이라는 의미말고도 일반적인 의미로 어떤 목적을 위해 모여있는 집단, 그룹의 의미도 있다고 한다.

따라서 Gang of Four의 의미는 4명의 저자 그룹을 가리키는 별칭이다.
네 명의 저자 그룹은 에릭 감마 (Erich Gamma), 리처드 헬름 (Richard Helm), 랄프 존슨 (Ralph Johnson), 존 블리시디스 (John Vlissides) 으로 구성되어 있다.

이 그룹은 소프트웨어 디자인 패턴을 정리하고 문서화 한 Design Patterns: Elements of Reusable Object-Oriented Software라는 책의 공동 저자로 활동했다.이 책은 소프트웨어 개발자들 사이에서 매우 중요하며 영향력 있는 자료로 여겨지며, 디자인 패턴을 이해하고 활용하는 데 많은 도움을 준 것으로 유명하다.


따라서 이 책을 참고할 때 GoF 패턴이라는 이름이 사용되고 있다.

이제 GoF 디자인 패턴에 대해 자세히 알아보자.
GoF 디자인 패턴은 크게 생성(Creational) 패턴, 구조(Structural) 패턴, 행위(Behavioral) 패턴 으로 나뉜다.

 

생성 패턴(Creational Pattern)

생성 패턴은 클래스나 객체의 생성과 참조 과정을 정의하는 패턴이다.

  • 추상 팩토리(Abstract Factory)
    - 구체적인 클래스에 의존하지 않고, 인터페이스를 통해 서로 연관·의존하는 객체들의 그룹으로 생성하여 추상적으로 표현한다.
    - 연관된 서브 클래스를 묶어 한 번에 교체하는 것이 가능하다.
  • 빌더(Builder)
    - 작게 분리된 인스턴스를 건축하듯이 조합하여 객체를 생성한다.
    - 객체의 생성 과정과 표현 과정을 분리하여, 동일한 객체 생성에서도 서로 다른 결과를 만들어 낼 수 있게하는 패턴
  • 팩토리 메서드(Factory Method)
    - 객체 생성을 서브 클래스에서 처리하도록 분리하여 캡슐화 한 패턴
    - 상위 클래스에서는 인터페이스만 정의하고, 실제 생성은 서브 클래스가 담당
    - 가상 생성자(Virtual Constructor)패턴이라고도 함 
  • 프로토타입(Prototype)
    - 원본 객체를 복제하는 방법으로 객체를 생성하는 패턴
    - 비용이 큰 경우 주로 이용함
  • 싱글톤(Singleton)
    - 클래스 내에 인스턴스가 하나임을 보장하는 패턴
    - 하나의 객체를 생성하면 어디서든 참조할 수 있지만 여러 프로세스가 동시에 참조할 수 없다
    - 불필요한 객체 생성에 대한 메모리 낭비를 최소화할 수 있다

구조 패턴(Structural Pattern)

구조 패턴은 복잡한 구조의 시스템을 개발하기 쉽도록 클래스나 객체들을 조합하여 더 큰 구조로 만드는 패턴이다.

  • 어댑터(Adapter)
    - 호환성이 없는 클래스들의 인터페이스를 다른 클래스가 이용할 수 있도록 변환해주는 패턴
    - 기존의 클래스를 이용하고 싶지만 인터페이스가 일치하지 않을 때 사용
  • 브리지(Bridge)
    - 구현부에서 추상층을 분리하여, 서로가 독립적으로 확장할 수 있도록 구성한 패턴
    - 기능과 구현을 두 개의 별도 클래스로 구현
  • 컴포지트(Composite)
    - 어려 객체를 가진 복합 객체와 단일 객체를 구분 없이 다루고자 할 때 사용하는 패턴
    - 객체들을 트리 구조로 구성하여 복합 객체 안에 복합 객체가 포함되는 구조를 구현할 수 있다.
  • 데코레이터(Decorator)
    - 객체 간의 결합을 통해 능동적으로 기능들을 확장할 수 있는 패턴
    - 임의의 객체에 기능을 추가하기 위해 다른 객체들을 덧붙이는 방식으로 구현
  • 퍼싸드(Facade)
    - 복잡한 서브 클래스들을 피해 더 상위에 인터페이스를 구성하여 서브 클래들의 기능을 간편하게 사용할 수 있도록 하는 패턴
    - 서브 클래스들 사이의 통합 인터페이스를 제공하는 Wrapper 객체가 필요
  • 플라이웨이트(Flyweight)
    - 인스턴스가 필요할 때마다 매번 생성하지 않고 가능한 한 공유해서 사용하여 메모리를 절약하는 패턴
    - 다수의 유사 객체를 생성하거나 조작할 떄 유용
  • 프록시(Proxy)
    - 접근이 어려운 객체와 연결하려는 객체 사이에서 인터페이스 역할을 하는 패턴
    - 네트워크 연결, 메모리의 대용량 객체 접은에 줘사ㅛㅇ

행위 패턴(Behavioral Pattern)

행위 패턴은 클래스나 객체들이 서로 상호작용을 하는 방버이나 책임 분배 방법을 정의하는 패턴이다.

  • 책임 연쇄(Chain of Responsibility)
    - 요청을 처리할 수 있는 객체다 둘 이상 존재하여 한 객체가 처리하지 못하면 다음 객체로 넘어가는 패턴
    - 요청을 처리하는 객체들이 연결되어 있어서 요청이 해결될 때까지 고리(Chain)를 따라 책임이 넘어간다.
  • 커맨드(Command)
    -  요청을 객체의 형태로 캡슐화하여 재이용하거나 취소할 수 있도록 요청에 필요한 정보를 저장하거나 로그를 남기는 패턴
    - 요청에 사용되는 각종 명령어들을 추상 클래스와 구체 클래스로 분리화하여 단순화한다
  • 인터프리터(Interpreter)
    - 언어에 문법 표현을 정의하는 패턴
    - SQL 언어나 통신 프로토콜을 개발할 때 사용
  • 반복자(Iterator)
    - 자료 구조와 같이 접근이 잦은 객체에 대해 동일한 인터페이스를 사용하도록 하는 패턴
    - 내부 표현 방법의 노출 없이 순차적인 접근이 가능
  • 중재자(Mediator)
    - 수많은 객체들 간의 복잡한 상호작용(Intertface)을 캡슐화하여 객체로 정의하는 패턴
    - 객체 사이의 의존성을 줄여 결합도(Coupling)를 감소시킬 수 있다
  • 메멘토(Memento)
    - 특정 시점에서의 객체 내부 상태를 객체화함으로써 이후 요청에 따라 객체를 해당 시점의 상태로 돌릴 수 있는 기능을 제공하는 패턴
    - Ctrl + Z와 같은 되돌리기 기능을 개발할 때 주로 사용
  • 옵서버(Observer)
    - 한 객체의 상태가 변화하면 객체에 상속되어 있는 다른 객체들에게 변화된 상태를 전달하는 패턴
    - 주로 분산 시스템 간에 이벤트를 생성·발행(Publish)하고, 이를 수신·구독(Subscribe)할 때 사용
  • 상태(State)
    - 객체의 상태에 따라 동일한 동작을 다르게 처리해야 할 때 사용하는 패턴
    - 객체 상태를 캡슐화하고, 이를 참조하는 방식으로 처리
  • 전략(Strategy)
    - 동일한 계열의 알고리즘들을 개별적으로 캡슐화하여 상호 교환할 수 있게 정의하는 패턴
    - 클라이언트는 원하는 알고리즘을 선택하여 사용할 수 있으며, 클라이언트에 영향 없이 알고리즘 변경이 가능하다
  • 템플릿 메서드(Template Method)
    - 상위 클래스에서 골격을 정의하고, 하위 클래스에서 세부 처리를 구체화하는 구조의 패턴
    - 유사한 서브 클래스를 묶어 공통된 내용을 상위 클래스에서 정의함으로써 코드의 양을 줄이고 유지보수를 용이하게 해주는 패턴
  • 방문자(Visitor)
    - 각 클래스 들의 데이터 구조에서 처리 기능을 분리하여 별도의 클래스로 구성하는 패턴
    - 분리 처리 기능은 각 클래스를 방문(Visit)하여 수행한다


디자인 패턴은 글로만 정리하면 확실히 확 와닿지는 않는 것 같다.
그래서 유명한 책인 헤드 퍼스트 디자인 패턴이라는 책을 구매하였다.
https://product.kyobobook.co.kr/detail/S000001810483

 

헤드 퍼스트 디자인 패턴 | 에릭 프리먼 - 교보문고

헤드 퍼스트 디자인 패턴 |

product.kyobobook.co.kr

이 책을 읽고, 더 자세히 이해하고 적용해 볼 수 있도록 노력해보려고 한다.

'정보처리기사' 카테고리의 다른 글

객체지향 분석 및 설계  (2) 2023.10.04
결합도와 응집도  (0) 2023.10.03
EAI, ESB, Web Service  (0) 2023.10.02
개발 단계 별 애플리케이션 테스트  (0) 2023.10.02
애플리케이션 테스트  (0) 2023.10.02

모듈 연계란 모듈 간 데이터 교환을 위한 관계를 설정하는 것이다.
모듈 연계의 대표적인 방법이 제목에서 언급한 EAI, ESB, Web Service이다.

자세히 알아보자.

 

EAI (Enterprise Application Integration)

EAI는 기업 내 각종 애플리케이션 및 플랫폼 간의 정보 전달, 연계, 통합 등 상호 연동이 가능하게 해주는 솔루션이다.

EAI의 구축 유형은 다음과 같다.

Point-To-Point

가장 기본적인 애플리케이션 통합 방식으로, 애플리케이션을 1:1로 연결하는 방식이다.
단점으로는 변경 및 재사용이 어렵다.

Hub & Spoke

단일 접점인 허브 시스템을 통해 데이터를 전송하는 중앙 집중형 방식이다.

확장 및 유지 보수가 용이하다는 장점이 있다.
단점으로는 허브 장애 발생 시 시스템 전체에 영향을 준다는 점이다.

Message Bus

ESB 방식과 동일한 방식으로, 애플리케이션 사이에 미들웨어를 두어 처리하는 방식이다.

확장성이 뛰어나며, 대용량 처리가 가능하다는 장점이 있다.

Hybrid

Message Bus와 Hub & Spoke의 혼합 방식이다. 그룹 내에서는 Hub & Spoke 방식을 사용하며,

그룹 간에는 Message Bus 방식을 사용한다.

필요한 경우 한 가지 방식으로 EAI를 구성하는 방법도 가능하다.

데이터 병목 현상을 최소화할 수 있다는 장점이 있다.

 

 

ESB (Enterprise Service Bus)

ESB는 애플리케이션 간 연계, 데이터 변환, 웹 서비스 지원 등 표준 기반 인터페이스를 제공하는 솔루션이다.

 

애플리케이션 통합 측면에서 EAI와 유사하지만 서비스 중심의 통합을 지향한다는 게 차이점이다.

특정 서비스에 국한되지 않고 범용적으로 사용하기 위해 애플리케이션과 약한 결합도(Coupling)을 유지한다.

관리 및 보안 유지가 쉬우며, 높은 품질이 지원 가능하다는 장점이 있다.

 

웹 서비스 (Web Service)

웹 서비스는 네트워크 정보를 표준화된 서비스 형태로 만들어 공유하는 기술이다.

 

웹 서비스는 서비스 지향 아키텍처 개념을 실현하는 대표적인 방법이다.

서비스 지향 아키텍처란 기업의 소프트웨어 인프라인 정보시스템을 공유와 재사용이 가능한 서비스 단위나 컴포넌트 중심으로 구축하는 정보기술 아키텍처를 말한다.

 

웹 서비스의 구성

  • SOAP (Simple Object Access Protocol)
    - HTTP, HTTPS, SMTP 등을 활용하여 XML 기반의 메시지를 네트워크 상에서 교환하는 프로토콜
  • UDDI (Universal Description, Discovery, and Integration)
    - UDDI는 웹 서비스 및 기업 등록과 검색을 위한 표준 프로토콜이나 규격이다.
    - UDDI는 웹 서비스의 등록 및 검색을 위한 중요한 도구로 사용되며, 웹 서비스를 찾고 활용할 수 있게 해 준다.
  • WSDL (Web Services Description Language)
    - 웹 서비스와 관련된 서식이나 프로토콜 등을 표준적인 방법으로 기술하고 게시하기 위한 언어이다.
    - XML 기반의 문서

 

이미지 출처
https://levelup-teddybear.tistory.com/6

'정보처리기사' 카테고리의 다른 글

결합도와 응집도  (0) 2023.10.03
디자인 패턴  (0) 2023.10.03
개발 단계 별 애플리케이션 테스트  (0) 2023.10.02
애플리케이션 테스트  (0) 2023.10.02
데이터 모델  (0) 2023.09.27

+ Recent posts