본문 바로가기
Software Engineering

Software process

by Doromi 2019. 4. 17.
728x90
반응형

소프트웨어 공학: 자주 물어보는 질문

소프트웨어란?
컴퓨터 프로그램과 관련된 문서
소프트웨어 제품은 특정 고객을 위해 개발되거나, 일반적인 시장을 위해 개발될 수 있다.

소프트웨어 공학이란?
스프트웨어 공학은 소프트웨어 생산의 모든 측면과 관련된 공학 학문 분야

 

소프트웨어 공학과 컴퓨터 과학의 차이점이란?

컴퓨터 과학은 이론과 기본을 다룬다.
스프트웨어 공학은 유용한 소프트웨어를 개발하고 인도하는 실용 학문이다.

스프트웨어 프로세스란?

소프트웨어의 개발과 진화를 목표로 하는 활동의 집합

소프트웨어 프로세스 모델이란?

특정 관점으로 표현된 소프트웨어 프로세스의 단순화된 표현

좋은 소프트웨어의 특징이란?

소프트웨어는 사용자에게 필요한 기능과 성능을 제공해야 하며, 유지보수가 가능하고,
신뢰할 수 있으며, 사용이 가능해야 한다.

 

CASE란 무엇인가?

소프트웨어 프로세스 활동을 자동으로 지원하기 위해 만들어진 소프트웨어 시스템
보통 CASE 시스템은 개발 방법을 지원하기 위해 이용된다.

좋은 소프트웨어의 특징은 무엇인가?

소프트웨어는 사용자에게 필요한 기능과 성능을 제공해야 하며,
유지보수가 가능하고, 신뢰할 수 있으며 사용이 가능해야 한다.

 


 

소프트웨어 프로세스
고품질의 소프트웨어를 구축하는데 요구되는 작업으로 구성된 순차적인 단계
좋은 품질의 소프트웨어를 얻기 위한 업무의 프레임워크

 

소프트웨어 프로세스 모델

소프트웨어 프로세스의 추상적인 표현

- 폭포수 모델

소프트웨어 공학에서 가장 오래되고, 가장 폭넓게 사용된 전통적인 소프트웨어 생명주기 모델

소프트웨어 개발 단계의 앞 단계가 끝나야만 다음 단계로 넘어갈 수 있는 선형 순차적 모델
다음 단계를 수행하기 위해 각 단계가 끝난 후에는 결과물이 명확하게 산출되어야 함

 

  • 장점
    널리 알려져 많이 사용

    단계별로 정형화된 접근 방식

    체계적인 문서화 및 단계별 산출물 체크를 통한 프로젝트 진행의 명확화

    문서가 각 단계마다 만들어지고 그것이 다른 공학 프로세스 모델과 잘 어울림

    요구사항이 잘 이해되고 시스템을 개발하는 동안 급격하게 변경되지 않는 경우에 사용되어야 함

    기술적 위험이 없고 유사한 프로젝트를 해본 경험이 있어서
    비교적 정확한 비용 예측과 일정 계획 하에 프로젝트를 추진할 경우 적합


  • 단점
    다음 단계는 이전 단계가 끝날 때까지 시작되지 않음

    설계하는 동안에 요구사항이 가진 문제점이 식별됨

    코딩하는 동안에 설계문제가 발견됨

    개발이 진행되어야 개발자의 요구사항 이해정도를 파악할 수 있음

    각 단계간의 피드백이 어려움

    작업 지연에 따른 전체 일정 지연

    문서화에 대한 부담 가중(비용이 많이 들며 재 작업이 포함됨)

    개발이 진행됨에 따라 발견되는 문제점의 시정노력이 급증함

    프로세스 초기 단계에서의 결정은 고객의 요구사항을 변경하기 어렵게 함

 

폭포수 모델

 

- 프로토타입(Prototype) 모델

사용자의 요구사항을 정확히 파악하기 위해

실제 개발될 소프트웨어에 대한 견본품을 만들어 최종 결과물을 예측하는 모델

소프트웨어 개발이 완료된 시점에서 오류가 발견되는 폭포수 모델의 단점을 보완하기 위한 모델

요구분석 단계에서 사용하며, 프로토타입의 평가가 끝나고 개발이 승인되면 다른 모형을 이용하여 개발
프로토타입은 고객의 요구를 만족시킬 때까지 과정이 반복됨
고객은 동작하는 프로그램의 겉모습만을 볼 뿐이지, 그 내부의 정돈되지 못한 복잡성이나 긴 안목에서

갖추어야 할 품질이나 유지성을 인식하지 못함

 

  • 장점
    가시적이고 이해가 쉬워 관리가 용이

    사용자 요구사항을 빠르게 수용 가능

    사용자 요구사항의 확인 및 변경이 용이

    최종결과물이 만들어지기 전에 사용자(고객)가 최종결과물의 일부를 볼 수 있음

  • 단점
    미리 제작된 소프트웨어를 사용할 경우,
    실제 소프트웨어와의 차이가 발생할 수 있어 사용자에게 혼란을 줄 수 있음

    시제품 확인에 따른 요구사항의 증가

    부족한 문서화에 따른 유지보수의 어려움

    시제품 폐기에 따른 비경제성

    반복적인 시제품 개발의 종료 시기 문제

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


