기초지식공부/소프트웨어공학

소프트웨어 개발프로세스Ⅰ

DevBabamba 2019. 3. 13. 05:08
반응형

KMooc에 공개 되어 있는 '쉽게 배우는 소프트웨어 공학' 강의 내용을 정리한 것입니다.(강의: 공주대학교 컴퓨터공학부 김치수 교수)

또한, https://terms.naver.com/list.nhn?cid=58528&categoryId=58528를 확인하시면, '쉽게 배우는 소프트웨어 공학' 책 또한 공개되어있으니 참고하여주시면 감사하겠습니다.



소프트웨어 개발 프로세스

  • 소프트웨어 개발 프로세스 모델의 이해
  • 주머구구식 모델
  • 선형 순차적 모델
  • V모델
  • 진화적 프로세스 모델
  • 나선형 모델
  • 단계적 개발 모델
  • 통합 프로세스 모델
  • 애자일 프로세스 모델

1.소프트웨어 개발 프로세스 모델의 이해

  • 일상 : 일을 처리하는 과정 또는 순서 (ex : 요리사가 맛있는 요리를 만드는 과정 레시피)
  • 소프트웨어 : 일상에서의 상황과 동일!

프로세스 정의

  • 목적 : 문제해결
  • 프로세스 : 정해진 순서대로 수행되는 일련의 절차

2.소프트웨어 프로세스 모델의 이해

소프트웨어 개발 프로세스(1)

  • 작업(task)순서의 집합 + 제약조건(일정, 예산, 자원)을 포함하는 일련의 활동(activety)
  • task : sw를 개발할 때 일을 수행하는 작은 단위

    • 직접 코딩하는 단위까지를 포함
  • 좁은 의미 소프트웨어 개발 프로세스

    • sw제품을 개발할 때 필요한 절차, 과정, 구조
    • 사용자의 요구사항을 sw시스템으로 구현하기 위한 일려느이 활동
  • 넓은 의미 소프트웨어 개발 프로세스

    • 방법, 도구, 참여자까지 모두 포함
    • sw개발 목적을 이루는데 필요한 통합적 수단

소프트웨어 개발 프로세스(2)

  • 프로세스 목적

    • 이전에 얻은 노하우를 통해 시행착오 감소  빠른 적응을 하여, 생산성이 높고 품질이 높은 소프트웨어를 만들기 위함
    • 즉, 가이드의 역할
  • 소프트웨어 삼요소 : 절차와 방법, 도구, 참여인력 



소프트웨어 개발 과정

  • 작은 규모의 소프트웨어 개발 과정 : 개집 짓는 일에 비유. 적은 장비에 고려사항 적음.
  • 대규모의 소프트웨어 개발과정 : 빌딩 짓는 일에 비유. 대규모 장비 고려사항 많음.

3.주먹구구식 모델

주먹구구식 모델(like 개집 짓는 방식)

  • build and fix 모델, code and fix모델, 즉흥적 소프트웨어 개발 모델
  • 공식적인 가이드 라인이나 프로세스가 없는 개발 방식
  • 요구 분석 명세서나 설계 단계 없이 간단한 기능만을 정히하여 개발하는 형태
  • 일단 코드를 작성하여 제품을 만들어본 후에 요구 분석, 설계, 유지보수에 대해 생각
  • 모델로 보기 힘듦

  • 개발단계

    • 1.첫번째 버전의 코드를 작성하여 제품 완성. 설계 분석 과정 없음.
    • 2.작성된 코드에 문제점이 있으면 수정하여 해결
    • 3.문제가 없으면 사용 


  • 사용

    • 개발자 한명이 단시간에 마칠 수 있는 경우
    • 대학 수업의 한 학기용 프로젝트 정도
  • 단점

    • 문서화된 산출물이 없음 -> 관리 및 유지보수 어려움
    • 프로젝트 전체 범위 할 수 없음 -> 좋은 아키텍처 만들 수 없음
    • 일을 효과적으로 나눠 개발할 수 없음 -> 진척 상황 파악 불가
    • 계속된 수정으로 프로그램 구조 나빠짐 -> 수정이 매우 어려워짐

4.선형 순차적모델

선형 순차적 모델

  • Linear sequential 모델, Waterfall 모델, Classic life cycle
- Waterfall 모델 개발 절차

    • 문서 중심의 모델 


  • 장점

    • 절차가 간결
    • 이해가 쉽다 -> 일상적인 프로세스와 유사하여 이해하기가 쉽다는 의미
    • 단계별 진척 사항에 대한 관리가 용이. -> 단계별로 명확하기 때문
    • 문서화를 체계적으로 할 수 있다.(장점이자 단점)
    • 유사한 분야의 소프트웨어 개발 경험이 많으면 우수한 결과 가능
  • 적합한 프로젝트

    • 초기에 어느정도 요구사항이 확정된 형태의 프로젝트
    • 요구 사항의 변동이 없는 형태의 프로젝트
  • 단점

    • 각 단계는 앞 단계가 완료되어야 수행 가능 -> 사용자 요구 사항이 바뀔 경우 반영이 어려움
    • 작성된 셜과물이 완벽한 수준이어야 다음 단계에 오류를 넘겨 주지 않음
    • 사용자가 중간에 가시적인 결과를 볼 수 없어 답답함

