(1) 소프트웨어 생명주기 모델
소프트웨어 생명주기란?
시스템의 요구분석부터 유지보수까지 전 공정을 체계화한 절차.
시스템이 개발될 때부터 운용과 유지보수를 거쳐 생애를 마칠 때까지 어떠한 순서를 밟는지에 대한 작업 프로세스를 모델화한 것.
소프트웨어 생명주기 모델 프로세스
요구사항 분석 -> 설계 -> 구현 -> 테스트 -> 유지보수
소프트웨어 생명주기 모델 종류
폭포수 모델 (Waterfall Model) | 선형 생명주기 모형 (=고전적 생명주기 모형) 가장 오래되어 적용 경험과 성공 사례가 많음. 단계별 정의와 산출물이 명확하여 이해가 용이. 관리 편리. 요구사항 변경이 어려움. 타당성 검토 -> 계획 -> 요구사항 분석 -> 설계 -> 구현 -> 테스트 -> 유지보수 |
프로토타이핑 모델 (Prototyping Model) | 고객의 요구 기능을 프로토타입으로 구현. 고객의 피드백을 통해 소프트웨어를 만듦. 발주자와 개발자 모두에게 공동의 참조 모델을 제공. 프로토타입은 구현 단계의 구현 골격을 의미 요구분석이 용이하고 타당성 검증이 가능. 프로토타입 폐기에 따른 비용 증가. |
나선형 모델 (Spiral Model) | 개발 시 위험을 최소화하기 위해 점진적으로 개발. 위험성 감소와 변경에 유연함. 관리 어려움. 계획 및 정의 -> 위험 분석 -> 개발 -> 고객 평가 |
반복적 모델 (Iteration Model) | 구축대상을 나눠 병력적으로 개발 후 통합. 반복적으로 개발하여 점증 완성시키는 모델. 병행 개발에 따른 일정 단축 가능. 병행 개발에 따른 관리 비용 증가. 사용자의 요구사항 일부분을 반복적 개발하여 최종으로 완성. |
(2) 소프트웨어 개발 방법론
소프트웨어 개발 방법론이란?
소프트웨어 개발 전 과정에 지속적으로 적용할 수 있는 방법, 절차, 기법.
소프트웨어를 하나의 생명체로 간주하고 소프트웨어 개발의 시작부터 시스템을 사용하지 않는 과정까지의 전 과정을 형상화한 방법론.
소프트웨어 개발 방법론 종류
구조적 방법론 (Structured Development) | 전체 시스템을 기능에 따라 나누어 개발하고, 이를 통합하는 분할과 정복 접근 방식의 방법론. 프로세스 중심의 하향식 방법론. 구조적 프로그래밍 표현을 위해 나씨-슈나이더만 차트 사용. * 나씨-슈나이더만 차트? 논리의 기술에 중점을 둔 도형식 표현 방법. 연속, 선택 및 다중 선택, 반복 등의 제어 논리 구조로 표현 조건이 복합되어 있는 곳의 처리를 시각적으로 명확히 식별하는데 적합. |
정보공학 방법론 (Information Engineering Development) | 정보시스템 개발에 필요한 관리 절차와 작업 기반을 체계화한 방법론. 개발주기를 이용해 대형 프로젝트를 수행하는 체계적인 방법론. |
객체 지향 방법론 (Object-Oriented Development) | 객체라는 기본 단위로 시스템을 분석 및 설계하는 방법론. 복잡한 현실 세계를 사람이 이해하는 방식으로 시스템에 적용하는 방법론. 객체, 클래스, 메시지 사용 |
컴포넌트 기반 방법론 (Component Based Development) | 소프트웨어를 구성하는 컴포넌트를 조립해서 하나의 새로운 응용 프로그램을 작성하는 방법론. 개발 기간 단축으로 인한 생산성 향상. 새로운 기능 추가 쉬움.(확장성) 소프트웨어 재사용 가능 |
애자일 방법론 (Agile Development) | 사람 중심. 변화에 유연하고 신속 적응하여 효율적인 시스템 개발. 신속 적응적 경량 개발 방법론. 개발 과정의 어려움을 극복하기 위해 적극적으로 모색한 방법론 |
제품 계열 방법론 (Product Line Development) | 특정 제품을 적용하고 싶은 공통된 기능을 정의하여 개발하는 방법론. 임베디드 소프트웨어를 작성하는 데 유용한 방법론. 영역 공학과 응용 공학으로 구분. * 영역 공학 : 영역 분석, 영역 설계, 핵심 자산을 구현하는 영역 * 응용 공학 : 제품 요구분석, 제품 설계, 제품을 구현하는 영역 |
애자일 방법론의 개념
절차보다는 사람이 중심이 되어 변화에 유연하고 신속하게 적응하면서 효율적으로 시스템을 개발할 수 있는 신속 적응적 경량 개발 방법론.
개발 기간이 짧고 신속하며, 폭포수 모형에 대비되는 방법론으로 개발과 함께 즉시 피드백을 받아서 유동적으로 개발 가능.
애자일 방법론의 등장 배경
1) 소프트웨어 개발 환경의 변화 : 소프트웨어 개발 트렌드가 모바일 환경으로 변화하였고, 시장 적시성과 잦은 배포의 중요성이 부각.
2) 기존 개발 방법론의 한계 : 전통적 방법론은 문서 및 절차 위주로 변화에 신속 대응이 어려움. 빠르게 적용하고 효율적으로 개발할 수 있는 방법론의 필요성이 증가.
애자일 방법론의 유형
1) XP
의사소통 개선과 즉각적 피드백으로 소프트웨어 품질을 높이기 위한 방법론.
1~3주의 반복 개발 주기.
5가지 가치 (용기 / 단순성 / 의사소통 / 피드백 / 존중)
12가지 기본원리 (짝 프로그래밍 / 공동 코드 소유 / 지속적인 통합 / 계획 세우기 / 작은 릴리즈 / 메타포어 / 간단한 디자인 / 테스트 기반 개발 / 리팩토링 / 40시간 작업 / 고객 상주 / 코드 표준)
2) 스크럼
매일 정해진 시간, 장소에서 짧은 시간의 개발을 하는 팀을 위한 프로젝트 관리 중심 방법론.
(백로그 / 스프린트 / 스크럼 미팅 / 스크럼 마스터 / 스프린트 회고 / 번 다운 차트)
3) 린
도요타의 린 시스템 품질기법을 소프트웨어 개발 프로세스에 적용해서 낭비 요소를 제거하여 품질을 향상시킨 방법론.
(JIT_Just In Time / Kanban보드)
7가지 원칙 (낭비제거 / 품질 내재화 / 지식 창출 / 늦은 확정 / 빠른 인도 / 사람 존중 / 전체 최적화)
애자일 방법론과 전통적 방법론
애자일 방법론 | 전통적 방법론 |
유동적 범위 | 확정적 범위 |
팀 중심 업무 수행 | 관리자 주도적 명령과 통제 개인 단위의 업무 수행 |
반복 주기 단위로 소프트웨어를 개발 / 검증 | 분석 / 설계 / 구현 / 테스트를 순차적으로 수행 |
업무 몰입 / 팀 평가 | 경쟁 / 개별 평가 |
문서화보다는 코드 강조 | 상세한 문서화 |
고객 가치 전달 | 계획 /일정 준수 |
XP / 스크럼 / 린 | 폭포수 / 프로토타입 / 나선형 |
(3) 객체 지향 분석 방법론
객체 지향 분석이란?
사용자의 요구사항을 분석하여 요구된 문제와 관련된 모든 클래스(객체), 속성과 연산, 관계를 정의하여 모델링하는 기법.
객체 지향 분석 방법론의 종류
1) OOSE (Object Oriented Software Engineering)
야콥슨 (Jacobson)
유스케이스에 의한 접근 방법.
분석, 설계, 구현 단계.
기능적 요구사항 중심의 시스템
2) OMT (Object Modeling Technology)
럼바우 (Rumbaugh)
그래픽 표기법을 이용하여 소프트웨어 구성요소를 모델링하는 방법론.
객체 모델링 -> 동적 모델링 -> 기능 모델링
1. 객체 모델링 (=정보 모델링) (Object Modeling) (=Information Modeling)
시스템이 요구하는 객체를 찾고, 객체 간의 관계를 정의하여 ER 다이어그램을 만드는 과정까지의 모델링.
객체 다이어그램을 활용하여 표현.
2. 동적 모델링 (Dynamic Modeling)
시간의 흐름에 따라 객체들 사이의 제어 흐름, 동작 순서 등의 동적인 행위를 표현하는 모델링.
상태 다이어그램을 활용하여 표현.
3. 기능 모델링 (Functional Modeling)
프로세스들의 자료 흐름을 중심으로 처리 과정을 표현하는 모델링.
자료 흐름도(DFD)를 활용하여 표현.
3) OOD (Object Oriented Design)
부치 (Booch)
설계 문서화를 강조하여 다이어그램 중심으로 개발하는 방법론.
분석과 설계의 분리가 불가능.
분석하는 데 이용된 객체 모델의 설계 시 적용.
'정보처리기사' 카테고리의 다른 글
2.1 UI 요구사항 확인 (1) | 2022.09.13 |
---|---|
1-5. 요구사항 (0) | 2022.09.13 |
1-4. 개발 기술 환경 정의 (0) | 2022.09.13 |
1-3. 현행 시스템 파악 (1) | 2022.09.08 |
1-2. 비용산정 모형과 일정관리 모형 (0) | 2022.09.07 |