구조적 방법론 : 정형화된 분석 절차에 따라 사용자 요구사항을 파악하여 문서화하는 처리 중심 방법론
1960년대까지 많이 적용, 쉬운 이해 및 검증이 가능한 프로그램 코드 생성 목적 , 분할 정복
정보공학 방법론 : 정보 시스템의 개발을 위해 계획, 분석, 설계, 구축에 정형화된 기법들을 상호 연관성 있게 통합 & 적용
대규모 정보 시스템 구축에 적합
컴포넌트 기반 방법론 : CBD(Component Based Design)
- 기존의 시스템이나 소프트웨어를 구성하는 컴포넌트를 조합하여 하나의 새로운 app을 만드는 방법론
- 컴포넌트의 재사용이 가능하여 시간과 노력 절감
- 새로운 기능을 추가하는 것이 간단하여 확장성이 보장
- 유지보수 최소화, 생산성 및 품질 향상
(개발준비 -> 분석 -> 설계 -> 구현 -> 테스트 -> 전개 -> 인도)
소프트웨어 재사용 (Software Reuse)
: 이미 개발되어 인정받은 소프트웨어의 전체 혹은 일부분을 다른 소프트웨어 개발이나 유지에 사용
소프트웨어 개발의 품질과 생산성 높이기(기존의 경험과 지식 적용)
장점
1) 개발 시간과 비용 단축
2) 소프트웨어 품질 향상
3) 소프트웨어 개발의 생산성을 향상
4) 프로젝트 실패 위험 감소
5) 시스템 구축 방법에 대한 지식 공유
6) 시스템 명세, 설계, 코드 등을 문서 공유
소프트웨어 재사용 방법
1) 합성 중심 (Composition-Based) : 모듈을 끼워 맞추어 소프트웨어를 완성시킴 ,블록 구성 방법
2) 생성 중심 (Generation-Based) : 추상화 형태로 쓰여진 명세를 구체화하여 프로그램 만듦, 패턴 구성 방법
소프트웨어 재공학(Software Reengineering)
: 새로운 요구사항에 맞게 기존의 시스템을 이용하여 보다 나은 시스템을 구축하고, 새로운 기능을 추가하여 소프트웨어 성능을 향상
분석(Analysis) : 기존의 소프트웨어 명세서 확인, 소프트웨어 동작 이해, 재공학할 대상 선정
재구성(Restructuring) : 기존의 소프트웨어 구조 향상 시키려고 코드 재구성, 소프트웨어 기능과 외적인 동작은 변화 X
역공학(Reverse Engineering) : 기존의 소프트웨어 분석하여 소프트웨어 개발 과정과 데이터 처리 과정을 설명하는 분석 및 설계 정보를 재발견하거나 다시 만듦, 일반적인 단계와 반대방향으로 기존 코드 복구 or 기존 소프트웨어의 구성요소와 관계를 파악하여 설계도 추출
이식(Migration) : 기존 소프트웨어를 다른 운영체제나 하드웨어 환경에서 사용하도록 변경
CASE(Computer Aided Software Engineering)
- 소프트웨어 개발과정에서 사용되는 요구분석, 설계, 구현, 검사 및 디버깅 과정 전체 또는 일부를 컴퓨터와 전용 소프트웨어 도구를 사용하여 자동화
- S/W H/W DB Test 통합하여 소프트웨어 개발 환경 조성
- 소프트웨어 생명주기 (SDLC) 전체 단계를 연결, 자동화 , 통합된 도구 제공
- 소프트웨어 개발 도구 + 방법론
- 소프트웨어 개발의 모든 단계에 거쳐서 제공
- 주요 기능 : 소프트웨어 생명 주기 전 단계의 연결, 다양한 소프트웨어 개발 모형 지원, 그래픽 지원
LOC (원시코드 라인 수 , source Line Of Code)
- 소프트웨어 각 기능의 원시 코드 라인수의 비관치, 낙관치, 기대치를 측정하여 예측치를 통해 비용 산정
- (a + 4 * m + b) / 6
- a : 낙관치 , b : 비관치 , m : 기대치(중간치)
- 기대치만 *4
노력(Man-Month) : 개발 기간 * 투입인원 = LOC / 1인당 월 평균 생산 코드 라인 수
개발 비용 = 노력(Man-Month) * 단위 비용(1인당 월평균 인건비)
개발 기간 = 노력(Man-Month) / 투입 인원
생산성 = LOC / 노력(Man-Month)
수학적 산정 기법 : 상향식 비용 산정, 경험적 추정 모형, 실험적 추정 모형, 개발 비용 산정의 자동화
1) COCOMO
- 보헴이 제안
- LOC에 의한 비용 산정법 (낙관치, 기대치, 비관치)
- 작은 규모의 프로젝트 통계 분석
- 같은 규모라도 성격에 따라 비용이 달라짐
- 비용 산정 결과는 Man-Month
- 조직형 (Organic Mode) : 사무처리용, 업무용, 과학용 S/W, 5만라인 이하(50KDSI)
- 반분리형(Semi-Detached Mode) : 컴파일러, 인터프리터, 운영체제, 트랜잭션 처리 시스템, DBMS, 30만라인 이하(300KDSI)
- 내장형(Embedded Mode) : 신호기 제어 시스템, 미사일 유도 시스템, 실시간 처리 시스템, 30만라인 이상(300KDSI)
2) Putnam
- 소프트웨어 생명 주기의 전 과정 동안 노력의 분포 가정
- 생명 주기 예측 모형
- 시간에 따른 함수 Rayleigh-Norden 곡선의 노력 분포도 기초
- 대형 프로젝트의 노력 분포 산정
- 개발기간 long -> 프로젝트 적용 인원 노력 decrease
3) FP(기능 점수 모형)
- 알브레히트
- 소프트웨어 기능을 증대시키는 요인별로 가중치 부여, 가중치 합산하여 기능점수(FP)산출
- 기능 증대 요인 : 자료 입력, 정보 출력, 명령어, 데이터 파일, 외부루틴과의 인터페이스
SLIM : Rayleigh-Norden 곡서과 Putnam 예측 모델 기초한 자동화 추정 도구
ESTIMACS : 다양한 프로젝트와 개인별 요소를 수용하도록 FP 모형을 기초로 개발된 자동화 추정 도구
PERT(Program Evaluation and Review Technique, 프로그램 평가 및 검토 기술)
- 프로젝트에 필요한 전체 작업의 상호 관계 표시하는 네트워크
- 낙관, 가능성(기대치), 비관
- 과거의 경험이 없어 예측이 어려운 S/W에 사용
- 원 노드 : 작업, 간선 : 낙관/기대/비관치
작업 예측치 = (비관 + 4 * 기대 + 낙관 ) / 6
평방 편차 = [(비관치 - 낙관치)/6] ^ 2
왼쪽부터 낙관/기대/비관
CPM(Critical Path Method, 임계 경로 기법)
- 프로젝트 완성에 필요한 작업을 나열하고, 작업에 필요한 소요기간 예측
- 원형 노드 : 각 작업 이름 & 소요기간 , 박스노드 : 이정표, 박스노드 위에 예상 완료 시간
- 임계 경로 : 최장 경로
간트 차트
- 프로젝트의 각 작업들의 시작/종료 시간을 막대 도표로 표현한 프로젝트 일정표
- 시간선(Time-Line)차트
- 다양한 형태로 변경 가능
- 자원 배치와 인원 계획에 용이
- 작업 경로를 표시할 수는 없고, 계획의 변화에 적응성 약함
- 주관적 수치에 기울기 쉬움
- 수평 막대 길이 : 각 Task 기간
- 이정표, 작업 일정, 작업 기간, 산출물
프로젝트 관리
- 주어진 기간 내에 최소 비용으로 사용자 만족 시스템 개발
- 일정관리/비용관리/인력관리/위험관리/품질관리
ISO/IEC 12207
- 표준 소프트웨어 생명 주기 프로세스
- 소프트웨어 개발 운영, 유지 보수 체계적 관리
- 기본 생명 주기 프로세스, 지원 생명 주기 프로세스, 조직 생명 주기 프로세스
CMMI(Capability Maturity Model Integration)
- 소프트웨어 개발 조직의 업무 능력 및 조직의 성숙도 평가 모델
- 미국 카네기멜론 대학교의 소프트웨어 공학 연구소 개발
단계 | 프로세스 | 특징 |
초기(Initial) | 정의된 프로세스 없음 | 작업자의 능력에 따라 성공여부 결정 |
관리(Managed) | 규칙화된 프로세스 | 특정 프로젝트 내 프로세스 정의 수행 |
정의(Defined) | 표준화된 프로세스 | 조직의 표준 프로세스 활용 업무 수행 |
정량적 관리(Quantitatively Managed) | 예측 가능한 프로세스 | 프로젝트 정량적 관리 통제 |
최적화(Optimizing) | 지속적 개선 프로세스 | 프로세스 역량 향상을 위해 지속 개선 |
SPICE(Software Process Improvent and Capability dEtermination)
- ISO/IEC 15504
- 소프트웨어 품질 및 생산성 향상을 위해 소프트웨어 프로세스 평가 및 개선
단계 | 특징 |
불완전(Incomplete) | 프로세스 구현 X or 목적 달성 X |
수행(Performed) | 프로세스 수행, 목적 달성 |
관리(Managed) | 정의된 자원의 한도 내에 프로세스가 작업 산출물 인도 |
확립(Established) | 소프트웨어 공학 원칙 기반 정의된 프로세스 수행 |
예측(Predictable) | 프로세스 목적 달성을 위해 통제, 양적인 측정, 일관적 수행 |
최적화(Optimizing) | 프로세스 수행 최적화, 지속적 개선-> 업무 목적 만족 |
소프트웨어 개발방법론 테일러링
-> 프로젝트 상황 및 특성에 맞도록 정의된 소프트웨어 개발 방법론의 절차, 사용기법 수정 보완
내부적 기준 (목표환경, 요구사항, 프로젝트 규모, 보유기술)
외부적 기준(법적 제약사항, 표준 품질 기준)
'자격증 > 정보처리기사' 카테고리의 다른 글
5과목 정보 시스템 구축 (2) (0) | 2023.07.06 |
---|---|
1과목 소프트웨어 설계 (5) (0) | 2023.02.21 |
1과목 소프트웨어 설계 (4) (0) | 2023.02.21 |
1과목 소프트웨어 설계 (3) (0) | 2023.02.17 |
1과목 소프트웨어 설계 (2) (0) | 2023.02.15 |