Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 웹해킹
- 보안용어
- keyword
- Review
- 위험관리
- Shell
- it자격증
- 케이쉴드주니어
- 보안
- Security
- wargame
- reivew
- 클라우드
- study
- DreamHack
- Linux
- 워게임
- 자격증공부
- 리눅스
- 기록
- 취약점진단
- 정보처리기사
- 정리
- 복습
- 자격증
- webhacking
- 드림핵
- 공부
- IT
- 리눅스마스터2급
Archives
- Today
- Total
IT Memory Note
[정보처리기사] 요구사항 확인 : 소프트웨어 개발 방법론(2) 본문
1️⃣ 소프트웨어 개발 방법론
☆☆☆
(3) 객체 지향 분석 방법론
1. 객체 지향(Object Oriented) 개념
- 실세계의 개체를 속성과 메서드가 결합한 형태의 객체로 표현하는 기법
2. 객체 지향 구성요소
구성요소 | 설명 |
클래스 (Class) |
• 특정 객체 내에 있는 변수와 메서드를 정의하는 일종의 틀 • 객체 지향 프로그래밍에서 데이터를 푸상화하는 단위 • 하나 이상의 유사한 객체들을 묶어서 하나의 공통된 특성을 표현 • 속성은 변수의 형태로, 행위는 메서드 형태로 선언 |
객체 (Object) |
• 물리적, 추상적으로 자신과 다른 것을 식별 가능한 대상 • 클래스에서 정의한 것을 토대로 메모리에 할당됨 • 객체마다 각각의 상태와 식별성을 가짐 |
메서드 (Method) |
• 클래스로부터 생성된 객체를 사용하는 방법 • 객체가 메시지를 받아 실행해야 할 객체의 구체적인 연산 • 전통적 시스템의 함수(Function) 또는 프로시저(Procedure)에 해당하는 연산 기능 |
메시지 (Message) |
• 객체 간 상호 작용을 하기 위한 수단 • 객체에게 어떤 행위를 하도록 지시하는 방법 • 객체 간의 상호 작용은 메시지를 통해 이루어짐 • 메시지는 객체에서 객체로 전달됨 |
인스턴스 (Instance) |
• 객체 지향 기법에서 클래스를 통해 만든 실제의 실형 객체 • 클래스에 속한 각각의 객체 • 실제로 메모리상에 할당 |
속성 (Property) |
• 한 클래스 내에 속한 객체들이 가지고 있는 데이터 값들을 단위별로 정의 • 성질, 분류, 식별, 수량, 현재 상태 등에 대한 표현 값 |
3. 객체 지향 기법
기법 | 설명 |
캡슐화 (Encapsulation) |
• 서로 연관된 데이터와 함수를 함께 묶어 외부와 경계를 만들고 필요한 인터페이스만을 밖으로 드러내는 기법 • 결합도가 낮아지고 재사용이 용이 • 정보 은닉과 관계가 깊음 • 변경 발생 시 오류의 파급 효과가 적음 |
상속성 (Inheritance) |
상위 클래스의 속성과 메서드를 하위 클래스에서 재정의 없이 물려받아 사용하는 기법 |
다형성 (Polymorphism) |
• 하나의 메시지에 대해 각 객체가 가지고 있는 고유한 방법으로 응답할 수 있는 능력 • 상속받은 여러 개의 하위 객체들이 다른 형태의 특성을 갖는 객체로 이용될 수 있는 성질 • 오버로딩, 오버라이딩이 대표적 |
추상화 (Abstraction) |
공통 성질을 추출하여 추상 클래스를 설정하는 기법 |
정보 은닉 (Information Hiding) |
• 코드 내부 데이터와 메서드를 숨기고 공개 인터페이스를 통해서만 접근이 가능하도록 하는 코드 보안 기술 • 필요하지 않은 정보는 접근할 수 없도록 하여 한 모듈 또는 하부 시스템이 다른 모듈의 구현에 영향을 받지 않게 설계됨 • 모듈 사이의 독립성을 유지하는 데 도움을 줌 |
관계성 (Relationship) |
• 두 개 이상의 엔터티 형에서 데이터를 참조하는 관계를 나타내는 기법 • 관계성의 종류 - 연관화(Association) : is-member-of 관계, 클래스와 객체의 참조 및 이용 관계이며, 같은 계층에 속하는 클래스들 간의 상호 의존성을 보여주는 비계층적 관계성을 나타냄 - 집단화(Aggregation) : is part of 관계, part-whole 관계이며, 서로 관련 있는 여러 개의 객체를 묶어 한 개의 상위 객체를 만드는 특징이 있음(일반화와 달리 상위 클래스의 성질들이 하위 클래스로 상속되지는 않음) - 분류화(Classification) : is-instance-of 관계이며, 공통도니 속성에 의해 정의된 객체 구성원들의 인스턴스 - 일반화(Generalization) : is-a 관계, 클래스들 간의 개념적인 포함 관계 - 특수화(Specialization) : is-a 관계, 상위 클래스의 특성들을 상속받으면서 하위 클래스에서 나름대로 수정을 가하고 자기 자신의 고유한 특성을 갖는 관계 |
※ 오버로딩(Overloading)과 오버라이딩(Overriding) 차이점
오버로딩(Overloading) | |
void fn(int a); void fn(char a); void fn(int a, int a); |
매개변수의 유형과 개수를 다르게 하여 같은 이름의 메서드를 여러 개 가지는 기법 |
오버라이딩(Overriding) | |
class A{ void fn(int a); } class B : public A{ void fn(int a); } |
• B 클래스는 A 클래스를 상속 • 상위 클래스(부모)가 가지고 있는 메서드를 하위 클래스(자식)가 재정의해서 사용하는 기법 |
4. 객체 지향 설계 원칙(SDLID)
원칙 | 설명 |
단일 책임의 원칙 (SRP, Single Responsibility Principle) |
• 하나의 클래스는 하나의 목적을 위해서 생성되며, 클래스가 제공하는 모든 서비스는 하나의 책임을 수행하는데 집중되어 있어야 한다는 원칙 • 객체 지향 프로그래밍의 5원칙 중 나머지 4원칙의 기초 원칙 |
개방 폐쇄 원칙 (OCP, Open Close Principle) |
소프트웨어의 구성요소(컴포넌트, 클래스, 모듈, 함수)는 확장에는 열려있고, 변경에는 닫혀있어야 한다는 원칙 |
리스코프 치환의 원칙 (LSP, Liskov Substitution Principle) |
서브 타입(상속받은 하위 클래스)은 어디서나 자신의 기반 타입(상위 클래스)으로 교체할 수 있어야 한다는 원칙 |
인터페이스 분리의 원칙 (ISP, Interface Segregation Principle) |
• 한 클래스는 자신이 사용하지 않는 인터페이스는 구현하지 말아야 한다는 원칙 • 객체 설계 시 특정 기능에 대한 인터페이스는 그 기능과 상관없는 부분이 변해도 영향을 받지 않아야 한다는 원칙 |
의존성 역전의 원칙 (DIP, Dependency Inversion Principle) |
객체에서 어떤 클래스를 참조해서 사용하는 경우, 그 클래스를 직접 참조하는 것이 아니라 그 대상의 상위 요소인 추상 클래스나 인터페이스로 참조하라는 원칙 |
5. 객체 지향 분석(OOA, Object Oriented Analysis)의 개념
- 사용자 요구사항을 분석하여 요구된 문제와 관련된 모든 클래스(객체), 속성과 연산, 관계를 정의하여 모델링하는 기법
6. 객체 지향 분석 방법론 종류
종류 | 만든 이 | 설명 |
OOSE (Object Oriented Software Engineering) |
야콥슨 (Jacobson) |
• 유스케이스에 의한 접근 방법으로 유스케이스를 모든 모델의 근간으로 활용하는 방법론 • 분석, 설계, 구현 단계로 구성 • 기능적 요구사항 중심의 시스템 |
OMT (Object Modeling Technology) |
럼바우 (Rumbaugh) |
• 그래픽 표기법을 이용하여 소프트웨어 구성요소를 모델링하는 방법론 • 분석 절차 : 객체 모델링 → 동적 모델링 → 기능 모델링 |
OOD (Object Oriented Design) |
부치 (Booch) |
• 설계 문서화를 강조하여 다이어글매 중심으로 개발하는 방법론 • 분석과 설계의 분리가 불가능 • 분석하는 데 이용된 객체 모델의 설계 시 적용 |
※ 객체 모델링(Object Modeling)
- 정보 모델링(Information Modeling)이라고도 함
- 시스템에서 요구하는 객체를 찾고 객체들 간의 관계를 정의하여 ER 다이어그램을 만드는 과정까지의 모델링
- 객체 다이어그램을 활용하여 표현
※ 동적 모델링(Dynamic Modeling)
- 시간의 흐름에 따라 객체들 간의 제어 흐름, 동작 순서 드의 동적인 행위를 표현하는 모델링
- 상태 다이어그램을 활용하여 표현
※ 기능 모델링(Functional Modeling) = Function Modeling
- 프로세스들의 자료 흐름을 중심으로 처리 과정을 표현하는 모델링
- 자료 흐름도(DFD)를 활용하여 표현
- 추가적으로 코드-요든 방법론, 워프-브록 방법론이 있음
방법론 | 설명 |
코드-요든(Coad-Yourdon) 방법론 | ER 다이어그램을 사용하여 객체의 행위를 모델링하여, 객체 식별, 구조 식별, 주체 정의, 속성 및 관계 정의, 서비스 정의 등의 과정으로 구성되는 객체 지향 분석 방법 |
워프-브룩(Wirfs-Brock) 방법론 |
분석과 설계 간의 구분이 없고 고객 명세서를 평가해서 설계 작업까지 연속적으로 수행하는 분석 방법 |
'자격증 > 정보처리기사' 카테고리의 다른 글
[정보처리기사] 화면 설계 : UI 요구사항 확인(1) (1) | 2024.01.30 |
---|---|
[정보처리기사] 요구사항 확인 : 현행 시스템 분석(2) (0) | 2024.01.30 |
[정보처리기사] 요구사항 확인 : 현행 시스템 분석(1) (0) | 2024.01.29 |
[정보처리기사] 요구사항 확인 : 소프트웨어 개발 방법론(3) (1) | 2024.01.27 |
[정보처리기사] 요구사항 확인 : 소프트웨어 개발 방법론(1) (1) | 2024.01.24 |