TODAY TOTAL
[정보처리기사] 5. 소프트웨어 아키텍처 (★★★)

 

1. 소프트웨어 아키텍처

 

 

소프트웨어 아키텍쳐는 소프트웨어의 골격이 되는 기본 구조이자, 소프트웨어를 구성하는 요소들 간의 관계를

표현하는 시스템의 구조는 또는 구조체이다.

 

 

  • 모듈화(Modularity)

모듈화란 관리가 용이하게 모듈 단위로 나누는 것

 

  • 추상화(Abstraction)

불필요한 부분을 생략, 필요한 부분을 강조하여 모델화 하는 것

 

  • 정보 은닉(Information Hiding)

정보은닉은 감기약 캡슐에 어떤 재료가 들어 있는지는 몰라도

감기 결렸을때 먹는 약이라는 것만 알고 복용하는 것을 의미

 

 

@@Information Hiding,Abstraction,Modularity,Encapsulation(캡슐화)

시험에서 영어로 나올때가 있어서 영어도 외우자

 

  • 소프트웨어 아키텍처의 품질 속성

 

품질 속성으로는 성능,보안,가용성,기능성,사용성이 있다.

(성능,보안은 말 그대로니깐 넘어갈께요)

 

가용성 : 장애 없이 서비스를 제공

기능성 : 사용자가 요구한 기능을 만족스럽게 구현

사용성 : 사용자가 헤매지 않게 명확하고 편리하게 구현

 

 2. 아키텍처 패턴

 

아키텍처 패턴의 장점

 

  • 시행착오를 줄여 개발시간 단축
  • 공통된 아키텍처 공유할 수 있어 의사소통 간편
  • 아키텍처 패턴으로 레이어 패턴, 클라이언트-서버 패턴, 파이프-필터 패턴, 모델-뷰-컨트롤러 패턴

레이어 패턴 : 계층으로 구분하여 구성, OSI 참조 모델

 

클라이언트-서버 패턴 : 요청과 응답을 받기 위해 동기화되는 경우를 제외하고는 서로 독립적

 

파이프-필터 패턴 : 대포적으로 UNIX의 쉘이 있다.

                            데이터 변환, 버퍼링, 동기화 등에 주료 사용

 

모델 - 뷰 - 컨트롤러 패턴 

 

 

3. 객체 지향

 

객체 지향의 주요 구성 요소와 개념에는

객체(Object), 클래스(Class), 캡슐화(Encapsulation), 상속(Inheritance)

, 다형성(Polymorphism)이 있다.

 

객체는 데이터와 데이터를 처리하는 함수를 묶어 놓은 하나의 소프트웨어 모듈

클래스는 공통된 속성과 연산을 갖는 객체의 집합

 

캡슐화(Encapsulation)

데이터(속성)와 데이터를 처리하는 함수를 하나로 묶는 것을 의미한다.

캡슐화된 객체들은 재사용이 용이한다.

인터페이스가 단순해지고, 객체 간의 결합도가 낮아진다.

 

상속(Inheritance)

부모클래스의 속성,연상을 자식클래스가 물려받는 것.

 

다형성(Polymorphism)

 

4. 모듈(Module)

 

 

결합도(Coupling)

 

모듈 간에 상호 의존하는 정도 또는 두 모듈 사이의 연관 관계를 의미

 

★★★결합도순서는 거의 필수로 나온다 ★★★

 

자료 결합도 스탬프 결합도 제어 결합도 외부 결합도 공통 결합도 내용 결합도

<- 결합도가 약함                                                                                                                                              결합도가 강함->

 

자스제외공내 (약한순으로)

 

응집도(Cohesion)

정보은닉개념을 확장한 것으로 즉, 모듈이 독립적인 기능으로 정의 되어있는 정도를 의미

 

기능적 응집도 순차적 응집도 교환적 응집도 절차적 응집도 시간적 응집도 논리적 응집도 우연적 응집도

<- 응집도 강함                                                                                                                                              응집도 약함->

 

우논시절교순기(약한순으로)

 

ex) 우논시에 친구와 절교순기가 살고 있다.(전 이렇게 외웠어요ㅋㅋ)

 

팬인(Fan-in) / 팬아웃(Fan-out)

 

팬인은 어떤 모듈을 제어하는 모듈의 수를 나타낸다.

팬아웃은 어떤 모듈에 의해 제어되는 모듈의 수를 나타낸다.

 

ex) G의 팬인은 BCD (그 이유는 어떤모듈에 의해 제어당하고 있는지가 팬인

팬아웃은 G가 제어가하고 있는 모듈 I,J)

  Comments,     Trackbacks