소프트웨어 생명 주기
소프트웨어 생명 주기
Software가 개발되어 폐기 될 때까지, 개발과 유지보수에 대한 전략(체계성, 이론)
전과정 문서화: 타당성 검토 > 계획 > 요구(위험성)분석 > 설계 > 구현(개발) > 시험 > 유지보수
유형 | 내용 | ||||||||
---|---|---|---|---|---|---|---|---|---|
폭포수 모형(Waterfall Model) | 각 단계를 확실히 마무리하고 다음 단계를 진행 | ||||||||
프로토타입 모형(Prototype Model) | 시제품(Prototype)을 만들어 최종 결과물 예측 시제품 제작과정에서 별도의 개발언어가 사용될 수 있다.(오버헤드) 시제품 제작목적은 가능성, 고객 요구사항 점검(수정, 추가)이 있다. |
||||||||
나선형 모형(Spiral Model) |
프로토타입을 지속적으로 발전 위험 관리(Risk Management)측면에서 바라봄 여러번의 개발 주기를 거침 요구사항이나 아키텍처의 이해가 어렵거나, 중심이 되는 기술에 문제가 있는 경우 진행 |
||||||||
애자일 모형(Agile Model) |
Agile: 날렵한, 기민한. 개발주기에 고객의 요구사항을 최우선으로 처리 스크럼(scrum, 럭비) - 럭비의 셋업. 서로 밀치락달치락하는 사람들
애자일 선언(Agile Monifesto) - 2001. 핵심가치(4가지)
|
현행 시스템 파악
시스템 구성과 관련하여, 제약조건을 미리 파악해 놓아야 합니다.
범주 | 주요사항 |
---|---|
시스템 구성 | 개괄, 조직별 주 업무 파악 |
시스템 기능 구성 | 세부, 조직별 세부 업무 단위의 활동(기능) 파악 |
인터페이스 구성 | 송수신 데이터의 종류, 형식(프로토콜), 내용, 프로토콜, 주기 등 파악 |
아키텍처 구성 | 계층별 구성과 상호 참조 도식화 |
소프트웨어 구성 | 사용중인 소프트웨어의 제품명, 용도, 라이선스 등 |
하드웨어 구성 | 사용중인 하드웨어의 제품명, 스펙, 수량 등 |
네트워크 구성 | 서버의 위치, 연결방식 |
기술 환경 파악
항목 | 설명 |
---|---|
운영체제 OS, Operating System |
고려사항: 가용성, 성능, 기술지원, 주변기기, 비용(TCO)* Windows, UNIX, Linux, Mac OS, iOS, Android |
데이터베이스 DBMS, DataBase Management System |
가용성, 성능, 기술지원, 호환성, 비용(TCO) Oracle, IBM DB2, Microsoft SQL Server, MySQL, SQLite, MongoDB, Redis |
웹 어플리케이션 WAS; Web Application Server |
가용성, 성능, 기술지원, 비용(TCO) Tomcat, GlassFish, JBoss, Jetty, JEUS, Resin, WebLogic, WebSphere |
- TCO(Total Cost of Ownership): 구매, 라이선스, 유지보수, 에너지비용 등 모든 비용
요구사항 정의
고객(의뢰자, 사용자)가 본인이 원하는 바를 명확하게 모르거나, 정확한 용어(전문)로 기술하지 못 할 가능성이 있기 때문에 완성된 소프트웨어를 기준으로 어떠한 작업이 필요한지 명확히 하는 작업
유형 | 내용 |
---|---|
기능 요구사항 Functional requirements |
고객이 제공받고자 하는 주요 기능에 대한 사항 |
비기능 요구사항 Non-functional requirements |
품질 관련 사항: 장비 구성, 처리속도, 인터페이스, 데이터 보안, 제도권 요구 |
사용자 요구사항 User requirements |
사용자의 친숙도, 눈높이 |
시스템 요구사항 System requirements |
개발자 관점 |
명세서 발행
도출(Elicitation) > 분석(Analysis) > 명세(Specification) > 확인(Validation)
요구사항 분석
구체적인 명세를 작성하여(문서화), 향후 유지보수에 활용한다.
기법명 | 설명 | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
DFD Data-flow diagram 자료 흐름도 *버블(Bubble)차트 |
객체간 데이터 이동을 표시
![]()
|
||||||||||||||
DD Data Dictionary 자료 사전 |
메타 데이터: 데이터의 내용 설명
|
||||||||||||||
UML Unified Modeling Language |
|
다이어그램 | 설명 |
---|---|
Use Case |
|
Class Diagram |
|
Sequence Diagram |
|
기타 용어: Mini-Spec.(소단위 명세서), ERD(계체 관계도) STD(상태 전이도), 제어 명세서
분석 자동화 도구, CASE
도구명 | 특징 |
---|---|
SADT(Structured Analysis and Design Technique) | SoftTech분석 도구 |
SREM(Software Requirements Engineering Methodolgy) | TRW사, RSL(Requirement Statement Language), REVS(Requirement Engineering and Validation System) |
PSL/PSA | 미시간 대학, PSL(Problem Statement Language), PSA(Problem Statement Analyzer) |
TAGS(Technology for Automated Generation of Systems) | IORL(요구사항 명세 언어) |
HIPO(Hierarchy Input Process Output)
- 프로젝트의 이해를 돕기 위해, 기능과 자료의 의존관계를 하향식으로 문서화하는 도구/방법
종류 | 영문 | 내용 |
---|---|---|
가시적 도표 | Visual Table of Contents | 도식 목차 |
총체적 도표 | Overview Diagram | 총괄 도표, 개요 도표, (입력, 처리, 출력) |
세부적 도표 | Detail Diagram | 상세 도표 |
화면 설계
사용자 인터페이스
UI(User Interface) 특징- 빈번한 변경
- 편리성, 가독성 -> 업무 효율, 이해도
- 원칙: 직관성, 유효성(목적 명확, 명령 명확), 학습성(기시감), 유연성(사용자 중심)
- 지침: 사용자 중심, 사용성(편리), 일관성, 단순성, 결과 예측 가능, 가시성, 심미성(디자인), 표준화, 접근성(연령, 장애), 명확성(인지, 쉬운 이해), 오류 발생 해결(사용자 오류 인식)
- 인터페이스 기능(지원): 입력값 검증, 에러 처리 및 에러 출력, 도움 및 프롬프트(Prompt; 명령어 예시, 막연함X) 제공
- CLI(Command Line Interface): 텍스트 입력, 텍스트 출력
- GUI(Graphical User Interface): 마우스 입력, 그래픽 화면 출력
- NUI(Natural User Interface): 음성, 행동 입력, 그래픽 화면 출력
- VUI(Voice User Interface): (특히) 음성 입력
- OUI(Organic User Interface): (특히) 하드웨어 분야에서, 사물 인터넷. 확장된 입력
명령 | 동작 |
---|---|
Tap | 누르기(터치) |
Double Tap | 두번 누르기(터치) |
Drag | 누른 채 이동(방향감지) |
Pan(Panning) | 누른 채 이동(경로감지) |
Press | 오래 누르기 |
Flick | 빠른 스크롤(수평, 수직) |
Pinch | 두 손가락 확대/축소 |
- 와이어프레임(WireFrame): 페이지에 대한 개략적인 레이아웃, 손그림, ppt, keynote, 스케치, 일러스트, photoshop...
- 목업(Mockup): 시각적으로만 구현(실제와 비슷), 파워 목업, 발사믹 목업...
- 스토리보드(Story Board): 와이어프레임 + 페이지간 이동 + 설명(Description)
- 프로토타입(Prototype): 그래픽 + 기능구현
- 유스케이스(Use Case): 사용자 시나리오 상세 기술
UI요소
요소명 | 설명 |
---|---|
Button | 눌렸을 때, 특정 기능을 수행하기위한 그래픽 인터페이스 |
Check Box | 1개 이상의 선택(on/off)가 가능한 상자 |
Radio Button | 2개 이상의 선택중 하나만 선택 가능한 버튼 |
Text Box | 사용자의 타이핑 정보를 입력할 수 있는 상자 |
Combo Box | 선택가능한 목록을 드롭다운으로 제공하고, 목록을 열어 선택이 가능 |
List Box | 선택 가능한 목록을 펼쳐서 보여줌 |
- UI 설계자 or interaction designer: UI 시나리오 문서 작성 > 개발자, 그래픽 디자이너, 검수자에 활용
- 원칙: 구체적으로(추상적 표현X), 공통규칙 제시(일관성), 화면속 기능/흐름 정의, 변경 사항 기재(추적 용이성)
- 템플릿(Template): 기본적인 레이아웃 형태
- HCI(Human Computer Interaction(Interface)): 사람의 편의성에 대해 연구
- UX(User Experience): 주관성(Subjectivity, 개인마다 다름), 정확성(Contextuality, 환경의 영향 받음), 총체성(Holistic, 감성적 최종 결과)
- 컴퓨터가 소리/밝기 등을 정확하게 1, 2, 3출력했어도(정량평가) 사용자가 느끼기에 1, 3, 7로 느낀다면(정성평가) 사용자 느낌에 맞게 수정
품질 기준
항목 | 분야 | 내용 |
---|---|---|
기능성(Functionality) | 기초 | 적절성/적합성(Suitability), 정밀성/정확성(Accuracy), 상호 운용성(Interoperability), 보안성(Security), 준수성(Compliance, 표준 준수) |
신뢰성(Reliability) | 고장 | 성숙성(Maturity), 고장 허용성(Fault Tolerance, 결함 극복과 정상 수행 정도), 회복성(Recoverability, 데이터 복구) |
사용성(Userbility) | 고객 | 이해성(Understandability, 사용자가 볼 때~), 학습성(Learnability), 운용성(Operability, 사용자가~), 친밀성(Attractiveness, 재사용 의지) |
효율성(Efficiency) | 성능 | 시간 효율성(Time Behaviour), 자원 효율성(Resource Behaviour) |
유지 보수성(Maintainability) | 관리 | 분석성(Analyzability, 결함 원인을), 변경성(Changeability, 수정 가능 정도), 안정성(Stability, 오류 파급 최소화), 시험성(Testability) |
이식성(Portability) | 호환 | 적용성(Adaptability, 다른 분야에), 설치성(Installability, 다른 환경에), 대체성(Replaceability, 타SW 이식), 공존성(Co-existence, 자원공유) |
- ISO/IEC 12119: ISO/IEC 9126 + 테스트 절차
- ISO/IEC 14598: SW 품질 측정, 평가 절차 표준
항목 | 내용 |
---|---|
기능 적합성 | 기능 완전성, 기능 정확성, 기능 적절성 |
성능 효율성 | 시간 효율성, 자원 효율성, 사양 |
호환성 | 공존성, 상호운영성 |
사용성 | 적절 인지정도, 학습성, 조작성, 사용자 오류 방지, UI 미학, 접근성 |
신뢰성 | 성숙성, 사용가능성, 결함 허용성, 복구성 |
보안성 | 기밀성, 무결성, 부인방지, 책임추적성, 인증성 |
유지 보수성 | 모듈성, 재사용성, 분석성, 변경성, 시험성 |
이식성 | 적응성, 설치성, 대체성 |
애플리케이션 설계
아키텍처 설계
상위 설계 | 하위 설계 | |
---|---|---|
별칭 | 아키텍처 설계, 예비 설계 | 모듈 설계, 상세 설계 |
설계 대상 | 시스템의 전체적인 구조 | 시스템의 내부 구조 및 행위 |
세부 목록 | 구조, DB, 인터페이스(정의, 설계) | 컴포넌트, 자료 구조, 알고리즘 |
- 모듈화(Modulatiry): 시스템의 내용을 기능단위로 분리하여 관리
- 추상화(Abstraction): 포괄적/개념적 설계, ①과정 추상화 ②데이터 추상화 ③제어 추상화
- 단계적 분해(Stepwise Refinement): 하향식 설계
- 정보 은닉(Information Hiding): 내부 정보를 다른 모듈이 알아서도 안되고 알필요도 없도록 설계
- 소프트웨어 아키텍처의 품질 속성 고려(표)
항목 | 세부 |
---|---|
시스템 측면 | 성능, 보안, 가용성, 기능성, 사용성, 변경 용이성, 확장성, 테스트 용이성, 배치성, 안정성 |
비지니스 측면 | 시장 적시성, 비용과 혜택, 예상 시스템 수명, 목표시장, 공개 일정, 기존 시스템과 통합 |
아키텍처 측면 | 개념적 무결성, 정확성, 완결성, 구축 가능성, 변경성, 시험성, 적응성, 일치성, 대체성 |
- 설계 목표 설정
-
시스템 타입 결정: System + Sub System Type 결정, 아키텍처의 패턴 결정
- System Type: 대화형(쇼핑몰), 이벤트 중심(비상벨), 변환형(컴파일러, 라우터), 객체 영속형(관리SW)
- 아키텍처의 패턴 적용(지문: 스타일 적용 및 커스터마이즈)
-
서브 시스템 구체화: 상호작용, 인터페이스 정의
-
협약(Contract)에 의한 설계
- 선행 조건(Precondition): 오퍼레이션 호출 전, 만족 조건
- 불변 조건(Invariant): 오퍼레이션 수행 중, 항상 만족 조건
- 결과 조건(Postcondition): 오퍼레이션 수행 후, 만족 조건
-
협약(Contract)에 의한 설계
- 검토
패턴
패턴명 | 설명 |
---|---|
Layers Pattern | subsystem이 상하 계층 구조를 이룸(예:OSI 7계층) |
Client-Server Pattern | 하나의 Sever에 다수의 Client를 처리, Server는 항상 대기 |
Pipe-Filter Pattern | Data stream의 각 단계를 Filter Component로 Capsule화하여 이어붙임 |
MVC(Model-View-Controller) Pattern | Model(핵심 기능 및 데이터), View(보여지는 정보, 출력 처리기), Controller(입력 처리기) |
Master-Slave Pattern | Fault Tolerance System(장애 허용 시스템; 일부 결함에도 전체기능 완수 도움), 병렬 시스템 |
Broker Pattern | 분산 환경에서 각 서비스에 대한 컴포넌트 선택 수행 |
Peer-To-Pear Pattern | Multi Threading환경에서 각자 독립적으로 수행 |
Event-Bus Pattern | Source(이벤트 생성), Listener(수행), Channel(통로), Bus(채널 관리) |
Blackboard Pattern | 공유 데이터, 컴포넌트 접근을 관리 |
Interpreter Pattern | 특정 언어로 작성된 코드를 해석하는 컴포넌트 설계 |
객체지향(Objecxt-Oriented)
SW로직을 실생활에서 물체를 인식하는 방식으로 작성하여(대상화) 제작과 관리의 이점을 갖는 기법.
용어 | 설명 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Object(객체) |
하나의 모듈 구성: 식별자(이름), 데이터(Attribute, Variable, 상태), 함수(Method, Service, Operation, function) message: 어떤 행위를 지시하는 명령 |
|||||||||||
Class |
각각의 객체를 정의한 구문. 하나 이상 유사한 객체가 묶일 수 있음. Instance: 생성된 class. 같은 class에 속한 각각의 객체 |
|||||||||||
Encapsulation(캡슐화) | 보안 또는 단순화의 목적으로 데이터와 함수를 묶는 행위. Interface만 노출(=일부만 노출) | |||||||||||
Inheritance(상속) | 객체를 구현할 때, 부모의 특성을 물려받아 좀 더 간편하고 조직적으로 구성하는 행위 | |||||||||||
Polymorphism(다형성) | 상속으로 이루어진 구조체에서 임의의 동작을 수행함에 있어 높은 자유도를 부과하는 기법 | |||||||||||
Relationship(연관성) |
두 개 이상의 객체가 참조하는 관계
|
객체지향 분석(OOA; Object Oriented Analysis)
-
럼바우(Runbaugh) 방법
- Object(객체) Modeling: 시스템에서 요구되는 객체를 찾아내서 속성과 연산 식별 및 객체들 간의 관계를 규정
- Dynamic(동적) Modeling: 상태 다이어그램을 이용하여 시간 흐름에 따른 제어 흐름 표현
- Function(기능) Modeling: 자료 흐름도(DFD)를 이용하여 프로세스 간의 자료이동을 표현
- Booch(부치) 방법: 미시적, 거시적 모두 분석. 클래스 속성과 연산 정의
- Jacobson 방법: Use Case를 강조
- Coad-Yourdon 방법: E-R 다이어그램 사용, 객체, 구조, 주제, 속성, 인스턴스 연결 등 정의
- Wirfs-Brock 방법: 분석과 설계 간 구분X, 고객 명세서를 평가해서 설계까지 연속적 수행
원칙 | 설명 | |
---|---|---|
S | SRP | Single Responsibility Principle(단일 책임 원칙): 한 가지 목표(높은 응집, 낮은 결합) |
O | OCP | Open Closed Principle(개방 폐쇄 원칙): 개방(기능 추가에 자유롭다), 폐쇄(변경에 보수적) |
L | LSP | Liskov Substitution Principle(리스코프 치환 원칙): 자식 클래스가 부모 클래스의 기능을 무시/재정의 하는 것을 우려 |
I | ISP | Interface Segregation Principle(인터페이스 분리 원칙): 사용하지 않는 인터페이스에 의존X, 1목적 1인터페이스 |
D | DIP | Dependency Inversion Principle(의존 역전 원칙): 추상성이 높은 클래스와 의존관계를 맺는다 |
결합도 vs 응집도
모듈의 재사용성을 늘리려면,
- 결합도: 타모듈과의 통신에서 독립적이 높아야(의존성이 적어야) 다른데 또 써먹기가 좋음. 인터페이스의 자유도↑
- 응집도: 내부의 모듈간이 수정이나 도움 없이 하나의 목적을 완벽히 수행해야 좋음.
낮음 (좋음) ↑ ↓ (나쁨) 높음 |
Data Coupling | 자료 결합도 | 모듈 간 인터페이스가 기본자료로만 구성될 때 |
Stamp Coupling | 스탬프(검인) 결합도 | 배열, 레코드 등으로 구성 될 때 | |
Control Coupling | 제어 결합도 | 제어신호(약속된 코드)를 사용할 때 | |
External Coupling | 외부 결합도 | 다른 모듈의 자료를 참조해야 할 때 | |
Common Coupling | 공통(공유) 결합도 | 데이터 저장위치가 강제될 때(공유장소) | |
Content Coupling | 내용 결합도 | 직접 가지러 가야 할 때(어디에, 무엇이, 어떻게를 다 알아야...) |
낮음 (나쁨) ↑ ↓ (좋음) 높음 |
Coincidental Cohesion | 우연적 응집도 | 각 구성요소의 연관성이 거의 없다시피 |
Logical Cohension | 논리적 응집도 | 유사한 성격의 요소들이 관찰됨 | |
Temporal Cohension | 시간적 응집도 | 특정 시간에 처리되는 몇개의 기능들이 모임 | |
Procedual Cohension | 절차적 응집도 | 다수 관련 기능을 가지고, 순차적으로 수행 | |
Communication Cohension | 교환(통신)적 응집도 | 동일한 입력과 출력을 사용하여 서로 다른 기능을 수행 | |
Sequential Cohension | 순차적 응집도 | 하나의 입력으로 나온 출력 데이터가 다음 입력으로 사용 | |
Functional Cohension | 기능적 응집도 | 단일 문제와 연관되어 수행될 경우의 응집도 |
Fan-In, Fan-Out
- Fan-In:입력, Fan-Out:출력
- 인터페이스가 많아지면, 시스템 복잡도↑
N-S(Nossi-Schneidermon) chart

