📌소프트웨어 개발 생명 주기(SDLC)
1️⃣소프트웨어 개발 생명 주기(SDLC, Software Development Life Cycle)란?
✅ 소프트웨어 개발 생명 주기(SDLC)
- 소프트웨어 개발의 전 과정을 체계적으로 수행하기 위한 절차 및 방법론
- 요구사항 분석 → 설계 → 개발 → 테스트 → 유지보수 단계로 진행됨
- 대표적인 SDLC 모델에는 폭포수 모델, 프로토타입 모델, 나선형 모델, 애자일 모델 등이 있음
2️⃣ 소프트웨어 개발 모델 유형
✅ 각 모델의 특징과 장단점 정리
개발 모델 | 설명 | 장점 | 단점 |
---|---|---|---|
폭포수 모델 (Waterfall) |
선형 순차적 개발 방식, 단계별로 진행 | 구조적, 문서화 용이 | 변경 대응 어려움 |
하향식 설계 방식 HIPO(Hierarchy Input Process Output) |
기능을 계층적으로 나누고 입력/처리/출력 구조로 설계 | 시스템 기능을 쉽게 이해 가능 | 복잡한 시스템에는 부적절 |
프로토타입 모델 (Prototype) |
시제품(프로토타입) 제작 후 피드백 반영 | 고객 요구사항 반영 용이 | 비용과 시간 증가 가능 |
나선형 모델 (Spiral) |
폭포수 + 프로토타입 + 위험 분석 추가 | 위험 분석으로 리스크 최소화 | 개발 비용 높고 복잡함 |
애자일 모델 (Agile) |
반복적이고 유연한 개발 방식 | 변화에 빠르게 대응 가능 | 문서화 부족 가능성 |
✅ 모델별 핵심 차이
✔ 폭포수 모델 → 순차적 개발, 변경 어려움
✔ 프로토타입 모델 → 고객 피드백 반영 가능, 비용 증가 가능
✔ 나선형 모델 → 위험 분석 추가, 복잡한 프로젝트 적합
✔ 애자일 모델 → 반복적 개발, 유연한 대응 가능
3️⃣ 폭포수(Waterfall) 모델
✅ 특징
- 소프트웨어 개발을 순차적 단계(Step-by-Step) 로 진행
- 각 단계가 완료되어야 다음 단계로 진행 가능
- 요구사항 분석 → 설계 → 개발 → 테스트 → 유지보수
✅ 장점
✔ 체계적인 개발 가능 (문서화가 잘됨)
✔ 소규모 프로젝트에 적합
✅ 단점
✖ 변경 사항 대응이 어려움
✖ 고객 요구사항 변경 반영이 힘듦
4️⃣ 프로토타입(Prototype) 모델
✅ 특징
- 실제 개발 전에 시제품(프로토타입)을 제작하여 테스트
- 피드백을 반영하여 최종 제품 개발
✅ 장점
✔ 고객 요구사항 반영 용이
✔ UI/UX 개선 가능
✅ 단점
✖ 비용 증가 가능
✖ 개발 시간이 길어질 수 있음
5️⃣ 나선형(Spiral) 모델
✅ 특징
- 폭포수 모델 + 프로토타입 모델 + 위험 분석 추가
- 개발 과정에서 위험 요소를 분석하고 해결
✅ 장점
✔ 리스크 최소화 가능
✔ 대규모 프로젝트에 적합
✅ 단점
✖ 복잡한 구조
✖ 개발 비용이 높음
6️⃣ 애자일(Agile) 모델
✅ 특징
- 일정한 기간마다 짧은 주기(Iteration, Sprint)로 개발 반복
- 고객 피드백을 반영하며 유연하게 개발 진행
- Scrum, XP(eXtreme Programming), FDD 등 다양한 방법론 포함
✅ 장점
✔ 변경 사항 대응 용이
✔ 고객과의 지속적인 협업 가능
✅ 단점
✖ 문서화 부족 가능성
✖ 프로젝트 규모가 크면 관리 어려움
7️⃣ 상향식 vs 하향식 설계
✅ 하향식 설계(Top-Down)
- 절차 지향 (순차적)
- 큰 시스템을 먼저 설계하고 세부적인 기능을 구현
- 시스템 컴포넌트 설계 후 개발 진행
✅ 상향식 설계(Bottom-Up)
- 객체 지향
- 세부적인 모듈을 먼저 개발 후, 조합하여 시스템 완성
- 변경이 있을 경우 전체 시스템에 영향을 미칠 수 있음
☑️ Component : 명백한 역할을 가지며 재사용되는 모든 단위 / 인터페이스를 통해 접근 가능
✅ 차이점 정리
✔ 하향식 설계 → 큰 구조부터 세부 모듈 설계
✔ 상향식 설계 → 작은 모듈부터 조합하여 개발
📌스크럼(Scrum) 기법
✅ 애자일(Agile) 방법론 중 하나로, 팀 협업을 강조하는 반복적 개발 방법
1️⃣ 스크럼 주요 역할
역할 | 설명 |
---|---|
제품 책임자(Product Owner) | 요규사항이 담긴 백로그(Back log)를 작성 및 우선순위 지정 , |
요구사항을 책임지고 의사결정 | |
스크럼 마스터(Scrum Master) | 원활한 스크럼을 위해 객관적 시각으로 조언 및 가이드 제시, |
진행사항 점검 및 장애요소 논의 후 해결 | |
개발팀(Development Team) | PO와 SM을 제외한 모든 팀원 |
백로그에 스토리 추가 가능하나 우선순위는 지정불가 |
2️⃣ 스크럼 개발 프로세스
✅ Scrum 개발은 반복적인 "Sprint(스프린트)" 단위로 진행
✔ 스프린트 계획 → 개발 → 스프린트 리뷰 → 스프린트 회고
✔ 일반적으로 2~4주 단위로 진행
✅ 스크럼 프로세스 단계
단계 | 설명 |
---|---|
제품 백로그(Product Backlog) | 개발해야 할 전체 요구사항 목록 |
스프린트 계획 회의(Sprint Planning) | 스프린트 목표 및 작업 계획 |
스프린트(Sprint) | 개발 기간 (2~4주 단위) |
일일 스크럼 회의(Daily Scrum) | 매일 15분 동안 진행 상황 공유 |
스프린트 리뷰(Sprint Review) | 완료된 작업을 점검 및 데모 |
스프린트 회고(Sprint Retrospective) | 개선할 점 논의 |
✅ 스크럼의 핵심 개념
✔ 짧은 주기로 반복 개발
✔ 우선순위 높은 작업을 먼저 수행
✔ 팀 협업과 피드백을 중시
📌 익스트림 프로그래밍(XP)
1️⃣ 익스트림 프로그래밍(XP, eXtreme Programming)란?
✅ XP란?
- 애자일(Agile) 개발 방법론 중 하나로, 고객 요구사항 변화에 빠르게 대응하기 위해 개발 과정에서 반복적인 피드백과 개선을 강조하는 방법론
- 짧은 개발 주기(Iteration)를 반복하며 지속적인 코드 개선(Refactoring)과 고객과의 협업을 중요하게 여김
✅ XP의 핵심 가치 (4가지)
- 용기(Courage) → 실패를 두려워하지 않고 새로운 시도를 하며 개선
- 단순성(Simplicity) → 복잡한 구조보다 단순한 설계 및 코드 유지
- 의사소통(Communication) → 팀원 간 적극적인 협업 및 의견 공유
- 피드백(Feedback) → 고객 및 팀원과 지속적인 피드백을 주고받아 개선
- 존중(Respect) → 팀원과 고객을 존중하며 협력
✅ XP의 주요 원칙
원칙 | 설명 |
---|---|
전체 팀(Whole Team) | 개발팀과 고객이 함께 협력하여 프로젝트 진행 |
소규모 릴리즈(Small Release) | 짧은 주기로 작고 자주 배포하여 피드백 반영 |
테스트 주도 개발(TDD, Test Driven Development) | 테스트를 먼저 작성한 후 코드 개발 |
지속적인 통합(Continuous Integration, CI) | 코드 변경 사항을 빠르게 통합하여 오류 최소화 |
공동 소유권(Collective Ownership) | 개발된 코드는 특정 개발자가 아니라 팀 전체가 소유 |
짝 프로그래밍(Pair Programming) | 두 명이 한 팀이 되어 함께 코드 작성 및 리뷰 |
시간제한 개발(Sustainable Pace) | 무리한 일정 없이 일정한 속도로 개발 |
코드 개선(Refactoring) | 지속적으로 코드 품질을 개선 |
✅ XP의 특징
✔ 짧은 개발 주기(Iteration) 반복
✔ 문서보다는 소스 코드 중심 개발 (문서화 X, 코드 유지보수 O)
✔ 테스트 주도 개발(TDD)과 지속적 통합(CI) 활용
✔ 실제 사용자와 지속적인 피드백 반영
2️⃣ XP와 애자일(Agile)
✅ 애자일(Agile)이란?
- 변화에 유연하게 대응할 수 있도록 반복적(Iterative) 개발을 강조하는 방법론
- XP, Scrum, Lean, Kanban 등 다양한 애자일 방법론 포함
✅ 애자일 vs 전통적 개발(Waterfall)
구분 | 애자일(Agile) | 전통적 개발(폭포수, Waterfall) |
---|---|---|
개발 방식 | 반복적(Iterative) 개발 | 순차적(Sequential) 개발 |
변경 대응 | 유연하게 대응 가능 | 변경 반영 어려움 |
고객 참여 | 고객과 지속적 협업 | 개발 완료 후 고객 검토 |
문서화 | 최소한의 문서화 (코드 중심) | 문서 중심 개발 |
배포 주기 | 짧은 주기로 배포(Iteration) | 전체 개발 후 배포 |
✅ 애자일 개발의 특징
✔ 작은 단위로 개발 후 지속적 피드백 반영
✔ 변화하는 요구사항에 빠르게 대응
✔ 팀원 간 원활한 협업 및 커뮤니케이션 강조
3️⃣ XP와 스크럼(Scrum) 비교
구분 | XP(eXtreme Programming) | 스크럼(Scrum) |
---|---|---|
초점 | 코드 품질 및 기술적 실천 방법 | 팀워크 및 관리 프로세스 |
팀 구성 | 개발팀 중심 | 제품 책임자(Product Owner), 스크럼 마스터(SM), 개발팀 |
작업 단위 | 작은 기능(Function) 단위로 개발 | 백로그(Backlog) 기반 스프린트 개발 |
테스트 | 테스트 주도 개발(TDD) 필수 | 테스트는 개발과 분리될 수도 있음 |
주기 | 지속적인 피드백 및 코드 개선 | 2~4주 스프린트(Sprint) 단위로 개발 |
✅ 핵심 차이점
✔ XP → 코드 품질, TDD, 짧은 주기 반복 개발
✔ Scrum → 팀워크, 프로세스 중심, 역할 분담
4️⃣ XP 개발 프로세스
✅ XP의 개발 과정 (반복적 개발)
1) 사용자 스토리 작성(User Story) → 고객 요구사항을 간단한 스토리로 작성
2) 계획 수립(Planning Game) → 개발할 기능 우선순위 결정
3) 설계(Designing) → 짧고 단순한 설계 진행
4) 테스트 주도 개발(TDD) → 테스트 코드를 먼저 작성하고 개발
5) 구현(Implementation) → 코드 작성 및 지속적인 리팩토링 진행
6) 릴리즈(Release) → 짧은 주기로 배포 및 피드백 반영
✅ XP의 핵심 개발 기법
✔ TDD (테스트 주도 개발) → 코드 작성 전에 테스트 코드 먼저 작성
✔ Pair Programming (짝 프로그래밍) → 개발자 2명이 한 코드 작업
✔ Refactoring (코드 리팩토링) → 지속적으로 코드 품질 개선
✔ CI/CD (지속적 통합 및 배포) → 코드 변경 사항 자동 테스트 및 배포
🔥 시험에서는 XP의 개념, 특징, 개발 프로세스가 자주 출제됨!
💡 "XP = 코드 품질 & 테스트 중심, 스크럼 = 팀 협업 & 프로세스 관리"로 기억하면 쉽게 해결 가능! 🚀
📌 CASE (Computer-Aided Software Engineering) 정리
1️⃣ CASE(Computer-Aided Software Engineering)란?
✅ 소프트웨어 개발의 전 과정을 자동화(표준화)하는 작업
✅ 요구 분석 → 설계 → 구현 → 검사 등의 소프트웨어 생명 주기(SDLC) 과정에서 자동화된 도구를 사용하여 개발 생산성을 향상
2️⃣ CASE의 주요 개념
✅ 1980년대 처음 소개되었으며, 1990년대부터 널리 사용됨
✅ 소프트웨어 개발의 다양한 단계를 자동화하여 품질 향상 및 생산성 증가
✅ 비용 절감, 유지보수 편리성 향상, 모듈 재사용성 증가
3️⃣ CASE의 장점
장점 | 설명 |
---|---|
비용 절감 | 개발 과정 자동화로 인해 소프트웨어 개발 및 유지보수 비용 절감 |
모듈 재사용성 향상 | 기존에 개발된 코드나 설계를 재사용하여 중복 작업 최소화 |
SW 품질 향상 | 표준화된 개발 환경을 제공하여 품질 개선 |
생산성 향상 | 반복적인 작업을 자동화하여 개발 속도 증가 |
유지보수 간편 | 문서화 및 자동화된 설계 지원으로 유지보수 용이 |
4️⃣ CASE의 주요 기능
✅ 소프트웨어 개발 생명 주기(SDLC)의 모든 단계에서 자동화된 도구 제공
✅ CASE 도구는 각 단계에서 개발자를 지원하는 다양한 기능을 포함
지원 기능 | 설명 |
---|---|
전체 단계 연결 | SW 개발 생명 주기의 모든 단계를 연결하여 일관성 유지 |
자동화된 통합 도구 제공 | 설계, 문서화, 코드 생성 등을 자동으로 수행하는 도구 제공 |
그래픽 기능 제공 | 다이어그램, 명세화, 문서화를 위한 GUI 지원 |
자료 흐름도 작성 | 데이터 흐름을 시각적으로 표현하여 설계 이해도 향상 |
모델의 오류 검증 | 논리적 오류를 자동으로 검증하여 설계 단계에서 문제 발견 |
모델 간 모순 검사 | 여러 모델 간 일관성을 유지하기 위해 상호 검증 수행 |
원시코드 생성 | 설계된 모델을 기반으로 자동으로 코드 생성 가능 |
5️⃣ CASE의 활용 분야
✅ 대규모 소프트웨어 개발 프로젝트 → 프로젝트 관리 및 문서화 자동화
✅ 임베디드 시스템 개발 → 하드웨어-소프트웨어 통합 설계 지원
✅ 데이터베이스 설계 → ERD(Entity Relationship Diagram) 자동 생성
✅ 객체지향 개발 → UML(Unified Modeling Language) 다이어그램 지원
6️⃣ CASE 도구의 유형
✅ CASE 도구는 개발 과정에서 지원하는 기능에 따라 여러 가지로 구분됨
CASE 도구 유형 | 설명 |
---|---|
Upper CASE | 요구사항 분석 및 설계 단계 지원 (예: UML 모델링 도구) |
Lower CASE | 코드 작성, 테스트 및 유지보수 지원 (예: 코드 자동 생성 도구) |
Integrated CASE | Upper + Lower CASE 기능을 통합한 도구 |
7️⃣ CASE 도구 예시
✅ 대표적인 CASE 도구
도구 | 설명 |
---|---|
Rational Rose | UML을 기반으로 하는 객체지향 설계 도구 |
Enterprise Architect | UML 모델링 및 데이터베이스 설계 지원 |
PowerDesigner | 데이터베이스 설계 및 ERD 생성 도구 |
Microsoft Visio | 비즈니스 프로세스 및 다이어그램 설계 도구 |
Eclipse Modeling Framework (EMF) | 모델링을 기반으로 코드 자동 생성 가능 |
🔥 시험에서는 CASE의 개념, 주요 기능, 장점 및 도구 유형이 자주 출제됨!
💡 "CASE = SW 개발 자동화 도구"로 기억하면 쉽게 해결 가능! 🚀
'자격증 > 정보처리기사' 카테고리의 다른 글
[정보처리기사] 화면설계 (0) | 2025.03.07 |
---|---|
[정보처리기사] 소프트웨어 개발 테스트 관련 내용 정리 (0) | 2025.03.01 |
[정보처리기사] 디자인 패턴 (Design Patterns) (0) | 2025.02.27 |
[정보처리기사] 럼바우 분석 방법론 정리 (0) | 2025.02.24 |