객체지향 분석(OOA; Object Oriented Analysis): 사용자의 요구사항을 분석하여 모든 클래스(객체), 속성과 연산, 관계 등을 정의하여 모델링하는 작업
Rumbaugh(럼바우) 방법
: 분석활동을 객체 모델, 동적 모델, 기능 모델로 나누어 수행
Booch(부치) 방법
: 미시적(Micro) 개발 프로세스와 거시적(Macro) 개발 프로세스 모두 사용
: 클래스와 객체들을 분석 및 식별하고 속성과 연산 정의
Jacobson 방법
: Use Case를 강조하여 사용
Coad와 Yourdon 방법
: E-R 다이어그램 사용하여 객체의 행위 모델링
: 객체 식별, 구조 식별, 주제 정의, 속성과 인스턴스 연결 정의, 연산과 메시지 연결 정의 등의 과정으로 구성
Wirfs-Brock 방법
: 분석과 설계 간의 구분이 없음
: 고객 명세서를 평가해서 설계 작업까지 연속적으로 수행
모든 소프트웨어 구성 요소를 그래픽 표기법을 이용하여 모델링하는 기법
객체 모델링 기법(OMT; Object-Modeling Technique)이라고도 함
객체 모델링(Object Modeling)
: 정보 모델링이라고도 함
: 객체를 찾아내어 속성과 연산 식별 및 객체들 간의 관계를 규정하여 객체 다이어그램으로 표시
동적 모델링(Dynamic Modeling)
: 상태 다이어그램 이용
: 시간의 흐름에 따른 객체들 간의 제어 흐름, 상호 작용, 동작 순서 등의 동적인 행위 표현
기능 모델링(Functional Modeling)
: 자료 흐름도(DFD) 이용
: 다수의 프로세스들 간의 자료 흐름을 중심으로 처리 과정 표현
시스템 변경이나 확장에 유연한 시스템을 설계하기 위해 지켜야 할 다섯 가지 원칙
SOLID 원칙
SRP, OCP, LSP, ISP, DIP
SRP; Single Responsibility Principle
: 객체는 단 하나의 책임만 가져야 함
: 응집도는 높고, 결합도는 낮게 설계하는 것
OCP; Open-Closed Principle
: 기존의 코드를 변경하지 않고 기능을 추가할 수 있도록 설계
: 공통 인터페이스를 하나의 인터페이스로 묶어 캡슐화
LSP; Liskov Substitution Principle
: 자식 클래스는 최소한 부모 클래스에서 가능한 행위는 수행할 수 있어야 함
: 부모 클래스의 책임을 무시하거나 재정의하지 않고 확장만 수행
ISP; Interface Segregation Principle
: 자신이 사용하지 않는 인터페이스와 의존 관계를 맺거나 영향을 받지 않아야 함
: 인터페이스는 단 하나의 책임만 가져야 함
DIP; Dependency Inversion Principle
: 의존 관계가 성립될 때 추상성이 높은 클래스와 의존 관계를 맺어야 함
: 일반적으로 인터페이스 활용하면 준수됨