Study

[방송통신대] 소프트웨어 공학 중간과제 (2020)

cattaku 2020. 2. 28. 15:38

* 주어진 요건을 참고하여 문1~2의 답안을 작성하시오.
** 아래 한글 또는 MS-word를 사용하고, 1개의 파일에 모든 답안을 작성하여 제출하시오.

1 (20)
교재에서 소개되지 않은 소프트웨어 개발 프로세스 모델 또는 개발 방법론  1개를 찾고 조사하여 2~3쪽 분량으로 알기 쉽게 정리하라.
- 개조식으로 작성하고 아래의 내용을 포함할 것
- 설명을 위한 그림을 포함하고, 구성 요소와 절차, 기존 모델과 비교하여 특징과 장단점을 분명히 구분하여 서술할 것
- 중요한 부분에 강조 표시를 할 것(굵은 글씨와 색상 등 사용)

2 ( 5)
다음 용어 2개를 각각 10~15줄로 명확하게 정리하라.
    (a) 기능 점수(FP)
    (b) 소프트웨어 요구사항 명세서(SRS)

<과제 작성시 지시사항>

- 참고한 문헌이나 인터넷 사이트를 답안의 마지막 부분에 반드시 자세히 명시할 것(이 내용은 분량에 포함되지 않음)
- 참고 문헌, 인터넷 자료의 표현을 그대로 사용하지 말고 자신이 이해할 수 있는 표현으로 반드시 바꾸어 서술할 것(위키나 네이버 자료 등을 그대로 옮기면 감점 처리함)
- 교재, 참고 문헌, 인터넷 자료, 타인 과제물과의 표절률이 높으면 감점 처리함(특히 상업 자료와의 표절률이 높으면 0점 처리함)
- A4 용지 여백과 서식의 기준은 다음과 같음. 여백은 좌우 각 30mm, 위쪽 20mm, 머리말/꼬리말/아래쪽 각 15mm이며, 폰트 크기 10, 줄 간격 160%

========================================================================

1. 소프트웨어 개발 방법론이란?

소프트웨어 개발과 유지보수 등에 필요한 여러 가지 작업들의 수행방법과 이러한 작업들을 좀 더 효율적으로 수행하기 위해 필요한 각종기법 및 도구를 체계적으로 정리하여 표준화한 것이다. 소프트웨어 개발방법론은 구조적 방법론, 정보공학 방법론, 객체지향 방법론, CBD(Component Base Development) 방법론, 애자일 방법론이 이렇게 크게 다섯 가지로 나눌 수 있다.

 1) 구조적 방법론

절차 중심의 소프트웨어 개발 방법론으로 코드를 제한된 구조에서 생성하여 순차적으로 실행시키는 특징이 있다. 알고리즘 단위인 순차(sequencing), 선택(selection), 반복(iteration)의 구조로 코드를 표현하므로써 프로세스 단위로 문제를 해결하고, 코드 보안을 유지하며 유지보수를 용이하게 한다.

 2) 정보공학 방법론

1980년대에는 정보 시스템이 단순 업무 지원 뿐 아니라 경영 전략을 창출하는 경영정보 시스템(MIS, Management Information System)으로 진화하여, 방법론이 '경영 전략을 잘 수용하기 위함' 에 맞춰 발전하게 되었다. 따라서, 정보 공학 방법론은 설계와 구현단계에서 데이터를 우선적으로 개발하고, 문제 영역을 세분화하고 Top-Down 방식으로 전개하여 기존보다 빠르게 결과물을 낸다는 특징을 갖고 있다.

 3) 객체지향 방법론

개발 단계에서 반복과 점증적(Iterative and Incremental) 모델을 사용하여 사용자의 요구 사항을 반영하고, 모든 단계를 유기적으로 협력시켜 전체 프로세스의 방향성을 유지하고 재사용성을 높이는 것이 특징이다.

 4) CBD(Component Based Development) 분석 방법론

문제를 조각으로 나누어 각각 컴포넌트를 생성한 후, 다시 조합하는 재사용성에 초점을 둔 방식으로, 아무리 복잡한 시스템이여도 단계별로 나누어 생각하기 때문에 전체 시스템이나 프로그램에 영향을 주지 않고 빠르게 문제를 해결한다는 특징이 있다.

 5) 애자일 방법론

이전 방식들은 개발 과정에서 과도한 문서화나 형식적인 절차에 많은 비용을 치르게 되면서 최근에 애자일(Agile) 방법론이라는 적응적(Adaptive) 방법론이 새롭게 떠오르게 되었다. 애자일 방법론은 고객과의 협력을 중시하고, 프로세스나 도구에 국한되지 않은 자기 적응적 (self-adaptive) 방식을 사용하는데 일정한 주기를 가지고 프로토타입(Prototype)을 만들어 내기 때문에 고객의 요구사항을 반영하기 쉽고, 변화에도 빠르게 대응할 수 있는 장점이 있다.

