1. 소프트웨어 설계
ㅇ 크고 복잡한 소프트웨어 시스템의 목적을 충족시키고자,
- 기본 구조 및 구현 프로그램을 고안,선택하여, 실현시키는 과정
ㅇ 소프트웨어 설계 과정
- 아키텍처 설계
- 데이터베이스 설계
- 서브시스템 설계
- 컴포넌트 설계
- 자료구조, 알고리즘 설계
2. 5가지 객체 지향 설계 원칙 (SOLID)
ㅇ 단일 책임 원칙 (Single Responsibility Principle)
- 클래스는 하나의 책임만 가져야 함
ㅇ 개방 폐쇄의 원칙 (Open Closed Principle)
- 확장에는 열려 있고, 수정에는 닫혀 있어야 함
ㅇ 리스코프 교체의 원칙 (Liskov Substitution Principle)
- 서브클래스는 상위 타입을 대체할 수 있어야 함
ㅇ 인터페이스 분리의 원칙 (Interface Segregation Principle)
- 클라이언트는 자신이 사용하는 인터페이스만 알아야 함
ㅇ 의존 관계 역전의 원칙 (Dependency Inversion Principle)
- 고수준 모듈이 저수준 모듈에 의존하지 않도록 설계함
3. 디자인 패턴 (Design Pattern)
ㅇ 모든 프로그램 형식에, 일반적으로 적용 가능한,
- 자료 구조 및 프로그램 구조를 다루는 이론
ㅇ 주로,
- 소프트웨어 아키텍처 수준 보다 낮은 수준의 설계 문제에서,
- 자주 접하는 문제에 대해,
- 객체 간의 상호관계 등을 이용하여,
- 재사용 가능한 솔루션을 제공하기 위함
ㅇ 주요 종류
- 싱글톤 패턴 : 하나의 클래스에 단 하나의 인스턴스 만 생성하는 패턴
- 반복자 패턴 : 컬렉션의 요소를 순차적으로 접근하도록 하는 패턴
- 어댑터 패턴 : 호환되지 않는 인터페이스를 연결하는 변환 패턴
- 데코레이터 패턴 : 객체에 추가 기능을 동적으로 제공하는 패턴
- 팩토리 메소드 패턴 : 객체 생성 과정을 서브클래스에서 정의하는 패턴
- 추상 팩토리 패턴 : 관련 객체의 생성을 일관되게 제공하는 패턴
- 상태 패턴 : 객체의 상태에 따라 행위를 변경하는 패턴
- 옵서버 패턴 : 객체 상태 변화를 관찰자들에게 알리는 패턴