/////
Search
Duplicate
📚

3주차) SW 개발 방법론, SW 프로세스 모델, 프로젝트 팀 역할

생성일
2022/03/15 04:11
태그
소프트웨어설계

소프트웨어 개발 방법론

방법론

소프트웨어 개발 생명주기(SDLC)를 구현하기 위하여 따라야 할 가이드 라인이나 정형화된 접근 방법

모델

실세계를 특정한 관점으로 표현한것
예) 흐름도, 자료흐름도, 아키텍쳐, 유스케이스 다이어그램, 클래스 다이어그램 등..

도구

설계, 구현, 유지보수, 테스트 등 SW 산출물 생산에 도움을 주는 소프트웨어(툴) : CASE

기술

개발 작업을 완성할 수 있도록 도움을 주는 가이드라인
예) 프로젝트 관리 기술, 개체지향 분석 설계기술, 테스트 기술 등..

소프트웨어 프로세스 모델

프로세스(Process)

소프트웨어를 개발해 나가는 단계나 과정
컨셉을 정하는 것부터 소멸될 때까지
몇 달 또는 몇 년이 걸릴 수 있음
각 단계의 목표
명확한 작업 단계
손에 잡히는 결과
작업의 검토
다음 단계의 명시
Code-and-Fix
생명주기가 없음

Waterfall(폭포수) Model

각 단계가 다음 단계 시작 전에 끝나야 함
순서적 - 각 단계 사이에 중복이나 상호작용이 없음
각 단계의 결과는 다음 단계가 시작되기 전에 점검
바로 전단계로 피드백
단순하거나 응용분야를 잘 알고 있는 경우 적합
한 번의 과정, 비전문가가 사용할 시스템 개발에 적합
Advantages
프로세스가 단순하여 초보자가 쉽게 적용 가능
중간 산출물이 명확, 관리하기 좋음
코드 생성 전 충분한 연구와 분석 단계
Disadvantages
처음 단계를 지나치게 강조하면 코딩, 테스트가 지연
각 단계의 전환에 많은 노력
프로토타입과 재사용의 기회가 줄어듦
소용 없는 다종의 문서를 생산할 가능성 있음
적용
이미 잘 알고 있는 문제나 연구 중심 문제에 적합
변화가 적은 프로젝트에 적합하다
폭포수 모델의 변형
병렬 개발 모형 (Parallel Model)
대규모 시스템을 쪼개어 병렬로 진행

프로토타이핑(Prototyping) 모델

프로토타입(quick and dirty)의 적용
사용자의 요구를 더 정확히 추출
알고리즘의 타당성, 운영체제와의 조화, 인터페이스의 시험 제작
포로토타이핑 도구
화면 생성기
비주얼 프로그래밍, 4세대 언어 등
공동의 참조모델
사용자와 개발자의 의사소통을 도와주는 좋은 매개체
프로토타입의 목적
단순한 요구 추출 - 만들고 버림
제작 가능성 타진 - 개발 단계에서 유지보수가 이루어짐
Disadvantages
오해, 기대심리 유발, 관리가 어려움 (중간 산출물 정의가 난해)
적용
개발 착수 시점에 요구가 불투명할 때
혁신적인 기술을 사용해보고 싶을 때

나선형(Spiral) 모델

여러 버전으로 나누어 순차적으로 개발
Advantages
유용한 시스템을 빠른 기간 내에 사용자의 손에 들려줌
중요한 추가 요구를 조기에 발견
Disadvantages
의도적인 미완성 시스템을 가지고 작업하기 시작
로드맵을 다 그려야 한다

Agile (애자일) Model

Heavy한 프로세스
과다한 단계
과다한 문서
코드가 나오기까지 시간이 많이 소요된다
과도한 모델링과 문서화의 짐을 과감히 생략하고 개발에 집중
Extreme Programming
Scrum
DSDM
Extreme Programming의 핵심가치 4가지
의사소통
단순함
피드백
격려

프로젝트 팀 역할

프로젝트 팀 구성

시스템 분석가(SW 설계자)
시스템 개발에서 제기된 이슈를 다룸
비즈니스 프로세스 개선
분석과 설계작업에 대한 훈련과 경험
사용자 지원
기술적 정보
교육, 생산성 지원
헬프 데스크, 고객센터
품질 보증
품질 관점에서 모든 결과물을 체크
테스트
개발과 별도의 조직
데이터베이스 관리자(DBA)
DB 설계 관리
보안, 백업, 사용자 접근제어
DB 튜닝
네트워크 관리자
네트워크 장비의 관리 및 유지보수
보안

Software Planning

