5과목 정보시스템 구축 관리 소프트웨어 개발 방법론 활용 166 ~ 176
166. 소프트웨어 개발 방법론
- 목적 : 소프트웨어의 생산성과 품질 향상.
1) 구조적 방법론 : 정형화된 분석 절차. 문서화
- 타당성 검토 -> 계획 -> 요구사항 -> 설계 -> 구현 -> 시험 -> 운용/유지보수
2) 정보공학 방법론 : 정형화된 기법들을 상호 연관성 있게 통합 및 적용
- 정보 전략 계획 수립 -> 업무 영역 분석 -> 업무 시스템 설계 -> 업무 시스템 구축
- ERD 사용
- 대규모 정보 시스템 구축하는데 적합
3) 객체지향 방법론 : 개체 - 객체 - 조립
- 요구분석 -> 설계 -> 구현 -> 테스트 및 검증 -> 인도
- 패키지 다이어그램, 배치 다이어그램, 상태 전이도
4) 컴포넌트 기반 방법론 (CBD) : 컴포넌트 조합 > 하나의 앱
- 개발 준비 -> 분석 -> 설계 -> 구현 -> 테스트 -> 전개 -> 인도
- 컴포넌트 재사용
- 기능 추가 간단
- 유지보수 비용 최소화
5) 애자일 방법론 : 고객 요구사항 변화에 유연.
- 사용자 스토리 -> 계획 -> 개발 -> 승인 테스트 반복
- 익스트림 프로그래밍, 스크럼, 칸반, 크리스탈
6) 제품 계열 방법론 : 특정 제품에 적용하고 싶은 공통된 기능을 정의하여 개발.
- 임베디드 소프트웨어
- 영역공학 (영역 분석, 영역 설계, 핵심 자산 구현)
- 응용공학 (제품 요구 분석, 제품 설계, 제품 구현)
167. S/W 공학의 발전적 추세
1) 소프트웨어 재사용 : 이미 개발되어 인정받은 소프트웨어의 전체 혹은 일부분을 다른 소프트웨어 개발이나 유지에 사용하는 것.
- 장점 : 품질과 생산성 높임. 개발 시간과 비용 단축. 실패의 위험 감소. 시스템 구축 방법에 대한 지식 공유. 문서 공유.
- 방법 :
- 합성 중심(Composition-Based) : 블록(모듈)을 만들어서 끼워맞추어 완성 (블록 구성 방법)
- 생성 중심(Generation-Based) : 명세를 구체화하여 프로그램을 만듦. (패턴 구성 방법)
2) 소프트웨어 재공학 : 새로운 요구에 맞도록 기존 시스템을 이용하여 나은 시스템을 구축하고, 새로운 기능을 추가하여 소프트웨어 성능을 향상시킴.
- 소프트웨어 수명 연장, 개발기간 단축, 오류 줄어듦, 비용 절감. 예방 유지보수 측면
- 주요활동
- 분석(Analysis) : 기존 소프트웨어의 명세서 확인, 동작 이해, 재공학할 대상 선정
- 재구성(Restructuring) : 구조 향상을 위해 코드 재구성. (기능, 외적 동작 안바뀜)
- 역공학 (Reverse Engineering) : 기존 소프트웨어 분석 > 개발 과정과 데이터 처리 과정을 설명하는 분석 및 설계 정보를 재발견하거나 다시 만들어내는 활동.
- 이식(Migration) : 기존 소프트웨어를 다른 운영체제나 하드웨어 환경에서 사용할 수 있도록 변환.
3) CASE (Computer Aided Softrware Engineering) : 소프트웨어 개발 과정에서 사용되는 요구분석, 설계, 구현, 검사 및 디버깅 과정 전체 또는 일부를 컴퓨터와 전용 소프트웨어 도구를 사용하여 자동화하는 것.
- 주요 기능 : 소프트웨어 생명 주기 전 단계의 연결, 다양한 소프트웨어 개발모형 지원, 그래픽 지원, 모델들의 모순 검사 및 오류검증, 자료흐름도 작성 등
- 원천 기술 : 구조적 기법, 프로토타이핑, 자동 프로그래밍, 정보 저장소, 분산처
168. 비용 산정 기법
1) 비용 산정 : 소프트웨어의 개발 규모를 소요되는 인원, 자원, 기간 등으로 확인하여 실행 가능한 계획을 수립하기 위해 필요한 비용을 산정하는 것.
- 너무 높으면 예산 낭비/일의 효율성 저하
- 너무 낮으면 개발자의 부담 가증/ 품질문제 발생.
- 하향식 비용산정 기법/ 상향식 비용산정 기법.
2) 비용 결정 요소
- 프로젝트 요소 : 제품 복잡도(문제점들의 난이도) /시스템 크기 / 요구되는 신뢰도(일정기간 내 주어진 조건하에서 필요한 기능 수행하는 정도)
- 자원 요소 : 인적 자원(개발 관련자들이 갖춘 능력) / 하드웨어 자원 / 소프트웨어 자원
- 생산성 요소 : 개발자능력 / 개발 기간
169. 비용 산정 기법 - 하향식
: 과거의 유사한 경험을 바탕으로 전문 지식이 많은 개발자들이 참여한 회의를 통해 비용을 산정하는 비과학적인 방법.
- 전체 비용을 산정한 후 각 작업별로 비용을 세분화
1) 전문가 감정 기법 : 조직 내에 경험 많은 두 명 이상의 전문가에게 비용 산정 의뢰.
2) 델파이 기법 : 많은 전문가의 의견을 종합하여 산정. (한 명의 조정자와 여러 전문가로 구성)
170. 비용 산정 기법 - 상향식
: 프로젝트의 세부적인 작업 단위별로 비용을 산정한 후 집계하여 전체 비용을 산정하는 방법.
1) LOC(source Line Of Code/원시 코드 라인수) 기법 : 소프트웨어 각 기능의 원시 코드 라인 수의 비관치, 낙관치, 기대치를 측정하고 예측치를 구하고 이용하여 비용을 산정.
- 낙관치 : 가장 적게 측정된 코드라인 수
- 비관치 : 가장 많이 측정된 코드라인 수
- 기대치 : 측정된 모든 라인 수의 평균
- 예측치 = ((낙관치)+4(기대치)+(비관치))/6
- 산정공식
: 거속시처럼 노(력)기(간)인(원) & LOC노(력)생(산성)
- 노력(인월) = 개발기간 X 투입인원 = LOC / 1인당 월평균 생산 코드라인수
- 개발비용 = 노력(인월) X 단위비용(1인단 월평균 인건비)
- 개발기간 = 노력(인월) / 투입인원
- 생산성 = LOC / 노력(인월)
2) 개발 단계별 인월수(Effort Per Task) 기법 : 각 기능을 구현시키는데 필요한 노력을 생명주기의 각 단계별로 산정.
3) 수학적 산정 기법.
171. 수학적 산정 기법
비용 산정 기법 - 상향식의 (3)번임
: 경험적 추정 모형, 실험적 추정 모형. 개발 비용 산정의 자동화를 목표로 함. (과거 유사한 프로젝트를 기반으로)
1) COCOMO(COnstructive COst MOdel) 모형 : 개발할 소프트웨어의 규모(LOC)를 예측한 후 이를 소프트웨어 종류에 따라 다르게 책정되는 비용 산정 방정식에 대입하여 비용을 산정.
- 중소 규모 소프트웨어 프로젝트 비용 추정에 적합.
- 비용 산정 결과는 프로젝트 완성하는데 필요한 노력(Man-Month)로 나타남.
- 개발 유형
(1) 조직형 : 기관 내부에서 개발된 중소규모의 소프트웨어로 일괄 자료 처리나 과학기술 계산용, 비즈니스 자료 처리용. (5만 라인(50KDSI) 이하의 소프트웨어 개발)
비용산정 공식 ( KDSI = 1000라인)
- 노력(MM) = 2.4 X (KDSI)^1.05
- 개발기간(TDEV) = 2.5 X (MM)^0.38
(2) 반분리형 : 트랜잭션 처리 시스템이나 운영체제, 데이터베이스 관리 시스템 등 30만 라인 이하의 소프트웨어 개발.
비용산정 공식
- 노력(MM) = 3.0 X ( KDSI )^1.12
- 개발기간(TDEV) = 2.5 X (MM)^0.35
(3) 내장형 : 초대형 규모의 트랜잭션 처리 시스템이나 운영체제 등의 30만 라인 이상의 소프트웨어 개발.
비용산정 공식
- 노력(MM) = 3.6 X ( KDSI)^1.20
- 개발기간(TDEV) = 2.5 X (MM)^0.32
2) Putnam 모형 : 소프트웨어 생명 주기의 전 과정 동안에 사용될 노력의 분포를 가정해주는 모형. (생명 주기 예측 모형)
- 시간에 따른 함수로 표현되는 Rayleigh-Norden 곡선의 노력 분포도를 기초로 함.
3) 기능 점수(FP/Function Point) 모형 : 소프트웨어의 기능을 증대시키는 요인별로 가중치를 부여 >> 요인별 가중치를 합산하여 총 기능 점수를 산출 >> 총 기능 점수와 영향도를 이용하여 기능 점수를 구한 후 이를 이용해서 비용을 산정하는 기법.
- 기능 점수(FP) = 총 기능 점수 X [0.65 + (0.1 X 총 영향도)]
- 기능별 가중치
- 자료 입력(입력 양식) : 3,4,5
- 정보 출력(출력 보고서) : 4,5,7
- 명령어(사용자 질의수) : 3,4,5
- 데이터 파일 : 7,10,15
- 필요한 외부 루틴과의 인터페이스 : 5,7,10
- 자동화 추정도구
- SLIM : Rayleigh-Norden 곡선과 Putnam 예측 모델을 기초로 하여 개발된 자동화 추정 도구
- ESTIMACS : 다양한 프로젝트와 개인별 요소를 수용하도록 FP 모형을 기초로 개발된 자동화 추정 도구.
172. 프로젝트 일정 계획
: 프로젝트의 프로세스를 이루는 소작업을 파악하고 예측된 노력을 각 소작업에 분배하며 소작업의 순서와 일정을 정하는 것.
1) PERT(Program Evaluation and Review Technique/프로그램 평가 및 검토 기술)
: 프로젝트에 필요한 전체 작업의 상호 관계를 표시하는 네트워크.
- 낙관적인 경우
- 가능성이 있는 경우
- 비관적인 경우로 나눔
- 원 노드에는 작업을, 화살표에는 낙관치, 기대치, 비관치를 표시.
- 결정 경로, 작업에 대한 경계 시간, 작업 간의 상호 관련성을 알 수 있다.
2) CPM(Critical Path Method/임계 경로 기법)
: 프로젝트 완성에 필요한 작업을 나열하고 소요기간을 예측하는데 사용.
- 노드는 작업을, 간선은 작업 사이의 전후 의존 관계를 나타냄.
- 원형 노드는 각 작업
- 박스 노드는 이정표 (예상 완료 시간 표시)
- 임계 경로 = 최장 경로.
3) 간트 차트(Gantt Chart)
: 프로젝트 각 작업들이 언제 시작하고 언제 종료되는지에 대한 작업 일정을 막대 도표를 이용하여 표시하는 프로젝트 일정표. (시간선 차트)
- 중간 목표 미달성 시 그 이유와 기간을 예측 가능.
- CPM 네트워크 데이터를 바탕으로 제작 가능.
- 수평 막대의 길이 = 각 작업의 기간.
173. 소프트웨어 개발 방법론 결정
: 프로젝트 관리와 재사용 현황을 소프트웨어 개발 방법론에 반영& 확정된 소프트웨어 생명 주기와 개발 방법론에 맞춰 소프트웨어 개발 단계, 활동, 작업, 절차 등을 정의하는 것.
- 프로젝트 관리 : 일정 관리/ 비용 관리/ 인력 관리/ 위험 관리/ 품질 관리.
1) 결정 절차
- 프로젝트 관리와 재사용 현황을 소프트웨어 개발 방법론에 반영.
- 개발 단계별 작업 및 절차를 소프트웨어 생명 주기에 맞춰 수립 (기본, 지원, 조직 생명 주기별로 확인/ 개발 프로세스, 개발 생명 주기, 프로세스 모형을 정리)
- 결정된 소프트웨어 개발 방법론의 개발 단계별 활동 목적, 작업 내용, 산출물에 대한 매뉴얼 작성.
174. 소프트웨어 개발 표준
: 소프트웨어 개발 단계에서 수행하는 품질 관리에 사용되는 국제 표준
1) ISO/IEC 12207 : 기본 / 지원 / 조직 생명주기 프로세스로 구분.
2) CMMI(Capability Maturity Model Integration/능력 성숙도 통합 모델) : 개발 조직의 업무 능력 및 조직의 성숙도를 평가하는 모델.
- 초기, 관리(규칙화된 프로세스), 정의(표준화된), 정량적 관리(예측 가능한), 최적화(지속적 개선)
3) SPICE(Software Process Improvement and Capability dEtermination/소프트웨어 처리 개선 및 능력 평가 기준) = ISO/IEC 15504
: 정보 시스템 분야에서 소프트웨어 품질 및 생산성 향상을 위해 프로세스를 평가 및 개선하는 국제 표준
- 범주 : 고객-공급자 프로세스/ 공학 프로세스/ 지원 프로세스 / 관리 프로세스 / 조직 프로세스
- 불완전(incomplete) -> 수행(performed) ->관리(managed) -> 확립(established) -> 예측(predictable) -> 최적화(optimizing)
175. 소프트웨어 개발 방법론 테일러링
: 프로젝트 상황 및 특성에 맞도록 정의된 소프트웨어 개발 방법론의 절차, 사용기법 등을 수정 및 보완하는 작업.
- 절차 : 프로젝트 특징 정의 > 표준 프로세스 선정 및 검증 > 상위 수준의 커스터마이징 > 세부 커스터마이징 > 테일러링 문서화
1) 고려사항
- 내부적 기준 : 목표 환경, 요구사항, 프로젝트 규모, 보유 기술
- 외부적 기준 : 법적 제약사항, 표준 품질 기준
2) 테일러링 기법
- 프로젝트 규모와 복잡도에 따른 테일러링
- 구성원에 따른
- 팀내 방법론 지원에 따른
- 자동화에 따른
176. 소프트웨어 개발 프레임워크
- 프레임워크 : 소프트웨어 개발에 공통적으로 사용되는 구성 요소와 아키텍처를 일반화하여 손쉽게 구현할 수 있도록 여러가지 기능들을 제공해주는 반제품 형태의 소프트웨어 시스템.
- 주요 기능 : 예외 처리, 트랜잭션 처리, 메모리 공유, 데이터 소스 관리, 서비스 관리, 쿼리 서비스, 로깅 서비스, 사용자 인증 서비스 등
- 프레임워크의 특성
- 모듈화 : 캡슐화로 모듈화 강화
- 재사용성 : 재사용 가능한 모듈들 제공
- 확장성 : 다형성을 통한 인터페이스 확장
- 제어의 역흐름(IoC) : 객체들의 제어를 프레임워크에 넘김.
1) 스프링 프레임워크 : 자바 오픈소스 경량형 애플리케이션 프레임워크
2) 전자정부 프레임워크 : 우리나라 공공부문 정보화 사업 시 효율적인 정보 시스템 구축을 위해 필요한 기능 및 아키텍처를 제공하는 프레임워크
3) 닷넷 프레임워크(.NET Framework) : Windows 프로그램 개발 및 실행 환경을 제공하는 프레임워크
'Programming > 정처기' 카테고리의 다른 글
4과목 프로그래밍 언어 활용 응용 SW 기초 기술 활용 157 ~ 165 (2) | 2024.02.12 |
---|---|
4과목 프로그래밍 언어 활용 응용 SW 기초 기술 활용 149 ~ 156 (1) | 2024.02.11 |
4과목 프로그래밍 언어 활용 프로그래밍 언어 활용 140 ~ 148 (0) | 2024.02.06 |
4과목 프로그래밍 언어 활용 프로그래밍 언어 활용 132 ~ 139 (0) | 2024.02.05 |
4과목 프로그래밍 언어 활용 서버 프로그램 구현 127 ~ 131 (1) | 2024.02.05 |