
소프트웨어 구축
1. 소프트웨어 개발 프레임워크
웹 프레임워크
- HTML/CSS/JavaScript 기반
- 서버와 클라이언트 사이 인터페이스 제공
- Ex) Django, Flask, Spring Boot 등
스프링 프레임워크
- 자바 기반 엔터프라이즈 앱 프레임워크
- MVC 아키텍처 / IoC, AOP 지원
전자정부 프레임워크
닷넷 프레임워크
- Microsoft의 Windows 앱 개발용 프레임워크
- CLR 기반 실행 환경
2. API (Application Programming Interface)
- 프로그램이 운영체제, 다른 프로그램과 상호작용하게 하는 인터페이스
- 종류: 라이브러리, 웹 API 등
3. Fan-out (결합도)
- 하나의 모듈이 호출하는 하위 모듈 수
- Fan-out이 많으면 복잡도 ↑
4. 응집도 (Cohesion)
| 응집도 종류 | 설명 |
|---|
| 기능적 | 하나의 기능만 수행 (가장 높은 응집도) |
| 순차적 | 데이터 흐름을 따라 작업 수행 |
| 통신적 | 동일 입력 데이터를 사용 |
| 절차적 | 절차는 관련 있지만 목적이 다름 |
| 시간적 | 동시에 실행되는 기능 |
| 논리적 | 선택 구조 기반 |
| 우연적 | 관련 없는 요소들 묶임 (가장 낮은 응집도) |
5. 결합도 (Coupling)
| 결합도 종류 | 설명 |
|---|
| 자료 | 데이터만 전달 (낮은 결합도) |
| 스탬프 | 구조체 단위 전달 |
| 제어 | 플래그 등으로 제어 흐름 전달 |
| 외부 | 외부 인터페이스 의존 |
| 공통 | 전역 변수 공유 |
| 내용 | 직접 접근 (가장 높은 결합도) |
6. 객체지향 (Object-oriented)
구성 요소
- 객체(Object): 고유 식별자, 상태, 행동 포함
- 클래스(Class): 동일한 속성과 메서드를 가진 객체의 집합
- 캡슐화(Encapsulation): 정보 은닉, 인터페이스만 노출
- 상속(Inheritance): 부모 클래스의 특성 상속
- 다형성(Polymorphism): 하나의 메시지를 다양한 방식으로 처리
7. SOLID 원칙
| 원칙 | 설명 |
|---|
| SRP | 단일 책임 원칙 |
| OCP | 개방-폐쇄 원칙 |
| LSP | 리스코프 치환 원칙 |
| ISP | 인터페이스 분리 원칙 |
| DIP | 의존 역전 원칙 |
8. 디자인 패턴
생성 패턴
- 객체 생성 관련 패턴 (추상 팩토리, 빌더, 싱글톤 등)
구조 패턴
- 클래스 및 객체 간 구조 관계 표현 (어댑터, 브리지 등)
행위 패턴
- 객체 간 상호작용을 다룸 (옵저버, 커맨드, 상태 등)
9. 소프트웨어 테스트 기초
테스트 기본 용어
- 테스트 시나리오: 테스트 목표와 흐름 기술
- 테스트 오라클: 예상 결과 도출 기준
- 테스트 하네스: 테스트 자동화 도구 집합
- 테스트 드라이버: 상위 모듈 대체
- 테스트 스텁: 하위 모듈 대체
- 테스트 케이스: 입력값 + 수행조건 + 예상 결과
10. 테스트 종류
테스트 시기 기준
- 정적 테스트: 코드 실행 없이 분석
- 동적 테스트: 코드 실행하여 결과 확인
테스트 수준 기준
- 단위 테스트: 모듈 단위
- 통합 테스트: 모듈 간 연동
- 시스템 테스트: 전체 시스템 검증
- 인수 테스트: 고객 요구사항 만족 검증
11. 테스트 방식
화이트박스 테스트
- 내부 로직 기반 테스트
- 테스트 커버리지 기준 사용 (문장, 분기, 조건 등)
블랙박스 테스트
- 외부 동작 기반 테스트
- 동등분할, 경계값 분석, 원인-결과 그래프 등 사용
12. 테스트 기법
| 기법 | 설명 |
|---|
| 회복 테스트 | 복구 가능성 평가 |
| 보안 테스트 | 비인가 접근 방지 기능 테스트 |
| 스트레스 테스트 | 과부하 상황 테스트 |
| 성능 테스트 | 반응 시간, 처리량 등 측정 |
| 구조 테스트 | 구조상의 문제 탐지 |
| 회귀 테스트 | 수정 후 기존 기능 정상 여부 확인 |
| 병행 테스트 | 동시 사용자 상황 비교 테스트 |
13. 소프트웨어 유지보수
유지보수 유형
| 유형 | 설명 |
|---|
| 수정 유지보수 | 오류 수정 |
| 적응 유지보수 | 환경 변화 대응 |
| 완전 유지보수 | 성능 개선, 기능 추가 |
| 예방 유지보수 | 잠재적 문제 예방 |
14. 코드 품질 및 관리
코드 스멜 (Code Smell)
- 유지보수 어려운 코드
- 긴 함수, 중복 코드, 깊은 중첩 등
형상 관리 도구
15. 형상 관리 개요 (SCM)
- 형상 항목 식별 → 변경 제어 → 형상 감사 → 상태 보고
- 베이스라인 설정 → 변경 이력 관리
16. 형상 관리 도구
| 도구 | 설명 |
|---|
| CVS | 파일 단위 관리 |
| SVN | 디렉토리/트리 구조 관리 |
| Git | 분산형, 병렬 개발 가능 |
17. 품질 검증 기준
| 기준 | 설명 |
|---|
| 기능성 | 기능 적절성 |
| 완전성 | 누락 없음 |
| 일관성 | 표준 및 문서 일치 |
| 변경 용이성 | 유지보수 용이 |
| 추적 가능성 | 변경 사항 추적 가능 |
18. 소프트웨어 프로세스 품질 모델
ISO 12207
- 소프트웨어 생명주기 표준
- 요구분석, 설계, 구현, 테스트, 운영 등
CMMI
| 단계 | 설명 |
|---|
| 1단계 | 초기 단계 (비공식) |
| 2단계 | 반복 가능 프로세스 (요구사항 관리 등) |
| 3단계 | 정의된 프로세스 (조직 차원 표준화) |
| 4단계 | 정량적 관리 (측정 기반) |
| 5단계 | 최적화 단계 (지속적 개선) |