미들웨어의 종류
- 정의 : 서로 다른 애플리케이션이 서로 통신하는데 사용되는 소프트웨어
1) RPC (Remote Procedure Call)
- 클라이언트가 원격에서 동작하는 프로시저를 호출하는 시스템
2) MOM (Message Oriented Middleware)
- 분산 응용 프로그램 간에 메시지를 보내고 받으면서 데이터를 전달하고 교환할 수 있게 해주는 미들웨어
3) ORB (Object Request Broker)
- 객체지향 시스템에서 객체 및 서비스를 요청하고 전송할 수 있도록 지원하는 미들웨어
4) DB 접속 미들웨어
- 애플리케이션과 데이터베이스 서버를 연결해주는 미들웨어
5) TP 모니터 (Transaction Processing monitor)
- 분산 시스템의 애플리케이션을 지원하는 미들웨어로 트랜잭션 처리를 감시/제어
6) 웹 애플리케이션 서버 (Web Application Server)
- 웹 애플리케이션을 지원하는 미들웨어
소프트웨어 개발 생명주기 모델
- 소프트웨어를 어떻게 개발할 것인가에 대한 전체적인 큰 흐름
1) 폭포수 모델
- 앞 단계가 완료될 때까지 대기 상태
- 완성된 모습을 후반부가 되기 전엔 볼 수 없음
- 고객이 원하는 모습이 아니라면 수정이 어려움
2) 원형 모델
- 점진적으로 시스템을 개발해 나가는 방법
- 원형(Prototype)을 가능한 빨리 개발한 후 고객과 검증하는 것이 목적
3) 나선형 모델
- 고비용의 시스템 개발이나 큰 시스템 구축 시 효과적
- 프로젝트 수행 시 발생하는 위협을 최소하려는 목적
- 개발자가 위험을 정확하게 분석하지 못했다면 심각한 문제
애자일 (Agile)
- 2001년 'Agile연합' 모임 결성
- 'Agile 소프트웨어 개발 선언문' 발표
- 애자일의 12가지 원칙
애자일의 12가지 원칙
제 1원칙 - 초기부터 지속적으로 고객 만족
제 2원칙 - 요구사항 변경 수용
제 3원칙 - 짧은 배포 간격
제 4원칙 - 함께 일하기
제 5원칙 - 동기 부여된 팀원들로 프로젝트팀 만들기
제 6원칙 - 얼굴 보고 대화하기
제 7원칙 - 동작되는 소프트웨어로 진도 측정
제 8원칙 - 지속 가능한 개발 속도 유지
제 9원칙 - 좋은 기술, 설계에 관심
제 10원칙 - 단순석
제 11원칙 - 자기 조직화 팀
제 12원칙 - 정기적으로 효율성 제고
애자일(Agile) 방법론 유형
1) XP (eXtreme Programming)
- 의사소통 개선과 즉각적 피드백
- 5가지 가치: 용기, 단순성, 의사소통, 피드맥, 존중
2) 스크럼 (SCRUM)
- 프로젝트 관리를 위한 상호, 점진적 개발방법론
- XP와 달리 진행 체계 수립, 역할, 정의에 중점
- 기존 폭포수 모델이나 프로토타이핑 같은 모델과 달리 모든 LifeCycle을 담지 않는다
- 5가지 가치: 확약, 전념, 정직, 존중, 용기
3) 린 (Lean)
- 도요타사의 대표적인 생산방식
- 인력, 생산 설비 등을 필요한 만큼만 유지하면서 생산 효율을 극대화하는 방식
- 전적으로 고객 관점
XP(eXtreme Programming)
- 애자일 (Agile)의 가치를 적용한 개발방법론
- '고객의 요구사항은 변경된다' > 고객과 개발팀의 커뮤니케이션 주장
용어 | 내용 |
스토리 | 요구사항 (고객) |
스토리 추리 | 스토리를 보고 기간과 강도 결정 (개발자) |
릴리즈 | 고객에게 구현된 제품 배포 |
반복 | 릴리즈 안에서 반복되는 작업 |
드라이버 | 코드 작성자 |
파트너 | 드라이버를 도와 조언 |
1) XP (eXtreme Programming)의 5가지 가치
- 의사소통 Communication
- 단순성 Simplicity
- 용기 Courage
- 피드백 Feedback
- 존중 Respect
2) XP (eXtreme Programming)의 12가지 실천사항
계획 게임 | 짝 프로그래밍 |
짧은 릴리즈 주기 | 코드 공동 소유 |
메타포 | 지속적인 통합, CI |
단순 설계 | 주당 40시간 작업 |
테스트 우선 개발 | 고객의 참여 |
리팩토링 | 코팅 표준 |
객체지향 방법론
- 소프트웨어 개발 과정은 기존 시스템을 분석하고 이를 표준화된 새로운 시스템 환경으로 전환하는데 초점을 맞추게 되었다
- 소프트웨어를 개발할 때 작은 단위의 모듈들을 구성하여 만들고 추후 이를 재사용하여 소프트웨어의 효율성을 높이자는 생각에서 객체지향 방법론이 발전하게 되었다
- 여러 객체지향 방법론들이 난립하게 되고 표기법만이라도 통일하자는 제안에 의해 UML을 사용하게 되었다
1) 객체, 클래스, 캡슐화, 데이터은닉, 상속, 다형성의 개념
객체 | 업무 수행을 위한 대상이 되는 사람, 장소, 사물 ,사건 및 개념 |
클래스 | 공통 속성과 행위를 가진 객체를 묶어 추상화한 개념 |
캡슐화 | 구현부가 외부에 노출되지 않게 싸여진 상태 |
데이터 은닉 | 각각의 객체가 자신의 속성(데이터)과 메서드(행위)를 다른 객체에게 숨기고 있는 것 |
상속 | 클래스가 가진 속성과 행위를 개체가 물려 받는 것 |
조합 | 다른 객체를 사용하여 객체를 구성하는 것 보다 복잡한 클래스를 만드는 일종의 조립 |
다형성 | 같은 메서드에 다르게 반응하는 것 |
2) SOLID (객체지향설계)
- 로버트 마틴이 2000년대 초반에 명명한 객체지향 프로그래밍 및 설계의 다섯가지 기본 원칙을 마이클 페더스가 두문자어 기억술로 소개한 것
S | SRP | - 단일 책임 원칙 (Single responsibility principle) - 한 클래스는 하나의 책임만 가져야 한다 |
O | OCP | - 개방-폐쇄 원칙 (Open/closed principle) - 소프트웨어 요소는 확장에는 열려있으나 변경에는 닫혀있어야 한다 |
L | LSP | - 리스코프 치환 원칙 (Liskov substitution principle) - 프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다 - 계약에 의한 설계를 참고하라 |
I | ISP | - 인터페이스 분리 법칙 (Interface segregation principle) - 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다 |
D | DIP | - 의존 관계 역전 원칙 (Dependency inversion principle) - 프로그래머는 추상화에 의존해야지, 구체화에 의존하면 안된다 - 의존성 주입은 이 원칙을 따르는 방법 중 하나다 |
객체지향 방법론
기법 | 원리 |
Rumbaugh(럼바우)의 OMT | - 클래스의 외부 명세를 정의함 - 객체모델링, 동적모델링, 기능모델링으로 분류함 |
Boch 방법론 | - 시스템 형성 구조를 모형화하는 DFD 사용 - 클래스 다이어크램, 객체 다이어그램, 모듈 다이어그램, 프로세스 다이어그램 |
Coad/Yaurdon 방법론 | - 객체지향 특징을 가장 충족시키는 방법 - E-R 다이어그램을 사용하여 객체의 행위를 모델링 |
shaler/Mellor 방법론 | - 하나의 시스템을 몇 개의 영역으로 분할하여 서브 시스템을 구성함 - 정보 모델링, 상태 모델링, 처리 모델링 |
UML (Unified Modeling Language) : 표준화된 범용 모델링 언어⭐
- 객체지향 설계를 위한 표준 언어
- 시스템을 시각적으로 모델링하기 위한 모델링 언어
- 시스템 개발 과정의 광범위한 분야에 활용 가능
1) UML의 구성요소
사물 (Things) | - 기본요소 - 시스템의 구조, 시스템의 행위, 개념의 그룹화, 부가적인 개념설명 |
관계 (Relationship) | - 사물과의 관계 - 의존관계, 연관관계, 일반화관계, 실체화관계 |
다이어그램 (Diagram) | - 사물과 관계를 도형으로 표현 - 구조 다이어그램 (클래스, 오브젝트, 컴포넌트, 배치) - 행위다이어그램 (유스케이스, 순차, 통신, 상태, 활동) |
2) UML에서 활용되는 다이어그램 (diagrams)
다이어그램 | |
정적 모델 (시스템 구조) | 동적 모델 (시스템 행위) |
클래스 다이어그램 | 유스케이스 다이어그램 |
오브젝트 다이어그램 | 순차(시퀀스) 다이어그램 |
컴포넌트 다이어그램 | 통신 다이어그램 |
배치 다이어그램 | 상태 다이어그램 |
액티비티 다이어그 |
분석 자동화 도구 CASE
- Computer Aided Software Engineering
- 소프트웨어 개발 과정의 일부나 전체를 자동화하는 도구
Upper CASE 상위 CASE |
- 계획수립, 요구분석, 기본설계 단계 - 다이어그램으로 표현 보델들 사이의 모순 검사, 모델의 오류 검증 일관성 검증 지원, 자료흐름도 프로토타이빙 작성 지원, UI 설계 지원 |
Lower CASE 하위 CASE |
- 구문 중심 편집 및 정적/동적 테스트 지원 - 시스템 명세서 생성 및 소스 코드 생성 지원 |
1) 주요 기능
- 그래픽 지원
- SW 생명주기 전 단계 연결
- 다양한 SW 개발 모형 지원
- 표준화된 개발 환견 구축 / 문서 자동화 기능 제공
- 작업과정 / 데이터 공유 -> 작업자간 커뮤니케이션 증가
2) 장점
- 구조적인 것들을 그대로 활용 가능
- 요구 정보를 추출하고 분석하는 것을 도와줌
- 원형(Prototype)이나 프로그램의 개발 및 유지가 용이
- 개발자들이 반복적인 업무에서 벗어나 창의적 업무에 몰두하게 해줌
- 소프트웨어의 점진적 개발이 가능
- 소프트웨어의 재활용성 재고
- 모든 것들이 그림으로 표현되어 있기 때문에 개발자들간에 정보시스템의 공유가 쉬움
정리하기
1. 미들웨어의 종류
- RPC, MOM, ORB, DB 접속 미들웨어, TP 모니터, 웹 애플리케이션 서버
2. 소프트웨어 개발 생명주기 모델
- 폭포수 모델, 원형 모델, 나선형 모델
3. 애자일 (Agile)
- 12가지 원칙
- 방법론 유형 : XP(eXtreme Programming), 스크럼(SCRUM), 린(LEAN)
4. XP (eXtreme Programming)
- 용어 : 스토리, 스토리 추리, 릴리즈, 반복, 드라이버, 파트너
- 5가지 가치 : 의사소통, 단순성, 용기, 피드백, 존중
- 12가지 실천사항 : 계획게임, 짝프로그래밍, 짧은 릴리즈 주기, 코드 공동 소유, 메타포, 지속적인 통합/CI, 단순 설계, 주당 40시간 작업, 테스트 우선 개발, 고객의 참여, 리팩토링, 코팅 표준
5. 객체지향 방법론
- 객체, 클래스, 캡슐화, 데이터은닉, 상속, 다형성
- SOLID : SRP, OCP, LSP, ISP, DIP
6. 객체지향 방법론
- Rumbaugh(럼바우)의 OMT
- Boch 방법론
- Coad/Yaurdon 방법론
- shaler/Mellor 방법론
7. UML(Unified Modeling Language)
- 표준화된 범용 모델링 언어
- 구성요소 : 사물(Things), 관계(Relationship), 다이어그램(Diagram)
- 다이어그램 : 정적모델(시스템 구조), 동적 모델(시스템 행위)
8. 분석 자동화 도구 CASE
- Computer Aided Software Engineering
- 소프트웨어 개발 과정의 일부나 전체를 자동화하는 도구
'정보처리기사 > 1과 소프트웨어 설계' 카테고리의 다른 글
4. 인터페이스 설계 (0) | 2023.11.17 |
---|---|
3. 애플리케이션 설계 (2) | 2023.11.16 |
2. 화면 설계 (2) | 2023.11.14 |