5.V 모델

V 모델

  • 폭포수 모델의 변형
  • Waterfall model + test 단계 추가 확장
  • 각 개발 단계를 검증하는 데 초점 (vs 폭포수 모델 : 문서, 산출물 중심) 


  • 단위 테스트(unit test, module test)

    • 개별 module 검증
    • 시스템을 구성하는 모듈(함수, 서브루틴, 컴포넌트 등)이 기능을 올바르게 수행하는지 판별
    • 내부에 존재하는 논리적인 오류를 검출
    • 사용자 요구사항의 내용대로 정확히 구현되었는가를 집중적으로 확인
  • 통합 테스트 (integration test)

    • module간의 interface 확인: unit test를 마친 각 module을 통합하는 과정에서 발생 할 수 있는 오류를 찾음
    • module사이의 interface 오류
    • module사이의 상호작용의 적절한 수행 여부
    • module이 올바르게 연계되어 동작하고 있는지
    • module 상호간 결합이 잘 되었는지 확인(O), 통합 후의 결과가 정확한지 검증(X)
  • 시스템 테스트(system test)

    • 모든 module이 통합된 후 사용자의 요구사항을 만족하는지 확인
    • (unit test : 개별 module 검증)
    • (integration test : module 간 상화작용을 확인)
    • (system test: 전체가 정상적으로 작동하는지 확인)
  • 인수테스트(acceptance test)

    • 시스템이 예상대로 동작하고 요구사항에 부합하는지 확인
    • (unit test : 개별 module 검증)
    • (integration test : module 간 상화작용을 확인)
    • (system test: 전체가 정상적으로 작동하는지 확인)
    • (acceptance test: 시스템을 사용자에게 인수하기 전 사용자가 요구분석명세서에 명시된 사항을 모두 충족하는지 테스트)

소프트웨어 프로세스 모델의 요약

  • 소프트웨어 프로세스 모델(1)

    • SW process model = SDLC(Software Development Life Cycle)
    • SW를 어떻게 개발할 것인가에 대한 전체적인 흐름을 체계화한 개념
    • 개발 계획 수립부터 최종 폐기 때까지의 전 과정을 다룸
    • 순차적인 단계로 이루어짐
  • 목적

    • 고품질 SW, 생산성 향상
    • 방법 : 1.공장에서 제품을 생산하듯이 소프트웨어 개발의 전 과정을 하나의 프로세스로 정의. 2.주어진 예산과 자원으로 개발하고 관리하는 방법을 구체적으로 정의
  • 역할

    • 프로젝트에 대한 전체적인 기본골격을 세워준다.
    • 일정계획을 수립할 수 있다.
    • 개발 지용 산정뿐 아니라 여러 자원을 산정하고 분배할 수 있다.
    • 참여자간 의사소통의 기준을 정할 수 있다.
    • 용어의 표준화를 가능케 할 수 있다.
    • 개발 진행 상황을 명확히 파악할 수 있다.
    • 각 단계별로 생성되는 문서를 포함한 샅출물을 활용하여 검토할 수 있게 해준다.

6.진화적 프로세스 모델

진화적 프로세스모델(evolutionary process model)

  • 등장 배경(목적)

    • linear sequential model의 대표: waterfall model
    • evolutionary process model의 대표: prototype model
    • waterfall model단점 : 단계를 거슬러 올라가 작업하는 것이 쉽지 않은 구조
    • 현실 : 새로운 요구가 수시로 발생
    • 해결안 : 민첩 대응 방법 필요 -> evolutionary process model
  • 특징

    • 1.개발자 : 초기 사용자 요구에 따른 prototype 개발(I/O(입력/출력)화면 중심)
    • 2.사용자 : UI 중심의 화면과 실행 후 가상 결과 화면 확인. prototype 확인 후 요구사항 추가 및 변경
    • 3.개발자 : 사용자 요구 사항을 반영한 2차 prototype 개발
    • 1~3 반복!
    • 전체 흐름: warterfall model, 요구사항 분석: prototype
    • 목적 : 사용자의 요구를 충분히 반영 위함!
  • 장점 

    • 반복적인 추가 수정 요구가 즉시 반영
    • 완성 제품을 대폭 수정해야 하는 대형사고를 막을 수 있다.
    • prototype을 고객과의 의사소통 도구로 활용 가능
    • 사용자가 만족하는 최종 완제품을 만들 수 있다.
  • prototype(like 모델하우스)

    • 대량 생산에 앞서 미리 제작해보는 원형 또는 시제품으로, 제작물의 모형
    • 소프트웨어에서의 prototype : 
    • 1.정식 절차에 따라 완전한 소프트웨어를 만들기 전
    • 2.사용자의 요구를 받아 일단 모형 제작
    • 3.이 모형을 사용자와 의사소통하는 도구로 활용
  • prototype방법

    • modeling : model을 만드는 것
    • prototyping : prototype을 만드는 것
    • prototype 방법 : prototype을 이용해 최종 요구를 반영한 완성품을 만드는 개발 방식