2. 소프트웨어 생명 주기 (Software Life Cycle)

소프트웨어 생명 주기는 소프트웨어 개발 방법론의 바탕이 되는 것으로, 소프트웨어를 개발하기 위해 정의하고 운용, 유지보수 등의 과정을 각 단계별로 나눈 것이다.

▪ 소프트웨어 생명주기는 소프트웨어 개발 단계와 각 단계별 주요 활동, 그리고 활동의 결과에 대한 산출물로 표현한다.
▪ 소프트웨어 생명 주기를 표현하는 형태를 소프트웨어 생명 주기 모형이라고 하며, 소프트웨어 프로세스 모형 또는 소프트웨어 공학 패러다임이라고도 한다.
▪ 개발자는 문제의 유형이나 개발 방법 등에 따라 특정 모형을 선택하여 사용할 수 있고, 개별적인 모형을 사용할 수도 있다.
▪ 일반적으로 사용되는 소프트웨어 생명주기 모형에는 폭포수 모형, 프로토타입 모형, 나선형 모형, 애자일 모형 등이 있다.

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

1) 폭포수 모델 (Waterfall Model)
폭포수 모델은 폭포에서 한번 떨어진 물은 거슬러 올라갈 수 없듯이 소프트웨어 개발도
이전 단계로 돌아갈 수 없다는 전제하에 각 단계를 확실히 매듭짓고 그 결과를 철저하게
검토하여 승인과정을 거친 후에 다음 단계를 진행하는 개발 방법론이다.
폭포수 모델은 소프트웨어 공학에서 가장 오래되고 가장 폭넓게 사용된 전통적 소프트웨어 생명 주기 모델로고전적 생명 주기 모델이라고도 한다.
소프트웨어 개발 과정의 한 단계가 끝나야만 다음 단계로 넘어갈 수 있는 선형 순차적 모델이다.
제품의 일부가 될 매뉴얼을 작성해야 한다.
각 단계가 끝난 후에는 다음 단계를 수행하기 위한 결과물이 명확하게 산출되어야 한다.
두 개 이상의 과정이 병행하여 수행되지 않는다
.


2) 
프로토타입 모델 (Prototype Model, 원형모델)
프로토타입 모델은 사용자의 요구사항을 정확히 파악하기 위해 실제 개발될 소프트웨어에 대한 견본(시제)품을 만들어 최종 결과물을 예측하는 모델이다.
시제품은 사용자와 시스템 사이에 인터페이스에 중점을 두어 개발한다.
시스템의 일부 혹은 시스템의 모델을 만드는 과정으로서 요구된 소프트웨어를 구현하는데, 이는 추후 구현 단계에서 사용될 골격 코드가 된다.
소프트웨어의 개발이 완료된 시점에서 오류가 발견되는 폭포수 모델의 단점을 보완하기 위한 모델이다.



3)
나선형
모델 (Spiral Model, 점진적 모델)
나선형 모델은 보헴(Boehm)이 제안한 것으로, 폭포수 모델과 프로토타입 모델의 장점에 위험 분석 기능을 추가한 모델이다.
나선을 따라 돌듯이 여러 번의 소프트웨어 개발 과정을 거쳐 점진적으로 완벽한 최종 소프트웨어를 개발하는 것으로, 점진적 모델이라고도 한다.
소프트웨어를 개발하면서 발생할 수 있는 위험을 관리하고 최소화하는 것을 목적으로 한다.
점진적으로 개발과정이 반복되므로 누락되거나 추가된 요구사항을 추가할 수 있고, 정밀하며, 유지보수과정이 필요없다.
위험부담이 큰 대형 시스템 구축에 적합하다.
단점으로는 프로젝트 기간이 오래 걸린다는 점과 반복 단계가 길어질수록 프로젝트 관리가 어려울 수 있다.

 

  4) 애자일 모델 (Agile Model)
애자일은 민첩한, 기민함이라는 의미로, 고객의 다양한 요구사항 변화에 유연하게 대응할 수 있도록 일정한 주기를 반복하면서 개발과정을 진행한다.
애자일 모델은 어느 특정 개발 방법론이 아닌 고객과의 소통에 초점을 맞춘 방법론을 통칭한다.
애자일 모델은 스프린트(Sprint) 또는 이터레이션(Iteration)이라고 불리는 짦은 개발 주기를 반복하며, 반복되는 주기마다 만들어지는 결과물에 대한 고객의 피드백을 받는다.
각 개발 주기에서는 고객이 요구사항에 우선 순위를 부여하여 개발 작업을 진행한다.
프로세스와 도구 보다는 개인과 상호작용에 더 가치를 둔다.
문서보다는 실행되는 소프트웨어에 더 가치를 둔다.

