1. 모듈의 결합도 강도 순위
결합도는 모듈끼리 얼마나 강하게 연결되어 있는지를 말함.
좋은 설계는 결합도가 낮아야 함.
약한 결합도 → 강한 결합도
자료 결합도
→ 스탬프 결합도
→ 제어 결합도
→ 외부 결합도
→ 공통 결합도
→ 내용 결합도
표 정리
| 순서 | 결합도 | 설명 | 좋고 나쁨 |
|---|---|---|---|
| 1 | 자료 결합도 | 필요한 데이터만 주고받음 | 가장 좋음 |
| 2 | 스탬프 결합도 | 자료구조 전체를 넘김 | 비교적 좋음 |
| 3 | 제어 결합도 | 제어 신호를 넘겨 상대 동작을 결정 | 보통 |
| 4 | 외부 결합도 | 외부 형식, 장치, 프로토콜에 의존 | 나쁨 |
| 5 | 공통 결합도 | 전역 데이터를 여러 모듈이 공유 | 매우 나쁨 |
| 6 | 내용 결합도 | 다른 모듈 내부를 직접 참조 | 최악 |
암기
자스제외공내
자료 - 스탬프 - 제어 - 외부 - 공통 - 내용
이 순서는 약함 → 강함임.
즉:
자료 결합도가 가장 좋고, 내용 결합도가 가장 나쁨.
2. 정보 시스템 유지보수 유형
유지보수는 시스템 개발 후에 수정, 개선, 환경 변화 대응, 장애 예방을 하는 것임.
1. 수정 유지보수
오류를 고치는 유지보수.
버그 수정
계산 오류 수정
화면 오류 수정
2. 적응 유지보수
환경 변화에 맞추는 유지보수.
운영체제 변경
DBMS 변경
법/제도 변경
브라우저 버전 변경
3. 완전 유지보수
성능이나 기능을 개선하는 유지보수.
속도 개선
기능 추가
UI 개선
사용성 향상
4. 예방 유지보수
미래의 문제를 막기 위한 유지보수.
코드 정리
보안 취약점 사전 제거
구조 개선
장애 예방 패치
표 정리
| 유형 | 핵심 | 예시 |
|---|---|---|
| 수정 유지보수 | 오류 수정 | 버그 고침 |
| 적응 유지보수 | 환경 변화 대응 | OS, DB 변경 대응 |
| 완전 유지보수 | 기능/성능 개선 | 속도 개선, 기능 추가 |
| 예방 유지보수 | 미래 문제 방지 | 코드 정리, 보안 패치 |
암기
수정 = 고침 적응 = 맞춤 완전 = 개선 예방 = 미리 막음
3. 시스템 개발 생명주기, SDLC
SDLC는 Software Development Life Cycle임.
뜻은 소프트웨어를 개발하는 전체 과정임.
일반적인 순서
계획 → 분석 → 설계 → 구현 → 테스트 → 운영/유지보수
단계별 의미
| 단계 | 설명 |
|---|---|
| 계획 | 무엇을 만들지 정함 |
| 분석 | 사용자 요구사항 파악 |
| 설계 | 시스템 구조와 DB, 화면 설계 |
| 구현 | 실제 코드 작성 |
| 테스트 | 오류 확인 |
| 운영/유지보수 | 배포 후 수정, 개선 |
암기
계분설구테유
계획 - 분석 - 설계 - 구현 - 테스트 - 유지보수
4. 애자일의 뜻과 의미
애자일은 영어로 Agile이고, 뜻은 민첩한, 빠르게 움직이는임.
소프트웨어 개발에서 의미
애자일은 처음부터 완벽한 계획을 세워 끝까지 그대로 가는 방식이 아니라, 짧게 만들고 피드백을 받아 계속 고치는 개발 방식임.
애자일 특징
| 특징 | 설명 |
|---|---|
| 반복 개발 | 짧은 주기로 계속 개발 |
| 고객 피드백 중시 | 사용자의 의견을 자주 반영 |
| 변화 수용 | 요구사항 변경을 받아들임 |
| 빠른 결과물 | 완성품 일부를 빠르게 보여줌 |
| 협업 중시 | 팀원 간 소통 중요 |
폭포수 모델과 비교
| 구분 | 폭포수 모델 | 애자일 |
|---|---|---|
| 방식 | 순서대로 한 번에 진행 | 반복적으로 개발 |
| 변화 대응 | 어려움 | 쉬움 |
| 고객 피드백 | 후반에 반영 | 자주 반영 |
| 특징 | 계획 중심 | 변화 대응 중심 |
암기
애자일 = 짧게 만들고, 피드백 받고, 계속 개선하는 개발 방식
5. DevOps와 CI/CD 도구
네가 쓴 CL/CD는 거의 확실히 CI/CD를 말하는 거임.
CI/CD 뜻
CI
Continuous Integration
뜻은 지속적 통합임.
개발자가 코드를 자주 합치고, 자동으로 빌드와 테스트를 돌리는 것.
CD
Continuous Delivery 또는 Continuous Deployment
뜻은 지속적 제공 또는 지속적 배포임.
테스트가 끝난 코드를 배포 가능한 상태로 만들거나, 자동으로 배포까지 하는 것.
GitHub도 CI/CD를 빌드, 테스트, 배포 파이프라인 자동화로 설명하고, GitLab CI/CD도 .gitlab-ci.yml 파일로 단계, 작업, 스크립트를 정의해 파이프라인을 실행한다고 설명함. Jenkins 역시 CI 서버나 지속적 전달 허브로 사용할 수 있는 자동화 서버임.
CI/CD 도구 예시
| 도구 | 설명 |
|---|---|
| Jenkins | 대표적인 오픈소스 자동화 서버 |
| GitHub Actions | GitHub 저장소 기반 자동 빌드/테스트/배포 |
| GitLab CI/CD | GitLab에서 제공하는 CI/CD 파이프라인 |
| CircleCI | 자동 빌드/테스트/배포 도구 |
| Travis CI | CI 자동화 도구 |
| Azure DevOps | 마이크로소프트 DevOps 도구 |
시험용 암기
DevOps에서 CI/CD 도구 = Jenkins, GitHub Actions, GitLab CI/CD 같은 자동 빌드·테스트·배포 도구