활용 프로젝트

  • 사용자의 요구가 불투명, 요구사항 변화가 계속 발생 시 적합
  • 비용이 많이 필요한 변화가 많은 개발에 적합
  • 새로운 혁신 기술을 사용할 경우 개발 전, 실현 가능성 타진에 적합 

  • 분류: 최종 프로토타입을 어떻게 활용하는지 여부로 나눔

    • 실험적(experimental) 프로토타입 모델 : 최종 prototype을 버리고 처음 부터 새로 SW개발
    • 진화적(evolutionary) 프로토타입 모델 : 최종 prototype을 버리지 않고 지속적 발전시켜 개발
  • 실험적(experimental) 프로토타입 모델

    • 목적 : 사용자의 요구사항을 반복적으로 반영하여 최종 프로토 타입을 만긂
    • 용도 : 사용자로부터 충분한 요구사항을 얻기 위한 사용자와의 대화 도구로 활용
    • 개발 방식 :
    • 1.최종 프로토타입을 통해 결정된 사용자의 요구를 가지고 처음부터 본격적으로 제품 개발
    • 2.최종 프로토타입은 더이상 쓸모가 없음
    • 3.like 모델하우스
    • 모델 절차 : 

진화적(evolutionary) 프로토타입 모델

  • 목적 : 최종 프로토타입을 버리지 않고 지속적으로 개선, 보완헤 최종 시스템으로 완성
  • 실제적으로 적동하지 안흔ㄴ 프로토타입도 만드는 과저에 많은 비요곽 노력 소요
  • 모델 절차 :

  • 개발절차

    • 1.요구사항 분석 : 1차 개략적인 요구사항 정의 후 n차 바복 -> 최종 프로토타입 개발
    • 2.프로토타입 설계: 완전한 설계 대신, 사용자와 대화할 수 있는 수준의 설계. 입출력 화면을 통한 user interface중심 설계
    • 3.프로토타입 개발 : 완전히 동작하는 완제품 개발 X. 입력화면을 통한 사용자 요구사항 확인. 출력결과를 통해 사용자가 원하는 거인지 확인. RAD(Rapid Application Development)같은 도구를 이용해 빠르게 실행
    • 4.사용자에 의한 프로토타입 평가: (프로토타입 평가 - 추가 및 수정 요구 - 프로토 타입 개발 - 프로토타입 평가 - ... ) 
    • 5.구현 : 최종 프로토 타입 개발
  • 단점

    • 반복적인 개발 단계 -> 투입 인력/비용 산정 어려움
    • 개발자 입장 -> 프로토타입핑 과정의 관리.통제의 어려움
    • 불명확한 개발범위 -> 개발 종료 및 목표의 불명확성
    • 프로토타입 제작에 따른 추가 비용 발생 가능

7.나선형 모델 spiral model

