166. 소프트웨어 개발 방법론
- 소프트웨어 개발, 유지보수 들에 필요한 여러 가지 일들의 수행방법과 효율적으로 수행하려는 과정에서 필요한 각종 기법 및 도구를 체계적으로 정리하여 표준화 한 것
- 소프트웨어의 생산성과 품질 향상이 목적
1. 구조적 방법론
- 정형화된 분석 절차에 따라 사용자 요구사항을 파악해 문서화하는 처리(Process) 중심의 방법론
- 1960년대 까지 가장 많이 적용되었던 소프트웨어 개발 방법론
- 쉬운 이해 및 검증이 가능한 프로그램 코드를 생성하는 것이 목적
- 복잡한 문제를 다루기 위해 분할과 정복(Divide and Conquer) 원리 적용
> 타당성 검토 단계 → 계획 단계 → 요구사항 단계 → 설계 단계 → 구현 단계 → 시험 단계 → 운용/유지보수 단계
2. 정보공학 방법론
- 정보 시스템의 개발을 위해 계획, 분석, 설계, 구축에 정형화된 기법들을 상호 연관성 있게 통합 및 적용하는 자료(Data) 중심의 방법론
- 정보 시스템 개발 주기를 이용해 대규모 정보 시스템을 구축하는데 적합
- 개체 관계도(ERD)를 사용
> 정보 전략 계획 수립 단계 → 업무 영역 분석 단계 → 업무 시스템 설계 단계 → 업무 시스템 구축 단계
3. 객체지향 방법론
- 현실 세계의 개체(Entity)를 기계의 부품처럼 하나의 객체(Object)로 만들어 소프트웨어를 개발할 때 기계의 부품을 조립하듯이 객체들을 조립해서 필요한 소프트웨어를 구현하는 방법론
- 구조적 기법의 문제점 해결책
- 설계 과정에서 패키지 다이어그램(Package Diagram), 배치 다이어그램(Deployment Diagram), 상태 전이도(State Transition Diagram) 주로 사용
> 요구 분석 단계 → 설계 단계 → 구현 단계 → 테스트 및 검증 단계 → 인도 단계
4. 컴포넌트 기반 (CBD; Component Based Development) 방법론
- 기존의 시스템이나 소프트웨어를 구성하는 컴포넌트를 조합하여 하나의 새로운 애플리케이션을 만드는 방법론
- 컴포넌트의 재사용(Reusability)이 가능하여 시간과 노력을 절감
- 새로운 기능을 추가하는 것이 간단해 확장성 보장
- 유지보수 비용을 최소화하고 생산성 및 품질 향상
> 개발 준비 단계 → 분석 단계 → 설계 단계 → 구현 단계 → 테스트 단계 → 전개 단계 → 인도 단계
💡 분석 단계의 표준 산출물 → 사용자 요구사항 정의서
5. 애자일 (Agile) 방법론
- '민첩한', '기민한'
- 고객의 요구사항 변화에 유연하게 대응할 수 있도록 일정한 주기를 반복하면서 개발과정을 진행하는 방법론
- 소규모 프로젝트, 고도로 숙달된 개발자, 급변하는 요구사항에 적합
- 익스트림 프로그래밍(XP; eXtreme Programming), 스크럼(Scrum), 칸반(Kanban), 크리스탈(Crytal)
> 사용자 스토리 → 계획 → 개발 → 승인 테스트 (계획, 개발, 승인 테스트 반복)
6. 제품 계열 방법론
- 특정 제품에 적용하고 싶은 공통된 기능을 정의하여 개발하는 방법론
- 임베디드 소프트웨어
- 영역공학 : 영역 분석, 영역 설계, 핵심 자산 구현
- 응용공학 : 제품 요구 분석, 제품 설계, 제품 구현
- 영역공학과 응용공학의 연계를 위해 제품의 요구사항, 아키텍처, 조립 생산이 필요
167. S/W 공학의 발전적 추세
1. 소프트웨어 재사용 (Software Reuse)의 개요
- 이미 개발되어 인정받은 소프트웨어의 전체 혹은 일부분을 다른 소프트웨어 개발이나 유지에 사용하는 것
- 개발의 품질과 생산성을 높이기 위한 방법
- 기존에 개발된 소프트웨어와 경험, 지식 등을 새로운 소프트웨어에 적용
- 재사용의 이점
- 개발 시간과 비용 단축
- 품질 향상
- 개발의 생산성 향상
- 프로젝트 실패의 위험 감소
- 시스템 구축 방법에 대한 지식을 공유
- 시스템 명세, 설계, 코드 등 문서를 공유
2. 소프트웨어 재사용 방법
1) 합성 중심 (Composition-Based) = 블록 구성 방법
- 전자 칩과 같은 소프트웨어 부품, 즉 블록(모듈)을 만들어 끼워 맞추어 소프트웨어를 완성시키는 방법
2) 생성 중심 (Generation-Based) = 패턴 구성 방법
- 추상화 형태로 쓰여진 명세를 수체화하여 프로그램을 만드는 방법
3. 소프트웨어 재공학 (Software Reengineering)의 개요
- 새로운 요구에 맞도록 기존 시스템을 이용하여 보다 나은 시스템을 구축하고, 새로운 기능을 추가하여 소프트웨어 성능을 향상시키는 것
- 유지보수 비용이 소프트웨어 개발 비용의 대부분을 차지하는 문제를 염두에 두어 기존 소프트웨어의 데이터와 기능들의 개조 및 개성을 통해 유지보수성과 품질을 향상시키려는 기술
- 기존 소프트웨어 기능을 개조하거나 개선하므로 예방(Preventive) 유지보수 측면에서 소프트웨어 위기를 해결하는 방법
- 소프트웨어 수명이 연장
- 소프트웨어 기술 향상
- 소프트웨어 개발기간 단축
- 발생할 수 있는 오류 줄어듦
- 비용이 절감
💡 주요 활동
1) 분석(Analysis)
- 기존 소프트웨어의 명세서를 확인하여 소프트웨어의 동작을 이해하고, 재공학할 대상을 선정하는 활동
2) 재구성(Restrructuring)
- 기존 소프트웨어의 구조를 향상시키기 위해 코드를 재구성하는 활동
- 소프트웨어의 기능과 외적인 동작은 바뀌지 않음
3) 역공학(Reverse Engineering)
- 기존 소프트웨어를 분석하여 소프트웨어 개발과정과 데이터 처리 과정을 설명하는 분석 및 설계 정보를 재발견하거나 다시 만들어내는 활동
- 일반적인 개발 단계와는 반대 방향으로 기존 코드를 복구하거나, 기존 소프트웨어의 구성 요소, 관계를 파악하여 설계도를 추출
4) 이식(Migration)
- 기존 소프트웨어를 다른 운영체제나 하드웨어 환경에서 사용할 수 있도록 변환하는 활동
4. CASE (Computer Aided Software Engineering)의 개요
- 요구분석, 설계, 구현, 검사 및 디버깅 과정 전체 또는 일부를 컴퓨터와 전용 소프트웨어 도구를 사용해 자동화하는 것
- 객체지향 시스템, 구조적 시스템 등 다양한 시스템에서 활용되는 자동화 도구
- 공통 모듈을 사용할 수 있어 재사용성을 향상시킴
- 유지보수가 간편해짐
- 소프트웨어 개발 도구와 방법론이 결합된 것
- 정형화된 구조 및 방법(매커니즘)을 소프트웨어 개발에 적용하여 생산성 및 품질 향상을 구현하는 공학기법
- 개발의 모든 단계에 걸쳐 일관된 방법론을 제공하는 자동화 도구들을 지원
- 개발자들은 개발의 표준화를 지향하며, 자동화의 이점을 얻을 수 있음
- 상위 CASE 도구 : 요구 분석, 설계 과정을 지원
- 하위 CASE 도구 : 구현, 테스트 과정을 지원
- CASE 주요기능
- 소프트웨어 생명 주기 전 단계 연결
- 다양한 소프트웨어 개발 모형 지원
- 그래픽 지원
- 모델들의 모순 검사 및 오류 검증
- 자료 흐름도 작성
- CASE 원천 기술
- 구조적 기법
- 프로토타이핑
- 자동 프로그래밍
- 정보 저장소
- 분산처리
📖 Reference
2023 시나공 정보처리기사 필기 : 네이버 도서
네이버 도서 상세정보를 제공합니다.
search.shopping.naver.com
728x90
반응형
'Certificate > 정보처리기사' 카테고리의 다른 글
| [5과목 정보시스템 구축 관리] 소프트웨어 개발 방법론 활용 - 171. 수학적 산정 기법 = 경험적 추정 모형, 실험적 추정모형 (0) | 2026.05.14 |
|---|---|
| [5과목 정보시스템 구축 관리] 소프트웨어 개발 방법론 활용 - 168. 비용 산정 기법 ~ 170. 비용 상정 기법 - 상향식 (0) | 2026.05.14 |
| [4과목 프로그래밍 언어 활용] 응용 SW 기초 기술 활용 - 164. 프로토콜의 개념 ~ 165. ⭐ TCP/IP (0) | 2025.11.27 |
| [4과목 프로그래밍 언어 활용] 응용 SW 기초 기술 활용 - 163. ⭐ 네트워크 관련 장비 (0) | 2025.11.27 |
| [4과목 프로그래밍 언어 활용] 응용 SW 기초 기술 활용 - 162. ⭐ OSI 참조 모델 (0) | 2025.11.27 |