공부 기록

[정보처리기사] 1. 소프트웨어 설계 정리 - 2

by 너나나

내가 모르는거 위주로 정리!!

24. 객체지향 분석 및 설계

객체지향 분석의 방법론 

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

럼바우(Rumbaugh)의 분석 기법 

모든 소프트웨어 구성 요소를 그래픽 표기법을 이용하여 모델링 하는 기법

- 객체 모델링 -> 동적 모델링 -> 기능 모델링 순으로 분석

 

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

객체지향 설계 원칙

다섯가지 원칙, 얘네 다섯개 앞 글자 따서 SOLID 원칙이라고도 함

 

단일 책임 원칙
(SRP, Single Responsibility Principle)
객체는 단 하나의 책임만 가져야 한다는 원칙
응집도는 높고 결합도는 낮게 설계
개방-폐쇄 원칙
(OCP, Open-Closed Priciple)
기존의 코드를 변경하지 않고 기능을 추가할 수 있도록 설계 해야함
공통 인터페이스를 하나의 인터페이스로 묶어 캡슐화 하는 방법이 대표적
라스코프 치환 원칙
(LSP, Liskov Substitution Priciple)
자식 클래스는 최소한 자신의 부모 클래스에서 가능한 행위는 수행 할 수 있어야 함
자식 클래스는 부모 클래스의 확장만 수행하도록 해야함
인터페이스 분리 원칙
(ISP, Interface Segregation Principle)
자신이 사용하지 않는 인터페이스와 의존 관계 x, 영향 받지 x
인터페이스가 갖는 하나의 책임
의존 역전 원칙
(DIP, Dependency Inversion Principle)
각 객체들 간의 의존 관계가 성립될 때 추상성이 높은 클래스와 의존관계
일반적으로 인터페이스를 활용하면 이 원칙이 준수됨

25. 모듈

모듈 : 모듈화를 통해 분리된 시스템의 각 기능들로, 서브루틴, 서브시스템, 소프트웨어 내의 프로그램, 작업 단위 등과 같은 의미로 사용됨! 모듈은 단독으로 컴파일 가능, 재사용 가능

결합도(Coupling)

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

  • 다양한 결합으로 모듈을 구성할 수 있지만 결합도가 약할수록 품질이 높고, 강할수록 품질이 낮음
  • 결합도가 강하면 시스템 구현 및 유지보수 작업이 어려움

결합도 강함 →

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

결합도 약함 ←

 

자료 결합도
(Data Coupling)
모듈 간의 인터페이스가 자료 요소로만 구성될 때의 결합도
스탬프(검인) 결합도
(Stamp Coupling)
모듈 간의 인터페이스로 배열이나 레코드 등의 자료 구조가 전달될 때의 결합도
제어 결합도
(Control Coupling)
모듈 사이에 제어신홀ㄹ 이용하여 통신하거나 제어 요소를 전달하는 결합도
하위 모듈이 상위 모듈에게 처리 명령을 내리는 권리 전도현상 발생
외부 결합도
(External Coupling)
한 모듈에서 선언한 데이터(변수)를 외부의 다른 모듈에서 참조할 때의 결합도
공통(공유) 결합도
(Common Coupling)
공유되는 공통 데이터 영역을 여러 모듈이 사용할 때의 결합도
내부 결합도
(Content Coupling)
한 모듈이 다른 모듈의 내부 기능 및 내부 자료를 직접 참고하거나 수정할 때의 결합도

응집도(Cohesion)

: 정보 은닉 개념을 확장한 것ㅡ 명령어나 호출문 등 모듈의 내부 요소들의 서로 관련되어 있는 정도, 즉 모듈이 독립적인 기능으로 정의되어 있는 정도를 의미

  • 응집도가 강할수록 품질이 높고 약할수록 품질 낮음

응집도 약함 

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

응집도 강함 

 

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

 

이걸 내가 어케 앎?!?!?!?!? 쓰다보니까 킹받네


참고 자료

「2021 시나공 정보처리기사 필기」

블로그의 정보

공부 기록

너나나

활동하기