- 순서도를 화살표 없이 표로 작성
SW 재사용
공통모듈: 범용으로 사용하기 위해 제작하는 모듈- Correctness(정확성): ??
- Clearity(명확성): 중의적 해석x
- Completeness(완전성): ??
- Consistency(일관성): ??충돌방지
- Traceability(추적성): ??
- 함수와 객체 재사용
- 컴포넌트 재사용
- 애플리케이션 재사용
컴포넌트: 인터페이스로만 접근할 수 있는 단위
코드
코드는 식별, 분류, 배열, 표준, 간소 기능을 만족하고, 어느정도 체계를 권장(무작위x)
Sequence Code | 순차코드 | 1, 2, 3, 4... |
Block Code | 블럭코드 | 1001~1099: 보병, 1700~1799: 통신병 |
Decimal code | 10진 코드 | 1000: SW설계(각 자리수가 각각의 분류를 의미) |
Group Classification Code | 그룹 분류 코드 | 본사-총무부-인사계 |
Mnemonic Code | 연상 코드 | TV-40: 40인치 TV |
Significant Digit Code | 표의 숫자 코드 | 120-720-1500: 120x720x1500의 강판(물리적 수치) |
Combined Code | 합성코드 | KR-123: 한국국적기 123 |
패턴
범주 | 패턴 명 | 내용 |
---|---|---|
Creational Pattern 생성패턴 |
Abstract Factory | ??: 인터페이스를 통해 서로 연관 의존하는 객체 그룹을 생성 |
Builder | 동일한 객체 생성에도 서로 다른 결과를 만들어 낼 수 있도록 | |
Factory Method | =가상 생성자(Virtual Constructor) 패턴, 객체를 생성하기 위한 인터페이스를 정의하여 어떤 클래스가 인스턴스화 될 것인지는 서브 클래스가 결정하도록 하는 것 | |
Prototype | Prototype을 먼저 생성하고 인스턴스를 복제하여 사용하는 구조 | |
Singleton | 인스턴스가 하나임을 보장하여 불필요한 메모리 낭비를 최소화, 동시참조X | |
Structural Pattern 구조 패턴 |
Adapter | 호환성이 없는 어댑터를 호환성을 부여하기 위한 패턴 |
Bridge | 기능과 구현의 클래스로 구현하여 각각 독립적으로 확장하기 위한 패턴 | |
Composite | 단일 객체와 복합 객체의 구분 없이 사용하고자 할 때 | |
Decorator | 임의 객체에 부가 기능을 추가하기 위해 | |
Facade(퍼싸드) | sub class를 통합하는 객체 | |
Flyweight | 인스턴스 필요시 생성하지 않고, 공유 사용 | |
Proxy | 접근이 어려운 객체 사이에 인터페이스 역할 | |
Behavioral Pattern 행위 패턴 |
Chain of Responsibility | 요청을 처리할 수 있는 여러개의 객체를 묶어 해결될때까지 돌려가며 사용 |
Command | 요청을 로그화하여 처리 | |
Interpreter | SQL, 통신 프로토콜 같은 명령어 해석기 | |
Iterator | 접근이 잦은 개체를 반복적으로 접근하기 위한 구조 | |
Mediator | 중재자: 객체간의 상호작용(통제, 지시)을 캡슐화하여 전달하는 구조 | |
Memento | 특정 상태를 객체화하여 되돌리기에 적합한 구조 | |
Observer | 특정 객체의 변화를 감지하여 다른 객체에 전달하는 구조 | |
State | 객체의 상태에 따라 동일한 동작을 다르게 처리해야 할 때, 상태를 캡슐화 | |
Strategy | 동일한 계열의 알고리즘을 개별적으로 캡슐화하여 서로 교환 | |
Template Method | 상위 클래스에서 Template(Algorithm)을 정의하고, 서브클래스에서 이외의 내용 정의 | |
Visitor | 처리기능을 별도의 클래스로 분리하여, 각 객체가 해당처리를 위해 특정 객체에 방문하는 구조 |
인터페이스 분석
- 인터페이스 분석 요소: 이름, 연계(연관) 시스템, 내용 및 범위, 방식(프로토콜), 주기, 고려사항, 우선순위
- 기능/비기능으로 분류
- 이미 정의된 인터페이스도 분해될 수 있다
- 절차: 선별 > 자료준비 > 분류 > 분석 및 구체화 > 배포(공유)
요구사항 검증
-
Requirements Verification(검증)
- 계획 > 검토 및 수정 > 베이스라인 설정
-
계획
- 기준 및 방법 제시
- 참여자 모집
- 체크리스트 작성
- 관련 자료 수집
- 일정 수립
-
검토 및 수정
- 방법: Peer Review(회의), Walk Through(자료배포, 회의 짧게), Inspection(전문검토 그룹)
- Prototyping, Test Cast(TC)설계, CASE(Computer Aided Software Engineering) 도구 활용
- 검증 항목: Completeness(완전성), Consistency(일관성), Unambiguity(명확성), Functionality(기능성), Verifiability(검증 가능성), Traceability(추적 가능성), Easily Changeable(변경 용이성)
-
분류
- 시스템간 연계: DB Link, API/Open API, EAI(Enterprise Application Intergration; 송수신 통제 시스템)이용, Socket, Web Service
- 연계 메커니즘: 송신 시스템(파일로 전송), 수신 시스템(파일 처리), 연계 서버(모니터링)
- 통신 유형: 단방향/양방향, 동기/비동기
- 처리 유형: 실시간/지연 처리, 배치(대량)
미들웨어
- 정의: 분산 컴퓨팅 환경에서 이용자가 전체 메커니즘을 이해하지 못해도 이기종간 원만한 통신을 중재하는 SW
- 위치 투명성(Location Transparency)제공
- 재사용 가능한 서비스 구현
- 중재: 앱-사용자, 서버-클라이언트
-
종류
- RPC(Remote Procedure Call, 원격 프로시저 호출): 원격 프로시저를 마치 로컬 프로시저처럼 호출 가능하게 하는 SW
- DB(DataBase): 원격DB의 조회/조작을 제공
- MOM(Message Oriented Middleware): 메시지기반 비동기형 전달방식(IBM-MQ, Oracle-Message Q, JCP-JMS), 느리지만 안정적
- TP-Monitor(Transaction Processing Monitor, 트렌젝션 관리): 각종 온라인 예약 업무 등
- ORB(Object Request Broker, 객체 요청 브로커): 미들웨어 CORBA(Common Object Request Broker Architecture, 코바, 분산 객체 관리 표준)
- WAS(Web Application Server): HTTP기반 서버/클라이언트 환경, Web Server(x), 동적 컨텐츠 처리