2. 기능 점수(FP)와 소프트웨어 요구사항 명세서(SRS)
기능점수(Function Point)란?
프로젝트를 마무리할 때
,프로젝트의 규모를 산정해야하는 데 세가지 방법이 있다. 코드라인으로 산정하는 것과 투입공수(M/M)로 산정하는 것과 마지막으로 기능점수로 산정하는 방법이 있다.이 중 기능점수 산정법에 대해 알아보자!

기능점수
(Function Point)?
사용자에게 제공되는 기능 단위로 점수를 정량화하여, 소프트웨어 규모를 산정하는 기법으로, 소프트웨어의 개발비용 등을 산정하는 데에 이용된다. 1979년에 IBM사의 A.J.Albrecht이 고안한 방식이다.
FP법이 개발되기 전에는 소프트웨어의 소스코드의 행수(SLOC; Source Line of Code)나 파일크기 등이 소프트웨어 규모의 척도로서 이용되어 왔다. FP법의 등장하고 나서는 보다 객관적이고 정량적인 소프트웨어의 규모를 산출할 수 있게 되었다.
FP의 산출에는, 소프트웨어 내에서 어떠한 처리를 하고 있는지를 추출하고 입출력 등 기능마다 분류하여, 각각을 [펑션](기능)이라고 정의한다.
펑션 마다 레코드 종류의 개수, 데이터 항목의 개수로 부터 펑션의 [복잡함]을 정의하고, 개별 펑션의 평가치를 산출한다.평가치의 어플리케이션 전체의 합계가 [미조정 펑션포인트]이며, 거기에 소프트웨어의 영향도(상하 35%)를 곱하면 [조정이 끝난 펑션포인트]가 산출된다.

- 사용자에게 제공되는 기능 단위로 점수를 정량화하여, 소프트웨어 규모를 산정하는 기법
- 사용자가 요구한 요구사항을 논리적 기능량으로 측정하는 것
- 측정기준이 모두 정의되어 있어 일관성, 정확성을 유지할 수 있음
기능점수 계산
- 기능점수 계산 = 총 데이터 기능점수 + 총 트랜잭션 기능점수
총 데이터 기능점수 = {(내부논리파일 * 내부논리파일 복잡도 가중치)
+ (외부연계파일 * 외부연계파일 복잡도 가중치)}
총 트랜잭션 기능점수 = {(외부입력 * 외부입력 복잡도 가중치)
+ (외부출력 * 외부출력 복잡도 가중치)
+ (외부조회 * 외부조회 복잡도 가중치)}

- 소프트웨어 요구사항 명세서 (Software Requirements Specification)

서비스를 구현하기 위해 다양한 요구사항이 거론되는데, 이를 명확하게 정리해야 할 필요가 있다. 요구사항 명세서는 요구사항을 분석하여 명확하고 완전하게 기록하는 것을 말한다. 소프트웨어 시스템이 수행해야 할 모든 기능과 구현상의 제약 조건에 대해 개발자와 관련자(클라이언트, 기획자, 경영진 등)가 합의한 스펙에 대한 사항을 명세하는 것을 소프트웨어 요구사항 명세서라 한다.
소프트웨어 요구사항 명세서는 소프트웨어 개발 프로세스의 시작인 소프트웨어의 요구사항을 분석하고 정의하는 단계에서 작성되는 최종 산출물이라 할 수 있다. 소프트웨어 요구사항 명세서에는 소프트웨어가 수행해야 할 모든 기능과 제약 조건 등이 기술되어 있으며, 이후 진행되는 소프트웨어 개발과 테스팅의 완료 승인에 대한 기준으로서 사용된다.
소프트웨어 요구 사양 (SRS)는 그 기능 및 비 기능적 요건을 개발하기위한 소프트웨어 시스템의 상세한 설명서로 고객과 계약자 간의 계약을 기반으로 작성되며, 사용자가 소프트웨어 시스템과 상호 작용하는 방법의 사용 사례가 포함될 수 있다. 소프트웨어 요구 사항 명세 문서는 프로젝트 개발에 필요한 모든 요구 사항과 일치해야 한다. 요구사항 명세서(SRS)를 작성하려면 소프트웨어 시스템을 명확하게 이해해야 한다. 이를 위해서는 모든 요구 사항을 모으기 위해 고객과 지속적으로 커뮤니케이션해야 한다.
좋은 SRS는 소프트웨어 시스템이 모든 내부 모듈, 하드웨어, 다른 프로그램과의 통신 및 광범위한 실제 시나리오와의 사용자 상호 작용과 상호 작용하는 방법을 정의한다.