I. 요구사항 확인 01. 소프트웨어 개발 방법론 1. 소프트웨어 개발 방법론 2. 비용 산정, 일정관리 모형 02 현행 시스템 분석 1. 현행 시스템 파악 2. 개발 기술 환경 정의 03 요구사항 확인 1. 요구사항 2. 요구사항의 시스템화 타당성 분석 04. 분석 모델 확인 1. 분석 모델 검증 2. 분석 모델의 시스템화 타당성 분석
소프트웨어 생명주기 SDLC
소프트웨어 생명주기는 어떤 소프트웨어가 필요할 때 이들을 개발하기 위해 요구사항, 조건 등을 찾아내는 것부터 실제 소프트웨어를 만들고 이후 유지 보수하는 것까지 전체 공정을 체계화한 절차를 말합니다.
소프트웨어가 탄생과 삶을 생애에 비유해 생명주기라는 것이라고 이해하시면 될 것 같습니다.
자,그과정에대해서좀더구체적으로살펴보도록하겠습니다.
SDLC 모델 프로세스
제품의 요구사항을찾는요구사항분석이첫번째입니다.
어떤 기능, 비기능적 요구사항을 가지고 있는지를 명확하게 체크하여 그 요구사항에 적합하게 제품을 설계합니다.
두 번째 단계인 “설계”에서는 전술한 기능을 실제로 수행할 수 있도록 그 방법을 정하는 단계로 시스템의 구조나 프로그램, 사용자 인터페이스 등을 설계하는 단계입니다.
어떤 방법으로 문제를 해결할지 방법을 정했다면 이제 진짜 제품을 만들어야겠네요.세 번째 단계는 구현입니다.
자바, Pysun, 코틀린 등 어떤 프로그래밍 언어를 선택하여 제품을 구현할 것인지 결정하고 실제 프로그램을 만듭니다.
우리가 소위 ‘개발’이 이 단계에서 이루어진다고 보시면 됩니다.
인터페이스나 자료구조를 개발하게 됩니다.
개발이 완료되면 소프트웨어 테스트를 실시합니다.
처음에 요구사항을 정의한 것에 부합되게 만들었는지 오류는 없는지 검사하고 평가하는 과정이며 테스트를 한번에 끝내는 것이 아니라 이 중에서도 단위별로 테스트 종류가 나뉘기도 합니다.
마지막으로 테스트가 잘 끝나면 시스템을 사용자에게 인수하고 이후 발생하는 이슈에 대해 해결해 주는 ‘유지보수’ 단계가 있습니다.
정리하면 소프트웨어 생명주기 프로세스는 요구사항 분석 > 설계 > 구현 > 테스트 > 유지보수입니다.
이러한 과정을 기본으로 SDLC 모델의 종류를 살펴보겠습니다.
SDLC모델종류
기본 과정은 비슷하지만 모델에 따라 약간의 차이가 있을 수 있습니다.
폭포수 모델은 타당성 검토 > 계획 > 요구사항 분석 > 설계 > 구현 > 테스트 > 유지보수 절차를 가진 가장 오래된 모델로 고전적 생명주기 모델이라고도 합니다.
앞 단계가 확실히 끝나야 다음 단계로 넘어가기 때문에 앞에서 사소한 실수를 하더라도 뒤로 돌아가 수정할 수 있다는 것이 단점입니다.
프로토타입 모델은 말 그대로 ‘프로토타입’을 만들어 보는 것입니다.
고객이 요구한 조건에 맞게 시제품을 만들어보고 수정하고 또 만들고 수정하고 이런 걸 반복하는 거죠. 요구사항 분석 > 프로토타입 개발 > 프로토타입 평가 > 구현 > 테스트를 거친다고 생각해 주십시오. 여기서 구현 후 피드백을 받은 것을 가지고 요구사항 분석 단계로 돌아가 다시 프로세스를 따르기를 반복해 제품의 완성도를 높여갑니다.
나선형 모델은 계획 및 정의 > 위험 분석 > 개발 > 고객 평가를 계속 반복하는데 구글이나 네이버에 나선형 모델로 검색해보면 그래프를 확인할 수 있습니다.
왜 나선형이라는 이름이 붙는지 알 수 있을 거예요. 이 4단계를 계속 반복하는 거예요.
반복적 모델은 요구사항을 나누어 작은 단위의 기능을 동시에 병렬적으로 개발하고 통합하거나 개발한 작은 모듈에 무언가를 다시 붙여 반복적으로 개발하여 점증 완성하는 것을 말합니다.
소프트웨어 생명주기 SDLC의 의미와 모델의 종류에 대해 알아봤습니다.
자,그러면이런생명주기를따라갈때소프트웨어개발과정에서지속적으로적용하는방법,절차,기법등을배워보도록하겠습니다.
이것을 소프트웨어 개발 방법론이라고 합니다.
SDLC는 어떤 단계에서 소프트웨어가 만들어질까. 라는 질문에 대한 답이라면 소프트웨어 개발 방법론은 ‘어떤 방법으로 소프트웨어가 개발될 것인가?’라는 질문에 대한 답입니다.
소프트웨어 개발 방법론의 종류
구조적 방법론: 하향식 방법론으로 분할 정복하는 접근방식입니다.
시스템을 기능에 따라 나누어 개발하고 통합하는 것입니다.
나시-슈나이더만 차트를 사용할 수도 있습니다.
구조를 그림으로 나타낸 것
정보공학 방법론: 데이터의 흐름에 관련된 것인데, 정보 시스템의 계발에 필요한 관리 절차와 작업 방법을 체계화한 것입니다.
객체지향방법론:객체로 시스템을 분석하고 설계하는 것입니다.
객체를 만드는 클래스와 오브젝트와 클래스 간에 주고받는 연산인 메시지를 사용합니다.
컴포넌트 기반 방법론: 컴포넌트를 조립해서 새로운 프로그램을 작성함으로써 이미 잘 된 것을 활용하는 것입니다.
레고 같아요.애자일 방법론: 절차보다는 사람 중심, 신속하게 적응하는 개발 방법론인데 요즘 핫한 방법론입니다.
애자일 방법론에는 XP, 스크럼, 린과 같은 유형이 있습니다.
제품계열 방법론: 임베디드 소프트웨어를 작성하는데 유용한 방법론으로 영역공학과 응용공학으로 구분합니다.
임베디드 SW 관련이므로 특정 제품에서만 사용합니다.
애자일 방법론은 XP, 스크럼, 린 등이 있는데 정보처리기사 시험을 위해 암기해야 할 내용만 정리해보면 다음과 같습니다.
· XP의 5가지 가치: 용기 / 단순성 / 커뮤니케이션 / 피드백 / 존중 · XP의 12가지 기본 원리: 페어 프로그래밍 / 공동 코드 소유 / 지속적 통합 / 계획 수립 / 작은 릴리스 / 메타포 / 간단한 디자인 / 테스트 기반 개발 / 리팩토링 / 40시간 작업 / 고객 상주 / 코드 표준 스크럼 주요 요소: 백로그, 스프린트, 스크럼 미팅, 스크럼 마스터, 번다운 차트
지금까지 소프트웨어 개발 방법론 챕터의 SDLC 개념과 프로세스, SDLC 모델의 종류-소프트웨어 개발 방법론의 종류(애자일 방법론 포함) 두 가지 내용을 살펴보았습니다.
이제 소프트웨어 개발 시 모든 절차에서 고려해야 할 중요한 자원, ‘시간’과 ‘비용’을 어떻게 산정하고 관리해야 하는지를 살펴보겠습니다.
비용 산정
비용 산정 방법 크게 두 가지로 나뉩니다.
하향 조정 방법은 전문가가 비용을 산정하는 것으로 전문가 판단, 델파이 기법 같은 종류가 있습니다.
상향식 산정방법은 기능에 따라 필요한 비용을 계산하는 방식으로 LOC, MM, COCOMO, Putnam, FP모형 등이 있습니다.
특히 생소한 상향식 산정 방법의 종류만 조금 더 설명하자면 LOC는 Line of Code로 코드라인 수의 낙관치, 중간값, 비관값을 측정해서 1:4:1 가중치를 두고 평균을 내는 방식으로 예측치를 구하는 것입니다.
당연히 예측치로 산정된 코드 수가 많아질수록 사람도, 비용도, 시간도 많이 들 것입니다.
MM은 ManMonth라고 해서 인월이라고도 부르는데, 한 사람이 한 달간 할 수 있는 일의 양이라고 생각하면 됩니다.
50MM이라면 50명이 한 달간 일하거나 한 사람이 50개월 동안 일하거나 두 사람이 25개월 동안 일하는 양으로 이해할 수 있을 겁니다.
이때 프로그래머 한 사람의 생산성이 모두 같다는 것을 전제로 하기 때문에 이렇게 간단한 계산이 가능합니다.
COCOMO는 프로그램 규모에 따라 조직형, 절반이형, 임베디드형으로 분류해 비용을 산정하는 방식인데 5만 라인을 기준으로 조직형과 절반이형을 구분하고 30만 라인을 기준으로 절반이형과 임베디드형을 구분합니다.
Putnam 모형은 Rayleigh-Norden 곡선을 기초로 하는데 이 곡선 그래프는 가로축이 time, 세로축이 effort 입니다.
가로축 시간은 소프트웨어 개발 주기 단계이므로 각 단계마다 필요한 인력의 분포를 요구하게 됩니다.
산모양의그래프를잡습니다.
FP 모델은 기능 점수(FunctionPoint) 모델에서 FP를 원하는 공식 정도를 기억해 두면 좋겠습니다.
소프트웨어 기능 증대 요인에 해당 작업의 복잡도에 따른 가중치를 부여하여 점수를 주시는 방식을 취합니다.
총 기능 점수 * [0.65 + (0.1 * 총 영향도)] = 기능 점수입니다.
일정 관리
일정관리 모델의 종류는 주공정법(CPM), PERT, 중요연쇄프로젝트 관리로 나뉩니다.
특히 CPM은 작업항목 노트, 각 노드의 선, 후행관계와 소요시간을 나타내며 프로젝트 시작부터 종료까지 걸리는 가장 긴 시간(임계경로)을 요구하는 것입니다.
지금까지 비용 산정 일정 관리 모형을 공부했는데요.이번 포스트의 주요 내용을 다시 보면 다음과 같습니다.
우선 소프트웨어 개발에 있어서 큰 내용을 살펴본 단원이라고 할 수 있습니다.
소프트웨어 개발을 전체적으로 공부하고 싶기 때문에 먼저 밑그림을 그리는 것입니다.
어떤 절차를 따르는지, 이런 절차는 어떤 모형, 모델로 나타낼 수 있는지를 보고 이런 모든 과정을 어떤 방식으로 진행하는지 살펴보는 것입니다.
그리고 그 전체 과정에서 ‘비용 산정, 일정 관리’가 굉장히 중요하기 때문에 이번 단원에서 같이 살펴봤습니다.
앞으로는 오늘 나온 내용으로 더 구체화되고 요구분석에는 어떤 세부단계가 있니? 요구 분석을 잘 하려면 뭐가 필요한가요? 오, 여기서 산출되는 문서도 있네. 이게 뭐지?이렇게 좁혀가는 공부를 합니다.
01 소프트웨어 개발 방법론 1. 소프트웨어 개발 방법론 – SDLC (프로세스, 모델의 종류) – 소프트웨어 개발 방법론의 종류 2. 비용 산정, 일정 관리 모델
한 챕터 강의를 듣고 책을 읽고 내용을 정리하는 데 시간이 많이 걸렸습니다.
참고도서·수제비정보처리기사 실기 2021·이기적정보처리기사 실기 2021·시나곤정보처리기사 실기 2020