Brain
Science
root
/
학습 노트
/
Study Note
/
4: 소프트웨어 공학 (Software Engineering)
/
4. Testing Quality
4. Testing Quality
191. 소프트웨어 설계 원칙 - 추상화, 캡슐화, 모듈화, 정보 은닉
192. 모듈 (Module) - 독립적 기능을 수행하는 단위
193. 응집도 (Cohesion) - 모듈 내부 요소들의 연관 정도 (높을수록 좋음)
194. 응집도 단계 - 우연적, 논리적, 시간적, 절차적, 통신적, 순차적, 기능적 응집도
195. 결합도 (Coupling) - 모듈 간 상호 의존 정도 (낮을수록 좋음)
196. 결합도 단계 - 내용, 공통, 제어, 스탬프, 자료 결합도
197. 팬인 (Fan-in) / 팬아웃 (Fan-out) - 모듈 복잡도 지표
198. 추상화 (Abstraction) - 제어, 자료, 과정 추상화
199. 정보 은닉 (Information Hiding) - 내부 구현 상세를 숨김
200. 분할과 정복 (Divide and Conquer)
201. 소프트웨어 아키텍처 (Software Architecture) 정의
202. 아키텍처 드라이버 (Architecture Drivers) - 비즈니스 목표, 제약, 품질 속성
203. 아키텍처 뷰 모델 (4+1 View) - 논리, 구현, 프로세스, 배치 + 유스케이스 뷰
204. 아키텍처 스타일 및 패턴 개요
205. 계층형 아키텍처 (Layered Architecture) - 관심사 분리 (Presentation, Business, Data)
206. 클라이언트-서버 아키텍처 (Client-Server)
207. 파이프-필터 아키텍처 (Pipe-Filter) - 데이터 스트림 처리
208. 브로커 패턴 (Broker Pattern) - 분산 시스템 메세지 중계
209. 블랙보드 패턴 (Blackboard Pattern) - 음성/패턴 인식, 공용 데이터소스를 여러 지식 모듈이 참조
210. 모델-뷰-컨트롤러 (MVC, Model-View-Controller)
211. MVP (Model-View-Presenter) / MVVM (Model-View-ViewModel)
212. 서비스 지향 아키텍처 (SOA, Service Oriented Architecture) - ESB 기반
213. 마이크로서비스 아키텍처 (MSA, Microservices Architecture)
214. 이벤트 드리븐 아키텍처 (EDA, Event-Driven Architecture)
215. 서버리스 아키텍처 (Serverless Architecture / FaaS)
216. 헥사고날 아키텍처 (Hexagonal Architecture / Ports and Adapters)
217. 클린 아키텍처 (Clean Architecture) - Robert C. Martin (Uncle Bob)
218. 어니언 아키텍처 (Onion Architecture)
219. 도메인 주도 설계 (DDD, Domain-Driven Design) - 에릭 에반스
220. 유비쿼터스 언어 (Ubiquitous Language) - 비즈니스와 기술의 공통 언어
221. 바운디드 컨텍스트 (Bounded Context) - 경계가 명확한 컨텍스트
222. 애그리게이트 (Aggregate) - 데이터 변경의 단위가 되는 객체 묶음
223. 컨텍스트 매핑 (Context Mapping) - 컨텍스트 간의 연동 관계 정의
224. 안티 코럽션 레이어 (ACL, Anti-Corruption Layer)
225. CQRS (Command Query Responsibility Segregation) - 명령과 조회 모델 분리
226. 이벤트 소싱 (Event Sourcing) - 상태 변경 이력을 이벤트 스트림으로 저장
227. 아키텍처 평가 기법 개요
228. SAAM (Software Architecture Analysis Method)
229. ATAM (Architecture Trade-off Analysis Method) - 품질 속성 간 상충 관계 분석
230. CBAM (Cost Benefit Analysis Method) - 경제적 관점의 평가
231. ADR (Architecture Decision Record) - 아키텍처 결정 기록
232. UML (Unified Modeling Language) - OMG 표준 객체지향 모델링 언어
233. 클래스 다이어그램 (Class Diagram) - 정적 구조 표현
234. 클래스 간 관계 - 일반화(상속), 실체화(인터페이스), 의존, 연관, 집합, 합성
235. 시퀀스 다이어그램 (Sequence Diagram) - 시간 흐름에 따른 상호작용 (동적)
236. 상태 다이어그램 (State Machine Diagram) - 객체의 상태 변화 (동적)
237. 액티비티 다이어그램 (Activity Diagram) - 처리 로직 및 워크플로우 (동적)
238. 유스케이스 다이어그램 (정적/기능)
239. 컴포넌트 다이어그램 / 배치 다이어그램 (Deployment Diagram) (정적/물리)
240. 통신 다이어그램 (Communication Diagram / Collaboration Diagram)
241. 패키지 다이어그램 / 복합 구조 다이어그램
242. 객체지향 설계 원칙 (SOLID)
243. SRP (Single Responsibility Principle) - 단일 책임 원칙
244. OCP (Open-Closed Principle) - 개방-폐쇄 원칙 (확장엔 열려있고 변경엔 닫혀있음)
245. LSP (Liskov Substitution Principle) - 리스코프 치환 원칙 (자식은 부모를 대체 가능)
246. ISP (Interface Segregation Principle) - 인터페이스 분리 원칙
247. DIP (Dependency Inversion Principle) - 의존 역전 원칙 (추상화에 의존)
248. DRY (Don't Repeat Yourself) 원칙
249. KISS (Keep It Simple, Stupid) 원칙
250. YAGNI (You Aren't Gonna Need It) 원칙
251. 디자인 패턴 (Design Patterns) 개요 - GoF (Gang of Four) 23가지
252. 생성 패턴 (Creational Patterns) - 객체 생성 메커니즘
253. 싱글톤 (Singleton) - 오직 하나의 인스턴스
254. 팩토리 메서드 (Factory Method) - 서브클래스가 생성할 객체 결정
255. 추상 팩토리 (Abstract Factory) - 구체적인 클래스 지정 없이 연관 객체군 생성
256. 빌더 (Builder) - 복잡한 객체를 단계별로 생성
257. 프로토타입 (Prototype) - 원본 객체를 복사하여 생성
258. 구조 패턴 (Structural Patterns) - 클래스/객체 조합
259. 어댑터 (Adapter) - 인터페이스 호환성 제공
260. 브리지 (Bridge) - 구현부에서 추상층을 분리
261. 컴포지트 (Composite) - 부분-전체 트리 구조 (단일 객체/복합 객체 동일 취급)
262. 데코레이터 (Decorator) - 동적으로 책임(기능) 추가
263. 퍼사드 (Facade) - 서브시스템에 대한 단순한 단일 인터페이스 제공
264. 프록시 (Proxy) - 대리 객체를 통한 접근 제어
265. 플라이웨이트 (Flyweight) - 인스턴스 공유로 메모리 절약
266. 행위 패턴 (Behavioral Patterns) - 알고리즘 및 책임 할당
267. 옵저버 (Observer) - 상태 변화 시 구독자에게 자동 알림
268. 전략 (Strategy) - 알고리즘을 캡슐화하여 동적으로 교체 가능
269. 템플릿 메서드 (Template Method) - 상위 클래스는 뼈대, 하위 클래스는 세부 구현
270. 이터레이터 (Iterator) - 내부 표현 노출 없이 순차 접근