프로토타입 모델

 

- RAD(rapid application development) 모델

아주 짧은 개발주기를 가지는 점진적 소프트웨어 개발 방식
RAD 모델은 컴포넌트를 사용하여 매우 빠르게 선형 순차적 모델을 적용시킬 수 있음
만약 비지니스 애플리케이션의 주요 기능들이 모듈화 될 수 있고,
각각의 기능들이 3달 안에 완성 가능하다면, RAD가 사용될 수 있음
각각의 기능들은 각각의 RAD 팀들에게 할당되어 개발된 후, 나중에 통합되어질 수 있음


  • 장점
    기술적 위험이 적고 빠른 개발이 요구될 때 적합

    짧은 기간에 시스템 개발 가능

    테스트 기간이 짧음

    검증된 컴포넌트의 재사용



  • 단점
    대규모 프로젝트의 경우 충분한 인적자원 요구됨

    만약 시스템이 알맞게 모듈화 되지 않는다면, RAD로 컴포넌트를 만드는 것에 문제가 있을 수 있음

    만약 성능이 중요한 시스템인 경우, 성능을 컴포넌트의 인터페이스 사용을 조절해서 이끌어 내려할 경우 RAD는 적당하지 않음

    RAD는 기술적 리스크가 클 경우에도 사용하기 부적합함

 

RAD 모델

- 진화적 개발

 

  • 나선형(Spiral) 모델

나선형 모델

폭포수 모델(시스템적인 요소)과 프로토 타입모델(반복적인 요소)의 장점에 위험 분석 기능을 추가한 모델
나선을 따라 돌듯이 여러 번의 소프트웨어 개발 과정을 거쳐 점진적으로 완벽한 최종 소프트웨어 개발
소프트웨어를 개발하면서 발생할 수 있는 위험을 관리하고, 최소화하는 것을 목적으로 함

  • 장점
    가장 현실적인 모델

    규모가 크거나 복잡한 시스템과 소프트웨어 개발에 적합

    점진적으로 개발과정이 반복되므로 누락되거나 추가된 요구사항을 첨가할 수 있고,
    유지보수 과정이 필요없음

    위험분석 단계에서 기술과 관리의 위험요소들을 하나씩 제거해나감으로써 완성도 높임

  • 단점
    프로젝트의 성공을 위해서는 위험을 다룰 수 있는 전문가가 필요함

    위험식별 및 프로젝트 관리를 위한 절차의 구체화 필요

    중요한 위험이 발견되지 않고 처리되지 않는다면, 반드시 문제가 발생함

    폭포수 모델이나 프로토타입 모델보다 널리 사용되지 않음

 

  • 점진적(Incremental) 모델


점진적 모델

폭포수 모델(선형 순차적 모델)에 프로토타입 모델의 반복 개념을 추가한 모델
다른 모델들과 접목이 가능
프로토타입과는 달리 점진적 모델은 실제로 작동하는 결과물을 만들어냄

프로젝트 기간동안 한번에 모든 기능을 구현할 수 없을 때 유용하게 사용됨
최초의 제품은 적은 인력으로 개발하고, 제품이 널리 쓰여지게 되면 인력을 증원하여 다른 추가사항들을 개발함
기술적인 위험을 관리할 수 있음


  • 장점
    대규모 시스템 개발에 적합

    반복적인 개발 및 시험 가능

    처음 릴리즈에 핵심 기능이 구현, 이후 릴리즈는 추가사항이 구현

    한 릴리스에 추가하지 못한 기능은 다음 릴리즈에 추가 가능


  • 단점
    각 릴리즈에 중복되는 작업이 발생할 수 있음


  • 동시적(Concurrent) 개발 모델
    분석 절차는 언제나 일어날 수 있는 상태(state)중 하나이며, 다른 절차(설계, 고객과의 의사소통)
    역시 그와 비슷하게 표현됨
    모들 절차들은 동시에 존재할 수 있지만, 모두 다른 상태(state)에 있음
    소프트웨어 절차에서의 각 상태마다, 한 상태에서 다른 상태로 넘어갈 때 발생하는 
    트리거 이벤트들을 정의해야함
    클라이언트/서버 애플리케이션 개발에서 자주 사용됨
    동시적 개발 모델은 모든 종류의 소프트웨어 개발에서 사용될 수 있음


동시적 모델

728x90
반응형

'Software Engineering' 카테고리의 다른 글

애자일 개발 기법  (0) 2019.04.17
Agile software development  (0) 2019.04.17
Class  (0) 2019.04.17
객체지향  (0) 2019.04.17
소프트웨어공학  (0) 2019.04.17