본문 바로가기
정보처리기사/필기

[정보처리기사] Part05-01-1. 소프트웨어 개발방법론 선정 (1)

by 채연2 2022. 2. 16.

소프트웨어 개발 생명주기 (Software Development Life Cycle)

☞ 소프트웨어를 어떻게 개발할 것인가에 대한 추상적 표현

☞ 순차적 또는 병렬적 단계로 구성되며 개발 모델 또는 소프트웨어 공학 패러다임으로 정의

☞ 타당성 검토 > 분석 > 설계 > 개발 > 테스트 > 운영 > 유지보수 > 폐기

 

    ▶ 특징

        ▷ 효율적 자원 사용

            → 전체 프로젝트 비용 산정과 개발 계획 수립 가능한 기본 골격 제시

            → 개발 생명주기 각 단계에 관련된 활동들 정의

        ▷ 산출물 표준화

            → 용어, 산출물 등 일관성 있도록 산출물 표준화

            → 참여자들 간 의사소통 기준과 용어 표준화 가능케 함

            → 단계별 활동들 통해 다음 단계에 활용될 수 있는 산출물 작성됨

        ▷ 프로젝트 관리

            → 원활한 프로젝트 수행 위한 프로젝트 관리 지원

            → 문서화 충실한 프로젝트 관리 가능케 함

 

    ▶ 구성 단계

        ▷ 정의단계 (타당성 검토, 요구 분석)

            → 사용자 요구사항 확인 및 타당성 검토

            → 개발에 필요한 요구사항 명세화

        ▷ 개발단계 (설계, 구현, 테스트)

            → UML, ERD 등 다양한 설계도구 이용한 설계작업 진행

            → 코딩 통한 프로그램 개발

            → 단위/통합/시스템/인수/설치 테스트

        ▷ 유지보수단계 (운영/유지보수, 폐기)

            → 시스템 운영 및 운영 중 발생한 문제점들에 대한 유지보수 진행

            → 새로운 시스템 개발로 인한 기존 시스템 폐기

 

    ▶ 소프트웨어 개발 생명주기 모델 유형

        1. 폭포수 모델

            ▷ 정의

                → 검토/승인을 거쳐 순차적 하향식으로 개발 진행되는 생명주기 모델

            ▷ 장점

                → 이해하기 쉬움

                → 다음 단계 진행 전에 결과 검증 및 관리 용이

            ▷ 단점

                → 요구도출 어려움

                → 설계/코딩/테스트 지연 가능

                → 문제 발생 시 지연 가능

 

            ▷ SDLC 단계별 특징

                □ 요구사항 분석

                    → 개발하고자 하는 SW에 대한 요구사항 수집, 문제 이해 및 분석 단계

                    → SW 엔지니어 또는 분석가가 고객 요구사항을 기능, 성능, 인터페이스 등으로 파악하고 문서화

                    → 산출물 : 요구사항 명세서

                □ 설계

                    → 프로그램 데이터 구조, SW 구조, 인터페이스 구조, 알고리즘 등 모든 시스템 구저 결정

                    → 산출물 : 설계 명세서

                □ 구현

                    → 설계 명세서를 시스템 실제 모습으로 변환 시키는 것

                    → 산출물 : 프로그램

                □ 테스트

                    → 프로그램이 입력에 따라 요구되는 결과대로 작동하는지, 내부적 이상 여부 및 오류 발견 위해 수행, 테스트 계획 세운 후 문서화

                □ 유지보수

                    → 개발된 소프트웨어 변경사항 수정하는 것

                    → 수정 유지보수 ,적응 유지보수, 기능 추가 유지보수 등

 

        2. 프로토타입 모델

            ▷ 정의

                → 핵심적인 기능을 먼저 만들어 평가한 후 구현하는 점진적 개발 방법

            ▷ 장점

                → 사용자 요구사항의 정확한 파악에 용이

                → 발주자와 개발자에 공통 참조모델 제공으로 시스템 이해와 품질 향상

                → 발주자와 개발자 간 의사소통 원활

                → 정확한 요구사항 파악으로 인한 위험 감소

            ▷ 단점

                → 미리 제작된 SW 사용 시 실제 SW와의 차이 발생 가능성 있음 (사용자에게 혼란 야기)

                → 단기간에 제작해야 하기에 비효율적인 언어나 알고리즘 사용할 수 있음

                → 발주자가 프로토타입 모형 시제품을 완성 제품으로 오해 가능

 

        3. 나선형 모델

            ▷ 정의

                → 폭포수 모델과 프로토타입 모델 장점에 위험 분석 추가

            ▷ 장점

                → 점증적인 개발로 실패할 위험 감소

                → 테스트 용이

                → 고객 피드백 통해 SW 개선 가능

            ▷ 단점

                → 관리 복잡

 

            ▷ SDLC 단계별 특징

                □ 요구사항 정의

                    → 고객의 일부 요구사항 또는 불완전한 요구사항으로부터 제품 윤곽 잡음

                □ 원형 설계

                    → 주어진 요구사항 기반으로 빠른 설계

                    → 주로 제품 사용자 인터페이스에 초점 맞춤

                □ 원형 개발

                    → 설계된 원형을 RAD 도구 등 사용하여 빠르게 구현

                    → 고객이 요구하는 기능 구현하고 필요 요소 파악에 중점 두며, 프로그램 신뢰도나 품질이 아니라 가능한 빨리 원형 구현하는 것이 목적

                □ 고객 평가

                    → 고객과 개발자가 함께하는 가장 중요한 단계

                    → 고객 요구사항 정확하게 규명하기 위해 원형에 대한 사용 및 평가 시간 충분히 제공, 개발될 SW 요구사항 정제에 중요한 정보로 활용

                □ 원형 정제

                    → 원형이 어떻게 수정되어야 할 지 결정

                    → 원형 개발과 검증, 요구사항 정제 순환 반복하여 추가적인 정보 통해 요구사항 완성해 나감

 

        4. 반복 점증적 모델

            ▷ 정의

                → 사용자 요구사항 일부분 혹은 제품 일부분을 반복적으로 개발하여 최종 시스템으로 완성하는 모델

            ▷ 장점

                → 위험 조기 발견 및 최소화 전략 구현 가능

                → 변경 관리 용이

            ▷ 단점

                → 관리 어려움

                → 경험 부족

 

            ▷ 유형

                ■ 증분형 모델(Incremental)

                    □ 정의

                        → 폭포수 모형에 반복적 수행 개념 결합하여 증분 반복해 최종 시스템 구현하는 개발 모형

                    □ 특징

                        → 병렬 개발 가능

                        → 요구사항 명확할 경우 적합

                    □ 장점

                        → 새로운 시스템에 대한 충격 완화

                        → 후반 통합 충격 완화

                    □ 단점

                        → 다수 빌드 관리 부담

                        → 변경되는 요구사항에 효과적인 대응 어려움

                ■ 진화형 모델(Iterative)

                    □ 정의

                        → 핵심 요구사항 중심으로 개발 후 추가적인 요구사항에 대한 기능 추가하여 발전시켜 나가는 방식

                    □ 특징

                        → 요구사항이 개발 초기에 불명확할 경우 적합

                        → 전체 진화과정에 대한 Release 계획 필요

                    □ 장점

                        → 시스템 완성도를 점진적으로 향상

                        → 불완전한 요구사항에 대응 가능

                    □ 단점

                        → 프로젝트 비용 및 일정 증가

                        → 다수 버전 존재하여 Release 버전 관리 부담

 

        5. RAD (Rapid Application Development) 모델

            ▷ 정의

                → 짧은 개발주기 (60일~90일) 동안 SW 개발하기 위한 순차적 프로세스 모델

            ▷ 개발 절차

                → JRP(분석, Joint Requirement Planning) : 고객과 Biz 모델 작성/검토 반복 통한 분석

                → JAD(설계, Joint Application Design) : 고객과 원형 모델 개발/수정/보완 반복 통한 시스템 설계

                → 구축/운영 : 관련 기술 이용하여 시스템 구축/운영, CASE 사용

                → Cutover(이전) : 운용에 필요한 지침서 작성, 현행 부서 이전

            ▷ 장점

                → 요구사항 이해와 범위의 명확한 설정 시 신속하고 완전한 기능 구현 가능

            ▷ 단점

                → 기술적 위험 높을 경우 부적합

                → 적절한 모듈화 필수

                → 책임감 있는 구성원 필요


 

320x100

댓글