프로젝트란?
비즈니스 가치를 창조하는 시스템을 만드는 처음부터 마지막까지의 작업 집합
New Project (SW development or improvement) 의 시작
비즈니스를 이해하고 목표를 정하는 것으로부터 출발
유행하는 새로운 최신 기술 적용 목적?
유행되는 기술 용어들이 관심을 끌게 되면 마치 모든 문제를 해결해 줄것 같은 착각
비즈니스에 실질적 가치를 창조하지 못하면서도 마치 혁신을 약속한 것처럼 보일수도 있음
실제 IT 프로젝트의 많은 실패 사례들의 문제 핵심
→ 개발주기 초기에 비즈니스 가치를 찾는 것과 Risk Management를 이해하여 분석설계에 충분한 관심을 기울이지 않음
→ 타당성 검증이 반드시 필요
→ 기술적 측면, 경제적 측면, 조직적 측면

Planning Stage

1.
비즈니스 목표의 설정
2.
시스템 개발 요청 정의
3.
타당성 분석
4.
프로젝트 개발 일정과 비용 산정
5.
일정 계획
6.
조직 구성

비즈니스 목표(Business Goals) 설정

전략적 계획 (Strategic Planning)

장기적인 목표나 전략, 이를 위한 자워
Roadmap, 큰 그림을 그리는 과정
소프트웨어 분석가, IT 관리자의 역할이 중요

현재 상황을 잘 인식하고 미래에 대한 분명한 비전이 필요

전략적 계획의 대표 방법 ⇒ SWOT 분석

Mission Statement (미션 선언문)

기업이나 기관의 목적, 비전, 가치를 선언
기업이나 기관의 장/단기 목표, 비즈니스 활동을 위한 기초
Mission Statement는 Project Planning의 시작점
예제)

시스템 개발 요청 정의

프로젝트 시작

시스템을 구축하여 얻을 비즈니스 가치를 발견했을 때 시작
IT부서, 경영 조직(마케팅, 회계 부서의 경영진), 사용자
비즈니스 필요성은 시스템에 대한 요구(requirement)를 창출

프로젝트의 필요성 제기

소프트웨어 시스템 개발을 요청하는 6가지 주요요인
1.
서비스 향상
2.
성능 개선
3.
신제품 또는 서비스 지원
4.
정보 증대
5.
제어력 강화
6.
비용 절감

시스템 개발 요청서

시스템 구축의 필요성과 시스템이 제공할 것으로 예상하는 가치를 정리한 문서

Validity Analysis

1.
기술적 타당성 - 개발할 수 있는가?
a.
응용분야에 익숙한가?
b.
기술에 익숙한가?
c.
프로젝트 크기?
d.
호환성 - 현재 가동되는 시스템과 연동, 통합 시도가 많을수록 위험이 큼
2.
경제적 타당성 - 개발하여야 하는가?
a.
개발 비용
b.
연간 운영비용
c.
연간 이익 (비용 절감과 매출)
d.
정상적 비용과 이익
3.
조직적 타당성 - 조직 운영에 얼마나 잘 융합될 수 있는가?
a.
프로젝트 관리자
b.
고위 경영층
c.
사용자
d.
기타 관련자
e.
비즈니스와 전략적으로 정렬시킬 수 있는가?
시스템 완성 후 사용자에게 얼마나 잘 받아들여질 것인가?
조직에서 진행 중인 운영에 얼마나 효과적으로 사용될 수 있는가?

Project Size 와 Cost Estimation

Estimation
프로젝트 수행에 필요한 작업이 어떤 것이고, 얼마나 걸릴 것인지 전체적인 규모 및 비용 등의 예측
다양한 방법들이 연구
Function Point Analysis - 규모산정
COCOMO - 비용산정
Data-based method
AI-based method (Neural Network)
프로젝트 규모 산정 (Size Estimation)
Function Point Analysis (기능 점수 분석)
소프트웨어가 갖는 기능(입력, 출력, 질의, 인터페이스 등)을 점수로 환산하여 소프트웨어 규모 산정 방법
설계가 충분히 이루어지지 않은 상태에서 정확한 라인 수(LOC) 예측은 불가능
국제표준 ISO/IEC 20926 로 지정
Function Point 계산 절차
1.
시스템의 주요 요소 파악으로 시작 - 요소(Component) 나열
a.
자료 입력화면과 같은 입력(input)
b.
보고서와 같은 출력(output)
c.
디비 질의(query)
d.
파일(file)
e.
프로그램 인터페이스(interface)
2.
시스템에 포함될 각 component의 개수를 기록하고 복잡도를 상, 중, 하 로 분류
3.
정해진 가중치를 곱하여 총합으로 계산