나선형 모델 spiral model

  • spiral model 특성

    • 개발과정이 뱅글뱅글 돌아 점점 완성도 높은 제품 만들어짐
  • spiral model

    • evolutionary process model + risk analysis
    • 1.계획 및 요구 분석
    • 2.위험분석
    • 3.1차 프로토타입 개발
    • 4.1차 사용자 평가
    • 5.1~4 단계 반복(사용자가 만족을 위해
  • Risk analysis 목적

    • 위험 요소 사전 파악 -> 예방 및 제거
  • 개발 절차

  • 1.계획과 요구사항 분석 단계:

    • 사용자의 개발의도 파악
    • 프로젝트 목표 수립
    • 제약 조건 대안 고려 계획 수립
    • 기능/비기능 요구사항 정의 분석
  • 2.risk analysis 단계

    • 위험요소 발견 및 목록 작성
    • 예방대책 논의
    • 위험요소 평가 -> 미치는 영향 검토 및 대안 분석
    • 심각한 위험이면 프로젝트 계속 진행 여부 결정

소프트웨어 개발시 위험 요소

위험요소위험내용
개발자의 이직프로젝트 수행중 개발자의 이직
요구사항 변경요구사항 확정이후 계속되는 변경 요구
발주사의 재정적 어려움프로젝트 수행 중 발주사의 경제적 어려움
예상을 빗나간 투입 인력처음 예측한 인력보다 더 많은 인력 필요
개발 기간의 부족처음 예측한 개발기간을 초과한 경우
개발지의 초과처움에 예측한 개발비로 완료할 수 없는 경우
  • 3.엔지니어링 단계 : 코딩 단계와 동일
  • 4.user evaluation단계
    • 프로토타입 평가 -> 추가 및 수정 요구 -> 프로토타입 개발 -> 프로토타입 평가 -> ...

8.단계적 개발 모델

단계적 개발 모델

  • 정의
    • 개발과 사용을 병행하는 과정을 반복하여 진행하면서 완료
  • release 구성 방법에 따른 분류
    • 점증적 개발 방법
    • 반복적 개발 방법

점증적 개발방법: 개발 범위 증가(like 양식 코스)

  • 전체 파이가 n개로 나눌 수 있을 때 개발 시 1번 부분 먼저 개발하고 그 다음에 2번 그다음에 3번 이런식으로 개발하는것
  • 예 : 에피타이저 -> 메인디쉬 -> 디저트. 3층 건물 개발 : 1층 먼저 개발. 그다음 2층 개발, 2층 개발 완료 후 3층 개발 이렇게 진행 
  • 특징

    • 개발 범위의 증가
    • SW 개발에서 점증적 방법 : 중요 부분부터 차례로 개발 한 후 그 일부를 사용하면 서 개발 범위를 점차 늘려가는 방식
  • 단계적 개발 방법 순서

    • 전체 시스템을 독립성 높은 sub-system으로 분할
    • 각 sub-system을 단계적으로 하나씩 release하여 완성

  • 장점: 사용자 측
    • 한번에 목돈이 안들감
    • 완전히 새로운 시스템 전체를 한거번에 주었을 때 조직이 받는 충격을 완화시킴
    • 조직에 자연스런 변화를 줄 수 있음
  • 장점 : 개발자 측면

    • 이미 사용하고 있는 sub-system이 있어, 어떤 유형으로 개발해야 하는지 잘 알 수 있기에, 사용자에게 원하는 결과를 가져다 줄 수 있음
  • 단점

    • 기 개발된 sub-system들과 통합의 어려움
    • sub-system들의 유기적 관련성
    • 따라서, 처음 설계부터 이후 개발한 sub-system들과 연관성을 고려해야 함.

반복적 개발 방법 : 품질 증가(like 한정식)

  • 시스템 전체 개발 후 인도 -> 기능/성능 변경 및 보강
  • 예 : 1~10장 원고 작성
    • 1.1~10장 대목차 작성
    • 2.1~10장 소목차 작성
    • 3.소목차 내 주제 설정 ...
    • 4.출간

9.통합 프로세스 모델

통합 프로세스 모델

  • 최근 SW: 대규모, 복잡함, 빈번한 수정 요구사항 -> 유연한 대처 방법 필요
    • waterfall model : 빈번한 요구 대처의 어려움
    • 해결 방안 : 반복적 개발

반복적 개발 방법



unified process model(UP)

  • OMG가공개한 UML과 함께 제안되어 통합된 process
  • 이후 Rational 사에 의해 RUP라는 이름으로 제품화
  • 현재는 Rational사가 IBM사에 통합

OMG(Object Management Group), RUP(Rational Unified Process), UML(Unified Modeling Laguage)

통합프로세스모델


출처 : http://terms.naver.com/entry.nhn?docId=3532885&cid=58528&categoryId=58528

UP 모델 절차

  • 1.4단계(inception/elaboration/construction/transition)로 나눔
  • 2.각 단계는 여러개의 작은단위(iteration) 으로 나눔
  • 3.각 반복 구간(iteration)을 하나씩 개발(개발 - 통합 - 테스트 - 실행). 개발 시 9개 영역의 대부분이 포함됨
  • 4.실행 가능한 산출물 도출 (산출물 : 위험 요소의 제거 여부 판단에 활용)

  • inception phase 

    • 사업 타당성 / 비용산정/ 개발 목표/ 프로젝트 계획
  • elaboration phase

    • 분석 및 설계 작업 => 일부코딩 => 단위 테스트
  • construction phase

    • 구현 / 단위 및 통합테스트 / 사용자 설명서 작성
  • transition phase

    • 완성된 제품을 사용자에게 넘겨주는 과정에서 수행해야 할 일
  • inception/elaboration/construction/transition 단계의 공통 작업

    • 형상관리









반응형

'기초지식공부 > 소프트웨어공학' 카테고리의 다른 글

일정 계획  (0) 2019.06.11
비용 산정 방법  (0) 2019.06.10
개발 비용 산정  (0) 2019.06.10
계획(Plan)  (0) 2019.06.10
소프트웨어 개발 프로세스 Ⅱ  (0) 2019.03.13