1. 소프트웨어 개발¶
공식 영역명: 기술영역 01 소프트웨어 개발 (TOPCIT ESSENCE Ver.3)
주요 학습 주제¶
1.1 소프트웨어 공학 개요 · 문서 보기¶
- 소프트웨어 개발 생명주기 (SDLC)
- 개발 방법론 (폭포수, 프로토타입, 나선형, 애자일)
- 애자일 방법론 (XP, 스크럼, 칸반)
- 소프트웨어 재사용, 역공학
1.2 자료구조와 알고리즘 · 문서 보기¶
- 시간/공간 복잡도 (Big-O)
- 정렬 알고리즘 (버블, 선택, 삽입, 퀵, 병합, 힙)
- 탐색 알고리즘 (이진 탐색, DFS, BFS)
- 최단 경로 (다익스트라, 벨만-포드, 플로이드-워셜)
- 최소 신장 트리 (MST)
- 자료구조 (스택, 큐, 트리, 그래프, 힙, 해시) · 문서 보기
1.3 소프트웨어 설계 원리¶
- 응집도 (7단계: 기능적~우연적)
- 결합도 (6단계: 자료~내용)
- 소프트웨어 아키텍처 스타일 (MVC, 계층, 클라이언트-서버)
1.4 객체지향 설계 · 문서 보기¶
- 객체지향 개념 (캡슐화, 상속, 다형성, 추상화)
- SOLID 원칙
- 디자인 패턴
- UML 다이어그램 (유스케이스, 클래스, 시퀀스, 액티비티)
1.5 소프트웨어 테스팅과 리팩토링¶
- 테스트 유형 (단위, 통합, 시스템, 인수, 회귀)
- 블랙박스 vs 화이트박스 테스트
- 리팩토링, 코드스멜
1.6 소프트웨어 요구관리 · 형상관리 · 유지관리¶
- 요구사항 관리 (SRS, 추적성)
- 형상관리 (Git, SVN)
- 소프트웨어 유지보수 종류
- 오픈소스 라이선스
1.7 프로그래밍 언어와 개발환경¶
- 컴파일러 vs 인터프리터
- C, Java, Python, JavaScript 특징
- CI/CD, 소프트웨어 빌드 및 배포