Just do IT
article thumbnail

미들웨어의 종류

   - 정의 : 서로 다른 애플리케이션이 서로 통신하는데 사용되는 소프트웨어

   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
   - 소프트웨어 개발 과정의 일부나 전체를 자동화하는 도구

 

2. 화면설계

'정보처리기사 > 1과 소프트웨어 설계' 카테고리의 다른 글

4. 인터페이스 설계  (0) 2023.11.17
3. 애플리케이션 설계  (2) 2023.11.16
2. 화면 설계  (2) 2023.11.14
profile

Just do IT

@AmyG

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!